OSDN Git Service

2005-08-09 H.J. Lu <hongjiu.lu@intel.com>
authorhjl <hjl>
Wed, 10 Aug 2005 04:32:49 +0000 (04:32 +0000)
committerhjl <hjl>
Wed, 10 Aug 2005 04:32:49 +0000 (04:32 +0000)
* elfxx-ia64.c (elfNN_ia64_final_link): Reset gp.

bfd/elfxx-ia64.c

index 85f715c..140a0c9 100644 (file)
@@ -3981,15 +3981,15 @@ elfNN_ia64_final_link (abfd, info)
   /* Make sure we've got ourselves a nice fat __gp value.  */
   if (!info->relocatable)
     {
-      bfd_vma gp_val = _bfd_get_gp_value (abfd);
+      bfd_vma gp_val;
       struct elf_link_hash_entry *gp;
 
-      if (gp_val == 0)
-       {
-         if (! elfNN_ia64_choose_gp (abfd, info))
-           return FALSE;
-         gp_val = _bfd_get_gp_value (abfd);
-       }
+      /* We assume after gp is set, section size will only decrease. We
+        need to adjust gp for it.  */
+      _bfd_set_gp_value (abfd, 0);
+      if (! elfNN_ia64_choose_gp (abfd, info))
+       return FALSE;
+      gp_val = _bfd_get_gp_value (abfd);
 
       gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE,
                                 FALSE, FALSE);