Update libiberty with latest sources from gcc mainline

This commit is contained in:
Nick Clifton 2021-01-05 12:36:09 +00:00
parent 5f8c2a1507
commit d750c713c9
13 changed files with 1466 additions and 75 deletions

View File

@ -1,3 +1,89 @@
2021-01-05 Nick Clifton <nickc@redhat.com>
* libiberty: Sync with gcc. Bring in:
2021-01-04 Martin Liska <mliska@suse.cz>
* strverscmp.c: Convert to utf8 from iso8859.
2020-12-22 Jason Merrill <jason@redhat.com>
PR c++/67343
* cp-demangle.h (struct d_info): Add unresolved_name_state.
* cp-demangle.c (d_prefix): Add subst parm.
(d_nested_name): Pass it.
(d_unresolved_name): Split out from...
(d_expression_1): ...here.
(d_demangle_callback): Maybe retry with old sr mangling.
* testsuite/demangle-expected: Add test.
2020-12-21 Jason Merrill <jason@redhat.com>
* cp-demangle.c (d_expression_1): Recognize qualified-id
on RHS of dt/pt.
* testsuite/demangle-expected: Add test.
2020-12-21 Jason Merrill <jason@redhat.com>
* cp-demangle.c (d_unqualified_name): Clear is_expression.
* testsuite/demangle-expected: Add tests.
2020-11-25 Matthew Malcomson <matthew.malcomson@arm.com>
* configure: Regenerate.
* configure.ac: Avoid using sanitizer.
2020-11-13 Eduard-Mihai Burtescu <eddyb@lyken.rs>
* rust-demangle.c (struct rust_demangler): Add
skipping_printing and bound_lifetime_depth fields.
(eat): Add (v0-only).
(parse_integer_62): Add (v0-only).
(parse_opt_integer_62): Add (v0-only).
(parse_disambiguator): Add (v0-only).
(struct rust_mangled_ident): Add punycode{,_len} fields.
(parse_ident): Support v0 identifiers.
(print_str): Respect skipping_printing.
(print_uint64): Add (v0-only).
(print_uint64_hex): Add (v0-only).
(print_ident): Respect skipping_printing,
Support v0 identifiers.
(print_lifetime_from_index): Add (v0-only).
(demangle_binder): Add (v0-only).
(demangle_path): Add (v0-only).
(demangle_generic_arg): Add (v0-only).
(demangle_type): Add (v0-only).
(demangle_path_maybe_open_generics): Add (v0-only).
(demangle_dyn_trait): Add (v0-only).
(demangle_const): Add (v0-only).
(demangle_const_uint): Add (v0-only).
(basic_type): Add (v0-only).
(rust_demangle_callback): Support v0 symbols.
* testsuite/rust-demangle-expected: Add v0 testcases.
2020-11-13 Seija Kijin <doremylover456@gmail.com>
* strstr.c (strstr): Make implementation ANSI/POSIX compliant.
2020-11-11 Patrick Palka <ppalka@redhat.com>
PR c++/88115
* cp-demangle.c (d_print_comp_inner)
<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Don't print the
"operator " prefix for __alignof__.
<case DEMANGLE_COMPONENT_UNARY>: Always print parens around the
operand of __alignof__.
* testsuite/demangle-expected: Test demangling for __alignof__.
2020-11-09 Christophe Lyon <christophe.lyon@linaro.org>
* pex-win32.c (pex_win32_exec_child): Initialize orig_err.
2020-10-06 Martin Liska <mliska@suse.cz>
PR lto/97290
* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Use sh_link of a .symtab_shndx section.
2021-01-05 Alan Modra <amodra@gmail.com>
* config.guess: Import from upstream.

View File

