From 02638d41bb06858a7b0c25dcbb5aef4ba9724957 Mon Sep 17 00:00:00 2001 From: Logan Chien <loganchien@google.com> Date: Fri, 24 Aug 2012 17:06:53 +0800 Subject: [PATCH 2/2] Add missing ARM fixup kind for ARMELFObjectWriter. --- lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp | 4 +++ test/CodeGen/ARM/fixup-elf.ll | 23 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) create mode 100644 test/CodeGen/ARM/fixup-elf.ll diff --git a/llvm-3.1/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp b/llvm-3.1/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp index 7d6acbc..f24a29f 100644 --- a/llvm-3.1/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp +++ b/llvm-3.1/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp @@ -214,6 +214,10 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target, case ARM::fixup_arm_thumb_blx: Type = ELF::R_ARM_THM_CALL; break; + case ARM::fixup_t2_condbranch: + case ARM::fixup_t2_uncondbranch: + Type = ELF::R_ARM_THM_JUMP24; + break; } } else { switch ((unsigned)Fixup.getKind()) { diff --git a/llvm-3.1/test/CodeGen/ARM/fixup-elf.ll b/llvm-3.1/test/CodeGen/ARM/fixup-elf.ll new file mode 100644 index 0000000..90d880f --- /dev/null +++ b/llvm-3.1/test/CodeGen/ARM/fixup-elf.ll @@ -0,0 +1,23 @@ +; RUN: llc -mtriple thumbv7-none-linux-gnueabi -mcpu=cortex-a8 -march=thumb -mattr=thumb2 -filetype=obj -o - < %s | llvm-objdump -r - | FileCheck %s + +target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:32-n32-S64" +target triple = "thumbv7-none-linux-gnueabi" + +define i32 @test_fixup_t2_uncondbranch(i8* %a, i8* %b, i8* %c) { +invoke.cont: + invoke void @__cxa_throw(i8* %a, i8* %b, i8* %c) noreturn + to label %unreachable unwind label %lpad + +; CHECK: 6 R_ARM_THM_JUMP24 __cxa_throw + +lpad: + %0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) cleanup + ret i32 0 + +unreachable: + unreachable +} + +declare i32 @__gxx_personality_v0(...) + +declare void @__cxa_throw(i8*, i8*, i8*) -- 1.7.7.3