diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/m68k/dl-machine.h | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 48ff28c87b..522299e825 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Jun 5 22:06:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * sysdeps/m68k/dl-machine.h (elf_machine_rela): Fix type of reloc + argument. + [case R_68K_32]: Check for resolve being null. + (RTLD_START): Add missing label. + Fri Jun 7 1996 05:29:32 Ulrich Drepper <drepper@cygnus.com> * misc/lsearch.c: New file. Implementation of lfind and diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index 6c6b01de2b..74e88749e6 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -73,7 +73,7 @@ elf_machine_load_address (void) static inline void elf_machine_rela (struct link_map *map, - const Elf32_Rel *reloc, const Elf32_Sym *sym, + const Elf32_Rela *reloc, const Elf32_Sym *sym, Elf32_Addr (*resolve) (const Elf32_Sym **ref, Elf32_Addr reloc_addr, int noplt)) @@ -110,7 +110,9 @@ elf_machine_rela (struct link_map *map, + reloc->r_addend); break; case R_68K_32: - loadbase = (*resolve) (&sym, (Elf32_Addr) reloc_addr, 0); + loadbase = (resolve ? (*resolve) (&sym, (Elf32_Addr) reloc_addr, 0) : + /* RESOLVE is null during bootstrap relocation. */ + map->l_addr); *reloc_addr = ((sym ? (loadbase + sym->st_value) : 0) + reloc->r_addend); break; @@ -250,7 +252,7 @@ _dl_start_user: lea (%sp, %d0*4), %sp | Push back the modified argument count. move.l %d1, -(%sp) - | Push _dl_loaded as argument in _dl_init_next call below. +0: | Push _dl_loaded as argument in _dl_init_next call below. move.l ([_dl_loaded@GOT, %a5]), %d2 0: move.l %d2, -(%sp) | Call _dl_init_next to return the address of an initializer |