OSDN Git Service

(elf32_hppa_set_gp): Handle weak $global$.
authorAlan Modra <amodra@bigpond.net.au>
Tue, 13 Feb 2001 10:14:14 +0000 (10:14 +0000)
committerAlan Modra <amodra@bigpond.net.au>
Tue, 13 Feb 2001 10:14:14 +0000 (10:14 +0000)
If $global$ referenced but not defined, set its value here.

bfd/ChangeLog
bfd/elf32-hppa.c

index 341728e..0df7160 100644 (file)
@@ -1,3 +1,8 @@
+2001-02-13  Alan Modra  <alan@linuxcare.com.au>
+
+       * 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  <bo@suse.de>
 
        * elf64-x86-64.c (elf64_x86_64_check_relocs): Set .rela.got section
index 13f1e5a..63071f3 100644 (file)
@@ -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)