mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-17 07:53:51 +08:00
Sync libiberty sources with GCC.
PR demangler/70909 PR demangler/67264 * cp-demangle.c: Fix endless recursion. Pass struct demangle_component as non const. (d_make_empty): Initialize variable. (d_print_comp_inner): Limit recursion. (d_print_comp): Decrement variable. * cp-demint.c (cplus_demangle_fill_component): Initialize variable. (cplus_demangle_fill_builtin_type): Likewise. (cplus_demangle_fill_operator): Likewise. * testsuite/demangle-expected: Add tests.
This commit is contained in:
@ -494,6 +494,11 @@ struct demangle_component
|
||||
/* The type of this component. */
|
||||
enum demangle_component_type type;
|
||||
|
||||
/* Guard against recursive component printing.
|
||||
Initialize to zero. Private to d_print_comp.
|
||||
All other fields are final after initialization. */
|
||||
int d_printing;
|
||||
|
||||
union
|
||||
{
|
||||
/* For DEMANGLE_COMPONENT_NAME. */
|
||||
@ -688,7 +693,7 @@ cplus_demangle_v3_components (const char *mangled, int options, void **mem);
|
||||
|
||||
extern char *
|
||||
cplus_demangle_print (int options,
|
||||
const struct demangle_component *tree,
|
||||
struct demangle_component *tree,
|
||||
int estimated_length,
|
||||
size_t *p_allocated_size);
|
||||
|
||||
@ -708,7 +713,7 @@ cplus_demangle_print (int options,
|
||||
|
||||
extern int
|
||||
cplus_demangle_print_callback (int options,
|
||||
const struct demangle_component *tree,
|
||||
struct demangle_component *tree,
|
||||
demangle_callbackref callback, void *opaque);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
Reference in New Issue
Block a user