summaryrefslogtreecommitdiffstats
path: root/lld/test
diff options
context:
space:
mode:
authorJames Clarke <jrtc27@jrtc27.com>2020-01-21 02:49:42 +0000
committerHans Wennborg <hans@chromium.org>2020-01-24 19:10:45 +0100
commita3db4e05e36e836077e6e551feb6841c7e8023a0 (patch)
treea577aeb4ae84ecf682237e2baed906ea2244406c /lld/test
parent425d15aeb13e2f60867654dd1abab515447a71ec (diff)
downloadbcm5719-llvm-a3db4e05e36e836077e6e551feb6841c7e8023a0.tar.gz
bcm5719-llvm-a3db4e05e36e836077e6e551feb6841c7e8023a0.zip
[lld][RISCV] Print error when encountering R_RISCV_ALIGN
Summary: Unlike R_RISCV_RELAX, which is a linker hint, R_RISCV_ALIGN requires the support of the linker even when ignoring all R_RISCV_RELAX relocations. This is because the compiler emits as many NOPs as may be required for the requested alignment, more than may be required pre-relaxation, to allow for the target becoming more unaligned after relaxing earlier sequences. This means that the target is often not initially aligned in the object files, and so the R_RISCV_ALIGN relocations cannot just be ignored. Since we do not support linker relaxation, we must turn these into errors. Reviewers: ruiu, MaskRay, espindola Reviewed By: MaskRay Subscribers: grimar, Jim, emaste, arichardson, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, PkmX, jocewei, psnobl, benna, lenary, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D71820 (cherry picked from commit d1da63664f4e42191daf2e6a9fa682ca9f75ef5e)
Diffstat (limited to 'lld/test')
-rw-r--r--lld/test/ELF/riscv-reloc-align.s12
1 files changed, 12 insertions, 0 deletions
diff --git a/lld/test/ELF/riscv-reloc-align.s b/lld/test/ELF/riscv-reloc-align.s
new file mode 100644
index 00000000000..5103066caa3
--- /dev/null
+++ b/lld/test/ELF/riscv-reloc-align.s
@@ -0,0 +1,12 @@
+# REQUIRES: riscv
+
+# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+relax %s -o %t.o
+# RUN: not ld.lld %t.o -o /dev/null 2>&1 | FileCheck %s
+
+# CHECK: relocation R_RISCV_ALIGN requires unimplemented linker relaxation
+
+.global _start
+_start:
+ nop
+ .balign 8
+ nop
OpenPOWER on IntegriCloud