diff options
author | Ian Lance Taylor <iant@google.com> | 2007-11-12 20:55:53 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2007-11-12 20:55:53 +0000 |
commit | c261a0be884afde58ac6fb01ae502164c07f4d67 (patch) | |
tree | b497d383c30da669c4041c1033b32e1294b4775e /gold | |
parent | b696e6d46c9ef8898f59c88bb7a5febea5ac9de6 (diff) | |
download | gdb-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.cc | 24 | ||||
-rw-r--r-- | gold/dwarf_reader.h | 2 |
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 |