/* 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)
{
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__
snprintf (buff, sizeof (buff), "%16.16llx ", val);
+#else
+ snprintf (buff, sizeof (buff), "%016I64x ", val);
+#endif
#else
snprintf (buff, sizeof (buff), "%16.16lx ", val);
#endif
case DW_LNE_HP_define_proc:
printf ("DW_LNE_HP_define_proc");
break;
-
+
default:
if (op_code >= DW_LNE_lo_user
/* The test against DW_LNW_hi_user is redundant due to
/* FIXME: Is there data associated with this OP ? */
break;
+ /* PGI (STMicroelectronics) extensions. */
+ case DW_OP_PGI_omp_thread_num:
+ /* Pushes the thread number for the current thread as it would be
+ returned by the standard OpenMP library function:
+ omp_get_thread_num(). The "current thread" is the thread for
+ which the expression is being evaluated. */
+ printf ("DW_OP_PGI_omp_thread_num");
+ break;
+
default:
if (op >= DW_OP_lo_user
&& op <= DW_OP_hi_user)
case DW_AT_data_location:
case DW_AT_stride:
case DW_AT_upper_bound:
- case DW_AT_lower_bound:
+ case DW_AT_lower_bound:
if (block_start)
{
int need_frame_base;
abbrev_entry * entry;
abbrev_number = read_leb128 (section->start + uvalue, NULL, 0);
-
+
printf ("[Abbrev Number: %ld", abbrev_number);
for (entry = first_abbrev; entry != NULL; entry = entry->next)
if (entry->entry == abbrev_number)
case DW_AT_MIPS_has_inlines: return "DW_AT_MIPS_has_inlines";
/* HP Extensions. */
- case DW_AT_HP_block_index: return "DW_AT_HP_block_index";
+ case DW_AT_HP_block_index: return "DW_AT_HP_block_index";
case DW_AT_HP_actuals_stmt_list: return "DW_AT_HP_actuals_stmt_list";
case DW_AT_HP_proc_per_section: return "DW_AT_HP_proc_per_section";
case DW_AT_HP_raw_data_ptr: return "DW_AT_HP_raw_data_ptr";
/* One value is shared by the MIPS and HP extensions: */
case DW_AT_MIPS_fde: return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
-
+
/* GNU extensions. */
case DW_AT_sf_names: return "DW_AT_sf_names";
case DW_AT_src_info: return "DW_AT_src_info";
if (!do_loc)
printf (_(" <%d><%lx>: Abbrev Number: %lu"),
level, die_offset, abbrev_number);
-
+
/* Scan through the abbreviation list until we reach the
correct entry. */
for (entry = first_abbrev;
if (!do_loc)
printf (_(" (%s)\n"), get_TAG_name (entry->tag));
-
+
switch (entry->tag)
{
default:
debug_information + unit,
do_loc, section);
}
-
+
if (entry->children)
++level;
}
}
-
+
/* Set num_debug_info_entries here so that it can be used to check if
we need to process .debug_loc and .debug_ranges sections. */
if ((do_loc || do_debug_loc || do_debug_ranges)
&& num_debug_info_entries == 0)
num_debug_info_entries = num_units;
-
+
if (!do_loc)
{
printf ("\n");
}
-
+
return 1;
}
&& find_debug_info_for_offset (pubnames.pn_offset) == NULL)
warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
pubnames.pn_offset, section->name);
-
+
pubnames.pn_size = byte_get (data, offset_size);
data += offset_size;
{
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] - section->address;
next = section_begin + offset;
base_address = debug_information [i].base_address;
we can detect the -1 escape value. Sign extension into the
top 32 bits of a 32-bit address will not affect the values
that we display since we always show hex values, and always
- the bottom 32-bits. */
+ the bottom 32-bits. */
begin = byte_get_signed (start, pointer_size);
start += pointer_size;
end = byte_get_signed (start, pointer_size);
warn (_("Pointer size + Segment size is not a power of two.\n"));
break;
}
-
+
if (address_size > 4)
printf (_("\n Address Length\n"));
else
unsigned long base_address;
pointer_size = debug_information [i].pointer_size;
-
+
for (j = 0; j < debug_information [i].num_range_lists; j++)
{
/* DWARF sections under Mach-O have non-zero addresses. */
we can detect the -1 escape value. Sign extension into the
top 32 bits of a 32-bit address will not affect the values
that we display since we always show hex values, and always
- the bottom 32-bits. */
+ the bottom 32-bits. */
begin = byte_get_signed (start, pointer_size);
start += pointer_size;
end = byte_get_signed (start, pointer_size);
"mm4", "mm5", "mm6", "mm7",
"fcw", "fsw", "mxcsr",
"es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
- "tr", "ldtr"
+ "tr", "ldtr",
+ NULL, NULL, NULL,
+ "ymm0", "ymm1", "ymm2", "ymm3",
+ "ymm4", "ymm5", "ymm6", "ymm7"
};
static const char *const dwarf_regnames_x86_64[] =
"es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
"fs.base", "gs.base", NULL, NULL,
"tr", "ldtr",
- "mxcsr", "fcw", "fsw"
+ "mxcsr", "fcw", "fsw",
+ NULL, NULL, NULL,
+ "ymm0", "ymm1", "ymm2", "ymm3",
+ "ymm4", "ymm5", "ymm6", "ymm7",
+ "ymm8", "ymm9", "ymm10", "ymm11",
+ "ymm12", "ymm13", "ymm14", "ymm15"
};
static const char *const *dwarf_regnames;
if (op >= DW_CFA_lo_user && op <= DW_CFA_hi_user)
printf (_(" DW_CFA_??? (User defined call frame op: %#x)\n"), op);
else
- warn (_("unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"), op);
+ warn (_("unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"), op);
start = block_end;
}
}