/* The MSB of got[1] of a gnu object is set to identify gnu objects. */
#define ELF_MIPS_GNU_GOT1_MASK 0x80000000
-/* GNU Binutils upto 2.10 produce a wrong relocations. Bit 30 of
- got[1] marks good objects. */
-#define ELF_MIPS_GNU_GOT1_OK 0x00000001
-
/* We can't rely on elf_machine_got_rel because _dl_object_relocation_scope
fiddles with global data. */
#define ELF_MACHINE_BEFORE_RTLD_RELOC(dynamic_info) \
\
got = (ElfW(Addr) *) D_PTR (map, l_info[DT_PLTGOT]); \
\
- if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0) \
- got[1] = (ElfW(Addr)) ELF_MIPS_GNU_GOT1_MASK \
- | (got[1] & ELF_MIPS_GNU_GOT1_OK); \
- \
if (__builtin_expect (map->l_addr == 0, 1)) \
goto done; \
\
if ((g1 & ELF_MIPS_GNU_GOT1_MASK) != 0)
{
- struct link_map *l = (struct link_map *)
- (g1 & ~(ELF_MIPS_GNU_GOT1_MASK|ELF_MIPS_GNU_GOT1_OK));
+ struct link_map *l =
+ (struct link_map *) (g1 & ~ELF_MIPS_GNU_GOT1_MASK);
ElfW(Addr) base, limit;
const ElfW(Phdr) *p = l->l_phdr;
ElfW(Half) this, nent = l->l_phnum;
of got[1] of a gnu object is set to identify gnu objects.
Where we can store l for non gnu objects? XXX */
if ((got[1] & ELF_MIPS_GNU_GOT1_MASK) != 0)
- got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK
- | (got[1] & ELF_MIPS_GNU_GOT1_OK));
+ got[1] = (ElfW(Addr)) ((unsigned) l | ELF_MIPS_GNU_GOT1_MASK);
else
_dl_mips_gnu_objects = 0;
}