@ -1,23 +1,98 @@
2020-09-23 Mark Wielaard <mark@klomp.org>
2021-01-04 Martin Liska <mliska@suse.cz>
* strverscmp.c: Convert to utf8 from iso8859.
2020-12-22 Jason Merrill <jason@redhat.com>
PR c++/67343
* cp-demangle.h (struct d_info): Add unresolved_name_state.
* cp-demangle.c (d_prefix): Add subst parm.
(d_nested_name): Pass it.
(d_unresolved_name): Split out from...
(d_expression_1): ...here.
(d_demangle_callback): Maybe retry with old sr mangling.
* testsuite/demangle-expected: Add test.
2020-12-21 Jason Merrill <jason@redhat.com>
* cp-demangle.c (d_expression_1): Recognize qualified-id
on RHS of dt/pt.
* testsuite/demangle-expected: Add test.
2020-12-21 Jason Merrill <jason@redhat.com>
* cp-demangle.c (d_unqualified_name): Clear is_expression.
* testsuite/demangle-expected: Add tests.
2020-11-25 Matthew Malcomson <matthew.malcomson@arm.com>
* configure: Regenerate.
* configure.ac: Avoid using sanitizer.
2020-11-13 Eduard-Mihai Burtescu <eddyb@lyken.rs>
* rust-demangle.c (struct rust_demangler): Add
skipping_printing and bound_lifetime_depth fields.
(eat): Add (v0-only).
(parse_integer_62): Add (v0-only).
(parse_opt_integer_62): Add (v0-only).
(parse_disambiguator): Add (v0-only).
(struct rust_mangled_ident): Add punycode{,_len} fields.
(parse_ident): Support v0 identifiers.
(print_str): Respect skipping_printing.
(print_uint64): Add (v0-only).
(print_uint64_hex): Add (v0-only).
(print_ident): Respect skipping_printing,
Support v0 identifiers.
(print_lifetime_from_index): Add (v0-only).
(demangle_binder): Add (v0-only).
(demangle_path): Add (v0-only).
(demangle_generic_arg): Add (v0-only).
(demangle_type): Add (v0-only).
(demangle_path_maybe_open_generics): Add (v0-only).
(demangle_dyn_trait): Add (v0-only).
(demangle_const): Add (v0-only).
(demangle_const_uint): Add (v0-only).
(basic_type): Add (v0-only).
(rust_demangle_callback): Support v0 symbols.
* testsuite/rust-demangle-expected: Add v0 testcases.
2020-11-13 Seija Kijin <doremylover456@gmail.com>
* strstr.c (strstr): Make implementation ANSI/POSIX compliant.
2020-11-11 Patrick Palka <ppalka@redhat.com>
PR c++/88115
* cp-demangle.c (d_print_comp_inner)
<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Don't print the
"operator " prefix for __alignof__.
<case DEMANGLE_COMPONENT_UNARY>: Always print parens around the
operand of __alignof__.
* testsuite/demangle-expected: Test demangling for __alignof__.
2020-11-09 Christophe Lyon <christophe.lyon@linaro.org>
* pex-win32.c (pex_win32_exec_child): Initialize orig_err.
2020-10-06 Martin Liska <mliska@suse.cz>
PR lto/97290
* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
Use sh_link of a .symtab_shndx section.
2020-09-24 Mark Wielaard <mark@klomp.org>
Sync with GCC
* dwarfnames.c (get_DW_UT_name): Define using DW_UT_FIRST, DW_UT
and DW_UT_END.
2020-09-11 Felix Willgerodt <felix.willgerodt@intel.com>
Sync with GCC
2020-09-08 Felix Willgerodt <felix.willgerodt@intel.com>
2020-09-08 Felix Willgerodt <felix.willgerodt@intel.com>
* floatformat.c (floatformat_bfloat16_big): New.
(floatformat_bfloat16_little): New.
2020-09-08 Alan Modra <amodra@gmail.com>
* configure: Regenerate.
Sync from gcc
2020-09-08 Alan Modra <amodra@gmail.com>
* d-demangle.c: Include limits.h.
(ULONG_MAX, UINT_MAX): Provide fall-back definition.
(dlang_number): Simplify and correct overflow test. Only
@ -42,32 +117,42 @@
unsigned long variables.
* testsuite/d-demangle-expected: Add new tests.
2020-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
2020-08-26 Iain Buclaw <ibuclaw@gdcproject.org>
* d-demangle.c (dlang_function_args): Handle 'in' and 'in ref'
parameter storage classes.
(dlang_type): Remove identifier type.
* testsuite/d-demangle-expected: Update tests.
2020-08-03 Richard Biener <rguenther@suse.de>
2020-08-03 Richard Biener <rguenther@suse.de>
PR lto/96385
* simple-object-elf.c
(simple_object_elf_copy_lto_debug_sections): Localize global
UNDEFs and reuse the prevailing name.
2020-07-10 Ian Lance Taylor <iant@golang.org>
2020-07-30 H.J. Lu <hjl.tools@gmail.com>
PR bootstrap/96202
* configure: Regenerated.
2020-07-14 Ian Lance Taylor <iant@golang.org>
PR demangler/96143
* cp-demangle.c (d_lambda): Don't add substitution candidate.
* testsuite/demangle-expected: Update a few existing test cases
accordingly, and add a new test case.
2020-07-04 Jason Merrill <jason@redhat.com>
2020-07-10 Jason Merrill <jason@redhat.com>
* cp-demangle.c (cplus_demangle_operators): Add di, dx, dX.
(d_expression_1): Handle di and dX.
(is_designated_init, d_maybe_print_designated_init): New.
(d_print_comp_inner): Use d_maybe_print_designated_init.
* testsuite/demangle-expected: Add designator tests.
2020-06-25 Nick Clifton <nickc@redhat.com>
2020-06-26 Nick Clifton <nickc@redhat.com>
* bsearch.c (bsearch): Remove use of register keyword.
* bsearch_r.c (bsearch_r): Likewise.
@ -3296,7 +3381,7 @@
(find_executable): Likewise.
(win32_spawn): Cast alloca return to (char**).
Replace malloc with XNEWVEC.
bcopy.c (bcopy): Add explicit casts in assignments.
bcopy.c (bcopy): Add explict casts in assignments.
2006-10-25 Ben Elliston <bje@au.ibm.com>

