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.
This commit is contained in:
Samuel Thibault 2018-07-27 11:18:29 +02:00
parent cb1a43db05
commit 20365a315b
6 changed files with 34 additions and 8 deletions

View File

@ -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.

View File

@ -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;
}
}

View File

@ -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. */

View File

@ -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

View File

@ -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

View File

@ -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