Optimistically ignore scattered relocations in MachO in RuntimeDyld. This

un-breaks simple use cases while I work on more general support.

<rdar://problem/14487667>



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188044 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Lang Hames 2013-08-09 00:57:01 +00:00
parent 128ce319ec
commit 623f2025a7
4 changed files with 12 additions and 0 deletions

View File

@ -287,6 +287,16 @@ void RuntimeDyldMachO::processRelocationRef(unsigned SectionID,
macho::RelocationEntry RE = MachO->getRelocation(RelI.getRawDataRefImpl());
uint32_t RelType = MachO->getAnyRelocationType(RE);
// FIXME: Properly handle scattered relocations.
// For now, optimistically skip these: they can often be ignored, as
// the static linker will already have applied the relocation, and it
// only needs to be reapplied if symbols move relative to one another.
// Note: This will fail horribly where the relocations *do* need to be
// applied, but that was already the case.
if (MachO->isRelocationScattered(RE))
return;
RelocationValueRef Value;
SectionEntry &Section = Sections[SectionID];

View File

@ -0,0 +1 @@
RUN: llvm-rtdyld -printline %p/Inputs/arm_secdiff_reloc.o

View File

@ -0,0 +1 @@
config.suffixes = ['.test']