return val;
}
-/* Print a dwarf_vma value (typically an address, offset or length) in
- hexadecimal format, followed by a space. The length of the value (and
- hence the precision displayed) is determined by the byte_size parameter. */
-
-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 __MINGW32__
- snprintf (buff, sizeof (buff), "%16.16llx ", val);
+#define DWARF_VMA_FMT "ll"
+#define DWARF_VMA_FMT_LONG "%16.16llx"
#else
- snprintf (buff, sizeof (buff), "%016I64x ", val);
+#define DWARF_VMA_FMT "I64"
+#define DWARF_VMA_FMT_LONG "%016I64x"
#endif
#else
- snprintf (buff, sizeof (buff), "%16.16lx ", val);
+#define DWARF_VMA_FMT "l"
+#define DWARF_VMA_FMT_LONG "%16.16lx"
#endif
- 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
+/* Convert a dwarf vma value into a string. Returns a pointer to a static
+ buffer containing the converted VALUE. The value is converted according
+ to the printf formating character FMTCH. If NUM_BYTES is non-zero then
+ it specifies the maximum number of bytes to be displayed in the converted
+ value and FMTCH is ignored - hex is always used. */
static const char *
-dwarf_vmatoa (const char *fmtch, dwarf_vma value)
+dwarf_vmatoa_1 (const char *fmtch, dwarf_vma value, unsigned num_bytes)
{
/* As dwarf_vmatoa is used more then once in a printf call
for output, we are cycling through an fixed array of pointers
{
char place[64];
} buf[16];
- char fmt[32];
char *ret;
- sprintf (fmt, "%%%s%s", DWARF_VMA_FMT, fmtch);
-
ret = buf[buf_pos++].place;
buf_pos %= ARRAY_SIZE (buf);
- snprintf (ret, sizeof (buf[0].place), fmt, value);
+ if (num_bytes)
+ {
+ /* 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. */
+ snprintf (ret, sizeof (buf[0].place), DWARF_VMA_FMT_LONG, value);
+ if (num_bytes > 8)
+ num_bytes = 8;
+ return ret + (16 - 2 * num_bytes);
+ }
+ else
+ {
+ char fmt[32];
- return ret;
+ sprintf (fmt, "%%%s%s", DWARF_VMA_FMT, fmtch);
+ snprintf (ret, sizeof (buf[0].place), fmt, value);
+ return ret;
+ }
+}
+
+static inline const char *
+dwarf_vmatoa (const char * fmtch, dwarf_vma value)
+{
+ return dwarf_vmatoa_1 (fmtch, value, 0);
+}
+
+/* Print a dwarf_vma value (typically an address, offset or length) in
+ hexadecimal format, followed by a space. The length of the VALUE (and
+ hence the precision displayed) is determined by the NUM_BYTES parameter. */
+
+static void
+print_dwarf_vma (dwarf_vma value, unsigned num_bytes)
+{
+ printf ("%s ", dwarf_vmatoa_1 (NULL, value, num_bytes));
}
/* Format a 64-bit value, given as two 32-bit values, in hex.
#define SAFE_BYTE_GET(VAL, PTR, AMOUNT, END) \
do \
{ \
+ int dummy [sizeof (VAL) < (AMOUNT) ? -1 : 1] ATTRIBUTE_UNUSED ; \
unsigned int amount = (AMOUNT); \
if (((PTR) + amount) >= (END)) \
{ \
#define SAFE_BYTE_GET64(PTR, HIGH, LOW, END) \
do \
{ \
- if (((PTR) + 8) < (END)) \
+ if (((PTR) + 8) <= (END)) \
{ \
byte_get_64 ((PTR), (HIGH), (LOW)); \
} \
else \
{ \
- PTR = END; \
* (LOW) = * (HIGH) = 0; \
} \
} \
if (section->start == NULL)
return (const unsigned char *) _("<no .debug_str section>");
- /* DWARF sections under Mach-O have non-zero addresses. */
- offset -= section->address;
if (offset > section->size)
{
warn (_("DW_FORM_strp offset too big: %s\n"),
return (dwo ? _("<no .debug_str_offsets.dwo section>")
: _("<no .debug_str_offsets section>"));
- /* DWARF sections under Mach-O have non-zero addresses. */
- index_offset -= index_section->address;
if (this_set != NULL)
index_offset += this_set->section_offsets [DW_SECT_STR_OFFSETS];
if (index_offset > index_section->size)
get_FORM_name (unsigned long form)
{
const char *name;
-
+
if (form == 0)
return "DW_FORM value: 0";
printf ("DW_OP_const1s: %ld", (long) svalue);
break;
case DW_OP_const2u:
- SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 2, end);
printf ("DW_OP_const2u: %lu", (unsigned long) uvalue);
break;
case DW_OP_const2s:
return NULL;
}
+/* Add INC to HIGH_BITS:LOW_BITS. */
+static void
+add64 (dwarf_vma * high_bits, dwarf_vma * low_bits, dwarf_vma inc)
+{
+ dwarf_vma tmp = * low_bits;
+
+ tmp += inc;
+
+ /* FIXME: There is probably a better way of handling this:
+
+ We need to cope with dwarf_vma being a 32-bit or 64-bit
+ type. Plus regardless of its size LOW_BITS is meant to
+ only hold 32-bits, so if there is overflow or wrap around
+ we must propagate into HIGH_BITS. */
+ if (tmp < * low_bits)
+ {
+ ++ * high_bits;
+ }
+ else if (sizeof (tmp) > 8
+ && (tmp >> 31) > 1)
+ {
+ ++ * high_bits;
+ tmp &= 0xFFFFFFFF;
+ }
+
+ * low_bits = tmp;
+}
+
static unsigned char *
read_and_display_attr_value (unsigned long attribute,
unsigned long form,
if (!do_loc)
{
dwarf_vma high_bits;
+ dwarf_vma utmp;
char buf[64];
SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
-
+ utmp = uvalue;
+ if (form == DW_FORM_ref8)
+ add64 (& high_bits, & utmp, cu_offset);
printf (" 0x%s",
- dwarf_vmatoa64 (high_bits, uvalue, buf, sizeof (buf)));
+ dwarf_vmatoa64 (high_bits, utmp, buf, sizeof (buf)));
}
if ((do_loc || do_debug_loc || do_debug_ranges)
return data;
/* For some attributes we can display further information. */
- printf ("\t");
-
switch (attribute)
{
case DW_AT_inline:
+ printf ("\t");
switch (uvalue)
{
case DW_INL_not_inlined:
break;
case DW_AT_language:
+ printf ("\t");
switch (uvalue)
{
/* Ordered by the numeric value of these constants. */
break;
case DW_AT_encoding:
+ printf ("\t");
switch (uvalue)
{
case DW_ATE_void: printf ("(void)"); break;
break;
case DW_AT_accessibility:
+ printf ("\t");
switch (uvalue)
{
case DW_ACCESS_public: printf ("(public)"); break;
break;
case DW_AT_visibility:
+ printf ("\t");
switch (uvalue)
{
case DW_VIS_local: printf ("(local)"); break;
break;
case DW_AT_virtuality:
+ printf ("\t");
switch (uvalue)
{
case DW_VIRTUALITY_none: printf ("(none)"); break;
break;
case DW_AT_identifier_case:
+ printf ("\t");
switch (uvalue)
{
case DW_ID_case_sensitive: printf ("(case_sensitive)"); break;
break;
case DW_AT_calling_convention:
+ printf ("\t");
switch (uvalue)
{
case DW_CC_normal: printf ("(normal)"); break;
break;
case DW_AT_ordering:
+ printf ("\t");
switch (uvalue)
{
case -1: printf (_("(undefined)")); break;
if ((dwarf_version < 4
&& (form == DW_FORM_data4 || form == DW_FORM_data8))
|| form == DW_FORM_sec_offset)
- printf (_("(location list)"));
+ printf (_(" (location list)"));
/* Fall through. */
case DW_AT_allocated:
case DW_AT_associated:
{
int need_frame_base;
- printf ("(");
+ printf ("\t(");
need_frame_base = decode_location_expression (block_start,
pointer_size,
offset_size,
abbrev_number = read_uleb128 (section->start + uvalue, NULL, end);
- printf (_("[Abbrev Number: %ld"), abbrev_number);
+ printf (_("\t[Abbrev Number: %ld"), abbrev_number);
/* Don't look up abbrev for DW_FORM_ref_addr, as it very often will
use different abbrev table, and we don't track .debug_info chunks
yet. */
unsigned char *tags;
int level, last_level, saved_level;
dwarf_vma cu_offset;
- int offset_size;
+ unsigned int offset_size;
int initial_length_size;
dwarf_vma signature_high = 0;
dwarf_vma signature_low = 0;
free_abbrevs ();
- /* Process the abbrevs used by this compilation unit. DWARF
- sections under Mach-O have non-zero addresses. */
+ /* Process the abbrevs used by this compilation unit. */
if (compunit.cu_abbrev_offset >= abbrev_size)
warn (_("Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"),
(unsigned long) compunit.cu_abbrev_offset,
DWARF2_Internal_LineInfo linfo;
unsigned char *standard_opcodes;
unsigned char *end_of_sequence;
- int i;
+ unsigned int last_dir_entry = 0;
+ int i;
if (const_strneq (section->name, ".debug_line.")
/* Note: the following does not apply to .debug_line.dwo sections.
printf (_("\n The Directory Table is empty.\n"));
else
{
- printf (_("\n The Directory Table:\n"));
+ printf (_("\n The Directory Table (offset 0x%lx):\n"),
+ (long)(data - start));
while (*data != 0)
{
- printf (" %s\n", data);
+ printf (" %d\t%s\n", ++last_dir_entry, data);
data += strnlen ((char *) data, end - data) + 1;
}
printf (_("\n The File Name Table is empty.\n"));
else
{
- printf (_("\n The File Name Table:\n"));
+ printf (_("\n The File Name Table (offset 0x%lx):\n"),
+ (long)(data - start));
printf (_(" Entry\tDir\tTime\tSize\tName\n"));
while (*data != 0)
dwarf_vma uladv;
unsigned int bytes_read;
+ printf (" [0x%08lx]", (long)(data - start));
+
op_code = *data++;
if (op_code >= linfo.li_opcode_base)
break;
case DW_LNE_set_address:
SAFE_BYTE_GET_AND_INC (state_machine_regs.address,
- op_code_data, ext_op_code_len - bytes_read - 1,
+ op_code_data,
+ ext_op_code_len - bytes_read - 1,
end);
state_machine_regs.op_index = 0;
break;
return NULL;
}
+static const char *
+get_gdb_index_symbol_kind_name (gdb_index_symbol_kind kind)
+{
+ /* See gdb/gdb-index.h. */
+ static const char * const kinds[] =
+ {
+ N_ ("no info"),
+ N_ ("type"),
+ N_ ("variable"),
+ N_ ("function"),
+ N_ ("other"),
+ N_ ("unused5"),
+ N_ ("unused6"),
+ N_ ("unused7")
+ };
+
+ return _ (kinds[kind]);
+}
+
static int
-display_debug_pubnames (struct dwarf_section *section,
- void *file ATTRIBUTE_UNUSED)
+display_debug_pubnames_worker (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED,
+ int is_gnu)
{
DWARF2_Internal_PubNames names;
unsigned char *start = section->start;
{
unsigned char *data;
unsigned long offset;
- int offset_size, initial_length_size;
+ unsigned int offset_size, initial_length_size;
data = start;
printf (_(" Size of area in .debug_info section: %ld\n"),
(long) names.pn_size);
- printf (_("\n Offset\tName\n"));
+ if (is_gnu)
+ printf (_("\n Offset Kind Name\n"));
+ else
+ printf (_("\n Offset\tName\n"));
do
{
if (offset != 0)
{
data += offset_size;
- printf (" %-6lx\t%s\n", offset, data);
+ if (is_gnu)
+ {
+ unsigned int kind_data;
+ gdb_index_symbol_kind kind;
+ const char *kind_name;
+ int is_static;
+
+ SAFE_BYTE_GET (kind_data, data, 1, end);
+ data++;
+ /* GCC computes the kind as the upper byte in the CU index
+ word, and then right shifts it by the CU index size.
+ Left shift KIND to where the gdb-index.h accessor macros
+ can use it. */
+ kind_data <<= GDB_INDEX_CU_BITSIZE;
+ kind = GDB_INDEX_SYMBOL_KIND_VALUE (kind_data);
+ kind_name = get_gdb_index_symbol_kind_name (kind);
+ is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (kind_data);
+ printf (" %-6lx %s,%-10s %s\n",
+ offset, is_static ? _("s") : _("g"),
+ kind_name, data);
+ }
+ else
+ printf (" %-6lx\t%s\n", offset, data);
data += strnlen ((char *) data, end - data) + 1;
}
}
return 1;
}
+static int
+display_debug_pubnames (struct dwarf_section *section, void *file)
+{
+ return display_debug_pubnames_worker (section, file, 0);
+}
+
+static int
+display_debug_gnu_pubnames (struct dwarf_section *section, void *file)
+{
+ return display_debug_pubnames_worker (section, file, 1);
+}
+
static int
display_debug_macinfo (struct dwarf_section *section,
void *file ATTRIBUTE_UNUSED)
dwarf_vma nargs, n;
SAFE_BYTE_GET_AND_INC (count, curr, 1, end);
-
+
memset (extended_op_buf, 0, sizeof (extended_op_buf));
extended_ops = extended_op_buf;
if (count)
if (!seen_first_offset)
error (_("No location lists in .debug_info section!\n"));
- /* DWARF sections under Mach-O have non-zero addresses. */
if (debug_information [first].num_loc_offsets > 0
- && debug_information [first].loc_offsets [0] != section->address)
+ && debug_information [first].loc_offsets [0] != 0)
warn (_("Location lists in %s section start at 0x%s\n"),
section->name,
dwarf_vmatoa ("x", debug_information [first].loc_offsets [0]));
== debug_information [i].loc_offsets [j])
continue;
has_frame_base = debug_information [i].have_frame_base [j];
- /* DWARF sections under Mach-O have non-zero addresses. */
- offset = debug_information [i].loc_offsets [j] - section->address;
+ offset = debug_information [i].loc_offsets [j];
next = section_begin + offset;
base_address = debug_information [i].base_address;
dwarf_vma address;
unsigned char address_size;
int excess;
- int offset_size;
- int initial_length_size;
+ unsigned int offset_size;
+ unsigned int initial_length_size;
hdrptr = start;
qsort (range_entries, num_range_list, sizeof (*range_entries),
range_entry_compar);
- /* DWARF sections under Mach-O have non-zero addresses. */
- if (dwarf_check != 0 && range_entries[0].ranges_offset != section->address)
+ if (dwarf_check != 0 && range_entries[0].ranges_offset != 0)
warn (_("Range lists in %s section start at 0x%lx\n"),
section->name, range_entries[0].ranges_offset);
pointer_size = debug_info_p->pointer_size;
- /* DWARF sections under Mach-O have non-zero addresses. */
- offset = range_entry->ranges_offset - section->address;
+ offset = range_entry->ranges_offset;
next = section_begin + offset;
base_address = debug_info_p->base_address;
char *augmentation;
unsigned int code_factor;
int data_factor;
- unsigned long pc_begin;
- unsigned long pc_range;
+ dwarf_vma pc_begin;
+ dwarf_vma pc_range;
int cfa_reg;
int cfa_offset;
int ra;
static const char *const dwarf_regnames_i386[] =
{
- "eax", "ecx", "edx", "ebx",
- "esp", "ebp", "esi", "edi",
- "eip", "eflags", NULL,
- "st0", "st1", "st2", "st3",
- "st4", "st5", "st6", "st7",
- NULL, NULL,
- "xmm0", "xmm1", "xmm2", "xmm3",
- "xmm4", "xmm5", "xmm6", "xmm7",
- "mm0", "mm1", "mm2", "mm3",
- "mm4", "mm5", "mm6", "mm7",
- "fcw", "fsw", "mxcsr",
- "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
- "tr", "ldtr"
+ "eax", "ecx", "edx", "ebx", /* 0 - 3 */
+ "esp", "ebp", "esi", "edi", /* 4 - 7 */
+ "eip", "eflags", NULL, /* 8 - 10 */
+ "st0", "st1", "st2", "st3", /* 11 - 14 */
+ "st4", "st5", "st6", "st7", /* 15 - 18 */
+ NULL, NULL, /* 19 - 20 */
+ "xmm0", "xmm1", "xmm2", "xmm3", /* 21 - 24 */
+ "xmm4", "xmm5", "xmm6", "xmm7", /* 25 - 28 */
+ "mm0", "mm1", "mm2", "mm3", /* 29 - 32 */
+ "mm4", "mm5", "mm6", "mm7", /* 33 - 36 */
+ "fcw", "fsw", "mxcsr", /* 37 - 39 */
+ "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL, /* 40 - 47 */
+ "tr", "ldtr", /* 48 - 49 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 50 - 57 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 58 - 65 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 66 - 73 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 74 - 81 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 82 - 89 */
+ NULL, NULL, NULL, /* 90 - 92 */
+ "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7" /* 93 - 100 */
};
void
"es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
"fs.base", "gs.base", NULL, NULL,
"tr", "ldtr",
- "mxcsr", "fcw", "fsw"
+ "mxcsr", "fcw", "fsw",
+ "xmm16", "xmm17", "xmm18", "xmm19",
+ "xmm20", "xmm21", "xmm22", "xmm23",
+ "xmm24", "xmm25", "xmm26", "xmm27",
+ "xmm28", "xmm29", "xmm30", "xmm31",
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 83 - 90 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 91 - 98 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 99 - 106 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 107 - 114 */
+ NULL, NULL, NULL, /* 115 - 117 */
+ "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7"
};
void
printf ("\n");
}
- printf ("%0*lx ", eh_addr_size * 2, fc->pc_begin);
+ print_dwarf_vma (fc->pc_begin, eh_addr_size);
if (fc->cfa_exp)
strcpy (tmp, "exp");
else
{
unsigned char *saved_start;
unsigned char *block_end;
- unsigned long length;
- unsigned long cie_id;
+ dwarf_vma length;
+ dwarf_vma cie_id;
Frame_Chunk *fc;
Frame_Chunk *cie;
int need_col_headers = 1;
unsigned char *augmentation_data = NULL;
unsigned long augmentation_data_len = 0;
- int encoded_ptr_size = saved_eh_addr_size;
- int offset_size;
- int initial_length_size;
+ unsigned int encoded_ptr_size = saved_eh_addr_size;
+ unsigned int offset_size;
+ unsigned int initial_length_size;
saved_start = start;
block_end = saved_start + length + initial_length_size;
if (block_end > end)
{
- warn ("Invalid length %#08lx in FDE at %#08lx\n",
- length, (unsigned long)(saved_start - section_start));
+ warn ("Invalid length 0x%s in FDE at %#08lx\n",
+ dwarf_vmatoa_1 (NULL, length, offset_size),
+ (unsigned long) (saved_start - section_start));
block_end = end;
}
SAFE_BYTE_GET_AND_INC (cie_id, start, offset_size, end);
- if (is_eh ? (cie_id == 0) : (cie_id == DW_CIE_ID))
+ if (is_eh ? (cie_id == 0) : ((offset_size == 4 && cie_id == DW_CIE_ID)
+ || (offset_size == 8 && cie_id == DW64_CIE_ID)))
{
int version;
}
cie = fc;
+ printf ("\n%08lx ", (unsigned long) (saved_start - section_start));
+ print_dwarf_vma (length, fc->ptr_size);
+ print_dwarf_vma (cie_id, offset_size);
+
if (do_debug_frames_interp)
- printf ("\n%08lx %08lx %08lx CIE \"%s\" cf=%d df=%d ra=%d\n",
- (unsigned long)(saved_start - section_start), length, cie_id,
- fc->augmentation, fc->code_factor, fc->data_factor,
- fc->ra);
+ {
+ printf ("CIE \"%s\" cf=%d df=%d ra=%d\n", fc->augmentation,
+ fc->code_factor, fc->data_factor, fc->ra);
+ }
else
{
- printf ("\n%08lx %08lx %08lx CIE\n",
- (unsigned long)(saved_start - section_start), length, cie_id);
+ printf ("CIE\n");
printf (" Version: %d\n", version);
printf (" Augmentation: \"%s\"\n", fc->augmentation);
if (version >= 4)
if (!cie)
{
- warn ("Invalid CIE pointer %#08lx in FDE at %#08lx\n",
- cie_id, (unsigned long)(saved_start - section_start));
+ warn ("Invalid CIE pointer 0x%s in FDE at %#08lx\n",
+ dwarf_vmatoa_1 (NULL, cie_id, offset_size),
+ (unsigned long) (saved_start - section_start));
fc->ncols = 0;
fc->col_type = (short int *) xmalloc (sizeof (short int));
fc->col_offset = (int *) xmalloc (sizeof (int));
run of the "objcopy on compressed debug sections" test for an
example of this. */
SAFE_BYTE_GET_AND_INC (fc->pc_range, start, encoded_ptr_size, end);
-
+
if (cie->augmentation[0] == 'z')
{
augmentation_data_len = LEB ();
start += augmentation_data_len;
}
- printf ("\n%08lx %08lx %08lx FDE cie=%08lx pc=",
- (unsigned long)(saved_start - section_start), length, cie_id,
+ printf ("\n%08lx %s %s FDE cie=%08lx pc=",
+ (unsigned long)(saved_start - section_start),
+ dwarf_vmatoa_1 (NULL, length, fc->ptr_size),
+ dwarf_vmatoa_1 (NULL, cie_id, offset_size),
(unsigned long)(cie->chunk_start - section_start));
+
if (fc->segment_size)
printf ("%04lx:", segment_selector);
- printf ("%08lx..%08lx\n", fc->pc_begin, fc->pc_begin + fc->pc_range);
+
+ printf ("%s..%s\n",
+ dwarf_vmatoa_1 (NULL, fc->pc_begin, fc->ptr_size),
+ dwarf_vmatoa_1 (NULL, fc->pc_begin + fc->pc_range, fc->ptr_size));
+
if (! do_debug_frames_interp && augmentation_data_len)
{
unsigned long i;
{
unsigned op, opa;
unsigned long ul, reg, roffs;
- long l, ofs;
+ long l;
+ dwarf_vma ofs;
dwarf_vma vma;
const char *reg_prefix = "";
if (do_debug_frames_interp)
frame_display_row (fc, &need_col_headers, &max_regs);
else
- printf (" DW_CFA_advance_loc: %d to %08lx\n",
+ printf (" DW_CFA_advance_loc: %d to %s\n",
opa * fc->code_factor,
- fc->pc_begin + opa * fc->code_factor);
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + opa * fc->code_factor,
+ fc->ptr_size));
fc->pc_begin += opa * fc->code_factor;
break;
if (do_debug_frames_interp)
frame_display_row (fc, &need_col_headers, &max_regs);
else
- printf (" DW_CFA_set_loc: %08lx\n", (unsigned long)vma);
+ printf (" DW_CFA_set_loc: %s\n",
+ dwarf_vmatoa_1 (NULL, vma, fc->ptr_size));
fc->pc_begin = vma;
break;
if (do_debug_frames_interp)
frame_display_row (fc, &need_col_headers, &max_regs);
else
- printf (" DW_CFA_advance_loc1: %ld to %08lx\n",
- ofs * fc->code_factor,
- fc->pc_begin + ofs * fc->code_factor);
+ printf (" DW_CFA_advance_loc1: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
fc->pc_begin += ofs * fc->code_factor;
break;
if (do_debug_frames_interp)
frame_display_row (fc, &need_col_headers, &max_regs);
else
- printf (" DW_CFA_advance_loc2: %ld to %08lx\n",
- ofs * fc->code_factor,
- fc->pc_begin + ofs * fc->code_factor);
+ printf (" DW_CFA_advance_loc2: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
fc->pc_begin += ofs * fc->code_factor;
break;
if (do_debug_frames_interp)
frame_display_row (fc, &need_col_headers, &max_regs);
else
- printf (" DW_CFA_advance_loc4: %ld to %08lx\n",
- ofs * fc->code_factor,
- fc->pc_begin + ofs * fc->code_factor);
+ printf (" DW_CFA_advance_loc4: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
fc->pc_begin += ofs * fc->code_factor;
break;
if (do_debug_frames_interp)
frame_display_row (fc, &need_col_headers, &max_regs);
else
- printf (" DW_CFA_MIPS_advance_loc8: %ld to %08lx\n",
- ofs * fc->code_factor,
- fc->pc_begin + ofs * fc->code_factor);
+ printf (" DW_CFA_MIPS_advance_loc8: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
fc->pc_begin += ofs * fc->code_factor;
break;
else
printf ("%c%lu", num_cus > 1 ? '\t' : ' ', (unsigned long) cu);
- switch (kind)
- {
- case GDB_INDEX_SYMBOL_KIND_NONE:
- printf (_(" [no symbol information]"));
- break;
- case GDB_INDEX_SYMBOL_KIND_TYPE:
- printf (is_static
- ? _(" [static type]")
- : _(" [global type]"));
- break;
- case GDB_INDEX_SYMBOL_KIND_VARIABLE:
- printf (is_static
- ? _(" [static variable]")
- : _(" [global variable]"));
- break;
- case GDB_INDEX_SYMBOL_KIND_FUNCTION:
- printf (is_static
- ? _(" [static function]")
- : _(" [global function]"));
- break;
- case GDB_INDEX_SYMBOL_KIND_OTHER:
- printf (is_static
- ? _(" [static other]")
- : _(" [global other]"));
- break;
- default:
- printf (is_static
- ? _(" [static unknown: %d]")
- : _(" [global unknown: %d]"),
- kind);
- break;
- }
+ printf (" [%s, %s]",
+ is_static ? _("static") : _("global"),
+ get_gdb_index_symbol_kind_name (kind));
if (num_cus > 1)
printf ("\n");
}
display_debug_lines, &do_debug_lines, 1 },
{ { ".debug_pubnames", ".zdebug_pubnames", NULL, NULL, 0, 0, 0 },
display_debug_pubnames, &do_debug_pubnames, 0 },
+ { { ".debug_gnu_pubnames", ".zdebug_gnu_pubnames", NULL, NULL, 0, 0, 0 },
+ display_debug_gnu_pubnames, &do_debug_pubnames, 0 },
{ { ".eh_frame", "", NULL, NULL, 0, 0, 0 },
display_debug_frames, &do_debug_frames, 1 },
{ { ".debug_macinfo", ".zdebug_macinfo", NULL, NULL, 0, 0, 0 },
display_debug_loc, &do_debug_loc, 1 },
{ { ".debug_pubtypes", ".zdebug_pubtypes", NULL, NULL, 0, 0, 0 },
display_debug_pubnames, &do_debug_pubtypes, 0 },
+ { { ".debug_gnu_pubtypes", ".zdebug_gnu_pubtypes", NULL, NULL, 0, 0, 0 },
+ display_debug_gnu_pubnames, &do_debug_pubtypes, 0 },
{ { ".debug_ranges", ".zdebug_ranges", NULL, NULL, 0, 0, 0 },
display_debug_ranges, &do_debug_ranges, 1 },
{ { ".debug_static_func", ".zdebug_static_func", NULL, NULL, 0, 0, 0 },