From 47012c0c711fd10901fb30643def557af7bbb4a9 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 20 Nov 2004 03:44:39 +0000 Subject: [PATCH] Add getCurrentPCOffset() and addRelocation() methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18034 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/MachineCodeEmitter.h | 19 ++++++++++++++----- lib/CodeGen/MachineCodeEmitter.cpp | 12 ++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/include/llvm/CodeGen/MachineCodeEmitter.h b/include/llvm/CodeGen/MachineCodeEmitter.h index 8b61c7c5d0a..5bc1d1e266e 100644 --- a/include/llvm/CodeGen/MachineCodeEmitter.h +++ b/include/llvm/CodeGen/MachineCodeEmitter.h @@ -75,6 +75,20 @@ public: /// virtual void emitWord(unsigned W) = 0; + /// getCurrentPCValue - This returns the address that the next emitted byte + /// will be output to. + /// + virtual uint64_t getCurrentPCValue() = 0; + + + /// getCurrentPCOffset - Return the offset from the start of the emitted + /// buffer that we are currently writing to. + virtual uint64_t getCurrentPCOffset() = 0; + + /// addRelocation - Whenever a relocatable address is needed, it should be + /// noted with this interface. + virtual void addRelocation(const MachineRelocation &MR) = 0; + /// getGlobalValueAddress - This method is used to get the address of the /// specified global value. In some cases, however, the address may not yet /// be known at the point that the method is called (for example, getting the @@ -90,11 +104,6 @@ public: // virtual uint64_t getConstantPoolEntryAddress(unsigned Index) = 0; - // getCurrentPCValue - This returns the address that the next emitted byte - // will be output to. - // - virtual uint64_t getCurrentPCValue() = 0; - // forceCompilationOf - Force the compilation of the specified function, and // return its address, because we REALLY need the address now. // diff --git a/lib/CodeGen/MachineCodeEmitter.cpp b/lib/CodeGen/MachineCodeEmitter.cpp index d9e8c88b9ee..fde69697642 100644 --- a/lib/CodeGen/MachineCodeEmitter.cpp +++ b/lib/CodeGen/MachineCodeEmitter.cpp @@ -47,10 +47,15 @@ namespace { << (void*) Ptr << ") "; } + void addRelocation(const MachineRelocation &MR) { + std::cout << " "; + } + uint64_t getGlobalValueAddress(GlobalValue *V) { return 0; } uint64_t getGlobalValueAddress(const char *Name) { return 0; } uint64_t getConstantPoolEntryAddress(unsigned Num) { return 0; } uint64_t getCurrentPCValue() { return 0; } + uint64_t getCurrentPCOffset() { return 0; } // forceCompilationOf - Force the compilation of the specified function, and // return its address, because we REALLY need the address now. @@ -157,6 +162,13 @@ namespace { uint64_t getCurrentPCValue() { return MCE.getCurrentPCValue(); } + uint64_t getCurrentPCOffset() { + return MCE.getCurrentPCOffset(); + } + void addRelocation(const MachineRelocation &MR) { + return MCE.addRelocation(MR); + } + // forceCompilationOf - Force the compilation of the specified function, and // return its address, because we REALLY need the address now. //