]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
From Craig Silverstein: Dwarf_line_info can work with Object rather
authorIan Lance Taylor <iant@google.com>
Mon, 12 Nov 2007 20:55:53 +0000 (20:55 +0000)
committerIan Lance Taylor <iant@google.com>
Mon, 12 Nov 2007 20:55:53 +0000 (20:55 +0000)
than Sized_relobj.

gold/dwarf_reader.cc
gold/dwarf_reader.h

index 3bcf9a727afef6dfe0288178ba4fd9bb9ebefc0e..c8bf05c1ad911db164674cc7ac2f80afa9bf23cc 100644 (file)
@@ -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_)
index aa4c7a627c314559e905d059707a87af9cfa99e6..c5347e4f77aa05b104f0dcb7b72083cc7350fb0c 100644 (file)
@@ -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