Replace bfd_vma type and analog types by dwarf_vma and analogs.
Use dwarf specific print functions to display these type values. * dwarf.h (dwarf_signed_vma): New type; (DWARF2_External_LineInfo): Replace bfd_vma by dwarf_vma. (DWARF2_External_PubNames): Likewise. (DWARF2_External_CompUnit): Likewise. (DWARF2_External_ARange): Likewise. (read_leb128): Change return type to dwarf_vma. * dwarf.c (print_dwarf_vma): Use __MINGW32__ conditional and check byte_size values. (dwarf_vmatoa): Change parameter type to dwarf_vma. (dwarf_svmatoa): New static function. (read_leb128): Change return type to dwarf_vma. (read_sleb128): New static function. (struct State_Machine_Registers): Change address field type to dwarf_vma. (process_extended_line_op): Adapt to type changes. (fetch_indirect_string): Likewise. (idisplay_block): Likewise. (decode_location_expression): Likewise. (read_and_display_attr_value): Likewise. (process_debug_info): Likewise. (display_debug_lines_raw): Likewise. (display_debug_lines_decoded): Likewise. (SLEB macro): Use new read_sleb128 function.
This commit is contained in:
parent
0377a422af
commit
467c65bce2
@ -1,3 +1,31 @@
|
||||
2011-03-25 Pierre Muller <muller@ics.u-strasbg.fr>
|
||||
|
||||
Replace bfd_vma type and analog types by dwarf_vma and analogs.
|
||||
Use dwarf specific print functions to display these type values.
|
||||
* dwarf.h (dwarf_signed_vma): New type;
|
||||
(DWARF2_External_LineInfo): Replace bfd_vma by dwarf_vma.
|
||||
(DWARF2_External_PubNames): Likewise.
|
||||
(DWARF2_External_CompUnit): Likewise.
|
||||
(DWARF2_External_ARange): Likewise.
|
||||
(read_leb128): Change return type to dwarf_vma.
|
||||
* dwarf.c (print_dwarf_vma): Use __MINGW32__ conditional and
|
||||
check byte_size values.
|
||||
(dwarf_vmatoa): Change parameter type to dwarf_vma.
|
||||
(dwarf_svmatoa): New static function.
|
||||
(read_leb128): Change return type to dwarf_vma.
|
||||
(read_sleb128): New static function.
|
||||
(struct State_Machine_Registers): Change address field type to
|
||||
dwarf_vma.
|
||||
(process_extended_line_op): Adapt to type changes.
|
||||
(fetch_indirect_string): Likewise.
|
||||
(idisplay_block): Likewise.
|
||||
(decode_location_expression): Likewise.
|
||||
(read_and_display_attr_value): Likewise.
|
||||
(process_debug_info): Likewise.
|
||||
(display_debug_lines_raw): Likewise.
|
||||
(display_debug_lines_decoded): Likewise.
|
||||
(SLEB macro): Use new read_sleb128 function.
|
||||
|
||||
2011-03-17 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 12590
|
||||
|
362
binutils/dwarf.c
362
binutils/dwarf.c
@ -106,12 +106,13 @@ static void
|
||||
print_dwarf_vma (dwarf_vma val, unsigned byte_size)
|
||||
{
|
||||
static char buff[18];
|
||||
int offset = 0;
|
||||
|
||||
/* Printf does not have a way of specifiying a maximum field width for an
|
||||
integer value, so we print the full value into a buffer and then select
|
||||
the precision we need. */
|
||||
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
|
||||
#ifndef __MSVCRT__
|
||||
#ifndef __MINGW32__
|
||||
snprintf (buff, sizeof (buff), "%16.16llx ", val);
|
||||
#else
|
||||
snprintf (buff, sizeof (buff), "%016I64x ", val);
|
||||
@ -120,36 +121,55 @@ print_dwarf_vma (dwarf_vma val, unsigned byte_size)
|
||||
snprintf (buff, sizeof (buff), "%16.16lx ", val);
|
||||
#endif
|
||||
|
||||
fputs (buff + (byte_size == 4 ? 8 : 0), stdout);
|
||||
if (byte_size != 0)
|
||||
{
|
||||
if (byte_size > 0 && byte_size <= 8)
|
||||
offset = 16 - 2 * byte_size;
|
||||
else
|
||||
error ("Wrong size in print_dwarf_vma");
|
||||
}
|
||||
|
||||
fputs (buff + offset, stdout);
|
||||
}
|
||||
|
||||
#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
|
||||
#ifndef __MINGW32__
|
||||
#define DWARF_VMA_FMT "ll"
|
||||
#else
|
||||
#define DWARF_VMA_FMT "I64"
|
||||
#endif
|
||||
#else
|
||||
#define DWARF_VMA_FMT "l"
|
||||
#endif
|
||||
|
||||
static const char *
|
||||
dwarf_vmatoa (const char *fmtch, bfd_vma value)
|
||||
dwarf_vmatoa (const char *fmtch, dwarf_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 {
|
||||
static struct dwarf_vmatoa_buf
|
||||
{
|
||||
char place[64];
|
||||
} buf[16];
|
||||
char fmt[32];
|
||||
char *ret;
|
||||
|
||||
sprintf (fmt, "%%%s%s", BFD_VMA_FMT, fmtch);
|
||||
sprintf (fmt, "%%%s%s", DWARF_VMA_FMT, fmtch);
|
||||
|
||||
ret = buf[buf_pos++].place;
|
||||
buf_pos %= ARRAY_SIZE(buf);
|
||||
buf_pos %= ARRAY_SIZE (buf);
|
||||
|
||||
snprintf (ret, sizeof (buf[0].place), fmt, value);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bfd_vma
|
||||
dwarf_vma
|
||||
read_leb128 (unsigned char *data, unsigned int *length_return, int sign)
|
||||
{
|
||||
bfd_vma result = 0;
|
||||
dwarf_vma result = 0;
|
||||
unsigned int num_read = 0;
|
||||
unsigned int shift = 0;
|
||||
unsigned char byte;
|
||||
@ -159,7 +179,7 @@ read_leb128 (unsigned char *data, unsigned int *length_return, int sign)
|
||||
byte = *data++;
|
||||
num_read++;
|
||||
|
||||
result |= ((bfd_vma) (byte & 0x7f)) << shift;
|
||||
result |= ((dwarf_vma) (byte & 0x7f)) << shift;
|
||||
|
||||
shift += 7;
|
||||
|
||||
@ -175,9 +195,16 @@ read_leb128 (unsigned char *data, unsigned int *length_return, int sign)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Create a signed version to avoid painful typecasts. */
|
||||
static dwarf_signed_vma
|
||||
read_sleb128 (unsigned char *data, unsigned int *length_return)
|
||||
{
|
||||
return (dwarf_signed_vma) read_leb128 (data, length_return, 1);
|
||||
}
|
||||
|
||||
typedef struct State_Machine_Registers
|
||||
{
|
||||
unsigned long address;
|
||||
dwarf_vma address;
|
||||
unsigned int file;
|
||||
unsigned int line;
|
||||
unsigned int column;
|
||||
@ -216,7 +243,7 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
||||
unsigned int bytes_read;
|
||||
unsigned int len;
|
||||
unsigned char *name;
|
||||
bfd_vma adr;
|
||||
dwarf_vma adr;
|
||||
|
||||
len = read_leb128 (data, & bytes_read, 0);
|
||||
data += bytes_read;
|
||||
@ -253,19 +280,17 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
||||
printf (" %d\t", ++state_machine_regs.last_file_entry);
|
||||
name = data;
|
||||
data += strlen ((char *) data) + 1;
|
||||
printf ("%" BFD_VMA_FMT "u\t", read_leb128 (data, & bytes_read, 0));
|
||||
printf ("%s\t", dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
printf ("%" BFD_VMA_FMT "u\t",
|
||||
read_leb128 (data, & bytes_read, 0));
|
||||
printf ("%s\t", dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
printf ("%" BFD_VMA_FMT "u\t", read_leb128 (data, & bytes_read, 0));
|
||||
printf ("%s\t", dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
printf ("%s\n\n", name);
|
||||
break;
|
||||
|
||||
case DW_LNE_set_discriminator:
|
||||
printf (_("set Discriminator to %s\n"),
|
||||
dwarf_vmatoa ("u",
|
||||
read_leb128 (data, & bytes_read, 0)));
|
||||
dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
break;
|
||||
|
||||
/* HP extensions. */
|
||||
@ -316,7 +341,7 @@ process_extended_line_op (unsigned char *data, int is_stmt)
|
||||
}
|
||||
|
||||
static const char *
|
||||
fetch_indirect_string (bfd_vma offset)
|
||||
fetch_indirect_string (dwarf_vma offset)
|
||||
{
|
||||
struct dwarf_section *section = &debug_displays [str].section;
|
||||
|
||||
@ -327,7 +352,8 @@ fetch_indirect_string (bfd_vma offset)
|
||||
offset -= section->address;
|
||||
if (offset > section->size)
|
||||
{
|
||||
warn (_("DW_FORM_strp offset too big: %lx\n"), (long) offset);
|
||||
warn (_("DW_FORM_strp offset too big: %s\n"),
|
||||
dwarf_vmatoa ("x", offset));
|
||||
return _("<offset is too big>");
|
||||
}
|
||||
|
||||
@ -390,7 +416,6 @@ add_abbrev (unsigned long number, unsigned long tag, int children)
|
||||
abbrev_entry *entry;
|
||||
|
||||
entry = (abbrev_entry *) malloc (sizeof (*entry));
|
||||
|
||||
if (entry == NULL)
|
||||
/* ugg */
|
||||
return;
|
||||
@ -416,7 +441,6 @@ add_abbrev_attr (unsigned long attribute, unsigned long form)
|
||||
abbrev_attr *attr;
|
||||
|
||||
attr = (abbrev_attr *) malloc (sizeof (*attr));
|
||||
|
||||
if (attr == NULL)
|
||||
/* ugg */
|
||||
return;
|
||||
@ -618,9 +642,9 @@ get_FORM_name (unsigned long form)
|
||||
}
|
||||
|
||||
static unsigned char *
|
||||
display_block (unsigned char *data, unsigned long length)
|
||||
display_block (unsigned char *data, dwarf_vma length)
|
||||
{
|
||||
printf (_(" %lu byte block: "), length);
|
||||
printf (_(" %s byte block: "), dwarf_vmatoa ("u", length));
|
||||
|
||||
while (length --)
|
||||
printf ("%lx ", (unsigned long) byte_get (data++, 1));
|
||||
@ -633,13 +657,13 @@ decode_location_expression (unsigned char * data,
|
||||
unsigned int pointer_size,
|
||||
unsigned int offset_size,
|
||||
int dwarf_version,
|
||||
bfd_vma length,
|
||||
bfd_vma cu_offset,
|
||||
dwarf_vma length,
|
||||
dwarf_vma cu_offset,
|
||||
struct dwarf_section * section)
|
||||
{
|
||||
unsigned op;
|
||||
unsigned int bytes_read;
|
||||
bfd_vma uvalue;
|
||||
dwarf_vma uvalue;
|
||||
unsigned char *end = data + length;
|
||||
int need_frame_base = 0;
|
||||
|
||||
@ -690,13 +714,13 @@ decode_location_expression (unsigned char * data,
|
||||
data += 8;
|
||||
break;
|
||||
case DW_OP_constu:
|
||||
printf ("DW_OP_constu: %" BFD_VMA_FMT "u",
|
||||
read_leb128 (data, &bytes_read, 0));
|
||||
printf ("DW_OP_constu: %s",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, &bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
case DW_OP_consts:
|
||||
printf ("DW_OP_consts: %" BFD_VMA_FMT "d",
|
||||
read_leb128 (data, &bytes_read, 1));
|
||||
printf ("DW_OP_consts: %s",
|
||||
dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
case DW_OP_dup:
|
||||
@ -751,8 +775,8 @@ decode_location_expression (unsigned char * data,
|
||||
printf ("DW_OP_plus");
|
||||
break;
|
||||
case DW_OP_plus_uconst:
|
||||
printf ("DW_OP_plus_uconst: %" BFD_VMA_FMT "u",
|
||||
read_leb128 (data, &bytes_read, 0));
|
||||
printf ("DW_OP_plus_uconst: %s",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, &bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
case DW_OP_shl:
|
||||
@ -897,36 +921,37 @@ decode_location_expression (unsigned char * data,
|
||||
case DW_OP_breg29:
|
||||
case DW_OP_breg30:
|
||||
case DW_OP_breg31:
|
||||
printf ("DW_OP_breg%d (%s): %" BFD_VMA_FMT "d",
|
||||
printf ("DW_OP_breg%d (%s): %s",
|
||||
op - DW_OP_breg0,
|
||||
regname (op - DW_OP_breg0, 1),
|
||||
read_leb128 (data, &bytes_read, 1));
|
||||
dwarf_vmatoa ("d", (dwarf_signed_vma)
|
||||
read_leb128 (data, &bytes_read, 1)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
|
||||
case DW_OP_regx:
|
||||
uvalue = read_leb128 (data, &bytes_read, 0);
|
||||
data += bytes_read;
|
||||
printf ("DW_OP_regx: %" BFD_VMA_FMT "u (%s)",
|
||||
uvalue, regname (uvalue, 1));
|
||||
printf ("DW_OP_regx: %s (%s)",
|
||||
dwarf_vmatoa ("u", uvalue), regname (uvalue, 1));
|
||||
break;
|
||||
case DW_OP_fbreg:
|
||||
need_frame_base = 1;
|
||||
printf ("DW_OP_fbreg: %" BFD_VMA_FMT "d",
|
||||
read_leb128 (data, &bytes_read, 1));
|
||||
printf ("DW_OP_fbreg: %s",
|
||||
dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
case DW_OP_bregx:
|
||||
uvalue = read_leb128 (data, &bytes_read, 0);
|
||||
data += bytes_read;
|
||||
printf ("DW_OP_bregx: %" BFD_VMA_FMT "u (%s) %" BFD_VMA_FMT "d",
|
||||
uvalue, regname (uvalue, 1),
|
||||
read_leb128 (data, &bytes_read, 1));
|
||||
printf ("DW_OP_bregx: %s (%s) %s",
|
||||
dwarf_vmatoa ("u", uvalue), regname (uvalue, 1),
|
||||
dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
case DW_OP_piece:
|
||||
printf ("DW_OP_piece: %" BFD_VMA_FMT "u",
|
||||
read_leb128 (data, &bytes_read, 0));
|
||||
printf ("DW_OP_piece: %s",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, &bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
case DW_OP_deref_size:
|
||||
@ -946,15 +971,17 @@ decode_location_expression (unsigned char * data,
|
||||
case DW_OP_call2:
|
||||
/* XXX: Strictly speaking for 64-bit DWARF3 files
|
||||
this ought to be an 8-byte wide computation. */
|
||||
printf ("DW_OP_call2: <0x%" BFD_VMA_FMT "x>",
|
||||
(bfd_signed_vma) byte_get (data, 2) + cu_offset);
|
||||
printf ("DW_OP_call2: <0x%s>",
|
||||
dwarf_vmatoa ("x", (dwarf_signed_vma) byte_get (data, 2)
|
||||
+ cu_offset));
|
||||
data += 2;
|
||||
break;
|
||||
case DW_OP_call4:
|
||||
/* XXX: Strictly speaking for 64-bit DWARF3 files
|
||||
this ought to be an 8-byte wide computation. */
|
||||
printf ("DW_OP_call4: <0x%" BFD_VMA_FMT "x>",
|
||||
(bfd_signed_vma) byte_get (data, 4) + cu_offset);
|
||||
printf ("DW_OP_call4: <0x%s>",
|
||||
dwarf_vmatoa ("x", (dwarf_signed_vma) byte_get (data, 4)
|
||||
+ cu_offset));
|
||||
data += 4;
|
||||
break;
|
||||
case DW_OP_call_ref:
|
||||
@ -968,14 +995,14 @@ decode_location_expression (unsigned char * data,
|
||||
}
|
||||
if (dwarf_version == 2)
|
||||
{
|
||||
printf ("DW_OP_call_ref: <0x%lx>",
|
||||
(long) byte_get (data, pointer_size));
|
||||
printf ("DW_OP_call_ref: <0x%s>",
|
||||
dwarf_vmatoa ("x", byte_get (data, pointer_size)));
|
||||
data += pointer_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("DW_OP_call_ref: <0x%lx>",
|
||||
(long) byte_get (data, offset_size));
|
||||
printf ("DW_OP_call_ref: <0x%s>",
|
||||
dwarf_vmatoa ("x", byte_get (data, offset_size)));
|
||||
data += offset_size;
|
||||
}
|
||||
break;
|
||||
@ -987,11 +1014,11 @@ decode_location_expression (unsigned char * data,
|
||||
break;
|
||||
case DW_OP_bit_piece:
|
||||
printf ("DW_OP_bit_piece: ");
|
||||
printf ("size: %" BFD_VMA_FMT "u ",
|
||||
read_leb128 (data, &bytes_read, 0));
|
||||
printf ("size: %s ",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, &bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
printf ("offset: %" BFD_VMA_FMT "u ",
|
||||
read_leb128 (data, &bytes_read, 0));
|
||||
printf ("offset: %s ",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, &bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
break;
|
||||
|
||||
@ -1031,7 +1058,7 @@ decode_location_expression (unsigned char * data,
|
||||
{
|
||||
int encoding;
|
||||
dwarf_vma addr;
|
||||
|
||||
|
||||
encoding = *data++;
|
||||
addr = get_encoded_value (data, encoding, section);
|
||||
data += size_of_encoded_value (encoding);
|
||||
@ -1051,20 +1078,18 @@ decode_location_expression (unsigned char * data,
|
||||
}
|
||||
if (dwarf_version == 2)
|
||||
{
|
||||
printf ("DW_OP_GNU_implicit_pointer: "
|
||||
"<0x%" BFD_VMA_FMT "x> %" BFD_VMA_FMT "d",
|
||||
(bfd_vma) byte_get (data, pointer_size),
|
||||
(bfd_signed_vma) read_leb128 (data + pointer_size,
|
||||
&bytes_read, 1));
|
||||
printf ("DW_OP_GNU_implicit_pointer: <0x%s> %s",
|
||||
dwarf_vmatoa ("x", byte_get (data, pointer_size)),
|
||||
dwarf_vmatoa ("d", read_sleb128 (data + pointer_size,
|
||||
&bytes_read)));
|
||||
data += pointer_size + bytes_read;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("DW_OP_GNU_implicit_pointer: "
|
||||
"<0x%" BFD_VMA_FMT "x> %" BFD_VMA_FMT "d",
|
||||
(bfd_vma) byte_get (data, offset_size),
|
||||
(bfd_signed_vma) read_leb128 (data + offset_size,
|
||||
&bytes_read, 1));
|
||||
printf ("DW_OP_GNU_implicit_pointer: <0x%s> %s",
|
||||
dwarf_vmatoa ("x", byte_get (data, offset_size)),
|
||||
dwarf_vmatoa ("d", read_sleb128 (data + offset_size,
|
||||
&bytes_read)));
|
||||
data += offset_size + bytes_read;
|
||||
}
|
||||
break;
|
||||
@ -1126,15 +1151,15 @@ static unsigned char *
|
||||
read_and_display_attr_value (unsigned long attribute,
|
||||
unsigned long form,
|
||||
unsigned char * data,
|
||||
bfd_vma cu_offset,
|
||||
bfd_vma pointer_size,
|
||||
bfd_vma offset_size,
|
||||
dwarf_vma cu_offset,
|
||||
dwarf_vma pointer_size,
|
||||
dwarf_vma offset_size,
|
||||
int dwarf_version,
|
||||
debug_info * debug_info_p,
|
||||
int do_loc,
|
||||
struct dwarf_section * section)
|
||||
{
|
||||
bfd_vma uvalue = 0;
|
||||
dwarf_vma uvalue = 0;
|
||||
unsigned char *block_start = NULL;
|
||||
unsigned char * orig_data = data;
|
||||
unsigned int bytes_read;
|
||||
@ -1156,9 +1181,8 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
data += offset_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
error (_("Internal error: DWARF version is not 2, 3 or 4.\n"));
|
||||
}
|
||||
error (_("Internal error: DWARF version is not 2, 3 or 4.\n"));
|
||||
|
||||
break;
|
||||
|
||||
case DW_FORM_addr:
|
||||
@ -1221,7 +1245,7 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
{
|
||||
case DW_FORM_ref_addr:
|
||||
if (!do_loc)
|
||||
printf (" <0x%" BFD_VMA_FMT "x>", uvalue);
|
||||
printf (" <0x%s>", dwarf_vmatoa ("x",uvalue));
|
||||
break;
|
||||
|
||||
case DW_FORM_ref1:
|
||||
@ -1229,14 +1253,14 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
case DW_FORM_ref4:
|
||||
case DW_FORM_ref_udata:
|
||||
if (!do_loc)
|
||||
printf (" <0x%" BFD_VMA_FMT "x>", uvalue + cu_offset);
|
||||
printf (" <0x%s>", dwarf_vmatoa ("x", uvalue + cu_offset));
|
||||
break;
|
||||
|
||||
case DW_FORM_data4:
|
||||
case DW_FORM_addr:
|
||||
case DW_FORM_sec_offset:
|
||||
if (!do_loc)
|
||||
printf (" 0x%" BFD_VMA_FMT "x", uvalue);
|
||||
printf (" 0x%s", dwarf_vmatoa ("x", uvalue));
|
||||
break;
|
||||
|
||||
case DW_FORM_flag_present:
|
||||
@ -1246,7 +1270,7 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
case DW_FORM_sdata:
|
||||
case DW_FORM_udata:
|
||||
if (!do_loc)
|
||||
printf (" %" BFD_VMA_FMT "d", uvalue);
|
||||
printf (" %s", dwarf_vmatoa ("d", uvalue));
|
||||
break;
|
||||
|
||||
case DW_FORM_ref8:
|
||||
@ -1254,7 +1278,7 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
if (!do_loc)
|
||||
{
|
||||
uvalue = byte_get (data, 4);
|
||||
printf (" 0x%" BFD_VMA_FMT "x", uvalue);
|
||||
printf (" 0x%s", dwarf_vmatoa ("x", uvalue));
|
||||
printf (" 0x%lx", (unsigned long) byte_get (data + 4, 4));
|
||||
}
|
||||
if ((do_loc || do_debug_loc || do_debug_ranges)
|
||||
@ -1263,7 +1287,7 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
if (sizeof (uvalue) == 8)
|
||||
uvalue = byte_get (data, 8);
|
||||
else
|
||||
error (_("DW_FORM_data8 is unsupported when sizeof (bfd_vma) != 8\n"));
|
||||
error (_("DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"));
|
||||
}
|
||||
data += 8;
|
||||
break;
|
||||
@ -1372,7 +1396,7 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
if (lmax == 0 || num >= lmax)
|
||||
{
|
||||
lmax += 1024;
|
||||
debug_info_p->loc_offsets = (bfd_vma *)
|
||||
debug_info_p->loc_offsets = (dwarf_vma *)
|
||||
xcrealloc (debug_info_p->loc_offsets,
|
||||
lmax, sizeof (*debug_info_p->loc_offsets));
|
||||
debug_info_p->have_frame_base = (int *)
|
||||
@ -1403,7 +1427,7 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
if (lmax == 0 || num >= lmax)
|
||||
{
|
||||
lmax += 1024;
|
||||
debug_info_p->range_lists = (bfd_vma *)
|
||||
debug_info_p->range_lists = (dwarf_vma *)
|
||||
xcrealloc (debug_info_p->range_lists,
|
||||
lmax, sizeof (*debug_info_p->range_lists));
|
||||
debug_info_p->max_range_lists = lmax;
|
||||
@ -1481,9 +1505,10 @@ read_and_display_attr_value (unsigned long attribute,
|
||||
case DW_LANG_Upc: printf ("(Unified Parallel C)"); break;
|
||||
default:
|
||||
if (uvalue >= DW_LANG_lo_user && uvalue <= DW_LANG_hi_user)
|
||||
printf ("(implementation defined: %" BFD_VMA_FMT "x)", uvalue);
|
||||
printf ("(implementation defined: %s)",
|
||||
dwarf_vmatoa ("x", uvalue));
|
||||
else
|
||||
printf ("(Unknown: %" BFD_VMA_FMT "x)", uvalue);
|
||||
printf ("(Unknown: %s)", dwarf_vmatoa ("x", uvalue));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -1859,9 +1884,9 @@ static unsigned char *
|
||||
read_and_display_attr (unsigned long attribute,
|
||||
unsigned long form,
|
||||
unsigned char * data,
|
||||
bfd_vma cu_offset,
|
||||
bfd_vma pointer_size,
|
||||
bfd_vma offset_size,
|
||||
dwarf_vma cu_offset,
|
||||
dwarf_vma pointer_size,
|
||||
dwarf_vma offset_size,
|
||||
int dwarf_version,
|
||||
debug_info * debug_info_p,
|
||||
int do_loc,
|
||||
@ -1973,7 +1998,7 @@ process_debug_info (struct dwarf_section *section,
|
||||
unsigned char *hdrptr;
|
||||
unsigned char *tags;
|
||||
int level;
|
||||
bfd_vma cu_offset;
|
||||
dwarf_vma cu_offset;
|
||||
int offset_size;
|
||||
int initial_length_size;
|
||||
unsigned char signature[8] = { 0 };
|
||||
@ -2218,9 +2243,7 @@ process_debug_info (struct dwarf_section *section,
|
||||
num_debug_info_entries = num_units;
|
||||
|
||||
if (!do_loc)
|
||||
{
|
||||
printf ("\n");
|
||||
}
|
||||
printf ("\n");
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -2408,14 +2431,14 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
|
||||
data += strlen ((char *) data) + 1;
|
||||
|
||||
printf ("%" BFD_VMA_FMT "u\t",
|
||||
read_leb128 (data, & bytes_read, 0));
|
||||
printf ("%s\t",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
printf ("%" BFD_VMA_FMT "u\t",
|
||||
read_leb128 (data, & bytes_read, 0));
|
||||
printf ("%s\t",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
printf ("%" BFD_VMA_FMT "u\t",
|
||||
read_leb128 (data, & bytes_read, 0));
|
||||
printf ("%s\t",
|
||||
dwarf_vmatoa ("u", read_leb128 (data, & bytes_read, 0)));
|
||||
data += bytes_read;
|
||||
printf ("%s\n", name);
|
||||
}
|
||||
@ -2430,8 +2453,8 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
while (data < end_of_sequence)
|
||||
{
|
||||
unsigned char op_code;
|
||||
int adv;
|
||||
unsigned long int uladv;
|
||||
dwarf_signed_vma adv;
|
||||
dwarf_vma uladv;
|
||||
unsigned int bytes_read;
|
||||
|
||||
op_code = *data++;
|
||||
@ -2444,8 +2467,10 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
{
|
||||
uladv *= linfo.li_min_insn_length;
|
||||
state_machine_regs.address += uladv;
|
||||
printf (_(" Special opcode %d: advance Address by %lu to 0x%lx"),
|
||||
op_code, uladv, state_machine_regs.address);
|
||||
printf (_(" Special opcode %d: "
|
||||
"advance Address by %s to 0x%s"),
|
||||
op_code, dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2456,14 +2481,16 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
state_machine_regs.op_index
|
||||
= (state_machine_regs.op_index + uladv)
|
||||
% linfo.li_max_ops_per_insn;
|
||||
printf (_(" Special opcode %d: advance Address by %lu to 0x%lx[%d]"),
|
||||
op_code, uladv, state_machine_regs.address,
|
||||
printf (_(" Special opcode %d: "
|
||||
"advance Address by %s to 0x%s[%d]"),
|
||||
op_code, dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address),
|
||||
state_machine_regs.op_index);
|
||||
}
|
||||
adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
|
||||
state_machine_regs.line += adv;
|
||||
printf (_(" and Line by %d to %d\n"),
|
||||
adv, state_machine_regs.line);
|
||||
printf (_(" and Line by %s to %d\n"),
|
||||
dwarf_vmatoa ("d", adv), state_machine_regs.line);
|
||||
}
|
||||
else switch (op_code)
|
||||
{
|
||||
@ -2482,8 +2509,9 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
{
|
||||
uladv *= linfo.li_min_insn_length;
|
||||
state_machine_regs.address += uladv;
|
||||
printf (_(" Advance PC by %lu to 0x%lx\n"), uladv,
|
||||
state_machine_regs.address);
|
||||
printf (_(" Advance PC by %s to 0x%s\n"),
|
||||
dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2494,39 +2522,42 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
state_machine_regs.op_index
|
||||
= (state_machine_regs.op_index + uladv)
|
||||
% linfo.li_max_ops_per_insn;
|
||||
printf (_(" Advance PC by %lu to 0x%lx[%d]\n"), uladv,
|
||||
state_machine_regs.address,
|
||||
printf (_(" Advance PC by %s to 0x%s[%d]\n"),
|
||||
dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address),
|
||||
state_machine_regs.op_index);
|
||||
}
|
||||
break;
|
||||
|
||||
case DW_LNS_advance_line:
|
||||
adv = read_leb128 (data, & bytes_read, 1);
|
||||
adv = read_sleb128 (data, & bytes_read);
|
||||
data += bytes_read;
|
||||
state_machine_regs.line += adv;
|
||||
printf (_(" Advance Line by %d to %d\n"), adv,
|
||||
state_machine_regs.line);
|
||||
printf (_(" Advance Line by %s to %d\n"),
|
||||
dwarf_vmatoa ("d", adv),
|
||||
state_machine_regs.line);
|
||||
break;
|
||||
|
||||
case DW_LNS_set_file:
|
||||
adv = read_leb128 (data, & bytes_read, 0);
|
||||
data += bytes_read;
|
||||
printf (_(" Set File Name to entry %d in the File Name Table\n"),
|
||||
adv);
|
||||
printf (_(" Set File Name to entry %s in the File Name Table\n"),
|
||||
dwarf_vmatoa ("d", adv));
|
||||
state_machine_regs.file = adv;
|
||||
break;
|
||||
|
||||
case DW_LNS_set_column:
|
||||
uladv = read_leb128 (data, & bytes_read, 0);
|
||||
data += bytes_read;
|
||||
printf (_(" Set column to %lu\n"), uladv);
|
||||
printf (_(" Set column to %s\n"),
|
||||
dwarf_vmatoa ("u", uladv));
|
||||
state_machine_regs.column = uladv;
|
||||
break;
|
||||
|
||||
case DW_LNS_negate_stmt:
|
||||
adv = state_machine_regs.is_stmt;
|
||||
adv = ! adv;
|
||||
printf (_(" Set is_stmt to %d\n"), adv);
|
||||
printf (_(" Set is_stmt to %s\n"), dwarf_vmatoa ("d", adv));
|
||||
state_machine_regs.is_stmt = adv;
|
||||
break;
|
||||
|
||||
@ -2541,8 +2572,9 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
{
|
||||
uladv *= linfo.li_min_insn_length;
|
||||
state_machine_regs.address += uladv;
|
||||
printf (_(" Advance PC by constant %lu to 0x%lx\n"), uladv,
|
||||
state_machine_regs.address);
|
||||
printf (_(" Advance PC by constant %s to 0x%s\n"),
|
||||
dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2553,8 +2585,9 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
state_machine_regs.op_index
|
||||
= (state_machine_regs.op_index + uladv)
|
||||
% linfo.li_max_ops_per_insn;
|
||||
printf (_(" Advance PC by constant %lu to 0x%lx[%d]\n"),
|
||||
uladv, state_machine_regs.address,
|
||||
printf (_(" Advance PC by constant %s to 0x%s[%d]\n"),
|
||||
dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address),
|
||||
state_machine_regs.op_index);
|
||||
}
|
||||
break;
|
||||
@ -2564,8 +2597,9 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
data += 2;
|
||||
state_machine_regs.address += uladv;
|
||||
state_machine_regs.op_index = 0;
|
||||
printf (_(" Advance PC by fixed size amount %lu to 0x%lx\n"),
|
||||
uladv, state_machine_regs.address);
|
||||
printf (_(" Advance PC by fixed size amount %s to 0x%s\n"),
|
||||
dwarf_vmatoa ("u", uladv),
|
||||
dwarf_vmatoa ("x", state_machine_regs.address));
|
||||
break;
|
||||
|
||||
case DW_LNS_set_prologue_end:
|
||||
@ -2579,7 +2613,7 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
case DW_LNS_set_isa:
|
||||
uladv = read_leb128 (data, & bytes_read, 0);
|
||||
data += bytes_read;
|
||||
printf (_(" Set ISA to %lu\n"), uladv);
|
||||
printf (_(" Set ISA to %s\n"), dwarf_vmatoa ("u", uladv));
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -2587,8 +2621,8 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
|
||||
for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
|
||||
{
|
||||
printf ("0x%" BFD_VMA_FMT "x%s",
|
||||
read_leb128 (data, &bytes_read, 0),
|
||||
printf ("0x%s%s", dwarf_vmatoa ("x", read_leb128 (data,
|
||||
&bytes_read, 0)),
|
||||
i == 1 ? "" : ", ");
|
||||
data += bytes_read;
|
||||
}
|
||||
@ -2604,10 +2638,10 @@ display_debug_lines_raw (struct dwarf_section *section,
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char *name;
|
||||
unsigned int directory_index;
|
||||
unsigned int modification_date;
|
||||
unsigned int length;
|
||||
unsigned char *name;
|
||||
unsigned int directory_index;
|
||||
unsigned int modification_date;
|
||||
unsigned int length;
|
||||
} File_Entry;
|
||||
|
||||
/* Output a decoded representation of the .debug_line section. */
|
||||
@ -2918,7 +2952,7 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
||||
break;
|
||||
|
||||
case DW_LNS_advance_line:
|
||||
adv = read_leb128 (data, & bytes_read, 1);
|
||||
adv = read_sleb128 (data, & bytes_read);
|
||||
data += bytes_read;
|
||||
state_machine_regs.line += adv;
|
||||
break;
|
||||
@ -3001,8 +3035,8 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
||||
|
||||
for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
|
||||
{
|
||||
printf ("0x%" BFD_VMA_FMT "x%s",
|
||||
read_leb128 (data, &bytes_read, 0),
|
||||
printf ("0x%s%s", dwarf_vmatoa ("x", read_leb128 (data,
|
||||
&bytes_read, 0)),
|
||||
i == 1 ? "" : ", ");
|
||||
data += bytes_read;
|
||||
}
|
||||
@ -3037,24 +3071,24 @@ display_debug_lines_decoded (struct dwarf_section *section,
|
||||
if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH))
|
||||
{
|
||||
if (linfo.li_max_ops_per_insn == 1)
|
||||
printf ("%-35s %11d %#18lx\n", newFileName,
|
||||
state_machine_regs.line,
|
||||
printf ("%-35s %11d %#18" DWARF_VMA_FMT "x\n",
|
||||
newFileName, state_machine_regs.line,
|
||||
state_machine_regs.address);
|
||||
else
|
||||
printf ("%-35s %11d %#18lx[%d]\n", newFileName,
|
||||
state_machine_regs.line,
|
||||
printf ("%-35s %11d %#18" DWARF_VMA_FMT "x[%d]\n",
|
||||
newFileName, state_machine_regs.line,
|
||||
state_machine_regs.address,
|
||||
state_machine_regs.op_index);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (linfo.li_max_ops_per_insn == 1)
|
||||
printf ("%s %11d %#18lx\n", newFileName,
|
||||
state_machine_regs.line,
|
||||
printf ("%s %11d %#18" DWARF_VMA_FMT "x\n",
|
||||
newFileName, state_machine_regs.line,
|
||||
state_machine_regs.address);
|
||||
else
|
||||
printf ("%s %11d %#18lx[%d]\n", newFileName,
|
||||
state_machine_regs.line,
|
||||
printf ("%s %11d %#18" DWARF_VMA_FMT "x[%d]\n",
|
||||
newFileName, state_machine_regs.line,
|
||||
state_machine_regs.address,
|
||||
state_machine_regs.op_index);
|
||||
}
|
||||
@ -3754,13 +3788,13 @@ display_debug_aranges (struct dwarf_section *section,
|
||||
sorting purposes. */
|
||||
|
||||
struct range_entry
|
||||
{
|
||||
/* The debug_information[x].range_lists[y] value. */
|
||||
unsigned long ranges_offset;
|
||||
{
|
||||
/* The debug_information[x].range_lists[y] value. */
|
||||
unsigned long ranges_offset;
|
||||
|
||||
/* Original debug_information to find parameters of the data. */
|
||||
debug_info *debug_info_p;
|
||||
};
|
||||
/* Original debug_information to find parameters of the data. */
|
||||
debug_info *debug_info_p;
|
||||
};
|
||||
|
||||
/* Sort struct range_entry in ascending order of its RANGES_OFFSET. */
|
||||
|
||||
@ -4140,7 +4174,7 @@ frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs)
|
||||
|
||||
#define GET(N) byte_get (start, N); start += N
|
||||
#define LEB() read_leb128 (start, & length_return, 0); start += length_return
|
||||
#define SLEB() read_leb128 (start, & length_return, 1); start += length_return
|
||||
#define SLEB() read_sleb128 (start, & length_return); start += length_return
|
||||
|
||||
static int
|
||||
display_debug_frames (struct dwarf_section *section,
|
||||
@ -5199,21 +5233,21 @@ dwarf_select_sections_by_names (const char *names)
|
||||
};
|
||||
|
||||
const char *p;
|
||||
|
||||
|
||||
p = names;
|
||||
while (*p)
|
||||
{
|
||||
const debug_dump_long_opts * entry;
|
||||
|
||||
|
||||
for (entry = opts_table; entry->option; entry++)
|
||||
{
|
||||
size_t len = strlen (entry->option);
|
||||
|
||||
|
||||
if (strncmp (p, entry->option, len) == 0
|
||||
&& (p[len] == ',' || p[len] == '\0'))
|
||||
{
|
||||
* entry->variable |= entry->val;
|
||||
|
||||
|
||||
/* The --debug-dump=frames-interp option also
|
||||
enables the --debug-dump=frames option. */
|
||||
if (do_debug_frames_interp)
|
||||
@ -5223,7 +5257,7 @@ dwarf_select_sections_by_names (const char *names)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (entry->option == NULL)
|
||||
{
|
||||
warn (_("Unrecognized debug option '%s'\n"), p);
|
||||
@ -5231,7 +5265,7 @@ dwarf_select_sections_by_names (const char *names)
|
||||
if (p == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (*p == ',')
|
||||
p++;
|
||||
}
|
||||
@ -5248,53 +5282,53 @@ dwarf_select_sections_by_letters (const char *letters)
|
||||
case 'i':
|
||||
do_debug_info = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'a':
|
||||
do_debug_abbrevs = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'l':
|
||||
do_debug_lines |= FLAG_DEBUG_LINES_RAW;
|
||||
break;
|
||||
|
||||
|
||||
case 'L':
|
||||
do_debug_lines |= FLAG_DEBUG_LINES_DECODED;
|
||||
break;
|
||||
|
||||
|
||||
case 'p':
|
||||
do_debug_pubnames = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 't':
|
||||
do_debug_pubtypes = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'r':
|
||||
do_debug_aranges = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'R':
|
||||
do_debug_ranges = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'F':
|
||||
do_debug_frames_interp = 1;
|
||||
case 'f':
|
||||
do_debug_frames = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'm':
|
||||
do_debug_macinfo = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 's':
|
||||
do_debug_str = 1;
|
||||
break;
|
||||
|
||||
|
||||
case 'o':
|
||||
do_debug_loc = 1;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
warn (_("Unrecognized debug option '%s'\n"), optarg);
|
||||
break;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* dwarf.h - DWARF support header file
|
||||
Copyright 2005, 2007, 2008, 2009, 2010
|
||||
Copyright 2005, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Binutils.
|
||||
@ -19,8 +19,9 @@
|
||||
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
typedef unsigned HOST_WIDEST_INT dwarf_vma;
|
||||
typedef unsigned HOST_WIDEST_INT dwarf_size_type;
|
||||
typedef unsigned HOST_WIDEST_INT dwarf_vma;
|
||||
typedef HOST_WIDEST_INT dwarf_signed_vma;
|
||||
typedef unsigned HOST_WIDEST_INT dwarf_size_type;
|
||||
|
||||
/* Structure found in the .debug_line section. */
|
||||
typedef struct
|
||||
@ -38,7 +39,7 @@ DWARF2_External_LineInfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bfd_vma li_length;
|
||||
dwarf_vma li_length;
|
||||
unsigned short li_version;
|
||||
unsigned int li_prologue_length;
|
||||
unsigned char li_min_insn_length;
|
||||
@ -62,10 +63,10 @@ DWARF2_External_PubNames;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bfd_vma pn_length;
|
||||
dwarf_vma pn_length;
|
||||
unsigned short pn_version;
|
||||
bfd_vma pn_offset;
|
||||
bfd_vma pn_size;
|
||||
dwarf_vma pn_offset;
|
||||
dwarf_vma pn_size;
|
||||
}
|
||||
DWARF2_Internal_PubNames;
|
||||
|
||||
@ -81,9 +82,9 @@ DWARF2_External_CompUnit;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bfd_vma cu_length;
|
||||
dwarf_vma cu_length;
|
||||
unsigned short cu_version;
|
||||
bfd_vma cu_abbrev_offset;
|
||||
dwarf_vma cu_abbrev_offset;
|
||||
unsigned char cu_pointer_size;
|
||||
}
|
||||
DWARF2_Internal_CompUnit;
|
||||
@ -100,9 +101,9 @@ DWARF2_External_ARange;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bfd_vma ar_length;
|
||||
dwarf_vma ar_length;
|
||||
unsigned short ar_version;
|
||||
bfd_vma ar_info_offset;
|
||||
dwarf_vma ar_info_offset;
|
||||
unsigned char ar_pointer_size;
|
||||
unsigned char ar_segment_size;
|
||||
}
|
||||
@ -165,15 +166,15 @@ typedef struct
|
||||
unsigned int pointer_size;
|
||||
unsigned int offset_size;
|
||||
int dwarf_version;
|
||||
bfd_vma cu_offset;
|
||||
bfd_vma base_address;
|
||||
dwarf_vma cu_offset;
|
||||
dwarf_vma base_address;
|
||||
/* This is an array of offsets to the location list table. */
|
||||
bfd_vma *loc_offsets;
|
||||
int *have_frame_base;
|
||||
dwarf_vma * loc_offsets;
|
||||
int * have_frame_base;
|
||||
unsigned int num_loc_offsets;
|
||||
unsigned int max_loc_offsets;
|
||||
/* List of .debug_ranges offsets seen in this .debug_info. */
|
||||
bfd_vma *range_lists;
|
||||
dwarf_vma * range_lists;
|
||||
unsigned int num_range_lists;
|
||||
unsigned int max_range_lists;
|
||||
}
|
||||
@ -203,8 +204,7 @@ extern void init_dwarf_regnames (unsigned int);
|
||||
extern void init_dwarf_regnames_i386 (void);
|
||||
extern void init_dwarf_regnames_x86_64 (void);
|
||||
|
||||
extern int load_debug_section (enum dwarf_section_display_enum,
|
||||
void *);
|
||||
extern int load_debug_section (enum dwarf_section_display_enum, void *);
|
||||
extern void free_debug_section (enum dwarf_section_display_enum);
|
||||
|
||||
extern void free_debug_memory (void);
|
||||
@ -213,9 +213,8 @@ extern void dwarf_select_sections_by_names (const char *);
|
||||
extern void dwarf_select_sections_by_letters (const char *);
|
||||
extern void dwarf_select_sections_all (void);
|
||||
|
||||
void *cmalloc (size_t, size_t);
|
||||
void *xcmalloc (size_t, size_t);
|
||||
void *xcrealloc (void *, size_t, size_t);
|
||||
void * cmalloc (size_t, size_t);
|
||||
void * xcmalloc (size_t, size_t);
|
||||
void * xcrealloc (void *, size_t, size_t);
|
||||
|
||||
bfd_vma read_leb128 (unsigned char *data,
|
||||
unsigned int *length_return, int sign);
|
||||
dwarf_vma read_leb128 (unsigned char *, unsigned int *, int);
|
||||
|
Loading…
Reference in New Issue
Block a user