aboutsummaryrefslogtreecommitdiff
path: root/include/demangle.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-03-13 17:49:32 +0000
committerNick Clifton <nickc@redhat.com>2017-03-13 17:49:32 +0000
commitc793cac124dd2eb34042f2e43abb099a26e34cb0 (patch)
tree775c5b6a39122ead6bcb6d7e49aede0fe635dbf8 /include/demangle.h
parent5ef2d51bd6ae49b28282835156d1d6622beac4a6 (diff)
downloadgdb-c793cac124dd2eb34042f2e43abb099a26e34cb0.zip
gdb-c793cac124dd2eb34042f2e43abb099a26e34cb0.tar.gz
gdb-c793cac124dd2eb34042f2e43abb099a26e34cb0.tar.bz2
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.
Diffstat (limited to 'include/demangle.h')
-rw-r--r--include/demangle.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/demangle.h b/include/demangle.h
index 7cc955d..996203b 100644
--- a/include/demangle.h
+++ b/include/demangle.h
@@ -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