mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-24 17:55:40 +00:00
Compare commits
1 Commits
gdb-12.1-r
...
users/sima
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e61b4af73d |
@@ -454,6 +454,21 @@ c_val_print_int (struct type *type, struct type *unresolved_type,
|
|||||||
: options->output_format);
|
: options->output_format);
|
||||||
val_print_scalar_formatted (type, embedded_offset,
|
val_print_scalar_formatted (type, embedded_offset,
|
||||||
original_value, &opts, 0, stream);
|
original_value, &opts, 0, stream);
|
||||||
|
|
||||||
|
if (opts.print_suffix)
|
||||||
|
{
|
||||||
|
struct type *t = check_typedef (type);
|
||||||
|
|
||||||
|
if (TYPE_UNSIGNED (t))
|
||||||
|
fputc_filtered ('u', stream);
|
||||||
|
|
||||||
|
/* Is there a better way to do this? Just looking at the size doesn't
|
||||||
|
work. */
|
||||||
|
if (strstr (TYPE_NAME (t), "long long") != NULL)
|
||||||
|
fputs_filtered ("ll", stream);
|
||||||
|
else if (strstr (TYPE_NAME (t), "long") != NULL)
|
||||||
|
fputc_filtered ('l', stream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9211,7 +9211,7 @@ partial_die_full_name (struct partial_die_info *pdi,
|
|||||||
{
|
{
|
||||||
fixup_partial_die (pdi, cu);
|
fixup_partial_die (pdi, cu);
|
||||||
|
|
||||||
if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
|
if (pdi->name != NULL)
|
||||||
{
|
{
|
||||||
struct die_info *die;
|
struct die_info *die;
|
||||||
struct attribute attr;
|
struct attribute attr;
|
||||||
@@ -10875,6 +10875,22 @@ dwarf2_compute_name (const char *name,
|
|||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
name = dwarf2_name (die, cu);
|
name = dwarf2_name (die, cu);
|
||||||
|
|
||||||
|
/* If there is a template in the name, strip it and let the code below
|
||||||
|
re-compute it. */
|
||||||
|
gdb::unique_xmalloc_ptr<char> holder;
|
||||||
|
if (name != NULL)
|
||||||
|
{
|
||||||
|
const char *opening = strchr (name, '<');
|
||||||
|
if (opening != NULL)
|
||||||
|
{
|
||||||
|
/* In this case, name will get copied/modified and re-assigned,
|
||||||
|
so we can free this copy. */
|
||||||
|
holder.reset (xstrdup (name));
|
||||||
|
holder.get ()[opening - name] = '\0';
|
||||||
|
name = holder.get ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
|
/* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
|
||||||
but otherwise compute it by typename_concat inside GDB.
|
but otherwise compute it by typename_concat inside GDB.
|
||||||
FIXME: Actually this is not really true, or at least not always true.
|
FIXME: Actually this is not really true, or at least not always true.
|
||||||
@@ -10942,7 +10958,7 @@ dwarf2_compute_name (const char *name,
|
|||||||
templates; two instantiated function templates are allowed to
|
templates; two instantiated function templates are allowed to
|
||||||
differ only by their return types, which we do not add here. */
|
differ only by their return types, which we do not add here. */
|
||||||
|
|
||||||
if (cu->language == language_cplus && strchr (name, '<') == NULL)
|
if (cu->language == language_cplus)
|
||||||
{
|
{
|
||||||
struct attribute *attr;
|
struct attribute *attr;
|
||||||
struct die_info *child;
|
struct die_info *child;
|
||||||
@@ -11026,6 +11042,7 @@ dwarf2_compute_name (const char *name,
|
|||||||
the radix. */
|
the radix. */
|
||||||
get_formatted_print_options (&opts, 'd');
|
get_formatted_print_options (&opts, 'd');
|
||||||
opts.raw = 1;
|
opts.raw = 1;
|
||||||
|
opts.print_suffix = true;
|
||||||
value_print (v, &buf, &opts);
|
value_print (v, &buf, &opts);
|
||||||
release_value (v);
|
release_value (v);
|
||||||
value_free (v);
|
value_free (v);
|
||||||
|
|||||||
@@ -109,7 +109,8 @@ struct value_print_options user_print_options =
|
|||||||
1, /* pascal_static_field_print */
|
1, /* pascal_static_field_print */
|
||||||
0, /* raw */
|
0, /* raw */
|
||||||
0, /* summary */
|
0, /* summary */
|
||||||
1 /* symbol_print */
|
1, /* symbol_print */
|
||||||
|
false, /* print_suffix */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Initialize *OPTS to be a copy of the user print options. */
|
/* Initialize *OPTS to be a copy of the user print options. */
|
||||||
|
|||||||
@@ -92,6 +92,10 @@ struct value_print_options
|
|||||||
/* If nonzero, when printing a pointer, print the symbol to which it
|
/* If nonzero, when printing a pointer, print the symbol to which it
|
||||||
points, if any. */
|
points, if any. */
|
||||||
int symbol_print;
|
int symbol_print;
|
||||||
|
|
||||||
|
/* If true, print the integer suffixes (u for unsigned, l for long, ll for
|
||||||
|
long long). */
|
||||||
|
bool print_suffix;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The global print options set by the user. In general this should
|
/* The global print options set by the user. In general this should
|
||||||
|
|||||||
Reference in New Issue
Block a user