aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2011-04-14 23:29:41 +0000
committerCary Coutant <ccoutant@google.com>2011-04-14 23:29:41 +0000
commitbec5b57944f72ea8b37f1ceccec3655c6b718042 (patch)
tree39b82e2a2a72de04d19c17eab57857d56a25595a
parent902cc293a01e649f45869d567e957cc303e44b96 (diff)
downloadgdb-bec5b57944f72ea8b37f1ceccec3655c6b718042.zip
gdb-bec5b57944f72ea8b37f1ceccec3655c6b718042.tar.gz
gdb-bec5b57944f72ea8b37f1ceccec3655c6b718042.tar.bz2
* gold/layout.cc (Layout::symtab_section_offset): New function.
* gold/layout.h (Layout::symtab_section_offset): New function. * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
-rw-r--r--gold/ChangeLog6
-rw-r--r--gold/layout.cc10
-rw-r--r--gold/layout.h4
-rw-r--r--gold/reloc.cc2
4 files changed, 21 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index bb29127..38d528c 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,9 @@
+2011-04-14 Cary Coutant <ccoutant@google.com>
+
+ * gold/layout.cc (Layout::symtab_section_offset): New function.
+ * gold/layout.h (Layout::symtab_section_offset): New function.
+ * gold/reloc.cc (Sized_relobj::do_relocate): Call it.
+
2011-04-12 Ian Lance Taylor <iant@google.com>
* configure.ac: Check for sys/mman.h and mmap. Check for mremap
diff --git a/gold/layout.cc b/gold/layout.cc
index 26ac130d..7afb21f 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -4371,6 +4371,16 @@ Layout::make_output_segment(elfcpp::Elf_Word type, elfcpp::Elf_Word flags)
return oseg;
}
+// Return the file offset of the normal symbol table.
+
+off_t
+Layout::symtab_section_offset() const
+{
+ if (this->symtab_section_ != NULL)
+ return this->symtab_section_->offset();
+ return 0;
+}
+
// Write out the Output_sections. Most won't have anything to write,
// since most of the data will come from input sections which are
// handled elsewhere. But some Output_sections do have Output_data.
diff --git a/gold/layout.h b/gold/layout.h
index 917856e..907181f 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -685,6 +685,10 @@ class Layout
return this->symtab_section_;
}
+ // Return the file offset of the normal symbol table.
+ off_t
+ symtab_section_offset() const;
+
// Return the dynamic symbol table.
Output_section*
dynsym_section() const
diff --git a/gold/reloc.cc b/gold/reloc.cc
index 7103572..c58e42b 100644
--- a/gold/reloc.cc
+++ b/gold/reloc.cc
@@ -691,7 +691,7 @@ Sized_relobj<size, big_endian>::do_relocate(const Symbol_table* symtab,
// Write out the local symbols.
this->write_local_symbols(of, layout->sympool(), layout->dynpool(),
layout->symtab_xindex(), layout->dynsym_xindex(),
- layout->symtab_section()->offset());
+ layout->symtab_section_offset());
}
// Sort a Read_multiple vector by file offset.