OSDN Git Service

Add more detection of 64-bit DWARF sections
authornickc <nickc>
Tue, 2 Oct 2001 09:08:43 +0000 (09:08 +0000)
committernickc <nickc>
Tue, 2 Oct 2001 09:08:43 +0000 (09:08 +0000)
binutils/ChangeLog
binutils/readelf.c

index 910c258..bd87319 100644 (file)
@@ -1,3 +1,12 @@
+2001-10-02  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * readelf.c (display_debug_line, display_debug_pubnames,
+       display_debug_info, display_debug_frames): Detect and warn
+       about 64-bit format entries.
+       (display_debug_aranges): Reword 64-bit warning.
+       (debug_displays): Add .debug_pubtypes as a known, but not yet
+       supported, debug section.
+
 2001-10-02  Alan Modra  <amodra@bigpond.net.au>
 
        * coffdump.c (PROGRAM_VERSION): Delete.
index 009f112..351fb36 100644 (file)
@@ -5761,6 +5761,13 @@ display_debug_lines (section, start, file)
 
       /* Check the length of the block.  */
       info.li_length = BYTE_GET (external->li_length);
+
+      if (info.li_length == 0xffffffff)
+       {
+         warn (_("64-bit DWARF line info is not supported yet.\n"));
+         break;
+       }
+
       if (info.li_length + sizeof (external->li_length) > section->sh_size)
        {
          warn
@@ -5989,6 +5996,12 @@ display_debug_pubnames (section, start, file)
       data   = start + sizeof (* external);
       start += pubnames.pn_length + sizeof (external->pn_length);
 
+      if (pubnames.pn_length == 0xffffffff)
+       {
+         warn (_("64-bit DWARF pubnames are not supported yet.\n"));
+         break;
+       }
+
       if (pubnames.pn_version != 2)
        {
          static int warned = 0;
@@ -7183,6 +7196,12 @@ display_debug_info (section, start, file)
       compunit.cu_abbrev_offset = BYTE_GET (external->cu_abbrev_offset);
       compunit.cu_pointer_size  = BYTE_GET (external->cu_pointer_size);
 
+      if (compunit.cu_length == 0xffffffff)
+       {
+         warn (_("64-bit DWARF debug info is not supported yet.\n"));
+         break;
+       }
+
       /* Check for RELA relocations in the abbrev_offset address, and
          apply them.  */
       for (relsec = section_headers;
@@ -7378,7 +7397,7 @@ display_debug_aranges (section, start, file)
 
       if (arange.ar_length == 0xffffffff)
        {
-         warn (_("DWARF64 aranges not currently supported.\n"));
+         warn (_("64-bit DWARF aranges are not supported yet.\n"));
          break;
        }
 
@@ -7597,6 +7616,12 @@ display_debug_frames (section, start, file)
       if (length == 0)
        return 1;
 
+      if (length == 0xffffffff)
+       {
+         warn (_("64-bit DWARF format frames are not supported yet.\n"));
+         break;
+       }
+
       block_end = saved_start + length + 4;
       cie_id = byte_get (start, 4); start += 4;
 
@@ -7705,7 +7730,7 @@ display_debug_frames (section, start, file)
 
          look_for = is_eh ? start - 4 - cie_id : section_start + cie_id;
 
-         for (cie=chunks; cie ; cie = cie->next)
+         for (cie = chunks; cie ; cie = cie->next)
            if (cie->chunk_start == look_for)
              break;
 
@@ -8147,6 +8172,7 @@ debug_displays[] =
   { ".debug_frame",       display_debug_frames, NULL },
   { ".eh_frame",          display_debug_frames, NULL },
   { ".debug_macinfo",     display_debug_macinfo, NULL },
+  { ".debug_pubtypes",    display_debug_not_supported, NULL },
   { ".debug_str",         display_debug_not_supported, NULL },
   { ".debug_static_func", display_debug_not_supported, NULL },
   { ".debug_static_vars", display_debug_not_supported, NULL },