Skip to content

Commit

Permalink
Update.
Browse files Browse the repository at this point in the history
	* 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>
  • Loading branch information
Ulrich Drepper committed Aug 24, 2001
1 parent 3dc51a9 commit 95c7835
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
11 changes: 11 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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>

* sysdeps/i386/dl-machine.h (elf_machine_rel): Correct prediction
Expand Down
20 changes: 16 additions & 4 deletions elf/do-rel.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,14 @@ elf_dynamic_do_rel (struct link_map *map,
{
const ElfW(Sym) *const symtab =
(const void *) D_PTR (map, l_info[DT_SYMTAB]);
#ifndef RTLD_BOOTSTRAP
ElfW(Word) nrelative = (map->l_info[RELCOUNT_IDX] == NULL
? 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
/* This is defined in rtld.c, but nowhere in the static libc.a; make
Expand All @@ -71,10 +76,17 @@ elf_dynamic_do_rel (struct link_map *map,
file. */
weak_extern (_dl_rtld_map);
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
for (; r < endrel; ++r)
elf_machine_rel_relative (l_addr, r,
(void *) (l_addr + r->r_offset));
for (; relative < r; ++relative)
elf_machine_rel_relative (l_addr, relative,
(void *) (l_addr + relative->r_offset));

if (map->l_info[VERSYMIDX (DT_VERSYM)])
{
Expand Down

0 comments on commit 95c7835

Please sign in to comment.