mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-16 20:32:21 +08:00
ChangeLog include/
2011-02-23 Kai Tietz <kai.tietz@onevision.com> * dwarf2.h (_ELF_DWARF2_H): Renamed to _DWARF2_H. (DWARF2_External_LineInfo, DWARF2_Internal_LineInfo, DWARF2_External_PubNames, DWARF2_Internal_PubNames, DWARF2_External_CompUnit, DWARF2_Internal_CompUnit, DWARF2_External_ARange, DWARF2_Internal_ARange): Removed. ChangeLog binutils/ 2011-02-23 Kai Tietz <kai.tietz@onevision.com> * dwarf.c (read_leb128): Use bfd_vma instead of long type. (dwarf_vmatoa): New helper routine. (process_extended_line_op): Use for adr bfd_vma type and print those typed values via BFD_VMA_FMT or via dwarf_vmatoa for localized prints. (fetch_indirect_string): Adjust offset's type. (decode_location_expression): Adjust argument types and uvalue type. (read_and_display_attr_value): Likewise. (read_and_display_attr): Likewise. (decode_location_expression): Adjust printf format. (process_debug_info): Likewise. (display_debug_lines_raw): Likewise. (display_debug_lines_decoded): Likewise. (display_debug_pubnames): Likewise. (display_debug_loc): Likewise. (display_debug_aranges): Likewise. * dwarf.h (DWARF2_External_LineInfo, DWARF2_Internal_LineInfo, DWARF2_External_PubNames, DWARF2_Internal_PubNames, DWARF2_External_CompUnit, DWARF2_Internal_CompUnit, DWARF2_External_ARange, DWARF2_Internal_ARange): Added.. (read_leb128): Adjust return type.
This commit is contained in:
@ -1,3 +1,30 @@
|
|||||||
|
2011-02-23 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
* dwarf.c (read_leb128): Use bfd_vma instead of
|
||||||
|
long type.
|
||||||
|
(dwarf_vmatoa): New helper routine.
|
||||||
|
(process_extended_line_op): Use for adr bfd_vma
|
||||||
|
type and print those typed values via BFD_VMA_FMT
|
||||||
|
or via dwarf_vmatoa for localized prints.
|
||||||
|
(fetch_indirect_string): Adjust offset's type.
|
||||||
|
(decode_location_expression): Adjust argument types
|
||||||
|
and uvalue type.
|
||||||
|
(read_and_display_attr_value): Likewise.
|
||||||
|
(read_and_display_attr): Likewise.
|
||||||
|
(decode_location_expression): Adjust printf format.
|
||||||
|
(process_debug_info): Likewise.
|
||||||
|
(display_debug_lines_raw): Likewise.
|
||||||
|
(display_debug_lines_decoded): Likewise.
|
||||||
|
(display_debug_pubnames): Likewise.
|
||||||
|
(display_debug_loc): Likewise.
|
||||||
|
(display_debug_aranges): Likewise.
|
||||||
|
* dwarf.h (DWARF2_External_LineInfo,
|
||||||
|
DWARF2_Internal_LineInfo, DWARF2_External_PubNames,
|
||||||
|
DWARF2_Internal_PubNames, DWARF2_External_CompUnit,
|
||||||
|
DWARF2_Internal_CompUnit, DWARF2_External_ARange,
|
||||||
|
DWARF2_Internal_ARange): Added..
|
||||||
|
(read_leb128): Adjust return type.
|
||||||
|
|
||||||
2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
||||||
* configure: Regenerate.
|
* configure: Regenerate.
|
||||||
|
213
binutils/dwarf.c
213
binutils/dwarf.c
@ -123,10 +123,33 @@ print_dwarf_vma (dwarf_vma val, unsigned byte_size)
|
|||||||
fputs (buff + (byte_size == 4 ? 8 : 0), stdout);
|
fputs (buff + (byte_size == 4 ? 8 : 0), stdout);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long int
|
static const char *
|
||||||
|
dwarf_vmatoa (const char *fmtch, bfd_vma value)
|
||||||
|
{
|
||||||
|
/* As dwarf_vmatoa is used more then once in a printf call
|
||||||
|
for output, we are cycling through an fixed array of pointers
|
||||||
|
for return address. */
|
||||||
|
static int buf_pos = 0;
|
||||||
|
static struct dwarf_vmatoa_buf {
|
||||||
|
char place[64];
|
||||||
|
} buf[16];
|
||||||
|
char fmt[32];
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
sprintf (fmt, "%%%s%s", BFD_VMA_FMT, fmtch);
|
||||||
|
|
||||||
|
ret = buf[buf_pos++].place;
|
||||||
|
buf_pos %= ARRAY_SIZE(buf);
|
||||||
|
|
||||||
|
snprintf (ret, sizeof (buf[0].place), fmt, value);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
bfd_vma
|
||||||
read_leb128 (unsigned char *data, unsigned int *length_return, int sign)
|
read_leb128 (unsigned char *data, unsigned int *length_return, int sign)
|
||||||
{
|
{
|
||||||
unsigned long int result = 0;
|
bfd_vma result = 0;
|
||||||
unsigned int num_read = 0;
|
unsigned int num_read = 0;
|
||||||
unsigned int shift = 0;
|
unsigned int shift = 0;
|
||||||
unsigned char byte;
|
unsigned char byte;
|
||||||
@ -136,7 +159,7 @@ read_leb128 (unsigned char *data, unsigned int *length_return, int sign)
|
|||||||
byte = *data++;
|
byte = *data++;
|
||||||
num_read++;
|
num_read++;
|
||||||
|
|
||||||
result |= ((unsigned long int) (byte & 0x7f)) << shift;
|
result |= ((bfd_vma) (byte & 0x7f)) << shift;
|
||||||
|
|
||||||
shift += 7;
|
shift += 7;
|
||||||
|
|
||||||
@ -193,7 +216,7 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
|||||||
unsigned int bytes_read;
|
unsigned int bytes_read;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
unsigned char *name;
|
unsigned char *name;
|
||||||
unsigned long adr;
|
bfd_vma adr;
|
||||||
|
|
||||||
len = read_leb128 (data, & bytes_read, 0);
|
len = read_leb128 (data, & bytes_read, 0);
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
@ -218,7 +241,7 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
|||||||
|
|
||||||
case DW_LNE_set_address:
|
case DW_LNE_set_address:
|
||||||
adr = byte_get (data, len - bytes_read - 1);
|
adr = byte_get (data, len - bytes_read - 1);
|
||||||
printf (_("set Address to 0x%lx\n"), adr);
|
printf (_("set Address to 0x%s\n"), dwarf_vmatoa ("x", adr));
|
||||||
state_machine_regs.address = adr;
|
state_machine_regs.address = adr;
|
||||||
state_machine_regs.op_index = 0;
|
state_machine_regs.op_index = 0;
|
||||||
break;
|
break;
|
||||||
@ -230,17 +253,19 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
|||||||
printf (" %d\t", ++state_machine_regs.last_file_entry);
|
printf (" %d\t", ++state_machine_regs.last_file_entry);
|
||||||
name = data;
|
name = data;
|
||||||
data += strlen ((char *) data) + 1;
|
data += strlen ((char *) data) + 1;
|
||||||
printf ("%lu\t", read_leb128 (data, & bytes_read, 0));
|
printf ("%" BFD_VMA_FMT "u\t", read_leb128 (data, & bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("%lu\t", read_leb128 (data, & bytes_read, 0));
|
printf ("%" BFD_VMA_FMT "u\t",
|
||||||
|
read_leb128 (data, & bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("%lu\t", read_leb128 (data, & bytes_read, 0));
|
printf ("%" BFD_VMA_FMT "u\t", read_leb128 (data, & bytes_read, 0));
|
||||||
printf ("%s\n\n", name);
|
printf ("%s\n\n", name);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_LNE_set_discriminator:
|
case DW_LNE_set_discriminator:
|
||||||
printf (_("set Discriminator to %lu\n"),
|
printf (_("set Discriminator to %s\n"),
|
||||||
read_leb128 (data, & bytes_read, 0));
|
dwarf_vmatoa ("u",
|
||||||
|
read_leb128 (data, & bytes_read, 0)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* HP extensions. */
|
/* HP extensions. */
|
||||||
@ -291,7 +316,7 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
fetch_indirect_string (unsigned long offset)
|
fetch_indirect_string (bfd_vma offset)
|
||||||
{
|
{
|
||||||
struct dwarf_section *section = &debug_displays [str].section;
|
struct dwarf_section *section = &debug_displays [str].section;
|
||||||
|
|
||||||
@ -302,7 +327,7 @@ fetch_indirect_string (unsigned long offset)
|
|||||||
offset -= section->address;
|
offset -= section->address;
|
||||||
if (offset > section->size)
|
if (offset > section->size)
|
||||||
{
|
{
|
||||||
warn (_("DW_FORM_strp offset too big: %lx\n"), offset);
|
warn (_("DW_FORM_strp offset too big: %lx\n"), (long) offset);
|
||||||
return _("<offset is too big>");
|
return _("<offset is too big>");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -605,13 +630,13 @@ decode_location_expression (unsigned char * data,
|
|||||||
unsigned int pointer_size,
|
unsigned int pointer_size,
|
||||||
unsigned int offset_size,
|
unsigned int offset_size,
|
||||||
int dwarf_version,
|
int dwarf_version,
|
||||||
unsigned long length,
|
bfd_vma length,
|
||||||
unsigned long cu_offset,
|
bfd_vma cu_offset,
|
||||||
struct dwarf_section * section)
|
struct dwarf_section * section)
|
||||||
{
|
{
|
||||||
unsigned op;
|
unsigned op;
|
||||||
unsigned int bytes_read;
|
unsigned int bytes_read;
|
||||||
unsigned long uvalue;
|
bfd_vma uvalue;
|
||||||
unsigned char *end = data + length;
|
unsigned char *end = data + length;
|
||||||
int need_frame_base = 0;
|
int need_frame_base = 0;
|
||||||
|
|
||||||
@ -662,11 +687,13 @@ decode_location_expression (unsigned char * data,
|
|||||||
data += 8;
|
data += 8;
|
||||||
break;
|
break;
|
||||||
case DW_OP_constu:
|
case DW_OP_constu:
|
||||||
printf ("DW_OP_constu: %lu", read_leb128 (data, &bytes_read, 0));
|
printf ("DW_OP_constu: %" BFD_VMA_FMT "u",
|
||||||
|
read_leb128 (data, &bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
case DW_OP_consts:
|
case DW_OP_consts:
|
||||||
printf ("DW_OP_consts: %ld", read_leb128 (data, &bytes_read, 1));
|
printf ("DW_OP_consts: %" BFD_VMA_FMT "d",
|
||||||
|
read_leb128 (data, &bytes_read, 1));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
case DW_OP_dup:
|
case DW_OP_dup:
|
||||||
@ -721,7 +748,7 @@ decode_location_expression (unsigned char * data,
|
|||||||
printf ("DW_OP_plus");
|
printf ("DW_OP_plus");
|
||||||
break;
|
break;
|
||||||
case DW_OP_plus_uconst:
|
case DW_OP_plus_uconst:
|
||||||
printf ("DW_OP_plus_uconst: %lu",
|
printf ("DW_OP_plus_uconst: %" BFD_VMA_FMT "u",
|
||||||
read_leb128 (data, &bytes_read, 0));
|
read_leb128 (data, &bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
@ -867,7 +894,8 @@ decode_location_expression (unsigned char * data,
|
|||||||
case DW_OP_breg29:
|
case DW_OP_breg29:
|
||||||
case DW_OP_breg30:
|
case DW_OP_breg30:
|
||||||
case DW_OP_breg31:
|
case DW_OP_breg31:
|
||||||
printf ("DW_OP_breg%d (%s): %ld", op - DW_OP_breg0,
|
printf ("DW_OP_breg%d (%s): %" BFD_VMA_FMT "d",
|
||||||
|
op - DW_OP_breg0,
|
||||||
regname (op - DW_OP_breg0, 1),
|
regname (op - DW_OP_breg0, 1),
|
||||||
read_leb128 (data, &bytes_read, 1));
|
read_leb128 (data, &bytes_read, 1));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
@ -876,22 +904,26 @@ decode_location_expression (unsigned char * data,
|
|||||||
case DW_OP_regx:
|
case DW_OP_regx:
|
||||||
uvalue = read_leb128 (data, &bytes_read, 0);
|
uvalue = read_leb128 (data, &bytes_read, 0);
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("DW_OP_regx: %lu (%s)", uvalue, regname (uvalue, 1));
|
printf ("DW_OP_regx: %" BFD_VMA_FMT "u (%s)",
|
||||||
|
uvalue, regname (uvalue, 1));
|
||||||
break;
|
break;
|
||||||
case DW_OP_fbreg:
|
case DW_OP_fbreg:
|
||||||
need_frame_base = 1;
|
need_frame_base = 1;
|
||||||
printf ("DW_OP_fbreg: %ld", read_leb128 (data, &bytes_read, 1));
|
printf ("DW_OP_fbreg: %" BFD_VMA_FMT "d",
|
||||||
|
read_leb128 (data, &bytes_read, 1));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
case DW_OP_bregx:
|
case DW_OP_bregx:
|
||||||
uvalue = read_leb128 (data, &bytes_read, 0);
|
uvalue = read_leb128 (data, &bytes_read, 0);
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("DW_OP_bregx: %lu (%s) %ld", uvalue, regname (uvalue, 1),
|
printf ("DW_OP_bregx: %" BFD_VMA_FMT "u (%s) %" BFD_VMA_FMT "d",
|
||||||
|
uvalue, regname (uvalue, 1),
|
||||||
read_leb128 (data, &bytes_read, 1));
|
read_leb128 (data, &bytes_read, 1));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
case DW_OP_piece:
|
case DW_OP_piece:
|
||||||
printf ("DW_OP_piece: %lu", read_leb128 (data, &bytes_read, 0));
|
printf ("DW_OP_piece: %" BFD_VMA_FMT "u",
|
||||||
|
read_leb128 (data, &bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
case DW_OP_deref_size:
|
case DW_OP_deref_size:
|
||||||
@ -911,13 +943,15 @@ decode_location_expression (unsigned char * data,
|
|||||||
case DW_OP_call2:
|
case DW_OP_call2:
|
||||||
/* XXX: Strictly speaking for 64-bit DWARF3 files
|
/* XXX: Strictly speaking for 64-bit DWARF3 files
|
||||||
this ought to be an 8-byte wide computation. */
|
this ought to be an 8-byte wide computation. */
|
||||||
printf ("DW_OP_call2: <0x%lx>", (long) byte_get (data, 2) + cu_offset);
|
printf ("DW_OP_call2: <0x%" BFD_VMA_FMT "x>",
|
||||||
|
(bfd_signed_vma) byte_get (data, 2) + cu_offset);
|
||||||
data += 2;
|
data += 2;
|
||||||
break;
|
break;
|
||||||
case DW_OP_call4:
|
case DW_OP_call4:
|
||||||
/* XXX: Strictly speaking for 64-bit DWARF3 files
|
/* XXX: Strictly speaking for 64-bit DWARF3 files
|
||||||
this ought to be an 8-byte wide computation. */
|
this ought to be an 8-byte wide computation. */
|
||||||
printf ("DW_OP_call4: <0x%lx>", (long) byte_get (data, 4) + cu_offset);
|
printf ("DW_OP_call4: <0x%" BFD_VMA_FMT "x>",
|
||||||
|
(bfd_signed_vma) byte_get (data, 4) + cu_offset);
|
||||||
data += 4;
|
data += 4;
|
||||||
break;
|
break;
|
||||||
case DW_OP_call_ref:
|
case DW_OP_call_ref:
|
||||||
@ -950,9 +984,11 @@ decode_location_expression (unsigned char * data,
|
|||||||
break;
|
break;
|
||||||
case DW_OP_bit_piece:
|
case DW_OP_bit_piece:
|
||||||
printf ("DW_OP_bit_piece: ");
|
printf ("DW_OP_bit_piece: ");
|
||||||
printf ("size: %lu ", read_leb128 (data, &bytes_read, 0));
|
printf ("size: %" BFD_VMA_FMT "u ",
|
||||||
|
read_leb128 (data, &bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("offset: %lu ", read_leb128 (data, &bytes_read, 0));
|
printf ("offset: %" BFD_VMA_FMT "u ",
|
||||||
|
read_leb128 (data, &bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1001,16 +1037,20 @@ decode_location_expression (unsigned char * data,
|
|||||||
}
|
}
|
||||||
if (dwarf_version == 2)
|
if (dwarf_version == 2)
|
||||||
{
|
{
|
||||||
printf ("DW_OP_GNU_implicit_pointer: <0x%lx> %ld",
|
printf ("DW_OP_GNU_implicit_pointer: "
|
||||||
(long) byte_get (data, pointer_size),
|
"<0x%" BFD_VMA_FMT "x> %" BFD_VMA_FMT "d",
|
||||||
read_leb128 (data + pointer_size, &bytes_read, 1));
|
(bfd_vma) byte_get (data, pointer_size),
|
||||||
|
(bfd_signed_vma) read_leb128 (data + pointer_size,
|
||||||
|
&bytes_read, 1));
|
||||||
data += pointer_size + bytes_read;
|
data += pointer_size + bytes_read;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf ("DW_OP_GNU_implicit_pointer: <0x%lx> %ld",
|
printf ("DW_OP_GNU_implicit_pointer: "
|
||||||
(long) byte_get (data, offset_size),
|
"<0x%" BFD_VMA_FMT "x> %" BFD_VMA_FMT "d",
|
||||||
read_leb128 (data + offset_size, &bytes_read, 1));
|
(bfd_vma) byte_get (data, offset_size),
|
||||||
|
(bfd_signed_vma) read_leb128 (data + offset_size,
|
||||||
|
&bytes_read, 1));
|
||||||
data += offset_size + bytes_read;
|
data += offset_size + bytes_read;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1072,15 +1112,15 @@ static unsigned char *
|
|||||||
read_and_display_attr_value (unsigned long attribute,
|
read_and_display_attr_value (unsigned long attribute,
|
||||||
unsigned long form,
|
unsigned long form,
|
||||||
unsigned char * data,
|
unsigned char * data,
|
||||||
unsigned long cu_offset,
|
bfd_vma cu_offset,
|
||||||
unsigned long pointer_size,
|
bfd_vma pointer_size,
|
||||||
unsigned long offset_size,
|
bfd_vma offset_size,
|
||||||
int dwarf_version,
|
int dwarf_version,
|
||||||
debug_info * debug_info_p,
|
debug_info * debug_info_p,
|
||||||
int do_loc,
|
int do_loc,
|
||||||
struct dwarf_section * section)
|
struct dwarf_section * section)
|
||||||
{
|
{
|
||||||
unsigned long uvalue = 0;
|
bfd_vma uvalue = 0;
|
||||||
unsigned char *block_start = NULL;
|
unsigned char *block_start = NULL;
|
||||||
unsigned char * orig_data = data;
|
unsigned char * orig_data = data;
|
||||||
unsigned int bytes_read;
|
unsigned int bytes_read;
|
||||||
@ -1167,7 +1207,7 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
{
|
{
|
||||||
case DW_FORM_ref_addr:
|
case DW_FORM_ref_addr:
|
||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
printf (" <0x%lx>", uvalue);
|
printf (" <0x%" BFD_VMA_FMT "x>", uvalue);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_FORM_ref1:
|
case DW_FORM_ref1:
|
||||||
@ -1175,14 +1215,14 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
case DW_FORM_ref4:
|
case DW_FORM_ref4:
|
||||||
case DW_FORM_ref_udata:
|
case DW_FORM_ref_udata:
|
||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
printf (" <0x%lx>", uvalue + cu_offset);
|
printf (" <0x%" BFD_VMA_FMT "x>", uvalue + cu_offset);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_FORM_data4:
|
case DW_FORM_data4:
|
||||||
case DW_FORM_addr:
|
case DW_FORM_addr:
|
||||||
case DW_FORM_sec_offset:
|
case DW_FORM_sec_offset:
|
||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
printf (" 0x%lx", uvalue);
|
printf (" 0x%" BFD_VMA_FMT "x", uvalue);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_FORM_flag_present:
|
case DW_FORM_flag_present:
|
||||||
@ -1192,7 +1232,7 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
case DW_FORM_sdata:
|
case DW_FORM_sdata:
|
||||||
case DW_FORM_udata:
|
case DW_FORM_udata:
|
||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
printf (" %ld", uvalue);
|
printf (" %" BFD_VMA_FMT "d", uvalue);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_FORM_ref8:
|
case DW_FORM_ref8:
|
||||||
@ -1200,7 +1240,7 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
{
|
{
|
||||||
uvalue = byte_get (data, 4);
|
uvalue = byte_get (data, 4);
|
||||||
printf (" 0x%lx", uvalue);
|
printf (" 0x%" BFD_VMA_FMT "x", uvalue);
|
||||||
printf (" 0x%lx", (unsigned long) byte_get (data + 4, 4));
|
printf (" 0x%lx", (unsigned long) byte_get (data + 4, 4));
|
||||||
}
|
}
|
||||||
if ((do_loc || do_debug_loc || do_debug_ranges)
|
if ((do_loc || do_debug_loc || do_debug_ranges)
|
||||||
@ -1209,7 +1249,7 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
if (sizeof (uvalue) == 8)
|
if (sizeof (uvalue) == 8)
|
||||||
uvalue = byte_get (data, 8);
|
uvalue = byte_get (data, 8);
|
||||||
else
|
else
|
||||||
error (_("DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"));
|
error (_("DW_FORM_data8 is unsupported when sizeof (bfd_vma) != 8\n"));
|
||||||
}
|
}
|
||||||
data += 8;
|
data += 8;
|
||||||
break;
|
break;
|
||||||
@ -1259,8 +1299,9 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
|
|
||||||
case DW_FORM_strp:
|
case DW_FORM_strp:
|
||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
printf (_(" (indirect string, offset: 0x%lx): %s"),
|
printf (_(" (indirect string, offset: 0x%s): %s"),
|
||||||
uvalue, fetch_indirect_string (uvalue));
|
dwarf_vmatoa ("x", uvalue),
|
||||||
|
fetch_indirect_string (uvalue));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DW_FORM_indirect:
|
case DW_FORM_indirect:
|
||||||
@ -1313,7 +1354,7 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
if (lmax == 0 || num >= lmax)
|
if (lmax == 0 || num >= lmax)
|
||||||
{
|
{
|
||||||
lmax += 1024;
|
lmax += 1024;
|
||||||
debug_info_p->loc_offsets = (long unsigned int *)
|
debug_info_p->loc_offsets = (bfd_vma *)
|
||||||
xcrealloc (debug_info_p->loc_offsets,
|
xcrealloc (debug_info_p->loc_offsets,
|
||||||
lmax, sizeof (*debug_info_p->loc_offsets));
|
lmax, sizeof (*debug_info_p->loc_offsets));
|
||||||
debug_info_p->have_frame_base = (int *)
|
debug_info_p->have_frame_base = (int *)
|
||||||
@ -1344,7 +1385,7 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
if (lmax == 0 || num >= lmax)
|
if (lmax == 0 || num >= lmax)
|
||||||
{
|
{
|
||||||
lmax += 1024;
|
lmax += 1024;
|
||||||
debug_info_p->range_lists = (long unsigned int *)
|
debug_info_p->range_lists = (bfd_vma *)
|
||||||
xcrealloc (debug_info_p->range_lists,
|
xcrealloc (debug_info_p->range_lists,
|
||||||
lmax, sizeof (*debug_info_p->range_lists));
|
lmax, sizeof (*debug_info_p->range_lists));
|
||||||
debug_info_p->max_range_lists = lmax;
|
debug_info_p->max_range_lists = lmax;
|
||||||
@ -1383,7 +1424,8 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
printf (_("(declared as inline and inlined)"));
|
printf (_("(declared as inline and inlined)"));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
printf (_(" (Unknown inline attribute value: %lx)"), uvalue);
|
printf (_(" (Unknown inline attribute value: %s)"),
|
||||||
|
dwarf_vmatoa ("x", uvalue));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1421,9 +1463,9 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
case DW_LANG_Upc: printf ("(Unified Parallel C)"); break;
|
case DW_LANG_Upc: printf ("(Unified Parallel C)"); break;
|
||||||
default:
|
default:
|
||||||
if (uvalue >= DW_LANG_lo_user && uvalue <= DW_LANG_hi_user)
|
if (uvalue >= DW_LANG_lo_user && uvalue <= DW_LANG_hi_user)
|
||||||
printf ("(implementation defined: %lx)", uvalue);
|
printf ("(implementation defined: %" BFD_VMA_FMT "x)", uvalue);
|
||||||
else
|
else
|
||||||
printf ("(Unknown: %lx)", uvalue);
|
printf ("(Unknown: %" BFD_VMA_FMT "x)", uvalue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1584,8 +1626,9 @@ read_and_display_attr_value (unsigned long attribute,
|
|||||||
uvalue += cu_offset;
|
uvalue += cu_offset;
|
||||||
|
|
||||||
if (uvalue >= section->size)
|
if (uvalue >= section->size)
|
||||||
warn (_("Offset %lx used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"),
|
warn (_("Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"),
|
||||||
uvalue, (unsigned long) (orig_data - section->start));
|
dwarf_vmatoa ("x", uvalue),
|
||||||
|
(unsigned long) (orig_data - section->start));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned long abbrev_number;
|
unsigned long abbrev_number;
|
||||||
@ -1786,9 +1829,9 @@ static unsigned char *
|
|||||||
read_and_display_attr (unsigned long attribute,
|
read_and_display_attr (unsigned long attribute,
|
||||||
unsigned long form,
|
unsigned long form,
|
||||||
unsigned char * data,
|
unsigned char * data,
|
||||||
unsigned long cu_offset,
|
bfd_vma cu_offset,
|
||||||
unsigned long pointer_size,
|
bfd_vma pointer_size,
|
||||||
unsigned long offset_size,
|
bfd_vma offset_size,
|
||||||
int dwarf_version,
|
int dwarf_version,
|
||||||
debug_info * debug_info_p,
|
debug_info * debug_info_p,
|
||||||
int do_loc,
|
int do_loc,
|
||||||
@ -1900,7 +1943,7 @@ process_debug_info (struct dwarf_section *section,
|
|||||||
unsigned char *hdrptr;
|
unsigned char *hdrptr;
|
||||||
unsigned char *tags;
|
unsigned char *tags;
|
||||||
int level;
|
int level;
|
||||||
unsigned long cu_offset;
|
bfd_vma cu_offset;
|
||||||
int offset_size;
|
int offset_size;
|
||||||
int initial_length_size;
|
int initial_length_size;
|
||||||
unsigned char signature[8] = { 0 };
|
unsigned char signature[8] = { 0 };
|
||||||
@ -1970,11 +2013,14 @@ process_debug_info (struct dwarf_section *section,
|
|||||||
|
|
||||||
if (!do_loc)
|
if (!do_loc)
|
||||||
{
|
{
|
||||||
printf (_(" Compilation Unit @ offset 0x%lx:\n"), cu_offset);
|
printf (_(" Compilation Unit @ offset 0x%s:\n"),
|
||||||
printf (_(" Length: 0x%lx (%s)\n"), compunit.cu_length,
|
dwarf_vmatoa ("x", cu_offset));
|
||||||
|
printf (_(" Length: 0x%s (%s)\n"),
|
||||||
|
dwarf_vmatoa ("x", compunit.cu_length),
|
||||||
initial_length_size == 8 ? "64-bit" : "32-bit");
|
initial_length_size == 8 ? "64-bit" : "32-bit");
|
||||||
printf (_(" Version: %d\n"), compunit.cu_version);
|
printf (_(" Version: %d\n"), compunit.cu_version);
|
||||||
printf (_(" Abbrev Offset: %ld\n"), compunit.cu_abbrev_offset);
|
printf (_(" Abbrev Offset: %s\n"),
|
||||||
|
dwarf_vmatoa ("d", compunit.cu_abbrev_offset));
|
||||||
printf (_(" Pointer Size: %d\n"), compunit.cu_pointer_size);
|
printf (_(" Pointer Size: %d\n"), compunit.cu_pointer_size);
|
||||||
if (do_types)
|
if (do_types)
|
||||||
{
|
{
|
||||||
@ -1990,8 +2036,10 @@ process_debug_info (struct dwarf_section *section,
|
|||||||
if (cu_offset + compunit.cu_length + initial_length_size
|
if (cu_offset + compunit.cu_length + initial_length_size
|
||||||
> section->size)
|
> section->size)
|
||||||
{
|
{
|
||||||
warn (_("Debug info is corrupted, length of CU at %lx extends beyond end of section (length = %lx)\n"),
|
warn (_("Debug info is corrupted, length of CU at %s"
|
||||||
cu_offset, compunit.cu_length);
|
" extends beyond end of section (length = %s)\n"),
|
||||||
|
dwarf_vmatoa ("x", cu_offset),
|
||||||
|
dwarf_vmatoa ("x", compunit.cu_length));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
tags = hdrptr;
|
tags = hdrptr;
|
||||||
@ -2001,8 +2049,9 @@ process_debug_info (struct dwarf_section *section,
|
|||||||
&& compunit.cu_version != 3
|
&& compunit.cu_version != 3
|
||||||
&& compunit.cu_version != 4)
|
&& compunit.cu_version != 4)
|
||||||
{
|
{
|
||||||
warn (_("CU at offset %lx contains corrupt or unsupported version number: %d.\n"),
|
warn (_("CU at offset %s contains corrupt or "
|
||||||
cu_offset, compunit.cu_version);
|
"unsupported version number: %d.\n"),
|
||||||
|
dwarf_vmatoa ("x", cu_offset), compunit.cu_version);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2268,7 +2317,7 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||||||
linfo.li_line_base >>= 24;
|
linfo.li_line_base >>= 24;
|
||||||
|
|
||||||
printf (_(" Offset: 0x%lx\n"), hdroff);
|
printf (_(" Offset: 0x%lx\n"), hdroff);
|
||||||
printf (_(" Length: %ld\n"), linfo.li_length);
|
printf (_(" Length: %ld\n"), (long) linfo.li_length);
|
||||||
printf (_(" DWARF Version: %d\n"), linfo.li_version);
|
printf (_(" DWARF Version: %d\n"), linfo.li_version);
|
||||||
printf (_(" Prologue Length: %d\n"), linfo.li_prologue_length);
|
printf (_(" Prologue Length: %d\n"), linfo.li_prologue_length);
|
||||||
printf (_(" Minimum Instruction Length: %d\n"), linfo.li_min_insn_length);
|
printf (_(" Minimum Instruction Length: %d\n"), linfo.li_min_insn_length);
|
||||||
@ -2329,11 +2378,14 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||||||
|
|
||||||
data += strlen ((char *) data) + 1;
|
data += strlen ((char *) data) + 1;
|
||||||
|
|
||||||
printf ("%lu\t", read_leb128 (data, & bytes_read, 0));
|
printf ("%" BFD_VMA_FMT "u\t",
|
||||||
|
read_leb128 (data, & bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("%lu\t", read_leb128 (data, & bytes_read, 0));
|
printf ("%" BFD_VMA_FMT "u\t",
|
||||||
|
read_leb128 (data, & bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("%lu\t", read_leb128 (data, & bytes_read, 0));
|
printf ("%" BFD_VMA_FMT "u\t",
|
||||||
|
read_leb128 (data, & bytes_read, 0));
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
printf ("%s\n", name);
|
printf ("%s\n", name);
|
||||||
}
|
}
|
||||||
@ -2505,7 +2557,8 @@ display_debug_lines_raw (struct dwarf_section *section,
|
|||||||
|
|
||||||
for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
|
for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
|
||||||
{
|
{
|
||||||
printf ("0x%lx%s", read_leb128 (data, &bytes_read, 0),
|
printf ("0x%" BFD_VMA_FMT "x%s",
|
||||||
|
read_leb128 (data, &bytes_read, 0),
|
||||||
i == 1 ? "" : ", ");
|
i == 1 ? "" : ", ");
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
}
|
}
|
||||||
@ -2918,7 +2971,8 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
|||||||
|
|
||||||
for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
|
for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
|
||||||
{
|
{
|
||||||
printf ("0x%lx%s", read_leb128 (data, &bytes_read, 0),
|
printf ("0x%" BFD_VMA_FMT "x%s",
|
||||||
|
read_leb128 (data, &bytes_read, 0),
|
||||||
i == 1 ? "" : ", ");
|
i == 1 ? "" : ", ");
|
||||||
data += bytes_read;
|
data += bytes_read;
|
||||||
}
|
}
|
||||||
@ -3076,7 +3130,7 @@ display_debug_pubnames (struct dwarf_section *section,
|
|||||||
&& num_debug_info_entries > 0
|
&& num_debug_info_entries > 0
|
||||||
&& find_debug_info_for_offset (names.pn_offset) == NULL)
|
&& find_debug_info_for_offset (names.pn_offset) == NULL)
|
||||||
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
|
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
|
||||||
names.pn_offset, section->name);
|
(unsigned long) names.pn_offset, section->name);
|
||||||
|
|
||||||
names.pn_size = byte_get (data, offset_size);
|
names.pn_size = byte_get (data, offset_size);
|
||||||
data += offset_size;
|
data += offset_size;
|
||||||
@ -3097,13 +3151,13 @@ display_debug_pubnames (struct dwarf_section *section,
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf (_(" Length: %ld\n"),
|
printf (_(" Length: %ld\n"),
|
||||||
names.pn_length);
|
(long) names.pn_length);
|
||||||
printf (_(" Version: %d\n"),
|
printf (_(" Version: %d\n"),
|
||||||
names.pn_version);
|
names.pn_version);
|
||||||
printf (_(" Offset into .debug_info section: 0x%lx\n"),
|
printf (_(" Offset into .debug_info section: 0x%lx\n"),
|
||||||
names.pn_offset);
|
(unsigned long) names.pn_offset);
|
||||||
printf (_(" Size of area in .debug_info section: %ld\n"),
|
printf (_(" Size of area in .debug_info section: %ld\n"),
|
||||||
names.pn_size);
|
(long) names.pn_size);
|
||||||
|
|
||||||
printf (_("\n Offset\tName\n"));
|
printf (_("\n Offset\tName\n"));
|
||||||
|
|
||||||
@ -3323,8 +3377,9 @@ display_debug_loc (struct dwarf_section *section, void *file)
|
|||||||
/* DWARF sections under Mach-O have non-zero addresses. */
|
/* DWARF sections under Mach-O have non-zero addresses. */
|
||||||
if (debug_information [first].num_loc_offsets > 0
|
if (debug_information [first].num_loc_offsets > 0
|
||||||
&& debug_information [first].loc_offsets [0] != section->address)
|
&& debug_information [first].loc_offsets [0] != section->address)
|
||||||
warn (_("Location lists in %s section start at 0x%lx\n"),
|
warn (_("Location lists in %s section start at 0x%s\n"),
|
||||||
section->name, debug_information [first].loc_offsets [0]);
|
section->name,
|
||||||
|
dwarf_vmatoa ("x", debug_information [first].loc_offsets [0]));
|
||||||
|
|
||||||
printf (_("Contents of the %s section:\n\n"), section->name);
|
printf (_("Contents of the %s section:\n\n"), section->name);
|
||||||
printf (_(" Offset Begin End Expression\n"));
|
printf (_(" Offset Begin End Expression\n"));
|
||||||
@ -3596,7 +3651,7 @@ display_debug_aranges (struct dwarf_section *section,
|
|||||||
&& num_debug_info_entries > 0
|
&& num_debug_info_entries > 0
|
||||||
&& find_debug_info_for_offset (arange.ar_info_offset) == NULL)
|
&& find_debug_info_for_offset (arange.ar_info_offset) == NULL)
|
||||||
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
|
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
|
||||||
arange.ar_info_offset, section->name);
|
(unsigned long) arange.ar_info_offset, section->name);
|
||||||
|
|
||||||
arange.ar_pointer_size = byte_get (hdrptr, 1);
|
arange.ar_pointer_size = byte_get (hdrptr, 1);
|
||||||
hdrptr += 1;
|
hdrptr += 1;
|
||||||
@ -3610,9 +3665,11 @@ display_debug_aranges (struct dwarf_section *section,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (_(" Length: %ld\n"), arange.ar_length);
|
printf (_(" Length: %ld\n"),
|
||||||
|
(long) arange.ar_length);
|
||||||
printf (_(" Version: %d\n"), arange.ar_version);
|
printf (_(" Version: %d\n"), arange.ar_version);
|
||||||
printf (_(" Offset into .debug_info: 0x%lx\n"), arange.ar_info_offset);
|
printf (_(" Offset into .debug_info: 0x%lx\n"),
|
||||||
|
(unsigned long) arange.ar_info_offset);
|
||||||
printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size);
|
printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size);
|
||||||
printf (_(" Segment Size: %d\n"), arange.ar_segment_size);
|
printf (_(" Segment Size: %d\n"), arange.ar_segment_size);
|
||||||
|
|
||||||
|
@ -22,6 +22,92 @@
|
|||||||
typedef unsigned HOST_WIDEST_INT dwarf_vma;
|
typedef unsigned HOST_WIDEST_INT dwarf_vma;
|
||||||
typedef unsigned HOST_WIDEST_INT dwarf_size_type;
|
typedef unsigned HOST_WIDEST_INT dwarf_size_type;
|
||||||
|
|
||||||
|
/* Structure found in the .debug_line section. */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char li_length [4];
|
||||||
|
unsigned char li_version [2];
|
||||||
|
unsigned char li_prologue_length [4];
|
||||||
|
unsigned char li_min_insn_length [1];
|
||||||
|
unsigned char li_default_is_stmt [1];
|
||||||
|
unsigned char li_line_base [1];
|
||||||
|
unsigned char li_line_range [1];
|
||||||
|
unsigned char li_opcode_base [1];
|
||||||
|
}
|
||||||
|
DWARF2_External_LineInfo;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bfd_vma li_length;
|
||||||
|
unsigned short li_version;
|
||||||
|
unsigned int li_prologue_length;
|
||||||
|
unsigned char li_min_insn_length;
|
||||||
|
unsigned char li_max_ops_per_insn;
|
||||||
|
unsigned char li_default_is_stmt;
|
||||||
|
int li_line_base;
|
||||||
|
unsigned char li_line_range;
|
||||||
|
unsigned char li_opcode_base;
|
||||||
|
}
|
||||||
|
DWARF2_Internal_LineInfo;
|
||||||
|
|
||||||
|
/* Structure found in .debug_pubnames section. */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char pn_length [4];
|
||||||
|
unsigned char pn_version [2];
|
||||||
|
unsigned char pn_offset [4];
|
||||||
|
unsigned char pn_size [4];
|
||||||
|
}
|
||||||
|
DWARF2_External_PubNames;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bfd_vma pn_length;
|
||||||
|
unsigned short pn_version;
|
||||||
|
bfd_vma pn_offset;
|
||||||
|
bfd_vma pn_size;
|
||||||
|
}
|
||||||
|
DWARF2_Internal_PubNames;
|
||||||
|
|
||||||
|
/* Structure found in .debug_info section. */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char cu_length [4];
|
||||||
|
unsigned char cu_version [2];
|
||||||
|
unsigned char cu_abbrev_offset [4];
|
||||||
|
unsigned char cu_pointer_size [1];
|
||||||
|
}
|
||||||
|
DWARF2_External_CompUnit;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bfd_vma cu_length;
|
||||||
|
unsigned short cu_version;
|
||||||
|
bfd_vma cu_abbrev_offset;
|
||||||
|
unsigned char cu_pointer_size;
|
||||||
|
}
|
||||||
|
DWARF2_Internal_CompUnit;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
unsigned char ar_length [4];
|
||||||
|
unsigned char ar_version [2];
|
||||||
|
unsigned char ar_info_offset [4];
|
||||||
|
unsigned char ar_pointer_size [1];
|
||||||
|
unsigned char ar_segment_size [1];
|
||||||
|
}
|
||||||
|
DWARF2_External_ARange;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
bfd_vma ar_length;
|
||||||
|
unsigned short ar_version;
|
||||||
|
bfd_vma ar_info_offset;
|
||||||
|
unsigned char ar_pointer_size;
|
||||||
|
unsigned char ar_segment_size;
|
||||||
|
}
|
||||||
|
DWARF2_Internal_ARange;
|
||||||
|
|
||||||
struct dwarf_section
|
struct dwarf_section
|
||||||
{
|
{
|
||||||
/* A debug section has a different name when it's stored compressed
|
/* A debug section has a different name when it's stored compressed
|
||||||
@ -79,15 +165,15 @@ typedef struct
|
|||||||
unsigned int pointer_size;
|
unsigned int pointer_size;
|
||||||
unsigned int offset_size;
|
unsigned int offset_size;
|
||||||
int dwarf_version;
|
int dwarf_version;
|
||||||
unsigned long cu_offset;
|
bfd_vma cu_offset;
|
||||||
unsigned long base_address;
|
bfd_vma base_address;
|
||||||
/* This is an array of offsets to the location list table. */
|
/* This is an array of offsets to the location list table. */
|
||||||
unsigned long *loc_offsets;
|
bfd_vma *loc_offsets;
|
||||||
int *have_frame_base;
|
int *have_frame_base;
|
||||||
unsigned int num_loc_offsets;
|
unsigned int num_loc_offsets;
|
||||||
unsigned int max_loc_offsets;
|
unsigned int max_loc_offsets;
|
||||||
/* List of .debug_ranges offsets seen in this .debug_info. */
|
/* List of .debug_ranges offsets seen in this .debug_info. */
|
||||||
unsigned long *range_lists;
|
bfd_vma *range_lists;
|
||||||
unsigned int num_range_lists;
|
unsigned int num_range_lists;
|
||||||
unsigned int max_range_lists;
|
unsigned int max_range_lists;
|
||||||
}
|
}
|
||||||
@ -131,5 +217,5 @@ void *cmalloc (size_t, size_t);
|
|||||||
void *xcmalloc (size_t, size_t);
|
void *xcmalloc (size_t, size_t);
|
||||||
void *xcrealloc (void *, size_t, size_t);
|
void *xcrealloc (void *, size_t, size_t);
|
||||||
|
|
||||||
unsigned long int read_leb128 (unsigned char *data,
|
bfd_vma read_leb128 (unsigned char *data,
|
||||||
unsigned int *length_return, int sign);
|
unsigned int *length_return, int sign);
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
2011-02-23 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
|
* dwarf2.h (_ELF_DWARF2_H): Renamed to
|
||||||
|
_DWARF2_H.
|
||||||
|
(DWARF2_External_LineInfo, DWARF2_Internal_LineInfo,
|
||||||
|
DWARF2_External_PubNames, DWARF2_Internal_PubNames,
|
||||||
|
DWARF2_External_CompUnit, DWARF2_Internal_CompUnit,
|
||||||
|
DWARF2_External_ARange, DWARF2_Internal_ARange): Removed.
|
||||||
|
|
||||||
2011-02-08 Ulrich Weigand <uweigand@de.ibm.com>
|
2011-02-08 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
* dwarf2.h (enum dwarf_calling_convention): Add DW_CC_GDB_IBM_OpenCL.
|
* dwarf2.h (enum dwarf_calling_convention): Add DW_CC_GDB_IBM_OpenCL.
|
||||||
|
@ -44,95 +44,8 @@
|
|||||||
/* This file is shared between GCC and GDB, and should not contain
|
/* This file is shared between GCC and GDB, and should not contain
|
||||||
prototypes. */
|
prototypes. */
|
||||||
|
|
||||||
#ifndef _ELF_DWARF2_H
|
#ifndef _DWARF2_H
|
||||||
#define _ELF_DWARF2_H
|
#define _DWARF2_H
|
||||||
|
|
||||||
/* Structure found in the .debug_line section. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char li_length [4];
|
|
||||||
unsigned char li_version [2];
|
|
||||||
unsigned char li_prologue_length [4];
|
|
||||||
unsigned char li_min_insn_length [1];
|
|
||||||
unsigned char li_default_is_stmt [1];
|
|
||||||
unsigned char li_line_base [1];
|
|
||||||
unsigned char li_line_range [1];
|
|
||||||
unsigned char li_opcode_base [1];
|
|
||||||
}
|
|
||||||
DWARF2_External_LineInfo;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned long li_length;
|
|
||||||
unsigned short li_version;
|
|
||||||
unsigned int li_prologue_length;
|
|
||||||
unsigned char li_min_insn_length;
|
|
||||||
unsigned char li_max_ops_per_insn;
|
|
||||||
unsigned char li_default_is_stmt;
|
|
||||||
int li_line_base;
|
|
||||||
unsigned char li_line_range;
|
|
||||||
unsigned char li_opcode_base;
|
|
||||||
}
|
|
||||||
DWARF2_Internal_LineInfo;
|
|
||||||
|
|
||||||
/* Structure found in .debug_pubnames section. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char pn_length [4];
|
|
||||||
unsigned char pn_version [2];
|
|
||||||
unsigned char pn_offset [4];
|
|
||||||
unsigned char pn_size [4];
|
|
||||||
}
|
|
||||||
DWARF2_External_PubNames;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned long pn_length;
|
|
||||||
unsigned short pn_version;
|
|
||||||
unsigned long pn_offset;
|
|
||||||
unsigned long pn_size;
|
|
||||||
}
|
|
||||||
DWARF2_Internal_PubNames;
|
|
||||||
|
|
||||||
/* Structure found in .debug_info section. */
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char cu_length [4];
|
|
||||||
unsigned char cu_version [2];
|
|
||||||
unsigned char cu_abbrev_offset [4];
|
|
||||||
unsigned char cu_pointer_size [1];
|
|
||||||
}
|
|
||||||
DWARF2_External_CompUnit;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned long cu_length;
|
|
||||||
unsigned short cu_version;
|
|
||||||
unsigned long cu_abbrev_offset;
|
|
||||||
unsigned char cu_pointer_size;
|
|
||||||
}
|
|
||||||
DWARF2_Internal_CompUnit;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned char ar_length [4];
|
|
||||||
unsigned char ar_version [2];
|
|
||||||
unsigned char ar_info_offset [4];
|
|
||||||
unsigned char ar_pointer_size [1];
|
|
||||||
unsigned char ar_segment_size [1];
|
|
||||||
}
|
|
||||||
DWARF2_External_ARange;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
unsigned long ar_length;
|
|
||||||
unsigned short ar_version;
|
|
||||||
unsigned long ar_info_offset;
|
|
||||||
unsigned char ar_pointer_size;
|
|
||||||
unsigned char ar_segment_size;
|
|
||||||
}
|
|
||||||
DWARF2_Internal_ARange;
|
|
||||||
|
|
||||||
|
|
||||||
/* Tag names and codes. */
|
/* Tag names and codes. */
|
||||||
enum dwarf_tag
|
enum dwarf_tag
|
||||||
@ -953,4 +866,4 @@ enum dwarf_macinfo_record_type
|
|||||||
|
|
||||||
#define DW_EH_PE_indirect 0x80
|
#define DW_EH_PE_indirect 0x80
|
||||||
|
|
||||||
#endif /* _ELF_DWARF2_H */
|
#endif /* _DWARF2_H */
|
||||||
|
Reference in New Issue
Block a user