diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 167c42d739..e53946efe8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2005-05-14 Alan Modra + + * elf32-ppc.c (ppc_elf_size_dynamic_sections): Set DT_PPC_GOT, + not DT_PPC_GLINK. + (ppc_elf_finish_dynamic_sections): Likewise. + 2005-05-13 Fred Fish * libbfd-in.h: Fix a comment typo, 'neaderst' -> 'nearest' diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index bc19406c44..67e7677c75 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -4406,7 +4406,7 @@ ppc_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED, if (htab->glink != NULL && htab->glink->size != 0) { - if (!add_dynamic_entry (DT_PPC_GLINK, 0)) + if (!add_dynamic_entry (DT_PPC_GOT, 0)) return FALSE; } @@ -6313,6 +6313,7 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd, { asection *sdyn; struct ppc_elf_link_hash_table *htab; + bfd_vma got; #ifdef DEBUG fprintf (stderr, "ppc_elf_finish_dynamic_sections called\n"); @@ -6321,6 +6322,12 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd, htab = ppc_elf_hash_table (info); sdyn = bfd_get_section_by_name (htab->elf.dynobj, ".dynamic"); + got = 0; + if (htab->elf.hgot != NULL) + got = (htab->elf.hgot->root.u.def.value + + htab->elf.hgot->root.u.def.section->output_section->vma + + htab->elf.hgot->root.u.def.section->output_offset); + if (htab->elf.dynamic_sections_created) { Elf32_External_Dyn *dyncon, *dynconend; @@ -6352,10 +6359,8 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd, dyn.d_un.d_ptr = s->output_section->vma + s->output_offset; break; - case DT_PPC_GLINK: - s = htab->glink; - dyn.d_un.d_ptr = (s->size - GLINK_PLTRESOLVE - + s->output_section->vma + s->output_offset); + case DT_PPC_GOT: + dyn.d_un.d_ptr = got; break; default: @@ -6389,7 +6394,7 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd, { unsigned char *p; unsigned char *endp; - bfd_vma got, pltgot; + bfd_vma pltgot; unsigned int i; static const unsigned int plt_resolve[] = { @@ -6409,10 +6414,6 @@ ppc_elf_finish_dynamic_sections (bfd *output_bfd, #define PPC_HI(v) (((v) >> 16) & 0xffff) #define PPC_HA(v) PPC_HI ((v) + 0x8000) - got = (htab->elf.hgot->root.u.def.value - + htab->elf.hgot->root.u.def.section->output_section->vma - + htab->elf.hgot->root.u.def.section->output_offset); - pltgot = (htab->plt->output_section->vma + htab->plt->output_offset - got); diff --git a/binutils/ChangeLog b/binutils/ChangeLog index f2fbd37cb7..f3262f97cd 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2005-05-14 Alan Modra + + * readelf.c (get_ppc_dynamic_type): Display DT_PPC_GOT, not + DT_PPC_GLINK. + 2005-05-13 Fred Fish * readelf.c: Fix a couple of obvious comment typos, diff --git a/binutils/readelf.c b/binutils/readelf.c index 3b086cb1f7..0891847599 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -1417,7 +1417,7 @@ get_ppc_dynamic_type (unsigned long type) { switch (type) { - case DT_PPC_GLINK: return "PPC_GLINK"; + case DT_PPC_GOT: return "PPC_GOT"; default: return NULL; } diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index d9d736059a..ab6c3c8dc6 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,7 @@ +2005-05-14 Alan Modra + + * ppc.h (DT_PPC_GOT): Rename from DT_PPC_GLINK. + 2005-05-11 Alan Modra * ppc.h (R_PPC_RELAX32, R_PPC_RELAX32PC, R_PPC_RELAX32_PLT, diff --git a/include/elf/ppc.h b/include/elf/ppc.h index 1ccbda3471..ca5035274d 100644 --- a/include/elf/ppc.h +++ b/include/elf/ppc.h @@ -145,8 +145,8 @@ END_RELOC_NUMBERS (R_PPC_max) #define IS_PPC_TLS_RELOC(R) \ ((R) >= R_PPC_TLS && (R) <= R_PPC_GOT_DTPREL16_HA) -/* Specify the start of the .glink section. */ -#define DT_PPC_GLINK DT_LOPROC +/* Specify the value of _GLOBAL_OFFSET_TABLE_. */ +#define DT_PPC_GOT DT_LOPROC /* Processor specific flags for the ELF header e_flags field. */