ld: Add glibc dependency for DT_RELR
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 6 Jan 2022 03:21:45 +0000 (19:21 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 12 Jan 2022 14:08:47 +0000 (06:08 -0800)
commit72aa81732b3aff00e5bf1f69bb794513b3b37464
tree13cdfb51891320c3ff5b56652c50b499e2617c3c
parent4d9e2e53b9f93b0ae33ba948ae3d2825b3424441
ld: Add glibc dependency for DT_RELR

When DT_RELR is enabled, to avoid random run-time crash with older glibc
binaries without DT_RELR support, add a GLIBC_ABI_DT_RELR symbol version,
which is provided by glibc with DT_RELR support, dependency on the shared
C library if it provides a GLIBC_2.XX symbol version.

bfd/

* elflink.c (elf_link_add_dt_relr_dependency): New function.
(bfd_elf_size_dynamic_sections): Call
elf_link_add_dt_relr_dependency if DT_RELR is enabled.

ld/

* ld.texi: Mention GLIBC_ABI_DT_RELR in -z pack-relative-relocs
entry.
* testsuite/ld-elf/dt-relr-glibc-1.c: New file.
* testsuite/ld-elf/dt-relr-glibc-1a.rd: Likewise.
* testsuite/ld-elf/dt-relr-glibc-1b.rd: Likewise.
* testsuite/ld-elf/dt-relr.exp: Likewise.
bfd/elflink.c
ld/ld.texi
ld/testsuite/ld-elf/dt-relr-glibc-1.c [new file with mode: 0644]
ld/testsuite/ld-elf/dt-relr-glibc-1a.rd [new file with mode: 0644]
ld/testsuite/ld-elf/dt-relr-glibc-1b.rd [new file with mode: 0644]
ld/testsuite/ld-elf/dt-relr.exp [new file with mode: 0644]