Index: src/IceAssembler.h |
diff --git a/src/IceAssembler.h b/src/IceAssembler.h |
index d2e9578ffe2d2a613fff1b76e907f282d15a2263..d3111adcbe5e19a6fca055c150a78a85726b1613 100644 |
--- a/src/IceAssembler.h |
+++ b/src/IceAssembler.h |
@@ -237,6 +237,9 @@ class Assembler { |
Assembler &operator=(const Assembler &) = delete; |
public: |
+ using InternalRelocationList = |
+ std::vector<std::pair<const IceString, const SizeT>>; |
+ |
enum AssemblerKind { |
Asm_ARM32, |
Asm_MIPS32, |
@@ -323,12 +326,23 @@ public: |
AssemblerKind getKind() const { return Kind; } |
+ void addRelocationAtCurrentPosition(const IceString &RelocName) { |
+ if (!getPreliminary()) { |
+ InternalRelocs.emplace_back(RelocName, getBufferSize()); |
+ } |
+ } |
+ |
+ const InternalRelocationList &getInternalRelocations() const { |
+ return InternalRelocs; |
+ } |
+ |
protected: |
explicit Assembler(AssemblerKind Kind) |
: Kind(Kind), Allocator(), Buffer(*this) {} |
private: |
const AssemblerKind Kind; |
+ InternalRelocationList InternalRelocs; |
ArenaAllocator<32 * 1024> Allocator; |
/// FunctionName and IsInternal are transferred from the original Cfg object, |