summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp4
-rw-r--r--llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp2
-rw-r--r--llvm/test/MC/ARM/coff-debugging-secrel.ll38
3 files changed, 30 insertions, 14 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
index 900c7ca5b42..93ec46df07f 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
+++ b/llvm/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/llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
index e3e6802fd3c..ba9df6e962c 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp
+++ b/llvm/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/llvm/test/MC/ARM/coff-debugging-secrel.ll b/llvm/test/MC/ARM/coff-debugging-secrel.ll
index 928f4b11957..a3db4e5f3d7 100644
--- a/llvm/test/MC/ARM/coff-debugging-secrel.ll
+++ b/llvm/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: ]
OpenPOWER on IntegriCloud