public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Improve -z mark-plt
@ 2024-01-05 21:50 H.J. Lu
  2024-01-05 21:50 ` [PATCH 1/2] elf: Add elf_backend_add_glibc_version_dependency H.J. Lu
  2024-01-05 21:50 ` [PATCH 2/2] ld: Add --enable-make-plt configure option H.J. Lu
  0 siblings, 2 replies; 4+ messages in thread
From: H.J. Lu @ 2024-01-05 21:50 UTC (permalink / raw)
  To: binutils

Add --enable-make-plt linker configure option to mark PLT entries with
DT_X86_64_PLT, DT_X86_64_PLTSZ and DT_X86_64_PLTENT dynamic tags by
default.

When -z mark-plt is used to add DT_X86_64_PLT, DT_X86_64_PLTSZ and
DT_X86_64_PLTENT, the r_addend field of the R_X86_64_JUMP_SLOT relocation
stores the offset of the indirect branch instruction.  However, glibc
versions which don't have this commit in glibc 2.36:

commit f8587a61892cbafd98ce599131bf4f103466f084
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri May 20 19:21:48 2022 -0700

    x86-64: Ignore r_addend for R_X86_64_GLOB_DAT/R_X86_64_JUMP_SLOT

    According to x86-64 psABI, r_addend should be ignored for R_X86_64_GLOB_DAT
    and R_X86_64_JUMP_SLOT.  Since linkers always set their r_addends to 0, we
    can ignore their r_addends.

    Reviewed-by: Fangrui Song <maskray@google.com>

won't ignore the r_addend value in the R_X86_64_JUMP_SLOT relocation.
Although this commit has been backported to glibc 2.33/2.34/2.35 release
branches, it is safer to require glibc 2.36 for such binaries.

Extend the glibc version dependency of GLIBC_ABI_DT_RELR for DT_RELR to
also add GLIBC_2.36 version dependency for -z mark-plt on the the shared C
library if it provides a GLIBC_2.XX symbol version.

H.J. Lu (2):
  elf: Add elf_backend_add_glibc_version_dependency
  ld: Add --enable-make-plt configure option

 bfd/elf-bfd.h                                 |  23 +++
 bfd/elf64-x86-64.c                            |  27 ++++
 bfd/elflink.c                                 | 146 ++++++++++--------
 bfd/elfxx-target.h                            |   5 +
 ld/NEWS                                       |   5 +
 ld/config.in                                  |   4 +
 ld/configure                                  |  26 +++-
 ld/configure.ac                               |  17 ++
 ld/emulparams/x86-64-plt.sh                   |   7 +-
 ld/emultempl/elf-x86.em                       |  17 ++
 .../ld-elf/indirect-extern-access-2.rd        |   2 +-
 ld/testsuite/ld-elf/pr23161d.rd               |   2 +-
 ld/testsuite/ld-ifunc/ifunc-16-x86-64-now.d   |   2 +-
 ld/testsuite/ld-ifunc/ifunc-16-x86-64.d       |   2 +-
 .../ld-ifunc/ifunc-2-local-x86-64-now.d       |   2 +-
 ld/testsuite/ld-ifunc/ifunc-2-local-x86-64.d  |   2 +-
 ld/testsuite/ld-ifunc/ifunc-2-x86-64-now.d    |   2 +-
 ld/testsuite/ld-ifunc/ifunc-2-x86-64.d        |   2 +-
 ld/testsuite/ld-ifunc/ifunc-20-x86-64.d       |   2 +-
 ld/testsuite/ld-ifunc/ifunc-25c-x86.d         |   2 +-
 ld/testsuite/ld-ifunc/ifunc-5b-x86-64.d       |   2 +-
 ld/testsuite/ld-ifunc/pr17154-x86-64-now.d    |   2 +-
 ld/testsuite/ld-ifunc/pr17154-x86-64.d        |   2 +-
 ld/testsuite/ld-x86-64/mark-plt-1a.rd         |   7 +
 ld/testsuite/ld-x86-64/mark-plt-1b.rd         |   7 +
 ld/testsuite/ld-x86-64/x86-64.exp             |  47 +++++-
 26 files changed, 281 insertions(+), 83 deletions(-)
 create mode 100644 ld/testsuite/ld-x86-64/mark-plt-1a.rd
 create mode 100644 ld/testsuite/ld-x86-64/mark-plt-1b.rd

-- 
2.43.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-01-06 14:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-05 21:50 [PATCH 0/2] Improve -z mark-plt H.J. Lu
2024-01-05 21:50 ` [PATCH 1/2] elf: Add elf_backend_add_glibc_version_dependency H.J. Lu
2024-01-05 21:50 ` [PATCH 2/2] ld: Add --enable-make-plt configure option H.J. Lu
2024-01-06 14:41   ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).