mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-28 14:10:55 +00:00
Add R_ARM_TARGET1 relocation to MCJIT and ensure that the runtime dyld reads
all symbols during object loading, not just global ones. This fixes JIT execution of code using llvm.global_ctors with internal linkage constructors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168148 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fbeb956876
commit
098d6d5734
@ -125,9 +125,7 @@ ObjectImage *RuntimeDyldImpl::loadObject(ObjectBuffer *InputBuffer) {
|
||||
<< " flags: " << flags
|
||||
<< " SID: " << SectionID
|
||||
<< " Offset: " << format("%p", SectOffset));
|
||||
bool isGlobal = flags & SymbolRef::SF_Global;
|
||||
if (isGlobal)
|
||||
GlobalSymbolTable[Name] = SymbolLoc(SectionID, SectOffset);
|
||||
GlobalSymbolTable[Name] = SymbolLoc(SectionID, SectOffset);
|
||||
}
|
||||
}
|
||||
DEBUG(dbgs() << "\tType: " << SymType << " Name: " << Name << "\n");
|
||||
|
@ -290,6 +290,7 @@ void RuntimeDyldELF::resolveARMRelocation(const SectionEntry &Section,
|
||||
|
||||
// Write a 32bit value to relocation address, taking into account the
|
||||
// implicit addend encoded in the target.
|
||||
case ELF::R_ARM_TARGET1 :
|
||||
case ELF::R_ARM_ABS32 :
|
||||
*TargetPtr += Value;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user