From 868b78c83cef264d69a854d9128a68845f346fe3 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 29 Aug 2002 23:24:40 +0000 Subject: [PATCH] * 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. --- ChangeLog | 4 ++++ elf/dl-runtime.c | 2 ++ sysdeps/i386/dl-machine.h | 41 ++++++++++++++++++++++------------------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce7fe27..d2d72db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2002-08-29 Roland McGrath + * 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 for alloca decl. diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c index ed1c337..9b24c30 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 #include #include 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, -- 2.7.4