///
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
//
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.
//
<< (void*) Ptr << ") ";
}
+ void addRelocation(const MachineRelocation &MR) {
+ std::cout << "<relocation> ";
+ }
+
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.
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.
//