about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-06-19 02:32:41 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-06-19 02:32:41 +0200
commitc77e4dc0f531caa8f3302a5aa5d755efb7c5725b (patch)
treedb317043f0c01bcd02adde065fd4b841389b1c0c
parentf2857da7cdb65bfad75ee30981f5b2fde5bbb1dc (diff)
downloadglibc-c77e4dc0f531caa8f3302a5aa5d755efb7c5725b.tar.gz
glibc-c77e4dc0f531caa8f3302a5aa5d755efb7c5725b.tar.xz
glibc-c77e4dc0f531caa8f3302a5aa5d755efb7c5725b.zip
hurd: Fix "Missing required PLT reference"
	* 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.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/mach/hurd/i386/localplt.data (renamed from sysdeps/mach/hurd/localplt.data)30
2 files changed, 22 insertions, 14 deletions
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
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 ?