summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl@lucon.org>2006-03-08 21:24:22 +0000
committerH.J. Lu <hjl@lucon.org>2006-03-08 21:24:22 +0000
commit6feb553f5632881ae6c9e9a9befde4e3f4e86d5f (patch)
treec54dc9ed3bac2d19f21d8518486304d3f81d8435
parent976d07ff1b16c1fe354457032dacbc190dda1c0c (diff)
downloadgdb-6feb553f5632881ae6c9e9a9befde4e3f4e86d5f.tar.gz
2006-03-08 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_choose_gp): Properly choose gp.
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/elfxx-ia64.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e91d267a144..855984af639 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2006-03-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elfxx-ia64.c (elfNN_ia64_choose_gp): Properly choose gp.
+
2006-03-07 Richard Sandiford <richard@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Zack Weinberg <zack@codesourcery.com>
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c
index 7a0cc90371e..63c131649b6 100644
--- a/bfd/elfxx-ia64.c
+++ b/bfd/elfxx-ia64.c
@@ -3928,14 +3928,16 @@ elfNN_ia64_choose_gp (abfd, info)
gp_val = got_sec->output_section->vma;
else if (max_short_vma != 0)
gp_val = min_short_vma;
- else
+ else if (max_vma - min_vma < 0x200000)
gp_val = min_vma;
+ else
+ gp_val = max_vma - 0x200000 + 8;
/* If it is possible to address the entire image, but we
don't with the choice above, adjust. */
if (max_vma - min_vma < 0x400000
- && max_vma - gp_val <= 0x200000
- && gp_val - min_vma > 0x200000)
+ && (max_vma - gp_val >= 0x200000
+ || gp_val - min_vma > 0x200000))
gp_val = min_vma + 0x200000;
else if (max_short_vma != 0)
{