aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gold/ChangeLog5
-rw-r--r--gold/reloc.cc5
2 files changed, 9 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index debf933..7c2feac 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-24 Ian Lance Taylor <iant@google.com>
+
+ PR 10244
+ * reloc.cc (relocate_sections): Skip empty relocation sections.
+
2009-06-23 Ian Lance Taylor <iant@google.com>
PR 10156
diff --git a/gold/reloc.cc b/gold/reloc.cc
index b6394a5..1985867 100644
--- a/gold/reloc.cc
+++ b/gold/reloc.cc
@@ -822,6 +822,10 @@ Sized_relobj<size, big_endian>::relocate_sections(
if (sh_type != elfcpp::SHT_REL && sh_type != elfcpp::SHT_RELA)
continue;
+ off_t sh_size = shdr.get_sh_size();
+ if (sh_size == 0)
+ continue;
+
unsigned int index = this->adjust_shndx(shdr.get_sh_info());
if (index >= this->shnum())
{
@@ -851,7 +855,6 @@ Sized_relobj<size, big_endian>::relocate_sections(
continue;
}
- off_t sh_size = shdr.get_sh_size();
const unsigned char* prelocs = this->get_view(shdr.get_sh_offset(),
sh_size, true, false);