Display null bytes in DWARF debug info
binutils/ PR binutils/14420 * dwarf.c (process_abbrev_section): Add attribute terminator. Warn missing section terminator. (get_FORM_name): Special check for 0 value. (get_AT_name): Likewise. (process_debug_info): Display zero abbrev number. Check attribute terminator. binutils/testsuite/ PR binutils/14420 * binutils-all/i386/compressed-1a.d: Updated. * binutils-all/objdump.W: Likewise. * binutils-all/readelf.wa: Likewise. * binutils-all/x86-64/compressed-1a.d: Likewise. gas/testsuite/ PR binutils/14420 * gas/elf/dwarf2-1.d: Updated. * gas/elf/dwarf2-2.d: Likwise. * gas/i386/dw2-compress-1.d: Likwise.
This commit is contained in:
parent
ccce17b060
commit
399c99f739
@ -1,3 +1,13 @@
|
|||||||
|
2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR binutils/14420
|
||||||
|
* dwarf.c (process_abbrev_section): Add attribute terminator.
|
||||||
|
Warn missing section terminator.
|
||||||
|
(get_FORM_name): Special check for 0 value.
|
||||||
|
(get_AT_name): Likewise.
|
||||||
|
(process_debug_info): Display zero abbrev number. Check
|
||||||
|
attribute terminator.
|
||||||
|
|
||||||
2012-07-30 Nick Clifton <nickc@redhat.com>
|
2012-07-30 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/binutils.pot: Updated template.
|
* po/binutils.pot: Updated template.
|
||||||
|
@ -647,12 +647,14 @@ process_abbrev_section (unsigned char *start, unsigned char *end)
|
|||||||
form = read_leb128 (start, & bytes_read, 0);
|
form = read_leb128 (start, & bytes_read, 0);
|
||||||
start += bytes_read;
|
start += bytes_read;
|
||||||
|
|
||||||
if (attribute != 0)
|
add_abbrev_attr (attribute, form);
|
||||||
add_abbrev_attr (attribute, form);
|
|
||||||
}
|
}
|
||||||
while (attribute != 0);
|
while (attribute != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Report the missing single zero which ends the section. */
|
||||||
|
error (_(".debug_abbrev section not zero terminated\n"));
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -675,8 +677,12 @@ get_TAG_name (unsigned long tag)
|
|||||||
static const char *
|
static const char *
|
||||||
get_FORM_name (unsigned long form)
|
get_FORM_name (unsigned long form)
|
||||||
{
|
{
|
||||||
const char *name = get_DW_FORM_name (form);
|
const char *name;
|
||||||
|
|
||||||
|
if (form == 0)
|
||||||
|
return "DW_FORM value: 0";
|
||||||
|
|
||||||
|
name = get_DW_FORM_name (form);
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
{
|
{
|
||||||
static char buffer[100];
|
static char buffer[100];
|
||||||
@ -1860,6 +1866,9 @@ get_AT_name (unsigned long attribute)
|
|||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
if (attribute == 0)
|
||||||
|
return "DW_AT value: 0";
|
||||||
|
|
||||||
/* One value is shared by the MIPS and HP extensions: */
|
/* One value is shared by the MIPS and HP extensions: */
|
||||||
if (attribute == DW_AT_MIPS_fde)
|
if (attribute == DW_AT_MIPS_fde)
|
||||||
return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
|
return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
|
||||||
@ -2161,6 +2170,10 @@ process_debug_info (struct dwarf_section *section,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!do_loc && die_offset >= dwarf_start_die)
|
||||||
|
printf (_(" <%d><%lx>: Abbrev Number: 0\n"),
|
||||||
|
level, die_offset);
|
||||||
|
|
||||||
--level;
|
--level;
|
||||||
if (level < 0)
|
if (level < 0)
|
||||||
{
|
{
|
||||||
@ -2238,7 +2251,9 @@ process_debug_info (struct dwarf_section *section,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (attr = entry->first_attr; attr; attr = attr->next)
|
for (attr = entry->first_attr;
|
||||||
|
attr && attr->attribute;
|
||||||
|
attr = attr->next)
|
||||||
{
|
{
|
||||||
debug_info *arg;
|
debug_info *arg;
|
||||||
|
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR binutils/14420
|
||||||
|
* binutils-all/i386/compressed-1a.d: Updated.
|
||||||
|
* binutils-all/objdump.W: Likewise.
|
||||||
|
* binutils-all/readelf.wa: Likewise.
|
||||||
|
* binutils-all/x86-64/compressed-1a.d: Likewise.
|
||||||
|
|
||||||
2012-07-28 Kai Tietz <ktietz@redhat.com>
|
2012-07-28 Kai Tietz <ktietz@redhat.com>
|
||||||
|
|
||||||
* binutils-all/windres/version_small.rc: New test.
|
* binutils-all/windres/version_small.rc: New test.
|
||||||
|
@ -16,6 +16,7 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_stmt_list DW_FORM_data4
|
DW_AT_stmt_list DW_FORM_data4
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram \[no children\]
|
2 DW_TAG_subprogram \[no children\]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_name DW_FORM_strp
|
DW_AT_name DW_FORM_strp
|
||||||
@ -24,6 +25,7 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
Contents of the .[z]?debug_info section:
|
Contents of the .[z]?debug_info section:
|
||||||
|
|
||||||
@ -56,6 +58,7 @@ Contents of the .[z]?debug_info section:
|
|||||||
<3f> DW_AT_low_pc : 0x10
|
<3f> DW_AT_low_pc : 0x10
|
||||||
<43> DW_AT_high_pc : 0x1b
|
<43> DW_AT_high_pc : 0x1b
|
||||||
<47> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
|
<47> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
|
||||||
|
<1><49>: Abbrev Number: 0
|
||||||
|
|
||||||
Raw dump of debug contents of section .[z]?debug_line:
|
Raw dump of debug contents of section .[z]?debug_line:
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ Contents of the .debug_info section:
|
|||||||
<4b> DW_AT_name : int
|
<4b> DW_AT_name : int
|
||||||
<4f> DW_AT_byte_size : 4
|
<4f> DW_AT_byte_size : 4
|
||||||
<50> DW_AT_encoding : 5 \(signed\)
|
<50> DW_AT_encoding : 5 \(signed\)
|
||||||
|
<1><51>: Abbrev Number: 0
|
||||||
|
|
||||||
Raw dump of debug contents of section .debug_line:
|
Raw dump of debug contents of section .debug_line:
|
||||||
|
|
||||||
@ -83,6 +84,7 @@ Contents of the .debug_abbrev section:
|
|||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_producer DW_FORM_string
|
DW_AT_producer DW_FORM_string
|
||||||
DW_AT_language DW_FORM_data1
|
DW_AT_language DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram \[no children\]
|
2 DW_TAG_subprogram \[no children\]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_decl_file DW_FORM_data1
|
DW_AT_decl_file DW_FORM_data1
|
||||||
@ -92,8 +94,10 @@ Contents of the .debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
3 DW_TAG_base_type \[no children\]
|
3 DW_TAG_base_type \[no children\]
|
||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_byte_size DW_FORM_data1
|
DW_AT_byte_size DW_FORM_data1
|
||||||
DW_AT_encoding DW_FORM_data1
|
DW_AT_encoding DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ Contents of the .zdebug_abbrev section:
|
|||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_producer DW_FORM_string
|
DW_AT_producer DW_FORM_string
|
||||||
DW_AT_language DW_FORM_data1
|
DW_AT_language DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram [no children]
|
2 DW_TAG_subprogram [no children]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_decl_file DW_FORM_data1
|
DW_AT_decl_file DW_FORM_data1
|
||||||
@ -17,8 +18,10 @@ Contents of the .zdebug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
3 DW_TAG_base_type [no children]
|
3 DW_TAG_base_type [no children]
|
||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_byte_size DW_FORM_data1
|
DW_AT_byte_size DW_FORM_data1
|
||||||
DW_AT_encoding DW_FORM_data1
|
DW_AT_encoding DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_stmt_list DW_FORM_data4
|
DW_AT_stmt_list DW_FORM_data4
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram \[no children\]
|
2 DW_TAG_subprogram \[no children\]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_name DW_FORM_strp
|
DW_AT_name DW_FORM_strp
|
||||||
@ -24,6 +25,7 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
Contents of the .[z]?debug_info section:
|
Contents of the .[z]?debug_info section:
|
||||||
|
|
||||||
@ -56,6 +58,7 @@ Contents of the .[z]?debug_info section:
|
|||||||
<4f> DW_AT_low_pc : 0x10
|
<4f> DW_AT_low_pc : 0x10
|
||||||
<57> DW_AT_high_pc : 0x15
|
<57> DW_AT_high_pc : 0x15
|
||||||
<5f> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
|
<5f> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
|
||||||
|
<1><61>: Abbrev Number: 0
|
||||||
|
|
||||||
Raw dump of debug contents of section .[z]?debug_line:
|
Raw dump of debug contents of section .[z]?debug_line:
|
||||||
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR binutils/14420
|
||||||
|
* gas/elf/dwarf2-1.d: Updated.
|
||||||
|
* gas/elf/dwarf2-2.d: Likwise.
|
||||||
|
* gas/i386/dw2-compress-1.d: Likwise.
|
||||||
|
|
||||||
2012-08-01 James Lemke <jwlemke@codesourcery.com>
|
2012-08-01 James Lemke <jwlemke@codesourcery.com>
|
||||||
|
|
||||||
* gas/cfi/cfi-ppc-1.d: Allow for code alignment of 2 or 4.
|
* gas/cfi/cfi-ppc-1.d: Allow for code alignment of 2 or 4.
|
||||||
|
@ -30,6 +30,7 @@ Contents of the .[z]?debug_info section:
|
|||||||
<4b> DW_AT_name : int
|
<4b> DW_AT_name : int
|
||||||
<4f> DW_AT_byte_size : 4
|
<4f> DW_AT_byte_size : 4
|
||||||
<50> DW_AT_encoding : 5 \(signed\)
|
<50> DW_AT_encoding : 5 \(signed\)
|
||||||
|
<1><51>: Abbrev Number: 0
|
||||||
|
|
||||||
Raw dump of debug contents of section .[z]?debug_line:
|
Raw dump of debug contents of section .[z]?debug_line:
|
||||||
|
|
||||||
@ -85,6 +86,7 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_producer DW_FORM_string
|
DW_AT_producer DW_FORM_string
|
||||||
DW_AT_language DW_FORM_data1
|
DW_AT_language DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram \[no children\]
|
2 DW_TAG_subprogram \[no children\]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_decl_file DW_FORM_data1
|
DW_AT_decl_file DW_FORM_data1
|
||||||
@ -94,8 +96,10 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
3 DW_TAG_base_type \[no children\]
|
3 DW_TAG_base_type \[no children\]
|
||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_byte_size DW_FORM_data1
|
DW_AT_byte_size DW_FORM_data1
|
||||||
DW_AT_encoding DW_FORM_data1
|
DW_AT_encoding DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ Contents of the .[z]?debug_info section:
|
|||||||
<4b> DW_AT_name : int
|
<4b> DW_AT_name : int
|
||||||
<4f> DW_AT_byte_size : 4
|
<4f> DW_AT_byte_size : 4
|
||||||
<50> DW_AT_encoding : 5 \(signed\)
|
<50> DW_AT_encoding : 5 \(signed\)
|
||||||
|
<1><51>: Abbrev Number: 0
|
||||||
|
|
||||||
Raw dump of debug contents of section .[z]?debug_line:
|
Raw dump of debug contents of section .[z]?debug_line:
|
||||||
|
|
||||||
@ -85,6 +86,7 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_producer DW_FORM_string
|
DW_AT_producer DW_FORM_string
|
||||||
DW_AT_language DW_FORM_data1
|
DW_AT_language DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram \[no children\]
|
2 DW_TAG_subprogram \[no children\]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_decl_file DW_FORM_data1
|
DW_AT_decl_file DW_FORM_data1
|
||||||
@ -94,8 +96,10 @@ Contents of the .[z]?debug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
3 DW_TAG_base_type \[no children\]
|
3 DW_TAG_base_type \[no children\]
|
||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_byte_size DW_FORM_data1
|
DW_AT_byte_size DW_FORM_data1
|
||||||
DW_AT_encoding DW_FORM_data1
|
DW_AT_encoding DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ Contents of the .zdebug_info section:
|
|||||||
<4b> DW_AT_name : int
|
<4b> DW_AT_name : int
|
||||||
<4f> DW_AT_byte_size : 4
|
<4f> DW_AT_byte_size : 4
|
||||||
<50> DW_AT_encoding : 5 \(signed\)
|
<50> DW_AT_encoding : 5 \(signed\)
|
||||||
|
<1><51>: Abbrev Number: 0
|
||||||
|
|
||||||
Contents of the .zdebug_abbrev section:
|
Contents of the .zdebug_abbrev section:
|
||||||
|
|
||||||
@ -40,6 +41,7 @@ Contents of the .zdebug_abbrev section:
|
|||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_producer DW_FORM_string
|
DW_AT_producer DW_FORM_string
|
||||||
DW_AT_language DW_FORM_data1
|
DW_AT_language DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
2 DW_TAG_subprogram \[no children\]
|
2 DW_TAG_subprogram \[no children\]
|
||||||
DW_AT_external DW_FORM_flag
|
DW_AT_external DW_FORM_flag
|
||||||
DW_AT_decl_file DW_FORM_data1
|
DW_AT_decl_file DW_FORM_data1
|
||||||
@ -49,10 +51,12 @@ Contents of the .zdebug_abbrev section:
|
|||||||
DW_AT_low_pc DW_FORM_addr
|
DW_AT_low_pc DW_FORM_addr
|
||||||
DW_AT_high_pc DW_FORM_addr
|
DW_AT_high_pc DW_FORM_addr
|
||||||
DW_AT_frame_base DW_FORM_block1
|
DW_AT_frame_base DW_FORM_block1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
3 DW_TAG_base_type \[no children\]
|
3 DW_TAG_base_type \[no children\]
|
||||||
DW_AT_name DW_FORM_string
|
DW_AT_name DW_FORM_string
|
||||||
DW_AT_byte_size DW_FORM_data1
|
DW_AT_byte_size DW_FORM_data1
|
||||||
DW_AT_encoding DW_FORM_data1
|
DW_AT_encoding DW_FORM_data1
|
||||||
|
DW_AT value: 0 DW_FORM value: 0
|
||||||
|
|
||||||
Raw dump of debug contents of section .zdebug_line:
|
Raw dump of debug contents of section .zdebug_line:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user