[AArch64][BZ #17711] Fix extern protected data handling

Fixes elf/tst-protected1a and elf/tst-protected1b tests.

Depends on a gcc patch that makes protected visibility data non-local:
https://gcc.gnu.org/ml/gcc-patches/2015-07/msg01871.html
and on a binutils patch so R_*_GLOB_DAT relocs are used for it:
https://sourceware.org/ml/binutils/2015-07/msg00246.html
This commit is contained in:
Szabolcs Nagy 2015-07-24 09:57:32 +01:00
parent a81a00ff94
commit 0910702c4d
3 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2015-07-24 Szabolcs Nagy <szabolcs.nagy@arm.com>
[BZ #17711]
* sysdeps/aarch64/dl-sysdep.h (DL_EXTERN_PROTECTED_DATA): Define.
* sysdeps/aarch64/dl-machine.h (elf_machine_type_class): Handle
ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA.
2015-07-24 Siddhesh Poyarekar <siddhesh@redhat.com>
* stdlib/cxa_thread_atexit_impl.c: Use the lock name dl_load_lock

View File

@ -195,7 +195,8 @@ _dl_start_user: \n\
(type) == R_AARCH64_TLS_DTPREL || \
(type) == R_AARCH64_TLS_TPREL || \
(type) == R_AARCH64_TLSDESC) * ELF_RTYPE_CLASS_PLT) \
| (((type) == R_AARCH64_COPY) * ELF_RTYPE_CLASS_COPY))
| (((type) == R_AARCH64_COPY) * ELF_RTYPE_CLASS_COPY) \
| (((type) == R_AARCH64_GLOB_DAT) * ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA))
#define ELF_MACHINE_JMP_SLOT R_AARCH64_JUMP_SLOT

View File

@ -21,3 +21,5 @@
/* _dl_argv cannot be attribute_relro, because _dl_start_user
might write into it after _dl_start returns. */
#define DL_ARGV_NOT_RELRO 1
#define DL_EXTERN_PROTECTED_DATA