aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2022-06-23 01:04:39 -0700
committerFangrui Song <i@maskray.me>2022-06-23 01:04:39 -0700
commit4fb55bf6a9606eb7b626c30a9f4e71d6c2d4fbb2 (patch)
treef7c1915dd6173ddb8967df5227fd6b2538b48d06
parent325600eb1175e6f989f201ae885c8fae82953264 (diff)
downloadgdb-4fb55bf6a9606eb7b626c30a9f4e71d6c2d4fbb2.zip
gdb-4fb55bf6a9606eb7b626c30a9f4e71d6c2d4fbb2.tar.gz
gdb-4fb55bf6a9606eb7b626c30a9f4e71d6c2d4fbb2.tar.bz2
aarch64: Define elf_backend_extern_protected_data to 0 [PR 18705]
Follow-up to commit 90b7a5df152a64d2bea20beb438e8b81049a5c30 ("aarch64: Disallow copy relocations on protected data"). Commit 32f573bcb3aaa1c9defcad79dbb5851fcc02ae2d changed ld to produce R_AARCH64_GLOB_DAT but that defeated the purpose of protected visibility as an optimization. Restore the previous behavior (which matches ld.lld) by defining elf_backend_extern_protected_data to 0.
-rw-r--r--bfd/elfnn-aarch64.c2
-rw-r--r--ld/testsuite/ld-aarch64/protected-data.d2
2 files changed, 2 insertions, 2 deletions
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 81311fc..ce2632e 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -10116,7 +10116,7 @@ const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_dtrel_excludes_plt 1
#define elf_backend_got_header_size (GOT_ENTRY_SIZE * 3)
#define elf_backend_default_execstack 0
-#define elf_backend_extern_protected_data 1
+#define elf_backend_extern_protected_data 0
#define elf_backend_hash_symbol elf_aarch64_hash_symbol
#undef elf_backend_obj_attrs_section
diff --git a/ld/testsuite/ld-aarch64/protected-data.d b/ld/testsuite/ld-aarch64/protected-data.d
index 5dabf04..ee9b4cf 100644
--- a/ld/testsuite/ld-aarch64/protected-data.d
+++ b/ld/testsuite/ld-aarch64/protected-data.d
@@ -2,4 +2,4 @@
#ld: -shared
#readelf: -r -W
#...
-.* R_AARCH64_GLOB_DAT .* var.*
+.* R_AARCH64_RELATIVE .*