Skip to content

Commit fc37352

Browse files
committed
[arm] Add big-endian version of pcrel fixups for adr instructions
Summary: In 2e24219, a number of ARM pcrel fixups were resolved at assembly time, to solve PR44929. This only covered little-endian ARM however, so add similar fixups for big-endian ARM. Also extend the test case to cover big-endian ARM. Reviewers: hans, psmith, MaskRay Reviewed By: psmith, MaskRay Subscribers: kristof.beyls, hiraditya, danielkiss, emaste, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79774
1 parent 9f0b736 commit fc37352

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,26 +123,22 @@ const MCFixupKindInfo &ARMAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
123123
// ARMFixupKinds.h.
124124
//
125125
// Name Offset (bits) Size (bits) Flags
126-
{"fixup_arm_ldst_pcrel_12", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
126+
{"fixup_arm_ldst_pcrel_12", 0, 32, IsPCRelConstant},
127127
{"fixup_t2_ldst_pcrel_12", 0, 32,
128-
MCFixupKindInfo::FKF_IsPCRel |
129-
MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
130-
{"fixup_arm_pcrel_10_unscaled", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
131-
{"fixup_arm_pcrel_10", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
128+
IsPCRelConstant | MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
129+
{"fixup_arm_pcrel_10_unscaled", 0, 32, IsPCRelConstant},
130+
{"fixup_arm_pcrel_10", 0, 32, IsPCRelConstant},
132131
{"fixup_t2_pcrel_10", 0, 32,
133132
MCFixupKindInfo::FKF_IsPCRel |
134133
MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
135134
{"fixup_arm_pcrel_9", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
136135
{"fixup_t2_pcrel_9", 0, 32,
137-
MCFixupKindInfo::FKF_IsPCRel |
138-
MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
136+
IsPCRelConstant | MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
139137
{"fixup_thumb_adr_pcrel_10", 8, 8,
140-
MCFixupKindInfo::FKF_IsPCRel |
141-
MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
142-
{"fixup_arm_adr_pcrel_12", 0, 32, MCFixupKindInfo::FKF_IsPCRel},
138+
IsPCRelConstant | MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
139+
{"fixup_arm_adr_pcrel_12", 0, 32, IsPCRelConstant},
143140
{"fixup_t2_adr_pcrel_12", 0, 32,
144-
MCFixupKindInfo::FKF_IsPCRel |
145-
MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
141+
IsPCRelConstant | MCFixupKindInfo::FKF_IsAlignedDownTo32Bits},
146142
{"fixup_arm_condbranch", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
147143
{"fixup_arm_uncondbranch", 8, 24, MCFixupKindInfo::FKF_IsPCRel},
148144
{"fixup_t2_condbranch", 0, 32, MCFixupKindInfo::FKF_IsPCRel},

llvm/test/MC/ARM/pcrel-global.s

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
@ RUN: llvm-mc -filetype=obj -triple=armv7 %s -o %t
22
@ RUN: llvm-readelf -r %t | FileCheck %s
3+
@ RUN: llvm-mc -filetype=obj -triple=armebv7 %s -o %t
4+
@ RUN: llvm-readelf -r %t | FileCheck %s
35

46
@ CHECK: There are no relocations in this file.
57
.syntax unified

0 commit comments

Comments
 (0)