Fix incorrect relocation generation. Patch by Kristof Beyls.

Fixes PR11214.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147180 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2011-12-22 21:36:43 +00:00
parent a816bf7c0d
commit b975c27adc
2 changed files with 24 additions and 8 deletions

View File

@ -209,14 +209,7 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
break;
case ARM::fixup_arm_thumb_bl:
case ARM::fixup_arm_thumb_blx:
switch (Modifier) {
case MCSymbolRefExpr::VK_ARM_PLT:
Type = ELF::R_ARM_THM_CALL;
break;
default:
Type = ELF::R_ARM_NONE;
break;
}
Type = ELF::R_ARM_THM_CALL;
break;
}
} else {

View File

@ -0,0 +1,23 @@
@@ test st_value bit 0 of thumb function
@ RUN: llvm-mc %s -triple=arm-freebsd-eabi -filetype=obj -o - | \
@ RUN: elf-dump | FileCheck %s
.syntax unified
.text
.globl f
.align 2
.type f,%function
.code 16
.thumb_func
f:
push {r7, lr}
mov r7, sp
bl g
pop {r7, pc}
@@ make sure an R_ARM_THM_CALL relocation is generated for the call to g
@CHECK: ('_relocations', [
@CHECK: (('r_offset', 0x00000004)
@CHECK-NEXT: ('r_sym', 0x{{[0-9a-fA-F]+}})
@CHECK-NEXT: ('r_type', 0x0a)