mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-10 11:20:10 +00:00
Update.
* elf/do-rel.h (elf_dynamic_do_rel) [RTLD_BOOTSTRAP]: Disable use of RELCOUNT for now until we know what is wrong with it. 2001-08-24 Jakub Jelinek <jakub@redhat.com> * elf/do-rel.h (elf_dynamic_do_rel): If l_addr is 0, skip relative records. Rename endrel to relative, initialize it to r, and use it in elf_machine_rel_relative calls. Point r after relative relocs. 2001-08-24 Ulrich Drepper <drepper@redhat.com>
This commit is contained in:
parent
3dc51a93de
commit
95c7835028
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
2001-08-24 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* elf/do-rel.h (elf_dynamic_do_rel) [RTLD_BOOTSTRAP]: Disable use of
|
||||||
|
RELCOUNT for now until we know what is wrong with it.
|
||||||
|
|
||||||
|
2001-08-24 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* elf/do-rel.h (elf_dynamic_do_rel): If l_addr is 0, skip relative
|
||||||
|
records. Rename endrel to relative, initialize it to r, and use it
|
||||||
|
in elf_machine_rel_relative calls. Point r after relative relocs.
|
||||||
|
|
||||||
2001-08-24 Ulrich Drepper <drepper@redhat.com>
|
2001-08-24 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/i386/dl-machine.h (elf_machine_rel): Correct prediction
|
* sysdeps/i386/dl-machine.h (elf_machine_rel): Correct prediction
|
||||||
|
20
elf/do-rel.h
20
elf/do-rel.h
@ -58,9 +58,14 @@ elf_dynamic_do_rel (struct link_map *map,
|
|||||||
{
|
{
|
||||||
const ElfW(Sym) *const symtab =
|
const ElfW(Sym) *const symtab =
|
||||||
(const void *) D_PTR (map, l_info[DT_SYMTAB]);
|
(const void *) D_PTR (map, l_info[DT_SYMTAB]);
|
||||||
|
#ifndef RTLD_BOOTSTRAP
|
||||||
ElfW(Word) nrelative = (map->l_info[RELCOUNT_IDX] == NULL
|
ElfW(Word) nrelative = (map->l_info[RELCOUNT_IDX] == NULL
|
||||||
? 0 : map->l_info[RELCOUNT_IDX]->d_un.d_val);
|
? 0 : map->l_info[RELCOUNT_IDX]->d_un.d_val);
|
||||||
const ElfW(Rel) *endrel = r + nrelative;
|
#else
|
||||||
|
ElfW(Word) nrelative = 0;
|
||||||
|
#endif
|
||||||
|
const ElfW(Rel) *relative = r;
|
||||||
|
r += nrelative;
|
||||||
|
|
||||||
#ifndef RTLD_BOOTSTRAP
|
#ifndef RTLD_BOOTSTRAP
|
||||||
/* This is defined in rtld.c, but nowhere in the static libc.a; make
|
/* This is defined in rtld.c, but nowhere in the static libc.a; make
|
||||||
@ -71,10 +76,17 @@ elf_dynamic_do_rel (struct link_map *map,
|
|||||||
file. */
|
file. */
|
||||||
weak_extern (_dl_rtld_map);
|
weak_extern (_dl_rtld_map);
|
||||||
if (map != &_dl_rtld_map) /* Already done in rtld itself. */
|
if (map != &_dl_rtld_map) /* Already done in rtld itself. */
|
||||||
|
# ifndef DO_RELA
|
||||||
|
/* Rela platforms get the offset from r_addend and this must
|
||||||
|
be copied in the relocation address. Therefore we can skip
|
||||||
|
the relative relocations only if this is for rel
|
||||||
|
relocations. */
|
||||||
|
if (l_addr != 0)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
for (; r < endrel; ++r)
|
for (; relative < r; ++relative)
|
||||||
elf_machine_rel_relative (l_addr, r,
|
elf_machine_rel_relative (l_addr, relative,
|
||||||
(void *) (l_addr + r->r_offset));
|
(void *) (l_addr + relative->r_offset));
|
||||||
|
|
||||||
if (map->l_info[VERSYMIDX (DT_VERSYM)])
|
if (map->l_info[VERSYMIDX (DT_VERSYM)])
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user