2002-08-13 David Carlton <carlton@math.stanford.edu>
authorDavid Carlton <carlton@bactrian.org>
Tue, 20 Aug 2002 18:45:30 +0000 (18:45 +0000)
committerDavid Carlton <carlton@bactrian.org>
Tue, 20 Aug 2002 18:45:30 +0000 (18:45 +0000)
* dwarf2read.c (dwarf2_build_psymtabs): Check that
dwarf_line_offset is nonzero before creating dwarf_line_buffer.
(read_file_scope): Check that line_header is nonzero before
decoding macro information.

gdb/ChangeLog
gdb/dwarf2read.c

index fedfe81fbdabff57d6eac56536f143daab290deb..c72abc016d499c5f3f65ea80bc8fc21033f60f1e 100644 (file)
@@ -1,3 +1,10 @@
+2002-08-20  David Carlton  <carlton@math.stanford.edu>
+
+       * dwarf2read.c (dwarf2_build_psymtabs): Check that
+       dwarf_line_offset is nonzero before creating dwarf_line_buffer.
+       (read_file_scope): Check that line_header is nonzero before
+       decoding macro information.
+
 2002-08-20  Mark Kettenis  <kettenis@gnu.org>
 
        * i386-tdep.h (FP_REGNUM_P): Change such that we don't incorrectly
index 75ee279bf94abc05777a070f8eb9383d1592111b..0d96e1ff74df32ddf1e0740163c8035cf5f8ac03 100644 (file)
@@ -1009,9 +1009,13 @@ dwarf2_build_psymtabs (struct objfile *objfile, int mainline)
   dwarf_abbrev_buffer = dwarf2_read_section (objfile,
                                             dwarf_abbrev_offset,
                                             dwarf_abbrev_size);
-  dwarf_line_buffer = dwarf2_read_section (objfile,
-                                          dwarf_line_offset,
-                                          dwarf_line_size);
+
+  if (dwarf_line_offset)
+    dwarf_line_buffer = dwarf2_read_section (objfile,
+                                            dwarf_line_offset,
+                                            dwarf_line_size);
+  else
+    dwarf_line_buffer = NULL;
 
   if (dwarf_str_offset)
     dwarf_str_buffer = dwarf2_read_section (objfile,
@@ -1808,7 +1812,7 @@ read_file_scope (struct die_info *die, struct objfile *objfile,
      header, so we can only read it if we've read the header
      successfully.  */
   attr = dwarf_attr (die, DW_AT_macro_info);
-  if (attr)
+  if (attr && line_header)
     {
       unsigned int macro_offset = DW_UNSND (attr);
       dwarf_decode_macros (line_header, macro_offset,