aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-ppc.c21
-rw-r--r--binutils/ChangeLog5
-rw-r--r--binutils/readelf.c2
-rw-r--r--include/elf/ChangeLog4
-rw-r--r--include/elf/ppc.h4
6 files changed, 29 insertions, 13 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 167c42d7..e53946e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-14 Alan Modra <amodra@bigpond.net.au>
+
+ * 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 <fnf@specifixinc.com>
* libbfd-in.h: Fix a comment typo, 'neaderst' -> 'nearest'
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index bc19406..67e7677 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 f2fbd37..f3262f9 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-14 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_ppc_dynamic_type): Display DT_PPC_GOT, not
+ DT_PPC_GLINK.
+
2005-05-13 Fred Fish <fnf@specifixinc.com>
* readelf.c: Fix a couple of obvious comment typos,
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 3b086cb..0891847 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 d9d7360..ab6c3c8 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,3 +1,7 @@
+2005-05-14 Alan Modra <amodra@bigpond.net.au>
+
+ * ppc.h (DT_PPC_GOT): Rename from DT_PPC_GLINK.
+
2005-05-11 Alan Modra <amodra@bigpond.net.au>
* 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 1ccbda3..ca50352 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. */