[hurd,commited] hurd: Fix "Missing required PLT reference"

Message ID 20180619003343.22648-1-samuel.thibault@ens-lyon.org
State New
Headers show
Series
  • [hurd,commited] hurd: Fix "Missing required PLT reference"
Related show

Commit Message

Samuel Thibault June 19, 2018, 12:33 a.m.
* sysdeps/mach/hurd/localplt.data: Move to...
	* sysdeps/mach/hurd/i386/localplt.data: new file. Add + REL
	R_386_GLOB_DAT like on Linux i386.
---
 ChangeLog                                  |  6 +++++
 sysdeps/mach/hurd/{ => i386}/localplt.data | 30 ++++++++++++----------
 2 files changed, 22 insertions(+), 14 deletions(-)
 rename sysdeps/mach/hurd/{ => i386}/localplt.data (69%)

-- 
2.17.1

Patch

diff --git a/ChangeLog b/ChangeLog
index fd6e171be2..e83db88929 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@ 
+2018-06-18  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* sysdeps/mach/hurd/localplt.data: Move to...
+	* sysdeps/mach/hurd/i386/localplt.data: new file. Add + REL
+	R_386_GLOB_DAT like on Linux i386.
+
 2018-06-18  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/alpha/bits/shm.h [__USE_MISC]
diff --git a/sysdeps/mach/hurd/localplt.data b/sysdeps/mach/hurd/i386/localplt.data
similarity index 69%
rename from sysdeps/mach/hurd/localplt.data
rename to sysdeps/mach/hurd/i386/localplt.data
index a1f1ae626a..e0745edac9 100644
--- a/sysdeps/mach/hurd/localplt.data
+++ b/sysdeps/mach/hurd/i386/localplt.data
@@ -1,23 +1,25 @@ 
 # See scripts/check-localplt.awk for how this file is processed.
 # PLT use is required for the malloc family and for matherr because
 # users can define their own functions and have library internals call them.
-libc.so: calloc
-libc.so: free
-libc.so: malloc
-libc.so: memalign
-libc.so: realloc
-libm.so: matherr
+# Linker in binutils 2.26 and newer consolidates R_X86_64_JUMP_SLOT
+# relocation with R_386_GLOB_DAT relocation against the same symbol.
+libc.so: calloc + REL R_386_GLOB_DAT
+libc.so: free + REL R_386_GLOB_DAT
+libc.so: malloc + REL R_386_GLOB_DAT
+libc.so: memalign + REL R_386_GLOB_DAT
+libc.so: realloc + REL R_386_GLOB_DAT
+libm.so: matherr + REL R_386_GLOB_DAT
 # The main malloc is interposed into the dynamic linker, for
 # allocations after the initial link (when dlopen is used).
-ld.so: malloc
-ld.so: calloc
-ld.so: realloc
-ld.so: free
+ld.so: malloc + REL R_386_GLOB_DAT
+ld.so: calloc + REL R_386_GLOB_DAT
+ld.so: realloc + REL R_386_GLOB_DAT
+ld.so: free + REL R_386_GLOB_DAT
 # The TLS-enabled version of these functions is interposed from libc.so.
-ld.so: _dl_signal_error
-ld.so: _dl_catch_error
-ld.so: _dl_signal_exception
-ld.so: _dl_catch_exception
+ld.so: _dl_signal_error + REL R_386_GLOB_DAT
+ld.so: _dl_catch_error + REL R_386_GLOB_DAT
+ld.so: _dl_signal_exception + REL R_386_GLOB_DAT
+ld.so: _dl_catch_exception + REL R_386_GLOB_DAT
 # The dynamic linker has its own versions of basic functions for initial loading
 # of shared libraries.  These need to be overriden by libc once loaded.
 ld.so: __open ?