summaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd/i386
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 /sysdeps/mach/hurd/i386
parentf2857da7cdb65bfad75ee30981f5b2fde5bbb1dc (diff)
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.
Diffstat (limited to 'sysdeps/mach/hurd/i386')
-rw-r--r--sysdeps/mach/hurd/i386/localplt.data64
1 files changed, 64 insertions, 0 deletions
diff --git a/sysdeps/mach/hurd/i386/localplt.data b/sysdeps/mach/hurd/i386/localplt.data
new file mode 100644
index 0000000000..e0745edac9
--- /dev/null
+++ b/sysdeps/mach/hurd/i386/localplt.data
@@ -0,0 +1,64 @@
+# 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.
+# 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 + 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 + 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 ?
+ld.so: __open64 ?
+ld.so: __close
+ld.so: __read ?
+ld.so: __write ?
+#ld.so: __writev
+ld.so: __libc_lseek64
+ld.so: __mmap
+ld.so: __fxstat64
+ld.so: __xstat64
+#ld.so: __access
+#ld.so: __access_noerrno
+ld.so: __getpid
+#ld.so: __getcwd
+#ld.so: __sbrk
+#ld.so: __strtoul_internal
+#ld.so: _exit
+ld.so: abort
+ld.so: _hurd_intr_rpc_mach_msg
+ld.so: __errno_location
+# rtld_hidden is currently disabled to avoid having to special-case the
+# functions above which do need a PLT. These are thus currently expected.
+ld.so: _dl_allocate_tls
+ld.so: _dl_allocate_tls_init
+ld.so: _dl_exception_create
+ld.so: _dl_exception_create_format
+ld.so: _dl_exception_free
+ld.so: _dl_find_dso_for_object
+ld.so: _dl_init_first
+ld.so: _dl_mcount
+ld.so: ___tls_get_addr
+ld.so: __tunable_get_val
+
+# These should ideally be avoided, but is currently difficult
+libc.so: siglongjmp ?
+libc.so: longjmp ?
+# This is from lseek.c
+libc.so: __libc_lseek64 ?
+# This is through cleanup_region_start from vfprintf.c
+libc.so: _IO_funlockfile ?