1
libiberty/configure vendored
View File

@ -5264,6 +5264,7 @@ fi
NOASANFLAG=
case " ${CFLAGS} " in
*\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;;
*\ -fsanitize=hwaddress\ *) NOASANFLAG=-fno-sanitize=hwaddress ;;
esac

View File

@ -240,6 +240,7 @@ AC_SUBST(PICFLAG)
NOASANFLAG=
case " ${CFLAGS} " in
*\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;;
*\ -fsanitize=hwaddress\ *) NOASANFLAG=-fno-sanitize=hwaddress ;;
esac
AC_SUBST(NOASANFLAG)

View File

@ -429,7 +429,7 @@ static struct demangle_component *d_name (struct d_info *);
static struct demangle_component *d_nested_name (struct d_info *);
static struct demangle_component *d_prefix (struct d_info *);
static struct demangle_component *d_prefix (struct d_info *, int);
static struct demangle_component *d_unqualified_name (struct d_info *);
@ -1510,7 +1510,7 @@ d_nested_name (struct d_info *di)
once we have something to attach it to. */
rqual = d_ref_qualifier (di, NULL);
*pret = d_prefix (di);
*pret = d_prefix (di, 1);
if (*pret == NULL)
return NULL;
@ -1536,10 +1536,12 @@ d_nested_name (struct d_info *di)
<template-prefix> ::= <prefix> <(template) unqualified-name>
::= <template-param>
::= <substitution>
*/
SUBST is true if we should add substitutions (as normal), false
if not (in an unresolved-name). */
static struct demangle_component *
d_prefix (struct d_info *di)
d_prefix (struct d_info *di, int subst)
{
struct demangle_component *ret = NULL;
@ -1605,7 +1607,7 @@ d_prefix (struct d_info *di)
else
ret = d_make_comp (di, comb_type, ret, dc);
if (peek != 'S' && d_peek_char (di) != 'E')
if (peek != 'S' && d_peek_char (di) != 'E' && subst)
{
if (! d_add_substitution (di, ret))
return NULL;
@ -1632,9 +1634,15 @@ d_unqualified_name (struct d_info *di)
ret = d_source_name (di);
else if (IS_LOWER (peek))
{
int was_expr = di->is_expression;
if (peek == 'o' && d_peek_next_char (di) == 'n')
d_advance (di, 2);
{
d_advance (di, 2);
/* Treat cv as naming a conversion operator. */
di->is_expression = 0;
}
ret = d_operator_name (di);
di->is_expression = was_expr;
if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR)
{
di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2;
@ -3285,14 +3293,58 @@ op_is_new_cast (struct demangle_component *op)
|| code[0] == 'c' || code[0] == 'r'));
}
/* <unresolved-name> ::= [gs] <base-unresolved-name> # x or (with "gs") ::x
::= sr <unresolved-type> <base-unresolved-name> # T::x / decltype(p)::x
# T::N::x /decltype(p)::N::x
::= srN <unresolved-type> <unresolved-qualifier-level>+ E <base-unresolved-name>
# A::x, N::y, A<T>::z; "gs" means leading "::"
::= [gs] sr <unresolved-qualifier-level>+ E <base-unresolved-name>
"gs" is handled elsewhere, as a unary operator. */
static struct demangle_component *
d_unresolved_name (struct d_info *di)
{
struct demangle_component *type;
struct demangle_component *name;
char peek;
/* Consume the "sr". */
d_advance (di, 2);
peek = d_peek_char (di);
if (di->unresolved_name_state
&& (IS_DIGIT (peek)
|| IS_LOWER (peek)
|| peek == 'C'
|| peek == 'U'
|| peek == 'L'))
{
/* The third production is ambiguous with the old unresolved-name syntax
of <type> <base-unresolved-name>; in the old mangling, A::x was mangled
as sr1A1x, now sr1AE1x. So we first try to demangle using the new
mangling, then with the old if that fails. */
di->unresolved_name_state = -1;
type = d_prefix (di, 0);
if (d_peek_char (di) == 'E')
d_advance (di, 1);
}
else
type = cplus_demangle_type (di);
name = d_unqualified_name (di);
if (d_peek_char (di) == 'I')
name = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, name,
d_template_args (di));
return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type, name);
}
/* <expression> ::= <(unary) operator-name> <expression>
::= <(binary) operator-name> <expression> <expression>
::= <(trinary) operator-name> <expression> <expression> <expression>
::= cl <expression>+ E
::= st <type>
::= <template-param>
::= sr <type> <unqualified-name>
::= sr <type> <unqualified-name> <template-args>
::= <unresolved-name>
::= <expr-primary>
<braced-expression> ::= <expression>
@ -3302,7 +3354,7 @@ op_is_new_cast (struct demangle_component *op)
# [expr ... expr] = expr
*/
static inline struct demangle_component *
static struct demangle_component *
d_expression_1 (struct d_info *di)
{
char peek;
@ -3313,20 +3365,7 @@ d_expression_1 (struct d_info *di)
else if (peek == 'T')
return d_template_param (di);
else if (peek == 's' && d_peek_next_char (di) == 'r')
{
struct demangle_component *type;
struct demangle_component *name;
d_advance (di, 2);
type = cplus_demangle_type (di);
name = d_unqualified_name (di);
if (d_peek_char (di) != 'I')
return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type, name);
else
return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type,
d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, name,
d_template_args (di)));
}
return d_unresolved_name (di);
else if (peek == 's' && d_peek_next_char (di) == 'p')
{
d_advance (di, 2);
@ -3470,10 +3509,22 @@ d_expression_1 (struct d_info *di)
right = d_exprlist (di, 'E');
else if (!strcmp (code, "dt") || !strcmp (code, "pt"))
{
right = d_unqualified_name (di);
if (d_peek_char (di) == 'I')
right = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE,
right, d_template_args (di));
peek = d_peek_char (di);
/* These codes start a qualified name. */
if ((peek == 'g' && d_peek_next_char (di) == 's')
|| (peek == 's' && d_peek_next_char (di) == 'r'))
right = d_expression_1 (di);
else
{
/* Otherwise it's an unqualified name. We use
d_unqualified_name rather than d_expression_1 here for
old mangled names that didn't add 'on' before operator
names. */
right = d_unqualified_name (di);
if (d_peek_char (di) == 'I')
right = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE,
right, d_template_args (di));
}
}
else
right = d_expression_1 (di);
@ -5458,9 +5509,18 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
}
case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
d_append_string (dpi, "operator ");
d_print_comp (dpi, options, dc->u.s_extended_operator.name);
return;
{
struct demangle_component *name = dc->u.s_extended_operator.name;
if (name->type == DEMANGLE_COMPONENT_NAME
&& !strncmp (name->u.s_name.s, "__alignof__", name->u.s_name.len))
d_print_comp (dpi, options, dc->u.s_extended_operator.name);
else
{
d_append_string (dpi, "operator ");
d_print_comp (dpi, options, dc->u.s_extended_operator.name);
}
return;
}
case DEMANGLE_COMPONENT_CONVERSION:
d_append_string (dpi, "operator ");
@ -5525,8 +5585,14 @@ d_print_comp_inner (struct d_print_info *dpi, int options,
if (code && !strcmp (code, "gs"))
/* Avoid parens after '::'. */
d_print_comp (dpi, options, operand);
else if (code && !strcmp (code, "st"))
/* Always print parens for sizeof (type). */
else if ((code && !strcmp (code, "st"))
|| (op->type == DEMANGLE_COMPONENT_EXTENDED_OPERATOR
&& (op->u.s_extended_operator.name->type
== DEMANGLE_COMPONENT_NAME)
&& !strncmp (op->u.s_extended_operator.name->u.s_name.s,
"__alignof__",
op->u.s_extended_operator.name->u.s_name.len)))
/* Always print parens for sizeof (type) and __alignof__. */
{
d_append_char (dpi, '(');
d_print_comp (dpi, options, operand);
@ -6364,6 +6430,9 @@ d_demangle_callback (const char *mangled, int options,
type = DCT_TYPE;
}
di.unresolved_name_state = 1;
again:
cplus_demangle_init_info (mangled, options, strlen (mangled), &di);
/* PR 87675 - Check for a mangled string that is so long
@ -6422,6 +6491,13 @@ d_demangle_callback (const char *mangled, int options,
if (((options & DMGL_PARAMS) != 0) && d_peek_char (&di) != '\0')
dc = NULL;
/* See discussion in d_unresolved_name. */
if (dc == NULL && di.unresolved_name_state == -1)
{
di.unresolved_name_state = 0;
goto again;
}
#ifdef CP_DEMANGLE_DEBUG
d_dump (dc, 0);
#endif

View File

@ -122,6 +122,10 @@ struct d_info
/* Non-zero if we are parsing the type operand of a conversion
operator, but not when in an expression. */
int is_conversion;
/* 1: using new unresolved-name grammar.
-1: using new unresolved-name grammar and saw an unresolved-name.
0: using old unresolved-name grammar. */
int unresolved_name_state;
/* If DMGL_NO_RECURSE_LIMIT is not active then this is set to
the current recursion level. */
unsigned int recursion_level;

View File

@ -771,7 +771,7 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags,
OSVERSIONINFO version_info;
STARTUPINFO si;
PROCESS_INFORMATION pi;
int orig_out, orig_in, orig_err;
int orig_out, orig_in, orig_err = 0;
BOOL separate_stderr = !(flags & PEX_STDERR_TO_STDOUT);
/* Ensure we have inheritable descriptors to pass to the child. */

File diff suppressed because it is too large Load Diff

View File

@ -1191,7 +1191,7 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
unsigned int sh_link;
sh_link = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
shdr, sh_link, Elf_Word);
symtab_indices_shndx[sh_link - 1] = i;
symtab_indices_shndx[sh_link - 1] = i - 1;
/* Always discard the extended index sections, after
copying it will not be needed. This way we don't need to
update it and deal with the ordering constraints of
@ -1372,19 +1372,22 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj,
{
unsigned entsize = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
shdr, sh_entsize, Elf_Addr);
unsigned strtab = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
shdr, sh_link, Elf_Word);
size_t prevailing_name_idx = 0;
unsigned char *ent;
unsigned *shndx_table = NULL;
/* Read the section index table if present. */
if (symtab_indices_shndx[i - 1] != 0)
{
unsigned char *sidxhdr = shdrs + (strtab - 1) * shdr_size;
unsigned char *sidxhdr = shdrs + symtab_indices_shndx[i - 1] * shdr_size;
off_t sidxoff = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
sidxhdr, sh_offset, Elf_Addr);
size_t sidxsz = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
sidxhdr, sh_size, Elf_Addr);
unsigned int shndx_type
= ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
sidxhdr, sh_type, Elf_Word);
if (shndx_type != SHT_SYMTAB_SHNDX)
return "Wrong section type of a SYMTAB SECTION INDICES section";
shndx_table = (unsigned *)XNEWVEC (char, sidxsz);
simple_object_internal_read (sobj->descriptor,
sobj->offset + sidxoff,

View File

@ -16,26 +16,20 @@ length, the function returns @var{string}.
*/
/* FIXME: The above description is ANSI compiliant. This routine has not
been validated to comply with it. -fnf */
#include <stddef.h>
extern char *strchr (const char *, int);
extern int strncmp (const void *, const void *, size_t);
extern int memcmp (const void *, const void *, size_t);
extern size_t strlen (const char *);
char *
strstr (const char *s1, const char *s2)
{
const char *p = s1;
const size_t len = strlen (s2);
for (; (p = strchr (p, *s2)) != 0; p++)
while (*s1)
{
if (strncmp (p, s2, len) == 0)
return (char *)p;
if (!memcmp (s1, s2, len))
return (char *)s1;
++s1;
}
return (0);
}

View File

@ -1,7 +1,7 @@
/* Compare strings while treating digits characters numerically.
Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of the libiberty library.
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
Libiberty is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public

View File

@ -1469,3 +1469,22 @@ f(A<X{.a.b[3 ... 4]=(1)}>)
# PR 96143
_Z2F2IZ1FvEUlvE_EN1AIT_E1XES2_
A<F()::{lambda()#1}>::X F2<F()::{lambda()#1}>(F()::{lambda()#1})
# PR 88115
_Z1fIiEvDTv111__alignof__T_E
void f<int>(decltype (__alignof__(int)))
_Z1fIiEvDTv111__alignof__tlT_EE
void f<int>(decltype (__alignof__(int{})))
_Z1gI1AEv1SIXadsrT_oncviEE
void g<A>(S<&A::operator int>)
_Z1jI1AEDTcldtfp_oncvPT_EES1_
decltype (({parm#1}.(operator A*))()) j<A>(A)
_Z1fI1AEDtdtfp_srT_1xES1_
decltype ({parm#1}.A::x) f<A>(A)
_Z2f6IP1AEDtptfp_gssr1A1BE1xET_
decltype ({parm#1}->(::A::B::x)) f6<A*>(A*)

View File

@ -11,7 +11,7 @@
#
############
#
# Coverage Tests
# Coverage Tests (legacy)
#
#
# Demangles as rust symbol.
@ -163,3 +163,135 @@ _ZN63_$LT$core..ptr..Unique$LT$T$GT$$u20$as$u20$core..ops..Deref$GT$5deref17h19f
--format=rust
_ZN11issue_609253foo37Foo$LT$issue_60925..llv$u6d$..Foo$GT$3foo17h059a991a004536adE
issue_60925::foo::Foo<issue_60925::llvm::Foo>::foo
--format=rust
_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17h000b1ad6c4f30bd6E
core::ops::function::FnOnce::call_once{{vtable.shim}}
#
############
#
# Coverage Tests (v0)
#
#
# Crate with a leading digit.
--format=rust
_RNvC6_123foo3bar
123foo::bar
# UTF-8 identifiers.
--format=rust
_RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y
utf8_idents::საჭმელად_გემრიელი_სადილი
# Closure path elements.
--format=rust
_RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_
cc::spawn::{closure#0}::{closure#0}
#
--format=rust
_RNCINkXs25_NgCsbmNqQUJIY6D_4core5sliceINyB9_4IterhENuNgNoBb_4iter8iterator8Iterator9rpositionNCNgNpB9_6memchr7memrchrs_0E0Bb_
<core::slice::Iter<u8> as core::iter::iterator::Iterator>::rposition::<core::slice::memchr::memrchr::{closure#1}>::{closure#0}
# dyn Trait ("trait object") types.
--format=rust
_RINbNbCskIICzLVDPPb_5alloc5alloc8box_freeDINbNiB4_5boxed5FnBoxuEp6OutputuEL_ECs1iopQbuBiw2_3std
alloc::alloc::box_free::<dyn alloc::boxed::FnBox<(), Output = ()>>
# Types with const generics parameters.
--format=rust
_RNvMC0INtC8arrayvec8ArrayVechKj7b_E3new
<arrayvec::ArrayVec<u8, 123>>::new
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_8UnsignedKhb_E
<const_generic::Unsigned<11>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKs98_E
<const_generic::Signed<152>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKanb_E
<const_generic::Signed<-11>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb0_E
<const_generic::Bool<false>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb1_E
<const_generic::Bool<true>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc76_E
<const_generic::Char<'v'>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKca_E
<const_generic::Char<'\n'>>
#
--format=rust
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc2202_E
<const_generic::Char<'\u{2202}'>>
#
--format=rust
_RNvNvMCs4fqI2P2rA04_13const_genericINtB4_3FooKpE3foo3FOO
<const_generic::Foo<_>>::foo::FOO
#
# All of the tests above but in auto mode instead:
#
# Crate with a leading digit.
--format=auto
_RNvC6_123foo3bar
123foo::bar
# UTF-8 identifiers.
--format=auto
_RNqCs4fqI2P2rA04_11utf8_identsu30____7hkackfecea1cbdathfdh9hlq6y
utf8_idents::საჭმელად_გემრიელი_სადილი
# Closure path elements.
--format=auto
_RNCNCNgCs6DXkGYLi8lr_2cc5spawn00B5_
cc::spawn::{closure#0}::{closure#0}
#
--format=auto
_RNCINkXs25_NgCsbmNqQUJIY6D_4core5sliceINyB9_4IterhENuNgNoBb_4iter8iterator8Iterator9rpositionNCNgNpB9_6memchr7memrchrs_0E0Bb_
<core::slice::Iter<u8> as core::iter::iterator::Iterator>::rposition::<core::slice::memchr::memrchr::{closure#1}>::{closure#0}
# dyn Trait ("trait object") types.
--format=auto
_RINbNbCskIICzLVDPPb_5alloc5alloc8box_freeDINbNiB4_5boxed5FnBoxuEp6OutputuEL_ECs1iopQbuBiw2_3std
alloc::alloc::box_free::<dyn alloc::boxed::FnBox<(), Output = ()>>
# Types with const generics parameters.
--format=auto
_RNvMC0INtC8arrayvec8ArrayVechKj7b_E3new
<arrayvec::ArrayVec<u8, 123>>::new
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_8UnsignedKhb_E
<const_generic::Unsigned<11>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKs98_E
<const_generic::Signed<152>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_6SignedKanb_E
<const_generic::Signed<-11>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb0_E
<const_generic::Bool<false>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4BoolKb1_E
<const_generic::Bool<true>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc76_E
<const_generic::Char<'v'>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKca_E
<const_generic::Char<'\n'>>
#
--format=auto
_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc2202_E
<const_generic::Char<'\u{2202}'>>
#
--format=auto
_RNvNvMCs4fqI2P2rA04_13const_genericINtB4_3FooKpE3foo3FOO
<const_generic::Foo<_>>::foo::FOO