mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
[RuntimeDyld] Add support for MachO __jump_table and __pointers sections, and
SECTDIFF relocations on 32-bit x86. This fixes several of the MCJIT regression test failures that show up on 32-bit builds. <rdar://problem/16886294> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208635 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -46,6 +46,14 @@ private:
|
||||
bool resolveARMRelocation(const RelocationEntry &RE, uint64_t Value);
|
||||
bool resolveARM64Relocation(const RelocationEntry &RE, uint64_t Value);
|
||||
|
||||
// Populate stubs in __jump_table section.
|
||||
void populateJumpTable(MachOObjectFile &Obj, const SectionRef &JTSection,
|
||||
unsigned JTSectionID);
|
||||
|
||||
// Populate __pointers section.
|
||||
void populatePointersSection(MachOObjectFile &Obj, const SectionRef &PTSection,
|
||||
unsigned PTSectionID);
|
||||
|
||||
unsigned getMaxStubSize() override {
|
||||
if (Arch == Triple::arm || Arch == Triple::thumb)
|
||||
return 8; // 32-bit instruction and 32-bit address
|
||||
@@ -57,6 +65,12 @@ private:
|
||||
|
||||
unsigned getStubAlignment() override { return 1; }
|
||||
|
||||
relocation_iterator processSECTDIFFRelocation(
|
||||
unsigned SectionID,
|
||||
relocation_iterator RelI,
|
||||
ObjectImage &ObjImg,
|
||||
ObjSectionToIDMap &ObjSectionToID);
|
||||
|
||||
struct EHFrameRelatedSections {
|
||||
EHFrameRelatedSections()
|
||||
: EHFrameSID(RTDYLD_INVALID_SECTION_ID),
|
||||
@@ -85,7 +99,8 @@ public:
|
||||
bool isCompatibleFormat(const ObjectBuffer *Buffer) const override;
|
||||
bool isCompatibleFile(const object::ObjectFile *Obj) const override;
|
||||
void registerEHFrames() override;
|
||||
void finalizeLoad(ObjSectionToIDMap &SectionMap) override;
|
||||
void finalizeLoad(ObjectImage &ObjImg,
|
||||
ObjSectionToIDMap &SectionMap) override;
|
||||
|
||||
static ObjectImage *createObjectImage(ObjectBuffer *InputBuffer) {
|
||||
return new ObjectImageCommon(InputBuffer);
|
||||
|
Reference in New Issue
Block a user