From 4fb55bf6a9606eb7b626c30a9f4e71d6c2d4fbb2 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Thu, 23 Jun 2022 01:04:39 -0700 Subject: [PATCH] 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. --- bfd/elfnn-aarch64.c | 2 +- ld/testsuite/ld-aarch64/protected-data.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 81311fc5a32..ce2632ecd30 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 5dabf04748c..ee9b4cfc6b5 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 .* -- 2.30.2