summaryrefslogtreecommitdiffstats
path: root/llvm/include
diff options
context:
space:
mode:
authorSeiya Nuta <nuta@seiya.me>2019-07-25 06:57:09 +0000
committerSeiya Nuta <nuta@seiya.me>2019-07-25 06:57:09 +0000
commit21277e3ec2c315475d5d5fd191083193455f6705 (patch)
tree77643cfd7bb9569de214a444a5398c52d0b1ffbd /llvm/include
parentcd16fadb9ccd7c99ee78e20c3239a5ddc9a938a1 (diff)
downloadbcm5719-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.h6
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,
OpenPOWER on IntegriCloud