From b18e2ae59e62bbe2f1f06dbb772dfc525e519a6d Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 7 Mar 2005 06:01:17 +0000 Subject: [PATCH] PR ld/778 * elf32-hppa.c (elf32_hppa_create_dynamic_sections): Reinstate _GLOBAL_OFFSET_TABLE_ as a normal dynamic symbol. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-hppa.c | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d29f1e86a8e..874c1b01662 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2005-03-07 Alan Modra + + PR ld/778 + * elf32-hppa.c (elf32_hppa_create_dynamic_sections): Reinstate + _GLOBAL_OFFSET_TABLE_ as a normal dynamic symbol. + 2005-03-06 Alan Modra * elf.c (elfcore_grok_win32pstatus): Warning fixes. diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index d861847628c..59250110231 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -937,6 +937,7 @@ static bfd_boolean elf32_hppa_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) { struct elf32_hppa_link_hash_table *htab; + struct elf_link_hash_entry *h; /* Don't try to create the .plt and .got twice. */ htab = hppa_link_hash_table (info); @@ -966,7 +967,12 @@ elf32_hppa_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) htab->sdynbss = bfd_get_section_by_name (abfd, ".dynbss"); htab->srelbss = bfd_get_section_by_name (abfd, ".rela.bss"); - return TRUE; + /* hppa-linux needs _GLOBAL_OFFSET_TABLE_ to be visible from the main + application, because __canonicalize_funcptr_for_compare needs it. */ + h = elf_hash_table (info)->hgot; + h->forced_local = 0; + h->other = STV_DEFAULT; + return bfd_elf_link_record_dynamic_symbol (info, h); } /* Copy the extra info we tack onto an elf_link_hash_entry. */ @@ -1836,7 +1842,7 @@ allocate_plt_static (struct elf_link_hash_entry *h, void *inf) info = inf; htab = hppa_link_hash_table (info); if (htab->elf.dynamic_sections_created - && h->plt.refcount > 0) + && h->plt.refcount > 0) { /* Make sure this symbol is output as a dynamic symbol. Undefined weak syms won't yet be marked as dynamic. */ -- 2.30.2