From 9360906d42dd15e24f27a35b77f16df516f3c05d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 15 Mar 2002 05:20:35 +0000 Subject: Update. * elf/rtld.c: Declare _environ as hidden. * sysdeps/generic/dl-environ.c: Likewise. * sysdeps/generic/dl-sysdep.c: Likewise. * sysdeps/generic/ldsodefs.h: Declare _dl_debug_state_internal and _dl_mcount_internal as hidden. * elf/Makefile (rtld-routines): Add dl-sbrk and dl-brk. * sysdeps/generic/dl-brk.c: New file. * sysdeps/generic/dl-sbrk.c: New file. * sysdeps/unix/sysv/linux/i386/dl-brk.c: New file. * sysdeps/unix/sysv/linux/i386/dl-sbrk.c: New file. --- ChangeLog | 13 +++++++++++++ elf/Makefile | 2 +- elf/rtld.c | 2 +- sysdeps/generic/dl-brk.c | 2 ++ sysdeps/generic/dl-environ.c | 4 ++++ sysdeps/generic/dl-sbrk.c | 2 ++ sysdeps/generic/dl-sysdep.c | 2 +- sysdeps/generic/ldsodefs.h | 5 +++-- sysdeps/unix/sysv/linux/i386/dl-brk.c | 5 +++++ sysdeps/unix/sysv/linux/i386/dl-sbrk.c | 5 +++++ 10 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sysdeps/generic/dl-brk.c create mode 100644 sysdeps/generic/dl-sbrk.c create mode 100644 sysdeps/unix/sysv/linux/i386/dl-brk.c create mode 100644 sysdeps/unix/sysv/linux/i386/dl-sbrk.c diff --git a/ChangeLog b/ChangeLog index 2941007da3..5f54987dc9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2002-03-14 Ulrich Drepper + * elf/rtld.c: Declare _environ as hidden. + * sysdeps/generic/dl-environ.c: Likewise. + * sysdeps/generic/dl-sysdep.c: Likewise. + + * sysdeps/generic/ldsodefs.h: Declare _dl_debug_state_internal and + _dl_mcount_internal as hidden. + + * elf/Makefile (rtld-routines): Add dl-sbrk and dl-brk. + * sysdeps/generic/dl-brk.c: New file. + * sysdeps/generic/dl-sbrk.c: New file. + * sysdeps/unix/sysv/linux/i386/dl-brk.c: New file. + * sysdeps/unix/sysv/linux/i386/dl-sbrk.c: New file. + * elf/dl-minimal.c (malloc): Declare _end as hidden. (__errno_location): New function. Declare errno as hidden. * elf/rtld.c (_dl_argc): Define as hidden. diff --git a/elf/Makefile b/elf/Makefile index dd4c787dd1..43e622273c 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -38,7 +38,7 @@ elide-routines.os = $(all-dl-routines) dl-support enbl-secure \ # ld.so uses those routines, plus some special stuff for being the program # interpreter and operating independent of libc. rtld-routines := rtld $(dl-routines) dl-sysdep dl-environ dl-minimal \ - dl-xstat64 dl-fxstat64 + dl-xstat64 dl-fxstat64 dl-sbrk dl-brk all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines) distribute := $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ diff --git a/elf/rtld.c b/elf/rtld.c index 57b9e5ff03..575e6f7ddc 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1579,7 +1579,7 @@ a filename can be specified using the LD_DEBUG_OUTPUT environment variable.\n"); /* Process all environments variables the dynamic linker must recognize. Since all of them start with `LD_' we are a bit smarter while finding all the entries. */ -extern char **_environ; +extern char **_environ attribute_hidden; static void diff --git a/sysdeps/generic/dl-brk.c b/sysdeps/generic/dl-brk.c new file mode 100644 index 0000000000..4a0cf2da11 --- /dev/null +++ b/sysdeps/generic/dl-brk.c @@ -0,0 +1,2 @@ +/* Just use the normal code. */ +#include diff --git a/sysdeps/generic/dl-environ.c b/sysdeps/generic/dl-environ.c index 53fa869aeb..132dad9c3e 100644 --- a/sysdeps/generic/dl-environ.c +++ b/sysdeps/generic/dl-environ.c @@ -50,6 +50,10 @@ _dl_next_ld_env_entry (char ***position) return result; } + +/* In ld.so __environ is not exported. */ +extern char **__environ attribute_hidden; + int unsetenv (const char *name) { diff --git a/sysdeps/generic/dl-sbrk.c b/sysdeps/generic/dl-sbrk.c new file mode 100644 index 0000000000..3874975890 --- /dev/null +++ b/sysdeps/generic/dl-sbrk.c @@ -0,0 +1,2 @@ +/* Just use the normal code. */ +#include diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index 36b1150ff7..0f5f0fcdab 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -38,7 +38,7 @@ #include #include -extern char **_environ; +extern char **_environ attribute_hidden; extern void _end attribute_hidden; /* Protect SUID program against misuse of file descriptors. */ diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index d2dd3e60ec..a68ae5e06e 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -634,7 +634,7 @@ extern void _dl_fini (void) internal_function; says what change is taking place. This function's address is the value of the `r_brk' member. */ extern void _dl_debug_state (void); -extern void _dl_debug_state_internal (void); +extern void _dl_debug_state_internal (void) attribute_hidden; /* Initialize `struct r_debug' if it has not already been done. The argument is the run-time load address of the dynamic linker, to be put @@ -655,7 +655,8 @@ extern void _dl_start_profile_internal (struct link_map *map, /* The actual functions used to keep book on the calls. */ extern void _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc); -extern void _dl_mcount_internal (ElfW(Addr) frompc, ElfW(Addr) selfpc); +extern void _dl_mcount_internal (ElfW(Addr) frompc, ElfW(Addr) selfpc) + attribute_hidden; /* This function is simply a wrapper around the _dl_mcount function which does not require a FROMPC parameter since this is the diff --git a/sysdeps/unix/sysv/linux/i386/dl-brk.c b/sysdeps/unix/sysv/linux/i386/dl-brk.c new file mode 100644 index 0000000000..c37cdfec33 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/dl-brk.c @@ -0,0 +1,5 @@ +/* We can use the normal code but we also know the __curbrk is not exported + from ld.so. */ +extern void *__curbrk attribute_hidden; + +#include diff --git a/sysdeps/unix/sysv/linux/i386/dl-sbrk.c b/sysdeps/unix/sysv/linux/i386/dl-sbrk.c new file mode 100644 index 0000000000..4713a92694 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/dl-sbrk.c @@ -0,0 +1,5 @@ +/* We can use the normal code but we also know the __curbrk is not exported + from ld.so. */ +extern void *__curbrk attribute_hidden; + +#include -- cgit 1.4.1