summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--elf/dl-runtime.c2
-rw-r--r--sysdeps/i386/dl-machine.h41
3 files changed, 28 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index ce7fe274f0..d2d72db499 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2002-08-29  Roland McGrath  <roland@redhat.com>
 
+	* elf/dl-runtime.c (IN_DL_RUNTIME): Define this macro first thing.
+	* sysdeps/i386/dl-machine.h: Only declare fixup, profile_fixup and
+	define ELF_MACHINE_RUNTIME_TRAMPOLINE under #ifdef IN_DL_RUNTIME.
+
 	* sysdeps/generic/readelflib.c (process_elf_file): Fix typo.
 
 	* iconv/gconv_int.h: Include <stdlib.h> for alloca decl.
diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c
index ed1c337367..9b24c30841 100644
--- a/elf/dl-runtime.c
+++ b/elf/dl-runtime.c
@@ -17,6 +17,8 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#define IN_DL_RUNTIME 1		/* This can be tested in dl-machine.h.  */
+
 #include <alloca.h>
 #include <stdlib.h>
 #include <unistd.h>
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index c499875023..fa6ce04d99 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -92,22 +92,6 @@ elf_machine_load_address (void)
 #endif
 
 
-#if !defined PROF && !__BOUNDED_POINTERS__
-/* We add a declaration of this function here so that in dl-runtime.c
-   the ELF_MACHINE_RUNTIME_TRAMPOLINE macro really can pass the parameters
-   in registers.
-
-   We cannot use this scheme for profiling because the _mcount call
-   destroys the passed register information.  */
-/* GKM FIXME: Fix trampoline to pass bounds so we can do
-   without the `__unbounded' qualifier.  */
-static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
-     __attribute__ ((regparm (2), unused));
-static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
-				 ElfW(Addr) retaddr)
-     __attribute__ ((regparm (3), unused));
-#endif
-
 /* Set up the loaded object described by L so its unrelocated PLT
    entries will jump to the on-demand fixup code in dl-runtime.c.  */
 
@@ -159,10 +143,28 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
   return lazy;
 }
 
+#ifdef IN_DL_RUNTIME
+
+# if !defined PROF && !__BOUNDED_POINTERS__
+/* We add a declaration of this function here so that in dl-runtime.c
+   the ELF_MACHINE_RUNTIME_TRAMPOLINE macro really can pass the parameters
+   in registers.
+
+   We cannot use this scheme for profiling because the _mcount call
+   destroys the passed register information.  */
+/* GKM FIXME: Fix trampoline to pass bounds so we can do
+   without the `__unbounded' qualifier.  */
+static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset)
+     __attribute__ ((regparm (2), unused));
+static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset,
+				 ElfW(Addr) retaddr)
+     __attribute__ ((regparm (3), unused));
+# endif
+
 /* This code is used in dl-runtime.c to call the `fixup' function
    and then redirect to the address it returns.  */
-#if !defined PROF && !__BOUNDED_POINTERS__
-# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
+# if !defined PROF && !__BOUNDED_POINTERS__
+#  define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\
 	.text\n\
 	.globl _dl_runtime_resolve\n\
 	.type _dl_runtime_resolve, @function\n\
@@ -198,7 +200,7 @@ _dl_runtime_profile:\n\
 	.size _dl_runtime_profile, .-_dl_runtime_profile\n\
 	.previous\n\
 ");
-#else
+# else
 # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\
 	.text\n\
 	.globl _dl_runtime_resolve\n\
@@ -226,6 +228,7 @@ _dl_runtime_profile:\n\
 	.size _dl_runtime_profile, .-_dl_runtime_profile\n\
 	.previous\n\
 ");
+# endif
 #endif
 
 /* Mask identifying addresses reserved for the user program,