This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[hurd,commited] hurd: Fix some ld.so symbol override from libc
- From: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- To: libc-alpha at sourceware dot org
- Cc: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- Date: Fri, 27 Jul 2018 11:22:45 +0200
- Subject: [hurd,commited] hurd: Fix some ld.so symbol override from libc
ld.so symbols to be overriden by libc need to be extern to really get
overriden.
More fixes are needed to avoid the hidden attribute.
* sysdeps/mach/hurd/Versions (libc): Make __access and
__access_noerrno external so they can override the ld symbols.
(ld): Make __access, __read, __sbrk, __strtoul_internal, __write,
__writev, __open64, __access_noerrno extern so they can be overrided.
* sysdeps/mach/hurd/i386/libc.abilist: Update accordingly.
* sysdeps/mach/hurd/i386/ld.abilist: Update accordingly.
---
ChangeLog | 9 +++++++++
sysdeps/mach/hurd/Versions | 19 ++++++++++++++-----
sysdeps/mach/hurd/dl-sysdep.c | 5 ++++-
sysdeps/mach/hurd/i386/ld.abilist | 4 ++++
sysdeps/mach/hurd/i386/libc.abilist | 1 +
sysdeps/mach/hurd/i386/localplt.data | 4 ++--
6 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 5556e82a2d..61edfc5381 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2018-07-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/Versions (libc): Make __access and
+ __access_noerrno external so they can override the ld symbols.
+ (ld): Make __access, __read, __sbrk, __strtoul_internal, __write,
+ __writev, __open64, __access_noerrno extern so they can be overrided.
+ * sysdeps/mach/hurd/i386/libc.abilist: Update accordingly.
+ * sysdeps/mach/hurd/i386/ld.abilist: Update accordingly.
+
2018-07-26 Carlos O'Donell <carlos@redhat.com>
* po/libc.pot: Regenerate.
diff --git a/sysdeps/mach/hurd/Versions b/sysdeps/mach/hurd/Versions
index 7cab8e8551..f69d5fef67 100644
--- a/sysdeps/mach/hurd/Versions
+++ b/sysdeps/mach/hurd/Versions
@@ -1,11 +1,15 @@
libc {
GLIBC_2.0 {
# functions with a weak definition in the dynamic linker
- __getcwd; __mmap;
+ __access; __getcwd; __mmap;
+ }
+ GLIBC_2.2.6 {
+ # functions with a weak definition in the dynamic linker
+ __writev;
}
GLIBC_PRIVATE {
# Functions shared with the dynamic linker
- __libc_read; __libc_write; __libc_lseek64;
+ __access_noerrno; __libc_read; __libc_write; __libc_lseek64;
__libc_lock_self0;
_dl_init_first;
@@ -18,11 +22,16 @@ ld {
__hurd_threadvar_stack_mask; __hurd_threadvar_stack_offset;
# functions that must be shared with libc
- __close; __getcwd; __getpid;
- __mmap; __open; __xstat64; __fxstat64;
+ __access; __close; __getcwd; __getpid;
+ __mmap; __open; __read; __sbrk; __strtoul_internal;
+ __write; __writev; __xstat64; __fxstat64;
_exit; _hurd_intr_rpc_mach_msg;
abort;
}
+ GLIBC_2.2 {
+ # functions that must be shared with libc
+ __open64;
+ }
GLIBC_2.2.6 {
# this also must be shared with libc.
__errno_location;
@@ -31,7 +40,7 @@ ld {
_dl_init_first;
# functions that must be shared with libc
- __libc_read; __libc_write; __libc_lseek64;
+ __access_noerrno; __libc_read; __libc_write; __libc_lseek64;
__libc_lock_self0;
}
}
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index ec55c47f35..b72913d3ba 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -275,7 +275,10 @@ _dl_sysdep_start_cleanup (void)
/* Minimal open/close/mmap implementation sufficient for initial loading of
shared libraries. These are weak definitions so that when the
dynamic linker re-relocates itself to be user-visible (for -ldl),
- it will get the user's definition (i.e. usually libc's). */
+ it will get the user's definition (i.e. usually libc's).
+
+ They also need to be set in the ld section of sysdeps/mach/hurd/Versions, to
+ be overridable, and in libc.abilist and ld.abilist to be checked. */
/* This macro checks that the function does not get renamed to be hidden: we do
need these to be overridable by libc's. */
diff --git a/sysdeps/mach/hurd/i386/ld.abilist b/sysdeps/mach/hurd/i386/ld.abilist
index 14371336de..3a89b5a10e 100644
--- a/sysdeps/mach/hurd/i386/ld.abilist
+++ b/sysdeps/mach/hurd/i386/ld.abilist
@@ -5,6 +5,10 @@ GLIBC_2.2.6 __getpid F
GLIBC_2.2.6 __libc_stack_end D 0x4
GLIBC_2.2.6 __mmap F
GLIBC_2.2.6 __open F
+GLIBC_2.2.6 __open64 F
+GLIBC_2.2.6 __strtoul_internal F
+GLIBC_2.2.6 __write F
+GLIBC_2.2.6 __writev F
GLIBC_2.2.6 __xstat64 F
GLIBC_2.2.6 _dl_mcount F
GLIBC_2.2.6 _hurd_intr_rpc_mach_msg F
diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
index 9a3aac7a92..64586d828d 100644
--- a/sysdeps/mach/hurd/i386/libc.abilist
+++ b/sysdeps/mach/hurd/i386/libc.abilist
@@ -543,6 +543,7 @@ GLIBC_2.2.6 __wctrans_l F
GLIBC_2.2.6 __wctype_l F
GLIBC_2.2.6 __woverflow F
GLIBC_2.2.6 __write F
+GLIBC_2.2.6 __writev F
GLIBC_2.2.6 __wuflow F
GLIBC_2.2.6 __wunderflow F
GLIBC_2.2.6 __xmknod F
diff --git a/sysdeps/mach/hurd/i386/localplt.data b/sysdeps/mach/hurd/i386/localplt.data
index efcf4e4f6e..69d3a2568d 100644
--- a/sysdeps/mach/hurd/i386/localplt.data
+++ b/sysdeps/mach/hurd/i386/localplt.data
@@ -27,7 +27,7 @@ ld.so: __open64 ?
ld.so: __close
ld.so: __read ?
ld.so: __write ?
-#ld.so: __writev
+ld.so: __writev
ld.so: __libc_lseek64
ld.so: __mmap
ld.so: __fxstat64
@@ -37,7 +37,7 @@ ld.so: __xstat64
ld.so: __getpid
#ld.so: __getcwd
#ld.so: __sbrk
-#ld.so: __strtoul_internal
+ld.so: __strtoul_internal
#ld.so: _exit
ld.so: abort
ld.so: _hurd_intr_rpc_mach_msg
--
2.18.0