aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2009-12-30 20:35:52 +0000
committerIan Lance Taylor <ian@airs.com>2009-12-30 20:35:52 +0000
commit818bf354a7114bb7116f07c0d187fbe6c9c15c31 (patch)
treea4ce04c39146c1ce5f8ad72e0dbe50e864706beb
parentebcc83046fa1227ac895ae9a2d715b547d62ad08 (diff)
downloadgdb-818bf354a7114bb7116f07c0d187fbe6c9c15c31.zip
gdb-818bf354a7114bb7116f07c0d187fbe6c9c15c31.tar.gz
gdb-818bf354a7114bb7116f07c0d187fbe6c9c15c31.tar.bz2
PR 10843
* target-reloc.h (relocate_for_relocatable): When copying a reloc, if the input symbol index is 0, make the output symbol index 0.
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/target-reloc.h9
2 files changed, 13 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index ea16c7a..3dd3280 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,5 +1,11 @@
2009-12-30 Ian Lance Taylor <iant@google.com>
+ PR 10843
+ * target-reloc.h (relocate_for_relocatable): When copying a reloc,
+ if the input symbol index is 0, make the output symbol index 0.
+
+2009-12-30 Ian Lance Taylor <iant@google.com>
+
PR 10670
* options.h (class General_options): Add -x/--discard-all.
* object.cc (Sized_relobj::do_count_local_symbols): Handle
diff --git a/gold/target-reloc.h b/gold/target-reloc.h
index bc4d1ba..25b3ac4 100644
--- a/gold/target-reloc.h
+++ b/gold/target-reloc.h
@@ -503,8 +503,13 @@ relocate_for_relocatable(
switch (strategy)
{
case Relocatable_relocs::RELOC_COPY:
- new_symndx = object->symtab_index(r_sym);
- gold_assert(new_symndx != -1U);
+ if (r_sym == 0)
+ new_symndx = 0;
+ else
+ {
+ new_symndx = object->symtab_index(r_sym);
+ gold_assert(new_symndx != -1U);
+ }
break;
case Relocatable_relocs::RELOC_ADJUST_FOR_SECTION_RELA: