[PATCH] D126101: [MCDisassembler] Fix MCSymbolizer::tryAddingSymbolicOperand() interface

Maksim Panchenko via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 20 16:13:10 PDT 2022


maksfb created this revision.
maksfb added reviewers: skan, yota9, Amir, ayermolo, rafauler, zr33.
Herald added subscribers: kosarev, jsilvanus, hsmhsm, foad, kerbowa, pengfei, rupprecht, jrtc27, fedor.sergeev, hiraditya, mgorny, nhaehnle, jvesely, jyknight, arsenm.
Herald added a reviewer: deadalnix.
Herald added a reviewer: jhenderson.
Herald added a reviewer: MaskRay.
Herald added a project: All.
maksfb requested review of this revision.
Herald added subscribers: llvm-commits, StephenFan.
Herald added a project: LLVM.

MCSymbolizer::tryAddingSymbolicOperand() overloaded the Size parameter
to specify either the instruction size or the operand size depending on
the architecture. However, for proper symbolic disassembly on X86 we
need to know both sizes. Hence, split Size into OpSize and InstSize.

For X86, the new interface allows to fix a couple of issues:

- Correctly adjust the value of PC-relative operands.
- Set operand size to zero when the operand is specified implicitly.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D126101

Files:
  llvm/include/llvm-c/DisassemblerTypes.h
  llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h
  llvm/include/llvm/MC/MCDisassembler/MCExternalSymbolizer.h
  llvm/include/llvm/MC/MCDisassembler/MCSymbolizer.h
  llvm/lib/MC/MCDisassembler/MCDisassembler.cpp
  llvm/lib/MC/MCDisassembler/MCExternalSymbolizer.cpp
  llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
  llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
  llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.h
  llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
  llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
  llvm/lib/Target/ARC/Disassembler/ARCDisassembler.cpp
  llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
  llvm/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp
  llvm/lib/Target/Lanai/Disassembler/LanaiDisassembler.cpp
  llvm/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp
  llvm/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp
  llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp
  llvm/tools/llvm-objdump/MachODump.cpp
  llvm/unittests/MC/X86/CMakeLists.txt
  llvm/unittests/MC/X86/X86MCDisassemblerTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126101.431089.patch
Type: text/x-patch
Size: 28846 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220520/4dd73c0c/attachment.bin>


More information about the llvm-commits mailing list