about summary refs log tree commit diff
path: root/elf/rtld.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-25 20:14:50 +0000
committerRoland McGrath <roland@gnu.org>2002-08-25 20:14:50 +0000
commit6ce3881de539b0a76673da3ea6fdac7453b47910 (patch)
tree2c5ab5ce32db69bf2d38b1759ec61e5f9fc3ff78 /elf/rtld.c
parentd8a36a812d9ee3c2fd935d2391b27303903f0091 (diff)
downloadglibc-6ce3881de539b0a76673da3ea6fdac7453b47910.tar.gz
glibc-6ce3881de539b0a76673da3ea6fdac7453b47910.tar.xz
glibc-6ce3881de539b0a76673da3ea6fdac7453b47910.zip
* sysdeps/generic/utmp_file.c (UNLOCK_FILE): Clear alarm before
	resetting handler, to avoid the possibility of a spurious SIGALRM
	delivered to the user's handler.
	Reported by Amit D. Chaudhary <amitc@brocade.com>,

	* misc/Makefile (CFLAGS-init-misc.c): Varaible removed.  It served to
	set -fkeep-inline-functions, which is not needed for the current file.

	* sysdeps/generic/ldsodefs.h: Add attribute_hidden to *_internal decls.
	(_dl_setup_hash): Add attribute_hidden.
	(_dl_sysdep_start, _dl_sysdep_start_cleanup): Likewise.
	(_dl_sysdep_read_whole_file, _dl_dprintf): Likewise.
	(_dl_new_object, _dl_map_object_deps): Likewise.
	(_dl_map_object_deps_internal): Remove decl.
	* elf/rtld.c (__mempcpy, _exit): Redeclare locally as hidden.

	* sysdeps/i386/dl-machine.h [PI_STATIC_AND_HIDDEN
	&& HAVE_VISIBILITY_ATTRIBUTE && HAVE_HIDDEN
	&& !HAVE_BROKEN_VISIBILITY_ATTRIBUTE]
	(elf_machine_dynamic, elf_machine_load_address): Rewritten without asm,
	instead relying on the compiler to produce only GOTOFF variable refs.
Diffstat (limited to 'elf/rtld.c')
-rw-r--r--elf/rtld.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/elf/rtld.c b/elf/rtld.c
index 0c8bba3c7c..7c7c926d81 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -40,6 +40,13 @@
 
 #include <assert.h>
 
+/* Avoid PLT use for our local calls at startup.  */
+extern __typeof (__mempcpy) __mempcpy attribute_hidden;
+
+/* GCC has mental blocks about _exit.  */
+extern __typeof (_exit) exit_internal asm ("_exit") attribute_hidden;
+#define _exit exit_internal
+
 /* Helper function to handle errors while resolving symbols.  */
 static void print_unresolved (int errcode, const char *objname,
 			      const char *errsting);