Fixed a bug in getARMFixupKindMachOInfo() where three ARM fixup kinds

were falling into the cases for 24-bit branch kinds which are not 24-bit
branches.  The routine is to return false for fixups are expected to always
be resolvable at assembly time. Which these three fixups are as they have
limited displacement and are for local references within a function.

rdar://15586725


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197282 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2013-12-13 22:46:54 +00:00
parent e670304f64
commit 303a00ec48
2 changed files with 14 additions and 1 deletions

View File

@ -82,10 +82,14 @@ static bool getARMFixupKindMachOInfo(unsigned Kind, unsigned &RelocType,
Log2Size = llvm::Log2_32(8); Log2Size = llvm::Log2_32(8);
return true; return true;
// Handle 24-bit branch kinds. // These fixups are expected to always be resolvable at assembly time and
// have no relocations supported.
case ARM::fixup_arm_ldst_pcrel_12: case ARM::fixup_arm_ldst_pcrel_12:
case ARM::fixup_arm_pcrel_10: case ARM::fixup_arm_pcrel_10:
case ARM::fixup_arm_adr_pcrel_12: case ARM::fixup_arm_adr_pcrel_12:
return false;
// Handle 24-bit branch kinds.
case ARM::fixup_arm_condbranch: case ARM::fixup_arm_condbranch:
case ARM::fixup_arm_uncondbranch: case ARM::fixup_arm_uncondbranch:
case ARM::fixup_arm_uncondbl: case ARM::fixup_arm_uncondbl:

View File

@ -0,0 +1,9 @@
@ RUN: not llvm-mc -n -triple armv7-apple-darwin10 %s -filetype=obj -o - 2> %t.err > %t
@ RUN: FileCheck --check-prefix=CHECK-ERROR < %t.err %s
@ rdar://15586725
.text
ldr r3, L___fcommon
.section myseg, mysect
L___fcommon:
.word 0
@ CHECK-ERROR: unsupported relocation on symbol