From: Alan Modra Date: Tue, 13 Feb 2001 10:14:14 +0000 (+0000) Subject: (elf32_hppa_set_gp): Handle weak $global$. X-Git-Tag: gprof-pre-ansify-2004-05-26~7045 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=60dea2b6242a8f85fdbdc3098c2432f6d953f5e8;p=pf3gnuchains%2Fpf3gnuchains4x.git (elf32_hppa_set_gp): Handle weak $global$. If $global$ referenced but not defined, set its value here. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 341728e21f..0df71602e6 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2001-02-13 Alan Modra + + * elf32-hppa.c (elf32_hppa_set_gp): Handle weak $global$. If + $global$ referenced but not defined, set its value here. + 2001-02-09 Bo Thorsen * elf64-x86-64.c (elf64_x86_64_check_relocs): Set .rela.got section diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index 13f1e5a37d..63071f3aee 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -3024,7 +3024,9 @@ elf32_hppa_set_gp (abfd, info) h = elf_link_hash_lookup (&hplink->root, "$global$", false, false, false); - if (h != NULL && h->root.type == bfd_link_hash_defined) + if (h != NULL + && (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak)) { gp_val = h->root.u.def.value; sec = h->root.u.def.section; @@ -3067,6 +3069,16 @@ elf32_hppa_set_gp (abfd, info) sec = bfd_get_section_by_name (abfd, ".data"); } } + + if (h != NULL) + { + h->root.type = bfd_link_hash_defined; + h->root.u.def.value = gp_val; + if (sec != NULL) + h->root.u.def.section = sec; + else + h->root.u.def.section = bfd_abs_section_ptr; + } } if (sec != NULL)