diff --git a/libexec/rtld-elf/ia64/reloc.c b/libexec/rtld-elf/ia64/reloc.c index ea58f079c36..7f8c1663af4 100644 --- a/libexec/rtld-elf/ia64/reloc.c +++ b/libexec/rtld-elf/ia64/reloc.c @@ -481,6 +481,14 @@ init_pltgot(Obj_Entry *obj) const Elf_Dyn *dynp; Elf_Addr *pltres = 0; + /* + * When there are no PLT relocations, the DT_IA64_PLT_RESERVE entry + * is bogus. Do not setup the BOR pointers in that case. An example + * of where this happens is /usr/lib/libxpg4.so.3. + */ + if (obj->pltrelasize == 0 && obj->pltrelsize == 0) + return; + /* * Find the PLT RESERVE section. */