diff options
author | Roland McGrath <roland@gnu.org> | 2002-08-29 23:24:40 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-08-29 23:24:40 +0000 |
commit | 868b78c83cef264d69a854d9128a68845f346fe3 (patch) | |
tree | 73f59b7ed8640199040d8bc32a7415a0edbdb1cd /sysdeps/i386 | |
parent | c5738211bd4a61e6950c3e4a61fbb4c366fd13df (diff) | |
download | glibc-868b78c83cef264d69a854d9128a68845f346fe3.tar.gz glibc-868b78c83cef264d69a854d9128a68845f346fe3.tar.xz glibc-868b78c83cef264d69a854d9128a68845f346fe3.zip |
* 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.
Diffstat (limited to 'sysdeps/i386')
-rw-r--r-- | sysdeps/i386/dl-machine.h | 41 |
1 files changed, 22 insertions, 19 deletions
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, |