--- ./elf/dl-runtime.c.orig 2004-09-02 12:06:09.000000000 +0200 +++ ./elf/dl-runtime.c 2004-09-02 12:08:02.000000000 +0200 @@ -46,6 +46,9 @@ #ifndef ELF_MACHINE_NO_PLT static ElfW(Addr) __attribute_used__ +#ifdef ELF_MACHINE_RUNTIME_FIXUP_ATTR + ELF_MACHINE_RUNTIME_FIXUP_ATTR +#endif fixup ( # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS ELF_MACHINE_RUNTIME_FIXUP_ARGS, @@ -133,6 +136,9 @@ #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__ static ElfW(Addr) __attribute_used__ +#ifdef ELF_MACHINE_RUNTIME_PROFILE_FIXUP_ATTR + ELF_MACHINE_RUNTIME_PROFILE_FIXUP_ATTR +#endif profile_fixup ( #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS ELF_MACHINE_RUNTIME_FIXUP_ARGS, --- ./sysdeps/i386/dl-machine.h.orig 2004-09-02 12:05:52.000000000 +0200 +++ ./sysdeps/i386/dl-machine.h 2004-09-02 12:08:20.000000000 +0200 @@ -154,11 +154,13 @@ destroys the passed register information. */ /* GKM FIXME: Fix trampoline to pass bounds so we can do without the `__unbounded' qualifier. */ +#define ELF_MACHINE_RUNTIME_FIXUP_ATTR __attribute__ ((regparm (2))) +#define ELF_MACHINE_RUNTIME_PROFILE_FIXUP_ATTR __attribute__ ((regparm (3))) static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset) - __attribute__ ((regparm (2), unused)); + __attribute_used__ ELF_MACHINE_RUNTIME_FIXUP_ATTR; static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, ElfW(Addr) retaddr) - __attribute__ ((regparm (3), unused)); + __attribute_used__ ELF_MACHINE_RUNTIME_PROFILE_FIXUP_ATTR; # endif /* This code is used in dl-runtime.c to call the `fixup' function