+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>
* po/binutils.pot: Updated template.
form = read_leb128 (start, & bytes_read, 0);
start += bytes_read;
- if (attribute != 0)
- add_abbrev_attr (attribute, form);
+ add_abbrev_attr (attribute, form);
}
while (attribute != 0);
}
+ /* Report the missing single zero which ends the section. */
+ error (_(".debug_abbrev section not zero terminated\n"));
+
return NULL;
}
static const char *
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)
{
static char buffer[100];
{
const char *name;
+ if (attribute == 0)
+ return "DW_AT value: 0";
+
/* One value is shared by the MIPS and HP extensions: */
if (attribute == DW_AT_MIPS_fde)
return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
break;
}
+ if (!do_loc && die_offset >= dwarf_start_die)
+ printf (_(" <%d><%lx>: Abbrev Number: 0\n"),
+ level, die_offset);
+
--level;
if (level < 0)
{
break;
}
- for (attr = entry->first_attr; attr; attr = attr->next)
+ for (attr = entry->first_attr;
+ attr && attr->attribute;
+ attr = attr->next)
{
debug_info *arg;
+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>
* binutils-all/windres/version_small.rc: New test.
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_stmt_list DW_FORM_data4
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram \[no children\]
DW_AT_external DW_FORM_flag
DW_AT_name DW_FORM_strp
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
Contents of the .[z]?debug_info section:
<3f> DW_AT_low_pc : 0x10
<43> DW_AT_high_pc : 0x1b
<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:
<4b> DW_AT_name : int
<4f> DW_AT_byte_size : 4
<50> DW_AT_encoding : 5 \(signed\)
+ <1><51>: Abbrev Number: 0
Raw dump of debug contents of section .debug_line:
DW_AT_name DW_FORM_string
DW_AT_producer DW_FORM_string
DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram \[no children\]
DW_AT_external DW_FORM_flag
DW_AT_decl_file DW_FORM_data1
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
3 DW_TAG_base_type \[no children\]
DW_AT_name DW_FORM_string
DW_AT_byte_size DW_FORM_data1
DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
DW_AT_name DW_FORM_string
DW_AT_producer DW_FORM_string
DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram [no children]
DW_AT_external DW_FORM_flag
DW_AT_decl_file DW_FORM_data1
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
3 DW_TAG_base_type [no children]
DW_AT_name DW_FORM_string
DW_AT_byte_size DW_FORM_data1
DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_stmt_list DW_FORM_data4
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram \[no children\]
DW_AT_external DW_FORM_flag
DW_AT_name DW_FORM_strp
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
Contents of the .[z]?debug_info section:
<4f> DW_AT_low_pc : 0x10
<57> DW_AT_high_pc : 0x15
<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:
+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>
* gas/cfi/cfi-ppc-1.d: Allow for code alignment of 2 or 4.
<4b> DW_AT_name : int
<4f> DW_AT_byte_size : 4
<50> DW_AT_encoding : 5 \(signed\)
+ <1><51>: Abbrev Number: 0
Raw dump of debug contents of section .[z]?debug_line:
DW_AT_name DW_FORM_string
DW_AT_producer DW_FORM_string
DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram \[no children\]
DW_AT_external DW_FORM_flag
DW_AT_decl_file DW_FORM_data1
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
3 DW_TAG_base_type \[no children\]
DW_AT_name DW_FORM_string
DW_AT_byte_size DW_FORM_data1
DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
<4b> DW_AT_name : int
<4f> DW_AT_byte_size : 4
<50> DW_AT_encoding : 5 \(signed\)
+ <1><51>: Abbrev Number: 0
Raw dump of debug contents of section .[z]?debug_line:
DW_AT_name DW_FORM_string
DW_AT_producer DW_FORM_string
DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram \[no children\]
DW_AT_external DW_FORM_flag
DW_AT_decl_file DW_FORM_data1
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
3 DW_TAG_base_type \[no children\]
DW_AT_name DW_FORM_string
DW_AT_byte_size DW_FORM_data1
DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
<4b> DW_AT_name : int
<4f> DW_AT_byte_size : 4
<50> DW_AT_encoding : 5 \(signed\)
+ <1><51>: Abbrev Number: 0
Contents of the .zdebug_abbrev section:
DW_AT_name DW_FORM_string
DW_AT_producer DW_FORM_string
DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
2 DW_TAG_subprogram \[no children\]
DW_AT_external DW_FORM_flag
DW_AT_decl_file DW_FORM_data1
DW_AT_low_pc DW_FORM_addr
DW_AT_high_pc DW_FORM_addr
DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
3 DW_TAG_base_type \[no children\]
DW_AT_name DW_FORM_string
DW_AT_byte_size 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: