Update libiberty with latest sources from gcc mainline
This commit is contained in:
parent
5f8c2a1507
commit
d750c713c9
86
ChangeLog
86
ChangeLog
@ -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.
|
||||
|
@ -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
1
libiberty/configure
vendored
@ -5264,6 +5264,7 @@ fi
|
||||
NOASANFLAG=
|
||||
case " ${CFLAGS} " in
|
||||
*\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;;
|
||||
*\ -fsanitize=hwaddress\ *) NOASANFLAG=-fno-sanitize=hwaddress ;;
|
||||
esac
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
@ -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,
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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*)
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user