mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 22:48:57 +08:00
merge from gcc
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2008-12-10 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* demangle.h (enum demangle_component_type): Add
|
||||
DEMANGLE_COMPONENT_FIXED_TYPE.
|
||||
|
||||
2008-12-01 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* plugin-api.h (ld_plugin_message): Change format parameter to const.
|
||||
|
@ -319,6 +319,8 @@ enum demangle_component_type
|
||||
and the right subtree is the member type. CV-qualifiers appear
|
||||
on the latter. */
|
||||
DEMANGLE_COMPONENT_PTRMEM_TYPE,
|
||||
/* A fixed-point type. */
|
||||
DEMANGLE_COMPONENT_FIXED_TYPE,
|
||||
/* An argument list. The left subtree is the current argument, and
|
||||
the right subtree is either NULL or another ARGLIST node. */
|
||||
DEMANGLE_COMPONENT_ARGLIST,
|
||||
@ -419,6 +421,17 @@ struct demangle_component
|
||||
struct demangle_component *name;
|
||||
} s_extended_operator;
|
||||
|
||||
/* For DEMANGLE_COMPONENT_FIXED_TYPE. */
|
||||
struct
|
||||
{
|
||||
/* The length, indicated by a C integer type name. */
|
||||
struct demangle_component *length;
|
||||
/* _Accum or _Fract? */
|
||||
short accum;
|
||||
/* Saturating or not? */
|
||||
short sat;
|
||||
} s_fixed;
|
||||
|
||||
/* For DEMANGLE_COMPONENT_CTOR. */
|
||||
struct
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-12-10 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp-demangle.c (cplus_demangle_type): Support fixed-point types.
|
||||
(d_print_comp, d_dump): Likewise.
|
||||
|
||||
2008-10-22 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* Makefile.in (CPPFLAGS): Define.
|
||||
|
@ -621,6 +621,9 @@ d_dump (struct demangle_component *dc, int indent)
|
||||
case DEMANGLE_COMPONENT_PTRMEM_TYPE:
|
||||
printf ("pointer to member type\n");
|
||||
break;
|
||||
case DEMANGLE_COMPONENT_FIXED_TYPE:
|
||||
printf ("fixed-point type\n");
|
||||
break;
|
||||
case DEMANGLE_COMPONENT_ARGLIST:
|
||||
printf ("argument list\n");
|
||||
break;
|
||||
@ -2115,6 +2118,19 @@ cplus_demangle_type (struct d_info *di)
|
||||
ret = d_make_builtin_type (di, &cplus_demangle_builtin_types[31]);
|
||||
di->expansion += ret->u.s_builtin.type->len;
|
||||
break;
|
||||
|
||||
case 'F':
|
||||
/* Fixed point types. DF<int bits><length><fract bits><sat> */
|
||||
ret = d_make_empty (di);
|
||||
ret->type = DEMANGLE_COMPONENT_FIXED_TYPE;
|
||||
if ((ret->u.s_fixed.accum = IS_DIGIT (d_peek_char (di))))
|
||||
/* For demangling we don't care about the bits. */
|
||||
d_number (di);
|
||||
ret->u.s_fixed.length = cplus_demangle_type (di);
|
||||
d_number (di);
|
||||
peek = d_next_char (di);
|
||||
ret->u.s_fixed.sat = (peek == 's');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -3725,6 +3741,22 @@ d_print_comp (struct d_print_info *dpi,
|
||||
return;
|
||||
}
|
||||
|
||||
case DEMANGLE_COMPONENT_FIXED_TYPE:
|
||||
if (dc->u.s_fixed.sat)
|
||||
d_append_string (dpi, "_Sat ");
|
||||
/* Don't print "int _Accum". */
|
||||
if (dc->u.s_fixed.length->u.s_builtin.type
|
||||
!= &cplus_demangle_builtin_types['i'-'a'])
|
||||
{
|
||||
d_print_comp (dpi, dc->u.s_fixed.length);
|
||||
d_append_char (dpi, ' ');
|
||||
}
|
||||
if (dc->u.s_fixed.accum)
|
||||
d_append_string (dpi, "_Accum");
|
||||
else
|
||||
d_append_string (dpi, "_Fract");
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_ARGLIST:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
|
||||
if (d_left (dc) != NULL)
|
||||
|
Reference in New Issue
Block a user