diff options
| author | Seiya Nuta <nuta@seiya.me> | 2019-07-25 06:57:09 +0000 |
|---|---|---|
| committer | Seiya Nuta <nuta@seiya.me> | 2019-07-25 06:57:09 +0000 |
| commit | 21277e3ec2c315475d5d5fd191083193455f6705 (patch) | |
| tree | 77643cfd7bb9569de214a444a5398c52d0b1ffbd /llvm/include | |
| parent | cd16fadb9ccd7c99ee78e20c3239a5ddc9a938a1 (diff) | |
| download | bcm5719-llvm-21277e3ec2c315475d5d5fd191083193455f6705.tar.gz bcm5719-llvm-21277e3ec2c315475d5d5fd191083193455f6705.zip | |
[MC] Add MCInstrAnalysis::evaluateMemoryOperandAddress
Summary:
Add a new method which tries to compute the target address referenced by an operand.
This patch supports x86_64 RIP-relative addressing for now.
It is necessary to print referenced symbol names in llvm-objdump.
Reviewers: andreadb, MaskRay, grosbach, jgalenson, craig.topper
Reviewed By: MaskRay, craig.topper
Subscribers: bcain, rupprecht, jhenderson, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63847
llvm-svn: 366987
Diffstat (limited to 'llvm/include')
| -rw-r--r-- | llvm/include/llvm/MC/MCInstrAnalysis.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/include/llvm/MC/MCInstrAnalysis.h b/llvm/include/llvm/MC/MCInstrAnalysis.h index dfefd7e7277..898ca47b13b 100644 --- a/llvm/include/llvm/MC/MCInstrAnalysis.h +++ b/llvm/include/llvm/MC/MCInstrAnalysis.h @@ -152,6 +152,12 @@ public: evaluateBranch(const MCInst &Inst, uint64_t Addr, uint64_t Size, uint64_t &Target) const; + /// Given an instruction tries to get the address of a memory operand. Returns + /// the address on success. + virtual Optional<uint64_t> evaluateMemoryOperandAddress(const MCInst &Inst, + uint64_t Addr, + uint64_t Size) const; + /// Returns (PLT virtual address, GOT virtual address) pairs for PLT entries. virtual std::vector<std::pair<uint64_t, uint64_t>> findPltEntries(uint64_t PltSectionVA, ArrayRef<uint8_t> PltContents, |

