aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2008-05-29 23:51:30 +0000
committerIan Lance Taylor <ian@airs.com>2008-05-29 23:51:30 +0000
commite09ad04ada67c0aa5c6c0f233aeede49c1ed484f (patch)
tree1075a2a3c74eec5f0bde6714bf2856c73470ec96
parentb15591bb36cc0a263f3fa2e8cdd20021fd4a26fc (diff)
downloadgdb-e09ad04ada67c0aa5c6c0f233aeede49c1ed484f.zip
gdb-e09ad04ada67c0aa5c6c0f233aeede49c1ed484f.tar.gz
gdb-e09ad04ada67c0aa5c6c0f233aeede49c1ed484f.tar.bz2
PR 6407
* target-reloc.h (relocate_for_relocatable): Fix new_offset calculation.
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/target-reloc.h6
2 files changed, 11 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index a20de3a..0fb667d 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-29 Kris Van Hees <kris.van.hees@oracle.com>
+
+ PR 6407
+ * target-reloc.h (relocate_for_relocatable): Fix new_offset
+ calculation.
+
2008-05-28 Caleb Howe <cshowe@google.com>
* reduced_debug_output.cc: New file.
diff --git a/gold/target-reloc.h b/gold/target-reloc.h
index d06dc82..15d59bb 100644
--- a/gold/target-reloc.h
+++ b/gold/target-reloc.h
@@ -542,7 +542,11 @@ relocate_for_relocatable(
// In an executable or dynamic object, generated by
// --emit-relocs, r_offset is an absolute address.
if (!parameters->options().relocatable())
- new_offset += view_address;
+ {
+ new_offset += view_address;
+ if (offset_in_output_section != -1)
+ new_offset -= offset_in_output_section;
+ }
reloc_write.put_r_offset(new_offset);
reloc_write.put_r_info(elfcpp::elf_r_info<size>(new_symndx, r_type));