From 868b78c83cef264d69a854d9128a68845f346fe3 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 29 Aug 2002 23:24:40 +0000 Subject: * 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/i386/dl-machine.h | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index c499875..fa6ce04 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, -- cgit v1.1