in l_info array. */
#define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM)
-#if 0
-/* We may need 64k alignment. */
-#define ELF_MACHINE_ALIGN_MASK 0xffff
-#endif
-
/*
* MIPS libraries are usually linked to a non-zero base address. We
* subtract the base address from the address where we map the object
special argument registers t7 ($15) and t8 ($24):
t7 address to return to the caller of the function
t8 index for this function symbol in .dynsym
- to usual c arguments. */
+ to usual c arguments.
+ Other architectures call fixup from dl-runtime.c in
+ _dl_runtime_resolve. MIPS instead calls __dl_runtime_resolve. We
+ have to use our own version because of the way the got section is
+ treaded on MIPS (we've also got ELF_MACHINE_PLT defined). */
+
#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
/* The flag _dl_mips_gnu_objects is set if all dynamic objects are \
generated by the gnu linker. */ \
/* Look up the symbol's run-time value. */ \
definer = &symtab[sym_index]; \
\
+ /* FIXME: Handle symbol versioning correctly. */ \
loadbase = _dl_lookup_symbol (strtab + definer->st_name, l, &definer, \
l->l_scope, R_MIPS_REL32); \
\
ElfW(Sym) *sym;
int i, n;
const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-
+ /* FIXME: The macro RESOLVE_GOTSYM is not handling versioning. */
#define RESOLVE_GOTSYM(sym) \
({ \
const ElfW(Sym) *ref = sym; \
}
/* Set up the loaded object described by L so its stub function
- will jump to the on-demand fixup code in dl-runtime.c. */
+ will jump to the on-demand fixup code __dl_runtime_resolve. */
static inline int
elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)