aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-11-12 20:55:53 +0000
committerIan Lance Taylor <iant@google.com>2007-11-12 20:55:53 +0000
commitc261a0be884afde58ac6fb01ae502164c07f4d67 (patch)
treeb497d383c30da669c4041c1033b32e1294b4775e /gold
parentb696e6d46c9ef8898f59c88bb7a5febea5ac9de6 (diff)
downloadgdb-c261a0be884afde58ac6fb01ae502164c07f4d67.zip
gdb-c261a0be884afde58ac6fb01ae502164c07f4d67.tar.gz
gdb-c261a0be884afde58ac6fb01ae502164c07f4d67.tar.bz2
From Craig Silverstein: Dwarf_line_info can work with Object rather
than Sized_relobj.
Diffstat (limited to 'gold')
-rw-r--r--gold/dwarf_reader.cc24
-rw-r--r--gold/dwarf_reader.h2
2 files changed, 8 insertions, 18 deletions
diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
index 3bcf9a7..c8bf05c 100644
--- a/gold/dwarf_reader.cc
+++ b/gold/dwarf_reader.cc
@@ -117,9 +117,8 @@ ResetLineStateMachine(struct LineStateMachine* lsm, bool default_is_stmt)
}
template<int size, bool big_endian>
-Dwarf_line_info<size, big_endian>::Dwarf_line_info(
- Sized_relobj<size, big_endian>* object)
- : data_valid_(true), buffer_(NULL), symtab_buffer_(NULL),
+Dwarf_line_info<size, big_endian>::Dwarf_line_info(Object* object)
+ : data_valid_(false), buffer_(NULL), symtab_buffer_(NULL),
directories_(1), files_(1)
{
unsigned int debug_shndx;
@@ -133,10 +132,7 @@ Dwarf_line_info<size, big_endian>::Dwarf_line_info(
break;
}
if (this->buffer_ == NULL)
- {
- this->data_valid_ = false;
- return;
- }
+ return;
// Find the relocation section for ".debug_line".
bool got_relocs = false;
@@ -155,10 +151,7 @@ Dwarf_line_info<size, big_endian>::Dwarf_line_info(
}
}
if (!got_relocs)
- {
- this->data_valid_ = false;
- return;
- }
+ return;
// Finally, we need the symtab section to interpret the relocs.
unsigned int symtab_shndx;
@@ -172,13 +165,11 @@ Dwarf_line_info<size, big_endian>::Dwarf_line_info(
break;
}
if (this->symtab_buffer_ == NULL)
- {
- this->data_valid_ = false;
- return;
- }
+ return;
// Now that we have successfully read all the data, parse the debug
// info.
+ this->data_valid_ = true;
this->read_line_mappings();
}
@@ -557,8 +548,7 @@ template<int size, bool big_endian>
void
Dwarf_line_info<size, big_endian>::read_line_mappings()
{
- if (this->data_valid_ == false)
- return;
+ gold_assert(this->data_valid_ == true);
read_relocs();
while (this->buffer_ < this->buffer_end_)
diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
index aa4c7a6..c5347e4 100644
--- a/gold/dwarf_reader.h
+++ b/gold/dwarf_reader.h
@@ -46,7 +46,7 @@ class Dwarf_line_info
{
public:
// Initializes a .debug_line reader for a given object file.
- Dwarf_line_info(Sized_relobj<size, big_endian>* object);
+ Dwarf_line_info(Object* object);
// Given a section number and an offset, returns the associated
// file and line-number, as a string: "file:lineno". If unable