diff -urN glibc-2.2.old/sysdeps/ia64/dl-lookupcfg.h glibc-2.2/sysdeps/ia64/dl-lookupcfg.h --- glibc-2.2.old/sysdeps/ia64/dl-lookupcfg.h Thu Nov 16 18:55:16 2000 +++ glibc-2.2/sysdeps/ia64/dl-lookupcfg.h Thu Nov 16 19:03:46 2000 @@ -39,5 +39,13 @@ ElfW(Addr) start); #define DL_FUNCTION_ADDRESS(map, addr) _dl_function_address ((map), (addr)) +#if 0 #define DL_DT_INIT_ADDRESS(map, addr) DL_FUNCTION_ADDRESS ((map), (addr)) #define DL_DT_FINI_ADDRESS(map, addr) DL_FUNCTION_ADDRESS ((map), (addr)) +#else +#define DL_DT_INIT_ADDRESS(map, addr) \ + ((map)->l_info[DT_PLTGOT]->d_un.d_ptr == *(Elf64_Addr *) ((addr) + 8) \ + ? (addr) : DL_FUNCTION_ADDRESS (map, addr)) +#define DL_DT_FINI_ADDRESS(map, addr) DL_DT_INIT_ADDRESS (map, addr) +#endif +