aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-aarch64/pcrel_pic_defined.d
diff options
context:
space:
mode:
authorJiong Wang <jiong.wang@arm.com>2017-06-16 14:20:38 +0100
committerJiong Wang <jiong.wang@arm.com>2017-06-16 14:20:38 +0100
commitd68f19767dfbb33c1813563d5a4af0731a1855c5 (patch)
tree27afb23abad3e0ebaa2121a63a8d7cf191eeef39 /ld/testsuite/ld-aarch64/pcrel_pic_defined.d
parenta87dc45adc983a8e6ec3db8d18cd31c35abd2048 (diff)
downloadfsf-binutils-gdb-d68f19767dfbb33c1813563d5a4af0731a1855c5.zip
fsf-binutils-gdb-d68f19767dfbb33c1813563d5a4af0731a1855c5.tar.gz
fsf-binutils-gdb-d68f19767dfbb33c1813563d5a4af0731a1855c5.tar.bz2
[AArch64] Use SYMBOL_REFERENCES_LOCAL in one symbol check
For some pc-relative relocations we want to allow them under PIC mode while a normal global symbol defined in the same dynamic object can still bind externally through copy relocation. So, we should not allow pc-relative relocation against such symbol. SYMBOL_REFERENCES_LOCAL should be used and is more accurate than the original individual checks. bfd/ * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use SYMBOL_REFERENCES_LOCAL. ld/ * testsuite/ld-aarch64/aarch64-elf.exp: Update test name * testsuite/ld-aarch64/pcrel.s: Add new testcases. * testsuite/ld-aarch64/pcrel_pic_undefined.d: Update the expected warnings. * testsuite/ld-aarch64/pcrel_pic_defined_local.d: Rename ... * testsuite/ld-aarch64/pcrel_pic_defined.d: ... to this. Update expected warnings.
Diffstat (limited to 'ld/testsuite/ld-aarch64/pcrel_pic_defined.d')
-rw-r--r--ld/testsuite/ld-aarch64/pcrel_pic_defined.d10
1 files changed, 10 insertions, 0 deletions
diff --git a/ld/testsuite/ld-aarch64/pcrel_pic_defined.d b/ld/testsuite/ld-aarch64/pcrel_pic_defined.d
new file mode 100644
index 0000000..743e810
--- /dev/null
+++ b/ld/testsuite/ld-aarch64/pcrel_pic_defined.d
@@ -0,0 +1,10 @@
+#name: PC-Rel relocation against defined
+#source: pcrel.s
+#ld: -shared -e0 -defsym global_a=0x1000 -defsym global_b=0x2000
+#warning: .*: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `global_a.*bind externally.*fPIC.*
+#warning: .*: relocation R_AARCH64_ADR_PREL_PG_HI21_NC against symbol `global_a.*bind externally.*fPIC.*
+#warning: .*: relocation R_AARCH64_ADR_PREL_LO21 against symbol `global_a.*bind externally.*fPIC.*
+#warning: .*: relocation R_AARCH64_LD_PREL_LO19 against symbol `global_a.*bind externally.*fPIC.*
+#warning: .*: relocation R_AARCH64_PREL16 against symbol `global_a.*bind externally.*fPIC.*
+#warning: .*: relocation R_AARCH64_PREL32 against symbol `global_a.*bind externally.*fPIC.*
+#warning: .*: relocation R_AARCH64_PREL64 against symbol `global_a.*bind externally.*fPIC.*