mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 01:53:38 +08:00
sync libiberty sources with gcc mainline
This commit is contained in:
parent
08c59458a1
commit
e3a5d52075
@ -457,6 +457,17 @@ enum demangle_component_type
|
||||
DEMANGLE_COMPONENT_MODULE_PARTITION,
|
||||
DEMANGLE_COMPONENT_MODULE_ENTITY,
|
||||
DEMANGLE_COMPONENT_MODULE_INIT,
|
||||
|
||||
DEMANGLE_COMPONENT_TEMPLATE_HEAD,
|
||||
DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM,
|
||||
DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM,
|
||||
DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM,
|
||||
DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM,
|
||||
|
||||
/* A builtin type with argument. This holds the builtin type
|
||||
information. */
|
||||
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE
|
||||
|
||||
};
|
||||
|
||||
/* Types which are only used internally. */
|
||||
@ -543,6 +554,15 @@ struct demangle_component
|
||||
const struct demangle_builtin_type_info *type;
|
||||
} s_builtin;
|
||||
|
||||
/* For DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. */
|
||||
struct
|
||||
{
|
||||
/* Builtin type. */
|
||||
const struct demangle_builtin_type_info *type;
|
||||
short arg;
|
||||
char suffix;
|
||||
} s_extended_builtin;
|
||||
|
||||
/* For DEMANGLE_COMPONENT_SUB_STD. */
|
||||
struct
|
||||
{
|
||||
|
@ -1,6 +1,271 @@
|
||||
2022-07-08 Nick Clifton <nickc@redhat.com>
|
||||
2022-11-23 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* 2.39 branch created.
|
||||
Revert:
|
||||
2022-11-23 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* configure.ac: Also set shared when enable_host_pie.
|
||||
* configure: Regenerate.
|
||||
|
||||
2022-11-23 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* configure.ac: Also set shared when enable_host_pie.
|
||||
* configure: Regenerate.
|
||||
|
||||
2022-11-15 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* cp-demangle.c (struct d_print_info): Rename is_lambda_arg to
|
||||
lambda_tpl_parms. Augment semantics.
|
||||
(d_make_comp): Add checks for new components.
|
||||
(d_template_parm, d_template_head): New.
|
||||
(d_lambda): Add templated lambda support.
|
||||
(d_print_init): Adjust.
|
||||
(d_print_lambda_parm_name): New.
|
||||
(d_print_comp_inner): Support templated lambdas,
|
||||
* testsuite/demangle-expected: Add testcases.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/bsd.rst: New file.
|
||||
* doc/conf.py: New file.
|
||||
* doc/copyright.rst: New file.
|
||||
* doc/extensions.rst: New file.
|
||||
* doc/function-variable-and-macro-listing.rst: New file.
|
||||
* doc/index.rst: New file.
|
||||
* doc/indices-and-tables.rst: New file.
|
||||
* doc/introduction.rst: New file.
|
||||
* doc/lesser-general-public-license-2.1.rst: New file.
|
||||
* doc/overview.rst: New file.
|
||||
* doc/replacement-functions.rst: New file.
|
||||
* doc/supplemental-functions.rst: New file.
|
||||
* doc/using.rst: New file.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* Makefile.in: Support Sphinx based documentation.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* at-file.texi: Removed.
|
||||
* copying-lib.texi: Removed.
|
||||
* functions.texi: Removed.
|
||||
* libiberty.texi: Removed.
|
||||
* obstacks.texi: Removed.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* Makefile.in: Support --with-sphinx-build.
|
||||
* configure.ac: Likewise.
|
||||
* configure: Regenerate.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/bsd.rst:
|
||||
Add trailing newline.
|
||||
* doc/copyright.rst:
|
||||
Add trailing newline.
|
||||
* doc/extensions.rst:
|
||||
Add trailing newline.
|
||||
* doc/function-variable-and-macro-listing.rst:
|
||||
Add trailing newline.
|
||||
* doc/index.rst:
|
||||
Add trailing newline.
|
||||
* doc/indices-and-tables.rst:
|
||||
Add trailing newline.
|
||||
* doc/introduction.rst:
|
||||
Add trailing newline.
|
||||
* doc/lesser-general-public-license-2.1.rst:
|
||||
Add trailing newline.
|
||||
* doc/overview.rst:
|
||||
Add trailing newline.
|
||||
* doc/replacement-functions.rst:
|
||||
Add trailing newline.
|
||||
* doc/supplemental-functions.rst:
|
||||
Add trailing newline.
|
||||
* doc/using.rst:
|
||||
Add trailing newline.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/conf.py: Add newline at last line.
|
||||
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
Revert:
|
||||
2022-11-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR other/107620
|
||||
* configure: Regenerate.
|
||||
* configure.ac: Always set sphinx-build.
|
||||
|
||||
2022-11-13 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR other/107620
|
||||
* configure: Regenerate.
|
||||
* configure.ac: Always set sphinx-build.
|
||||
|
||||
2022-11-10 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/conf.py: Add newline at last line.
|
||||
|
||||
2022-11-09 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/bsd.rst:
|
||||
Add trailing newline.
|
||||
* doc/copyright.rst:
|
||||
Add trailing newline.
|
||||
* doc/extensions.rst:
|
||||
Add trailing newline.
|
||||
* doc/function-variable-and-macro-listing.rst:
|
||||
Add trailing newline.
|
||||
* doc/index.rst:
|
||||
Add trailing newline.
|
||||
* doc/indices-and-tables.rst:
|
||||
Add trailing newline.
|
||||
* doc/introduction.rst:
|
||||
Add trailing newline.
|
||||
* doc/lesser-general-public-license-2.1.rst:
|
||||
Add trailing newline.
|
||||
* doc/overview.rst:
|
||||
Add trailing newline.
|
||||
* doc/replacement-functions.rst:
|
||||
Add trailing newline.
|
||||
* doc/supplemental-functions.rst:
|
||||
Add trailing newline.
|
||||
* doc/using.rst:
|
||||
Add trailing newline.
|
||||
|
||||
2022-11-09 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* Makefile.in: Support --with-sphinx-build.
|
||||
* configure.ac: Likewise.
|
||||
* configure: Regenerate.
|
||||
|
||||
2022-11-09 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* at-file.texi: Removed.
|
||||
* copying-lib.texi: Removed.
|
||||
* functions.texi: Removed.
|
||||
* libiberty.texi: Removed.
|
||||
* obstacks.texi: Removed.
|
||||
|
||||
2022-11-09 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* Makefile.in: Support Sphinx based documentation.
|
||||
|
||||
2022-11-09 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/bsd.rst: New file.
|
||||
* doc/conf.py: New file.
|
||||
* doc/copyright.rst: New file.
|
||||
* doc/extensions.rst: New file.
|
||||
* doc/function-variable-and-macro-listing.rst: New file.
|
||||
* doc/index.rst: New file.
|
||||
* doc/indices-and-tables.rst: New file.
|
||||
* doc/introduction.rst: New file.
|
||||
* doc/lesser-general-public-license-2.1.rst: New file.
|
||||
* doc/overview.rst: New file.
|
||||
* doc/replacement-functions.rst: New file.
|
||||
* doc/supplemental-functions.rst: New file.
|
||||
* doc/using.rst: New file.
|
||||
|
||||
2022-10-18 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
* acinclude.m4 (ac_cv_func_strncmp_works): Add missing
|
||||
int return type and parameter list to the definition of main.
|
||||
Include <stdlib.h> and <string.h> for prototypes.
|
||||
(ac_cv_c_stack_direction): Add missing
|
||||
int return type and parameter list to the definitions of
|
||||
main, find_stack_direction. Include <stdlib.h> for exit
|
||||
prototype.
|
||||
* configure: Regenerate.
|
||||
|
||||
2022-10-14 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Increment.
|
||||
* cp-demangle.c (cplus_demangle_builtin_types): Add std::bfloat16_t
|
||||
entry.
|
||||
(cplus_demangle_type): Demangle DF16b.
|
||||
* testsuite/demangle-expected (_Z3xxxDF16b): New test.
|
||||
|
||||
2022-10-11 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* cp-demangle.c (d_prefix): 'M' components are not
|
||||
(re-)added to the substitution table.
|
||||
* testsuite/demangle-expected: Add tests.
|
||||
|
||||
2022-10-07 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* cp-demangle.c (d_print_comp_inner): Allow parameter packs
|
||||
in a lambda signature.
|
||||
* testsuite/demangle-expected: Add tests.
|
||||
|
||||
2022-09-27 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/106652
|
||||
PR c++/85518
|
||||
* cp-demangle.c (d_dump): Handle
|
||||
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Don't handle
|
||||
DEMANGLE_COMPONENT_FIXED_TYPE.
|
||||
(d_make_extended_builtin_type): New function.
|
||||
(cplus_demangle_builtin_types): Add _Float entry.
|
||||
(cplus_demangle_type): For DF demangle it as _Float<N> or
|
||||
_Float<N>x rather than fixed point which conflicts with it.
|
||||
(d_count_templates_scopes): Handle
|
||||
DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE. Just break; for
|
||||
DEMANGLE_COMPONENT_FIXED_TYPE.
|
||||
(d_find_pack): Handle DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE.
|
||||
Don't handle DEMANGLE_COMPONENT_FIXED_TYPE.
|
||||
(d_print_comp_inner): Likewise.
|
||||
* cp-demangle.h (D_BUILTIN_TYPE_COUNT): Bump.
|
||||
* testsuite/demangle-expected: Replace _Z3xxxDFyuVb test
|
||||
with _Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb. Add
|
||||
_Z3xxxDF32xDF64xDF128xCDF32xVb test.
|
||||
|
||||
2022-09-22 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* README: Replace gcc-bugs email address with Bugzilla URL.
|
||||
|
||||
2022-08-25 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* configure: Regenerate.
|
||||
|
||||
2022-07-22 Martin Liska <mliska@suse.cz>
|
||||
|
||||
PR other/106370
|
||||
* _doprnt.c: Remove continue as last stmt
|
||||
in a loop.
|
||||
|
||||
2022-07-14 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* functions.texi: Replace strtoul with strtoull.
|
||||
|
||||
2022-07-04 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* rust-demangle.c (demangle_const): Add a missing goto pass_return
|
||||
at the end of the function.
|
||||
|
||||
2022-07-04 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* rust-demangle.c (demangle_path_maybe_open_generics): Add
|
||||
recursion limit.
|
||||
|
||||
2022-07-01 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
@ -1488,7 +1753,7 @@
|
||||
2016-06-12 Brooks Moses <bmoses@google.com>
|
||||
|
||||
* cp-demangle.c (cplus_demangle_print_callback): Avoid zero-length
|
||||
VLAs.
|
||||
VLAs.
|
||||
|
||||
2016-05-31 Alan Modra <amodra@gmail.com>
|
||||
|
||||
@ -3065,8 +3330,8 @@
|
||||
|
||||
2009-08-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/10536
|
||||
* Makefile.in (install-html-recursive): Removed.
|
||||
PR ld/10536
|
||||
* Makefile.in (install-html-recursive): Removed.
|
||||
|
||||
2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
@ -7500,7 +7765,7 @@ Sun Nov 28 00:59:39 1999 Philippe De Muyter <phdm@macqel.be>
|
||||
* strtoul.c, strtol.c, random.c: Remove advertising clause from
|
||||
BSD license, pursuant with
|
||||
|
||||
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
|
||||
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
|
||||
|
||||
Wed Nov 10 09:42:39 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
@ -9884,12 +10149,12 @@ Sun Feb 27 21:50:11 1994 Jim Kingdon (kingdon@deneb.cygnus.com)
|
||||
Thu Feb 24 11:51:12 1994 David J. Mackenzie (djm@rtl.cygnus.com)
|
||||
|
||||
* getopt.c: Remove #ifdef GETOPT_COMPAT and #if 0 code.
|
||||
(_getopt_initialize): New function, broken out of _getopt_internal.
|
||||
(_getopt_internal):
|
||||
If long_only and the ARGV-element has the form "-f", where f is
|
||||
a valid short option, don't consider it an abbreviated form of
|
||||
a long option that starts with f. Otherwise there would be no
|
||||
way to give the -f short option.
|
||||
(_getopt_initialize): New function, broken out of _getopt_internal.
|
||||
(_getopt_internal):
|
||||
If long_only and the ARGV-element has the form "-f", where f is
|
||||
a valid short option, don't consider it an abbreviated form of
|
||||
a long option that starts with f. Otherwise there would be no
|
||||
way to give the -f short option.
|
||||
|
||||
Thu Feb 10 14:44:16 1994 Richard Stallman (rms@mole.gnu.ai.mit.edu)
|
||||
|
||||
@ -10109,8 +10374,8 @@ Fri Oct 22 07:53:15 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
Tue Oct 19 17:12:01 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
|
||||
|
||||
* Makefile.in (lneeded-list): ensure that object file names are
|
||||
not duplicated, as multiple instances of the same object file in
|
||||
a library causes problems on some machines
|
||||
not duplicated, as multiple instances of the same object file in
|
||||
a library causes problems on some machines
|
||||
|
||||
Mon Oct 18 21:59:28 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
@ -10523,10 +10788,10 @@ Wed Sep 9 12:41:48 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
Thu Sep 3 13:29:39 1992 K. Richard Pixley (rich@sendai.cygnus.com)
|
||||
|
||||
* cplus-dem.c: (demangle_prefix): reduction in strength of strstr
|
||||
as a time optimization.
|
||||
as a time optimization.
|
||||
|
||||
* cplus-dem.c (cplus_demangle): remove strpbrk test. Appears to
|
||||
be more expensive than simply demangling.
|
||||
be more expensive than simply demangling.
|
||||
|
||||
* cplus-dem.c (cplus_match): new function.
|
||||
|
||||
@ -10622,7 +10887,7 @@ Wed Jun 17 18:13:58 1992 Per Bothner (bothner@rtl.cygnus.com)
|
||||
Tue Jun 16 16:11:59 1992 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* getopt.c, getopt1.c: merged largely gratuitous, mostly
|
||||
whitespace diffs from other prep distributions.
|
||||
whitespace diffs from other prep distributions.
|
||||
|
||||
Mon Jun 15 12:25:46 1992 Fred Fish (fnf@cygnus.com)
|
||||
|
||||
@ -10712,7 +10977,7 @@ Mon Apr 20 20:49:32 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
* Makefile.in: do not print recursion line.
|
||||
|
||||
* Makefile.in: allow CFLAGS to be passed in from command line.
|
||||
Removed MINUS_G. Default CFLAGS to -g.
|
||||
Removed MINUS_G. Default CFLAGS to -g.
|
||||
|
||||
Mon Apr 20 12:57:46 1992 Per Bothner (bothner@rtl.cygnus.com)
|
||||
|
||||
@ -10783,8 +11048,8 @@ Thu Feb 27 22:19:39 1992 Per Bothner (bothner@cygnus.com)
|
||||
Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* Makefile.in, configure.in: removed traces of namesubdir,
|
||||
-subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
|
||||
copyrights to '92, changed some from Cygnus to FSF.
|
||||
-subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
|
||||
copyrights to '92, changed some from Cygnus to FSF.
|
||||
|
||||
Sat Feb 22 01:09:21 1992 Stu Grossman (grossman at cygnus.com)
|
||||
|
||||
@ -10869,17 +11134,17 @@ Tue Dec 10 04:14:49 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
Fri Dec 6 23:26:45 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: remove spaces following hyphens because bsd make
|
||||
can't cope. added standards.text support. install using
|
||||
INSTALL_DATA.
|
||||
can't cope. added standards.text support. install using
|
||||
INSTALL_DATA.
|
||||
|
||||
* configure.in: remove commontargets as it is no longer a
|
||||
recognized hook.
|
||||
recognized hook.
|
||||
|
||||
Thu Dec 5 22:46:46 1991 K. Richard Pixley (rich at rtl.cygnus.com)
|
||||
|
||||
* Makefile.in: idestdir and ddestdir go away. Added copyrights
|
||||
and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
|
||||
and mandir now keyed off datadir by default.
|
||||
and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
|
||||
and mandir now keyed off datadir by default.
|
||||
|
||||
Fri Nov 22 19:15:29 1991 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
|
@ -15,7 +15,7 @@ The library must be configured from the top source directory. Don't
|
||||
try to run configure in this directory. Follow the configuration
|
||||
instructions in ../README.
|
||||
|
||||
Please report bugs to "gcc-bugs@gcc.gnu.org" and send fixes to
|
||||
Please report bugs to https://gcc.gnu.org/bugzilla/ and send fixes to
|
||||
"gcc-patches@gcc.gnu.org". Thank you.
|
||||
|
||||
ADDING A NEW FILE
|
||||
|
@ -55,7 +55,6 @@ Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||
putc(CHAR, stream); \
|
||||
ptr++; \
|
||||
total_printed++; \
|
||||
continue; \
|
||||
} while (0)
|
||||
|
||||
#define PRINT_TYPE(TYPE) \
|
||||
|
7
libiberty/configure
vendored
7
libiberty/configure
vendored
@ -5349,6 +5349,9 @@ case "${host}" in
|
||||
# sets the default TLS model and affects inlining.
|
||||
PICFLAG=-fPIC
|
||||
;;
|
||||
loongarch*-*-*)
|
||||
PICFLAG=-fpic
|
||||
;;
|
||||
mips-sgi-irix6*)
|
||||
# PIC is the default.
|
||||
;;
|
||||
@ -5365,7 +5368,9 @@ case "${host}" in
|
||||
sh-*-linux* | sh[2346lbe]*-*-linux*)
|
||||
PICFLAG=-fpic
|
||||
;;
|
||||
sh*-*-netbsd*)
|
||||
# FIXME: Simplify to sh*-*-netbsd*?
|
||||
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
|
||||
sh64-*-netbsd* | sh64l*-*-netbsd*)
|
||||
PICFLAG=-fpic
|
||||
;;
|
||||
# Default to -fPIC unless specified otherwise.
|
||||
|
@ -347,9 +347,9 @@ struct d_print_info
|
||||
/* Number of times d_print_comp was recursively called. Should not
|
||||
be bigger than MAX_RECURSION_COUNT. */
|
||||
int recursion;
|
||||
/* Non-zero if we're printing a lambda argument. A template
|
||||
parameter reference actually means 'auto'. */
|
||||
int is_lambda_arg;
|
||||
/* 1 more than the number of explicit template parms of a lambda. Template
|
||||
parm references >= are actually 'auto'. */
|
||||
int lambda_tpl_parms;
|
||||
/* The current index into any template argument packs we are using
|
||||
for printing, or -1 to print the whole pack. */
|
||||
int pack_index;
|
||||
@ -491,6 +491,10 @@ static struct demangle_component *d_local_name (struct d_info *);
|
||||
|
||||
static int d_discriminator (struct d_info *);
|
||||
|
||||
static struct demangle_component *d_template_parm (struct d_info *, int *bad);
|
||||
|
||||
static struct demangle_component *d_template_head (struct d_info *, int *bad);
|
||||
|
||||
static struct demangle_component *d_lambda (struct d_info *);
|
||||
|
||||
static struct demangle_component *d_unnamed_type (struct d_info *);
|
||||
@ -648,6 +652,13 @@ d_dump (struct demangle_component *dc, int indent)
|
||||
case DEMANGLE_COMPONENT_BUILTIN_TYPE:
|
||||
printf ("builtin type %s\n", dc->u.s_builtin.type->name);
|
||||
return;
|
||||
case DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE:
|
||||
{
|
||||
char suffix[2] = { dc->u.s_extended_builtin.type->suffix, 0 };
|
||||
printf ("builtin type %s%d%s\n", dc->u.s_extended_builtin.type->name,
|
||||
dc->u.s_extended_builtin.type->arg, suffix);
|
||||
}
|
||||
return;
|
||||
case DEMANGLE_COMPONENT_OPERATOR:
|
||||
printf ("operator %s\n", dc->u.s_operator.op->name);
|
||||
return;
|
||||
@ -771,11 +782,6 @@ 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, accum? %d, sat? %d\n",
|
||||
dc->u.s_fixed.accum, dc->u.s_fixed.sat);
|
||||
d_dump (dc->u.s_fixed.length, indent + 2);
|
||||
break;
|
||||
case DEMANGLE_COMPONENT_ARGLIST:
|
||||
printf ("argument list\n");
|
||||
break;
|
||||
@ -1026,6 +1032,10 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
|
||||
case DEMANGLE_COMPONENT_TPARM_OBJ:
|
||||
case DEMANGLE_COMPONENT_STRUCTURED_BINDING:
|
||||
case DEMANGLE_COMPONENT_MODULE_INIT:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_HEAD:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM:
|
||||
if (left == NULL)
|
||||
return NULL;
|
||||
break;
|
||||
@ -1048,6 +1058,7 @@ d_make_comp (struct d_info *di, enum demangle_component_type type,
|
||||
case DEMANGLE_COMPONENT_CONST:
|
||||
case DEMANGLE_COMPONENT_ARGLIST:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM:
|
||||
FNQUAL_COMPONENT_CASE:
|
||||
break;
|
||||
|
||||
@ -1109,6 +1120,28 @@ d_make_builtin_type (struct d_info *di,
|
||||
return p;
|
||||
}
|
||||
|
||||
/* Add a new extended builtin type component. */
|
||||
|
||||
static struct demangle_component *
|
||||
d_make_extended_builtin_type (struct d_info *di,
|
||||
const struct demangle_builtin_type_info *type,
|
||||
short arg, char suffix)
|
||||
{
|
||||
struct demangle_component *p;
|
||||
|
||||
if (type == NULL)
|
||||
return NULL;
|
||||
p = d_make_empty (di);
|
||||
if (p != NULL)
|
||||
{
|
||||
p->type = DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE;
|
||||
p->u.s_extended_builtin.type = type;
|
||||
p->u.s_extended_builtin.arg = arg;
|
||||
p->u.s_extended_builtin.suffix = suffix;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
/* Add a new operator component. */
|
||||
|
||||
static struct demangle_component *
|
||||
@ -1585,12 +1618,10 @@ d_prefix (struct d_info *di, int substable)
|
||||
}
|
||||
else if (peek == 'M')
|
||||
{
|
||||
/* Initializer scope for a lambda. We don't need to represent
|
||||
this; the normal code will just treat the variable as a type
|
||||
scope, which gives appropriate output. */
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
/* Initializer scope for a lambda. We already added it as a
|
||||
substitution candidate, don't do that again. */
|
||||
d_advance (di, 1);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2464,6 +2495,8 @@ cplus_demangle_builtin_types[D_BUILTIN_TYPE_COUNT] =
|
||||
/* 32 */ { NL ("char32_t"), NL ("char32_t"), D_PRINT_DEFAULT },
|
||||
/* 33 */ { NL ("decltype(nullptr)"), NL ("decltype(nullptr)"),
|
||||
D_PRINT_DEFAULT },
|
||||
/* 34 */ { NL ("_Float"), NL ("_Float"), D_PRINT_FLOAT },
|
||||
/* 35 */ { NL ("std::bfloat16_t"), NL ("std::bfloat16_t"), D_PRINT_FLOAT },
|
||||
};
|
||||
|
||||
CP_STATIC_IF_GLIBCPP_V3
|
||||
@ -2727,19 +2760,37 @@ cplus_demangle_type (struct d_info *di)
|
||||
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);
|
||||
if (ret->u.s_fixed.length == NULL)
|
||||
return NULL;
|
||||
d_number (di);
|
||||
peek = d_next_char (di);
|
||||
ret->u.s_fixed.sat = (peek == 's');
|
||||
break;
|
||||
/* DF<number>_ - _Float<number>.
|
||||
DF<number>x - _Float<number>x
|
||||
DF16b - std::bfloat16_t. */
|
||||
{
|
||||
int arg = d_number (di);
|
||||
char buf[12];
|
||||
char suffix = 0;
|
||||
if (d_peek_char (di) == 'b')
|
||||
{
|
||||
if (arg != 16)
|
||||
return NULL;
|
||||
d_advance (di, 1);
|
||||
ret = d_make_builtin_type (di,
|
||||
&cplus_demangle_builtin_types[35]);
|
||||
di->expansion += ret->u.s_builtin.type->len;
|
||||
break;
|
||||
}
|
||||
if (d_peek_char (di) == 'x')
|
||||
suffix = 'x';
|
||||
if (!suffix && d_peek_char (di) != '_')
|
||||
return NULL;
|
||||
ret
|
||||
= d_make_extended_builtin_type (di,
|
||||
&cplus_demangle_builtin_types[34],
|
||||
arg, suffix);
|
||||
d_advance (di, 1);
|
||||
sprintf (buf, "%d", arg);
|
||||
di->expansion += ret->u.s_extended_builtin.type->len
|
||||
+ strlen (buf) + (suffix != 0);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'v':
|
||||
ret = d_vector_type (di);
|
||||
@ -3835,32 +3886,120 @@ d_discriminator (struct d_info *di)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* <closure-type-name> ::= Ul <lambda-sig> E [ <nonnegative number> ] _ */
|
||||
/* <template-parm> ::= Ty
|
||||
::= Tn <type>
|
||||
::= Tt <template-head> E
|
||||
::= Tp <template-parm> */
|
||||
|
||||
static struct demangle_component *
|
||||
d_template_parm (struct d_info *di, int *bad)
|
||||
{
|
||||
if (d_peek_char (di) != 'T')
|
||||
return NULL;
|
||||
|
||||
struct demangle_component *op;
|
||||
enum demangle_component_type kind;
|
||||
switch (d_peek_next_char (di))
|
||||
{
|
||||
default:
|
||||
return NULL;
|
||||
|
||||
case 'p': /* Pack */
|
||||
d_advance (di, 2);
|
||||
op = d_template_parm (di, bad);
|
||||
kind = DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM;
|
||||
if (!op)
|
||||
{
|
||||
*bad = 1;
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'y': /* Typename */
|
||||
d_advance (di, 2);
|
||||
op = NULL;
|
||||
kind = DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM;
|
||||
break;
|
||||
|
||||
case 'n': /* Non-Type */
|
||||
d_advance (di, 2);
|
||||
op = cplus_demangle_type (di);
|
||||
kind = DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM;
|
||||
if (!op)
|
||||
{
|
||||
*bad = 1;
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case 't': /* Template */
|
||||
d_advance (di, 2);
|
||||
op = d_template_head (di, bad);
|
||||
kind = DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM;
|
||||
if (!op || !d_check_char (di, 'E'))
|
||||
{
|
||||
*bad = 1;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return d_make_comp (di, kind, op, NULL);
|
||||
}
|
||||
|
||||
/* <template-head> ::= <template-head>? <template-parm> */
|
||||
|
||||
static struct demangle_component *
|
||||
d_template_head (struct d_info *di, int *bad)
|
||||
{
|
||||
struct demangle_component *res = NULL, **slot = &res;
|
||||
struct demangle_component *op;
|
||||
|
||||
while ((op = d_template_parm (di, bad)))
|
||||
{
|
||||
*slot = op;
|
||||
slot = &d_right (op);
|
||||
}
|
||||
|
||||
/* Wrap it in a template head, to make concatenating with any parm list, and
|
||||
printing simpler. */
|
||||
if (res)
|
||||
res = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE_HEAD, res, NULL);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/* <closure-type-name> ::= Ul <template-head>? <lambda-sig> E [ <nonnegative number> ] _ */
|
||||
|
||||
static struct demangle_component *
|
||||
d_lambda (struct d_info *di)
|
||||
{
|
||||
struct demangle_component *tl;
|
||||
struct demangle_component *ret;
|
||||
int num;
|
||||
|
||||
if (! d_check_char (di, 'U'))
|
||||
return NULL;
|
||||
if (! d_check_char (di, 'l'))
|
||||
return NULL;
|
||||
|
||||
tl = d_parmlist (di);
|
||||
int bad = 0;
|
||||
struct demangle_component *head = d_template_head (di, &bad);
|
||||
if (bad)
|
||||
return NULL;
|
||||
|
||||
struct demangle_component *tl = d_parmlist (di);
|
||||
if (tl == NULL)
|
||||
return NULL;
|
||||
if (head)
|
||||
{
|
||||
d_right (head) = tl;
|
||||
tl = head;
|
||||
}
|
||||
|
||||
if (! d_check_char (di, 'E'))
|
||||
return NULL;
|
||||
|
||||
num = d_compact_number (di);
|
||||
int num = d_compact_number (di);
|
||||
if (num < 0)
|
||||
return NULL;
|
||||
|
||||
ret = d_make_empty (di);
|
||||
struct demangle_component *ret = d_make_empty (di);
|
||||
if (ret)
|
||||
{
|
||||
ret->type = DEMANGLE_COMPONENT_LAMBDA;
|
||||
@ -4202,6 +4341,7 @@ d_count_templates_scopes (struct d_print_info *dpi,
|
||||
case DEMANGLE_COMPONENT_FUNCTION_PARAM:
|
||||
case DEMANGLE_COMPONENT_SUB_STD:
|
||||
case DEMANGLE_COMPONENT_BUILTIN_TYPE:
|
||||
case DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE:
|
||||
case DEMANGLE_COMPONENT_OPERATOR:
|
||||
case DEMANGLE_COMPONENT_CHARACTER:
|
||||
case DEMANGLE_COMPONENT_NUMBER:
|
||||
@ -4210,6 +4350,12 @@ d_count_templates_scopes (struct d_print_info *dpi,
|
||||
case DEMANGLE_COMPONENT_MODULE_NAME:
|
||||
case DEMANGLE_COMPONENT_MODULE_PARTITION:
|
||||
case DEMANGLE_COMPONENT_MODULE_INIT:
|
||||
case DEMANGLE_COMPONENT_FIXED_TYPE:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_HEAD:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM:
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM:
|
||||
break;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE:
|
||||
@ -4309,10 +4455,6 @@ d_count_templates_scopes (struct d_print_info *dpi,
|
||||
d_count_templates_scopes (dpi, dc->u.s_extended_operator.name);
|
||||
break;
|
||||
|
||||
case DEMANGLE_COMPONENT_FIXED_TYPE:
|
||||
d_count_templates_scopes (dpi, dc->u.s_fixed.length);
|
||||
break;
|
||||
|
||||
case DEMANGLE_COMPONENT_GLOBAL_CONSTRUCTORS:
|
||||
case DEMANGLE_COMPONENT_GLOBAL_DESTRUCTORS:
|
||||
case DEMANGLE_COMPONENT_MODULE_ENTITY:
|
||||
@ -4344,7 +4486,7 @@ d_print_init (struct d_print_info *dpi, demangle_callbackref callback,
|
||||
|
||||
dpi->demangle_failure = 0;
|
||||
dpi->recursion = 0;
|
||||
dpi->is_lambda_arg = 0;
|
||||
dpi->lambda_tpl_parms = 0;
|
||||
|
||||
dpi->component_stack = NULL;
|
||||
|
||||
@ -4580,11 +4722,11 @@ d_find_pack (struct d_print_info *dpi,
|
||||
case DEMANGLE_COMPONENT_TAGGED_NAME:
|
||||
case DEMANGLE_COMPONENT_OPERATOR:
|
||||
case DEMANGLE_COMPONENT_BUILTIN_TYPE:
|
||||
case DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE:
|
||||
case DEMANGLE_COMPONENT_SUB_STD:
|
||||
case DEMANGLE_COMPONENT_CHARACTER:
|
||||
case DEMANGLE_COMPONENT_FUNCTION_PARAM:
|
||||
case DEMANGLE_COMPONENT_UNNAMED_TYPE:
|
||||
case DEMANGLE_COMPONENT_FIXED_TYPE:
|
||||
case DEMANGLE_COMPONENT_DEFAULT_ARG:
|
||||
case DEMANGLE_COMPONENT_NUMBER:
|
||||
return NULL;
|
||||
@ -4841,6 +4983,33 @@ d_maybe_print_designated_init (struct d_print_info *dpi, int options,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
d_print_lambda_parm_name (struct d_print_info *dpi, int type, unsigned index)
|
||||
{
|
||||
const char *str;
|
||||
switch (type)
|
||||
{
|
||||
default:
|
||||
dpi->demangle_failure = 1;
|
||||
str = "";
|
||||
break;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM:
|
||||
str = "$T";
|
||||
break;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM:
|
||||
str = "$N";
|
||||
break;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM:
|
||||
str = "$TT";
|
||||
break;
|
||||
}
|
||||
d_append_string (dpi, str);
|
||||
d_append_num (dpi, index);
|
||||
}
|
||||
|
||||
/* Subroutine to handle components. */
|
||||
|
||||
static void
|
||||
@ -5095,7 +5264,21 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
}
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
|
||||
if (dpi->is_lambda_arg)
|
||||
if (dpi->lambda_tpl_parms > dc->u.s_number.number + 1)
|
||||
{
|
||||
const struct demangle_component *a
|
||||
= d_left (dpi->templates->template_decl);
|
||||
unsigned c;
|
||||
for (c = dc->u.s_number.number; a && c; c--)
|
||||
a = d_right (a);
|
||||
if (a && a->type == DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM)
|
||||
a = d_left (a);
|
||||
if (!a)
|
||||
dpi->demangle_failure = 1;
|
||||
else
|
||||
d_print_lambda_parm_name (dpi, a->type, dc->u.s_number.number);
|
||||
}
|
||||
else if (dpi->lambda_tpl_parms)
|
||||
{
|
||||
/* Show the template parm index, as that's how g++ displays
|
||||
these, and future proofs us against potential
|
||||
@ -5276,7 +5459,7 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
{
|
||||
/* Handle reference smashing: & + && = &. */
|
||||
struct demangle_component *sub = d_left (dc);
|
||||
if (!dpi->is_lambda_arg
|
||||
if (!dpi->lambda_tpl_parms
|
||||
&& sub->type == DEMANGLE_COMPONENT_TEMPLATE_PARAM)
|
||||
{
|
||||
struct d_saved_scope *scope = d_get_saved_scope (dpi, sub);
|
||||
@ -5387,6 +5570,14 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
dc->u.s_builtin.type->java_len);
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_EXTENDED_BUILTIN_TYPE:
|
||||
d_append_buffer (dpi, dc->u.s_extended_builtin.type->name,
|
||||
dc->u.s_extended_builtin.type->len);
|
||||
d_append_num (dpi, dc->u.s_extended_builtin.arg);
|
||||
if (dc->u.s_extended_builtin.suffix)
|
||||
d_append_buffer (dpi, &dc->u.s_extended_builtin.suffix, 1);
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_VENDOR_TYPE:
|
||||
d_print_comp (dpi, options, d_left (dc));
|
||||
return;
|
||||
@ -5525,22 +5716,6 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
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, options, 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)
|
||||
@ -5908,9 +6083,10 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
|
||||
case DEMANGLE_COMPONENT_PACK_EXPANSION:
|
||||
{
|
||||
int len;
|
||||
int i;
|
||||
struct demangle_component *a = d_find_pack (dpi, d_left (dc));
|
||||
struct demangle_component *a = NULL;
|
||||
|
||||
if (!dpi->lambda_tpl_parms)
|
||||
a = d_find_pack (dpi, d_left (dc));
|
||||
if (a == NULL)
|
||||
{
|
||||
/* d_find_pack won't find anything if the only packs involved
|
||||
@ -5918,17 +6094,20 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
case, just print the pattern and "...". */
|
||||
d_print_subexpr (dpi, options, d_left (dc));
|
||||
d_append_string (dpi, "...");
|
||||
return;
|
||||
}
|
||||
|
||||
len = d_pack_length (a);
|
||||
dc = d_left (dc);
|
||||
for (i = 0; i < len; ++i)
|
||||
else
|
||||
{
|
||||
dpi->pack_index = i;
|
||||
d_print_comp (dpi, options, dc);
|
||||
if (i < len-1)
|
||||
d_append_string (dpi, ", ");
|
||||
int len = d_pack_length (a);
|
||||
int i;
|
||||
|
||||
dc = d_left (dc);
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
if (i)
|
||||
d_append_string (dpi, ", ");
|
||||
dpi->pack_index = i;
|
||||
d_print_comp (dpi, options, dc);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
@ -5958,15 +6137,50 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_LAMBDA:
|
||||
d_append_string (dpi, "{lambda(");
|
||||
/* Generic lambda auto parms are mangled as the template type
|
||||
parm they are. */
|
||||
dpi->is_lambda_arg++;
|
||||
d_print_comp (dpi, options, dc->u.s_unary_num.sub);
|
||||
dpi->is_lambda_arg--;
|
||||
d_append_string (dpi, ")#");
|
||||
d_append_num (dpi, dc->u.s_unary_num.num + 1);
|
||||
d_append_char (dpi, '}');
|
||||
{
|
||||
d_append_string (dpi, "{lambda");
|
||||
struct demangle_component *parms = dc->u.s_unary_num.sub;
|
||||
struct d_print_template dpt;
|
||||
/* Generic lambda auto parms are mangled as the (synthedic) template
|
||||
type parm they are. We need to tell the printer that (a) we're in
|
||||
a lambda, and (b) the number of synthetic parms. */
|
||||
int saved_tpl_parms = dpi->lambda_tpl_parms;
|
||||
dpi->lambda_tpl_parms = 0;
|
||||
/* Hang any lambda head as-if template args. */
|
||||
dpt.template_decl = NULL;
|
||||
dpt.next = dpi->templates;
|
||||
dpi->templates = &dpt;
|
||||
if (parms && parms->type == DEMANGLE_COMPONENT_TEMPLATE_HEAD)
|
||||
{
|
||||
dpt.template_decl = parms;
|
||||
|
||||
d_append_char (dpi, '<');
|
||||
struct demangle_component *parm;
|
||||
for (parm = d_left (parms); parm; parm = d_right (parm))
|
||||
{
|
||||
if (dpi->lambda_tpl_parms++)
|
||||
d_append_string (dpi, ", ");
|
||||
d_print_comp (dpi, options, parm);
|
||||
d_append_char (dpi, ' ');
|
||||
if (parm->type == DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM)
|
||||
parm = d_left (parm);
|
||||
d_print_lambda_parm_name (dpi, parm->type,
|
||||
dpi->lambda_tpl_parms - 1);
|
||||
}
|
||||
d_append_char (dpi, '>');
|
||||
|
||||
parms = d_right (parms);
|
||||
}
|
||||
dpi->lambda_tpl_parms++;
|
||||
|
||||
d_append_char (dpi, '(');
|
||||
d_print_comp (dpi, options, parms);
|
||||
dpi->lambda_tpl_parms = saved_tpl_parms;
|
||||
dpi->templates = dpt.next;
|
||||
d_append_string (dpi, ")#");
|
||||
d_append_num (dpi, dc->u.s_unary_num.num + 1);
|
||||
d_append_char (dpi, '}');
|
||||
}
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_UNNAMED_TYPE:
|
||||
@ -5982,6 +6196,40 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
|
||||
d_append_char (dpi, ']');
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_HEAD:
|
||||
{
|
||||
d_append_char (dpi, '<');
|
||||
int count = 0;
|
||||
struct demangle_component *parm;
|
||||
for (parm = d_left (dc); parm; parm = d_right (parm))
|
||||
{
|
||||
if (count++)
|
||||
d_append_string (dpi, ", ");
|
||||
d_print_comp (dpi, options, parm);
|
||||
}
|
||||
d_append_char (dpi, '>');
|
||||
}
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TYPE_PARM:
|
||||
d_append_string (dpi, "typename");
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_NON_TYPE_PARM:
|
||||
d_print_comp (dpi, options, d_left (dc));
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_TEMPLATE_PARM:
|
||||
d_append_string (dpi, "template");
|
||||
d_print_comp (dpi, options, d_left (dc));
|
||||
d_append_string (dpi, " class");
|
||||
return;
|
||||
|
||||
case DEMANGLE_COMPONENT_TEMPLATE_PACK_PARM:
|
||||
d_print_comp (dpi, options, d_left (dc));
|
||||
d_append_string (dpi, "...");
|
||||
return;
|
||||
|
||||
default:
|
||||
d_print_error (dpi);
|
||||
return;
|
||||
|
@ -180,7 +180,7 @@ d_advance (struct d_info *di, int i)
|
||||
extern const struct demangle_operator_info cplus_demangle_operators[];
|
||||
#endif
|
||||
|
||||
#define D_BUILTIN_TYPE_COUNT (34)
|
||||
#define D_BUILTIN_TYPE_COUNT (36)
|
||||
|
||||
CP_STATIC_IF_GLIBCPP_V3
|
||||
const struct demangle_builtin_type_info
|
||||
|
@ -1747,7 +1747,7 @@ that the converted value is unsigned.
|
||||
@c strtoll.c:33
|
||||
@deftypefn Supplemental {long long int} strtoll (const char *@var{string}, @
|
||||
char **@var{endptr}, int @var{base})
|
||||
@deftypefnx Supplemental {unsigned long long int} strtoul (@
|
||||
@deftypefnx Supplemental {unsigned long long int} strtoull (@
|
||||
const char *@var{string}, char **@var{endptr}, int @var{base})
|
||||
|
||||
The @code{strtoll} function converts the string in @var{string} to a
|
||||
|
@ -1242,8 +1242,16 @@ _ZNSt9_Any_data9_M_accessIPZ4postISt8functionIFvvEEEvOT_EUlvE_EERS5_v
|
||||
post<std::function<void ()> >(std::function<void ()>&&)::{lambda()#1}*& std::_Any_data::_M_access<post<std::function<void ()> >(post<std::function<void ()> >(std::function<void ()>&&)::{lambda()#1}*&&)::{lambda()#1}*>()
|
||||
#
|
||||
--format=auto --no-params
|
||||
_Z3xxxDFyuVb
|
||||
xxx(unsigned long long _Fract, bool volatile)
|
||||
_Z3xxxDF16_DF32_DF64_DF128_CDF16_Vb
|
||||
xxx(_Float16, _Float32, _Float64, _Float128, _Float16 _Complex, bool volatile)
|
||||
xxx
|
||||
--format=auto --no-params
|
||||
_Z3xxxDF32xDF64xDF128xCDF32xVb
|
||||
xxx(_Float32x, _Float64x, _Float128x, _Float32x _Complex, bool volatile)
|
||||
xxx
|
||||
--format=auto --no-params
|
||||
_Z3xxxDF16b
|
||||
xxx(std::bfloat16_t)
|
||||
xxx
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=16817
|
||||
--format=auto --no-params
|
||||
@ -1570,3 +1578,84 @@ initializer for module Foo.Bar
|
||||
|
||||
_ZGIW3FooWP3BarW3Baz
|
||||
initializer for module Foo:Bar.Baz
|
||||
|
||||
_ZZ2L1vENKUlDpT_E_clIJiPiEEEvS0_
|
||||
void L1()::{lambda((auto:1)...)#1}::operator()<int, int*>(int, int*) const
|
||||
|
||||
_ZZ2L1vENKUlDpT_E_clIJiPiEEEDaS0_
|
||||
auto L1()::{lambda((auto:1)...)#1}::operator()<int, int*>(int, int*) const
|
||||
|
||||
_Z7captureIN4gvarMUlvE_EE7WrapperIT_EOS3_
|
||||
Wrapper<gvar::{lambda()#1}> capture<gvar::{lambda()#1}>(gvar::{lambda()#1}&&)
|
||||
|
||||
_ZNK2L2MUlT_T0_E_clIifEEvS_S0_
|
||||
void L2::{lambda(auto:1, auto:2)#1}::operator()<int, float>(L2, int) const
|
||||
|
||||
_ZNK1C1fMUlT_E_clIMS_iEEDaS1_
|
||||
auto C::f::{lambda(auto:1)#1}::operator()<int C::*>(int C::*) const
|
||||
|
||||
_ZNK2L2MUlT_T0_E_clIifEEvS0_S1_
|
||||
void L2::{lambda(auto:1, auto:2)#1}::operator()<int, float>(int, float) const
|
||||
|
||||
_ZNK1B2L3MUlT_T0_E_clIjdEEvS1_S2_
|
||||
void B::L3::{lambda(auto:1, auto:2)#1}::operator()<unsigned int, double>(unsigned int, double) const
|
||||
|
||||
_Z3fooIN1qMUlvE_ENS0_UlvE0_EEiOT_OT0_
|
||||
int foo<q::{lambda()#1}, q::{lambda()#2}>(q::{lambda()#1}&&, q::{lambda()#2}&&)
|
||||
|
||||
_ZNK2L1MUlDpT_E_clIJiPiEEEvS1_
|
||||
void L1::{lambda((auto:1)...)#1}::operator()<int, int*>(int, int*) const
|
||||
|
||||
_ZZN1XIfLj0EE2FnEvENKUlTyfT_E_clIiEEDafS1_
|
||||
auto X<float, 0u>::Fn()::{lambda<typename $T0>(float, $T0)#1}::operator()<int>(float, int) const
|
||||
|
||||
_ZZN1XIfLj0EE2FnEvENKUlTyT_E_clIiEEDaS1_
|
||||
auto X<float, 0u>::Fn()::{lambda<typename $T0>($T0)#1}::operator()<int>(int) const
|
||||
|
||||
_ZZN1XIfLj1EE2FnEvENKUlTyfT_E_clIiEEDafS1_
|
||||
auto X<float, 1u>::Fn()::{lambda<typename $T0>(float, $T0)#1}::operator()<int>(float, int) const
|
||||
|
||||
_ZZN1XIfLj1EE2FnEvENKUlTyT_E_clIiEEDaS1_
|
||||
auto X<float, 1u>::Fn()::{lambda<typename $T0>($T0)#1}::operator()<int>(int) const
|
||||
|
||||
_ZZN1XIiLj0EE2FnEvENKUlTyiT_E_clIiEEDaiS1_
|
||||
auto X<int, 0u>::Fn()::{lambda<typename $T0>(int, $T0)#1}::operator()<int>(int, int) const
|
||||
|
||||
_ZZN1XIiLj0EE2FnEvENKUlTyT_E_clIiEEDaS1_
|
||||
auto X<int, 0u>::Fn()::{lambda<typename $T0>($T0)#1}::operator()<int>(int) const
|
||||
|
||||
_ZNK10l_tpl_autoMUlTyT_T0_E_clIiiEEDaS0_S1_
|
||||
auto l_tpl_auto::{lambda<typename $T0>($T0, auto:2)#1}::operator()<int, int>(int, int) const
|
||||
|
||||
_ZNK12l_tpl_nt_aryMUlTniRAT__iE_clILi2EEEDaS1_
|
||||
auto l_tpl_nt_ary::{lambda<int $N0>(int (&) [$N0])#1}::operator()<2>(int (&) [2]) const
|
||||
|
||||
_ZNK13l_tpl_nt_autoMUlTnDavE_clILi0EEEDav
|
||||
auto l_tpl_nt_auto::{lambda<auto $N0>()#1}::operator()<0>() const
|
||||
|
||||
_ZNK9l_tpl_tplMUlTtTyTnjER3TPLIT_EE_clI1UEEDaS3_
|
||||
auto l_tpl_tpl::{lambda<template<typename, unsigned int> class $TT0>(TPL<$TT0>&)#1}::operator()<U>(TPL<U>&) const
|
||||
|
||||
_ZNK13l_tpl_tpl_tplMUlTtTtTyTnjEER6TPLTPLIT_EE_clI3TPLEEDaS3_
|
||||
auto l_tpl_tpl_tpl::{lambda<template<template<typename, unsigned int> class> class $TT0>(TPLTPL<$TT0>&)#1}::operator()<TPL>(TPLTPL<TPL>&) const
|
||||
|
||||
_ZNK5l_varMUlTpTyDpT_E_clIJiiiEEEDaS1_
|
||||
auto l_var::{lambda<typename... $T0>(($T0)...)#1}::operator()<int, int, int>(int, int, int) const
|
||||
|
||||
_ZNK6l_var2MUlTpTniDpRAT__iE_clIJLi2ELi2EEEEDaS2_
|
||||
auto l_var2::{lambda<int... $N0>((int (&) [$N0])...)#1}::operator()<2, 2>(int (&) [2], int (&) [2]) const
|
||||
|
||||
_ZNK6l_var3MUlTtTpTniETpTniRT_IJXspT0_EEEE_clI1XJLi1ELi2ELi3EEEEDaS2_
|
||||
auto l_var3::{lambda<template<int...> class $TT0, int... $N1>($TT0<($N1)...>&)#1}::operator()<X, 1, 2, 3>(X<1, 2, 3>&) const
|
||||
|
||||
_ZNK6l_var4MUlTpTtTyTnjER1YIJDpT_EEE_clIJ1US7_EEEDaS4_
|
||||
auto l_var4::{lambda<template<typename, unsigned int> class... $TT0>(Y<($TT0)...>&)#1}::operator()<U, U>(Y<U, U>&) const
|
||||
|
||||
_ZZ2FnILi1EEvvENKUlTyT_E_clIiEEDaS0_
|
||||
auto Fn<1>()::{lambda<typename $T0>($T0)#1}::operator()<int>(int) const
|
||||
|
||||
_ZZ1fvENKUlTyP1XIT_EPS_IiEE_clIcEEDaS2_S4_
|
||||
auto f()::{lambda<typename $T0>(X<$T0>*, X<int>*)#1}::operator()<char>(X<char>*, X<int>*) const
|
||||
|
||||
_ZZN1XIiE1FEvENKUliE_clEi
|
||||
X<int>::F()::{lambda(int)#1}::operator()(int) const
|
||||
|
Loading…
Reference in New Issue
Block a user