diff --git a/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp index 900c7ca5b42..93ec46df07f 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp @@ -344,6 +344,8 @@ static unsigned adjustFixupValue(const MCFixup &Fixup, uint64_t Value, case FK_Data_2: case FK_Data_4: return Value; + case FK_SecRel_2: + return Value; case FK_SecRel_4: return Value; case ARM::fixup_arm_movt_hi16: @@ -674,6 +676,8 @@ static unsigned getFixupKindNumBytes(unsigned Kind) { case ARM::fixup_t2_movw_lo16: return 4; + case FK_SecRel_2: + return 2; case FK_SecRel_4: return 4; } diff --git a/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp b/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp index e3e6802fd3c..ba9df6e962c 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp @@ -49,6 +49,8 @@ unsigned ARMWinCOFFObjectWriter::getRelocType(const MCValue &Target, default: return COFF::IMAGE_REL_ARM_ADDR32; } + case FK_SecRel_2: + return COFF::IMAGE_REL_ARM_SECTION; case FK_SecRel_4: return COFF::IMAGE_REL_ARM_SECREL; case ARM::fixup_t2_condbranch: diff --git a/test/MC/ARM/coff-debugging-secrel.ll b/test/MC/ARM/coff-debugging-secrel.ll index 928f4b11957..a3db4e5f3d7 100644 --- a/test/MC/ARM/coff-debugging-secrel.ll +++ b/test/MC/ARM/coff-debugging-secrel.ll @@ -1,5 +1,8 @@ ; RUN: llc -mtriple thumbv7--windows-itanium -filetype obj -o - %s \ -; RUN: | llvm-readobj -r - | FileCheck %s +; RUN: | llvm-readobj -r - | FileCheck %s -check-prefix CHECK-ITANIUM + +; RUN: llc -mtriple thumbv7--windows-msvc -filetype obj -o - %s \ +; RUN: | llvm-readobj -r - | Filecheck %s -check-prefix CHECK-MSVC ; ModuleID = '/Users/compnerd/work/llvm/test/MC/ARM/reduced.c' target datalayout = "e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:64-v128:64:128-a:0:32-n32-S64" @@ -25,17 +28,24 @@ entry: !9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4} !10 = metadata !{i32 1, metadata !"Debug Info Version", i32 1} -; CHECK: Relocations [ -; CHECK: Section {{.*}} .debug_info { -; CHECK: 0x6 IMAGE_REL_ARM_SECREL .debug_abbrev -; CHECK: 0xC IMAGE_REL_ARM_SECREL .debug_str -; CHECK: 0x12 IMAGE_REL_ARM_SECREL .debug_str -; CHECK: 0x16 IMAGE_REL_ARM_SECREL .debug_line -; CHECK: 0x1A IMAGE_REL_ARM_SECREL .debug_str -; CHECK: 0x27 IMAGE_REL_ARM_SECREL .debug_str -; CHECK: } -; CHECK: Section {{.*}}.debug_pubnames { -; CHECK: 0x6 IMAGE_REL_ARM_SECREL .debug_info -; CHECK: } -; CHECK: ] +; CHECK-ITANIUM: Relocations [ +; CHECK-ITANIUM: Section {{.*}} .debug_info { +; CHECK-ITANIUM: 0x6 IMAGE_REL_ARM_SECREL .debug_abbrev +; CHECK-ITANIUM: 0xC IMAGE_REL_ARM_SECREL .debug_str +; CHECK-ITANIUM: 0x12 IMAGE_REL_ARM_SECREL .debug_str +; CHECK-ITANIUM: 0x16 IMAGE_REL_ARM_SECREL .debug_line +; CHECK-ITANIUM: 0x1A IMAGE_REL_ARM_SECREL .debug_str +; CHECK-ITANIUM: 0x27 IMAGE_REL_ARM_SECREL .debug_str +; CHECK-ITANIUM: } +; CHECK-ITANIUM: Section {{.*}}.debug_pubnames { +; CHECK-ITANIUM: 0x6 IMAGE_REL_ARM_SECREL .debug_info +; CHECK-ITANIUM: } +; CHECK-ITANIUM: ] + +; CHECK-MSVC: Relocations [ +; CHECK-MSVC: Section {{.*}} .debug$S { +; CHECK-MSVC: 0xC IMAGE_REL_ARM_SECREL function +; CHECK-MSVC: 0x10 IMAGE_REL_ARM_SECTION function +; CHECK-MSVC: } +; CHECK-MSVC: ]