aboutsummaryrefslogtreecommitdiff
path: root/libiberty/cp-demangle.c
AgeCommit message (Collapse)AuthorFilesLines
2015-06-24Sync libiberty from GCC, replaying updates to configure scriptsIain Buclaw1-0/+3
2014-10-11Sync libiberty with upstream GCC.Iain Buclaw1-3/+18
include/ChangeLog * libiberty.h (PEX_STDOUT_APPEND): New flag. (PEX_STDERR_APPEND): Likewise. * demangle.h (DMGL_DLANG): New macro. (DMGL_STYLE_MASK): Add DMGL_DLANG. (demangling_styles): Add dlang_demangling. (DLANG_DEMANGLING_STYLE_STRING): New macro. (DLANG_DEMANGLING): New macro. (dlang_demangle): New prototype. * longlong.h: Add __udiv_w_sdiv prototype. libiberty/ChangeLog * cp-demangle.c (d_substitution): Handle abi tags on abbreviation. * pex-common.h (struct pex_funcs): Add new parameter for open_write field. * pex-unix.c (pex_unix_open_write): Add support for new parameter. * pex-djgpp.c (pex_djgpp_open_write): Likewise. * pex-win32.c (pex_win32_open_write): Likewise. * pex-common.c (pex_run_in_environment): Likewise. * Makefile.in (CFILES): Add d-demangle.c. (REQUIRED_OFILES): Add d-demangle.o. * cplus-dem.c (libiberty_demanglers): Add dlang_demangling case. (cplus_demangle): Likewise. * d-demangle.c: New file. * testsuite/Makefile.in (really-check): Add check-d-demangle. * testsuite/d-demangle-expected: New file. * simple-object-elf.c (simple_object_elf_write_ehdr): Correctly handle objects with more than SHN_LORESERVE sections. (simple_object_elf_write_shdr): Add sh_link parameter. (simple_object_elf_write_to_file): Correctly handle objects with more than SHN_LORESERVE sections. * cp-demangle.c (d_dump): Only access field from s_fixed part of the union for DEMANGLE_COMPONENT_FIXED_TYPE. (d_count_templates_scopes): Likewise. * testsuite/demangler-fuzzer.c: New file. * testsuite/Makefile.in (fuzz-demangler): New rule. (demangler-fuzzer): Likewise. (mostlyclean): Clean up demangler fuzzer.
2014-05-28Fix demangler testsuite crashes with CP_DEMANGLE_DEBUG definedPedro Alves1-0/+6
Running the demangler's testsuite with CP_DEMANGLE_DEBUG defined crashes, with: Program received signal SIGSEGV, Segmentation fault. 0x000000000040a8c3 in d_dump (dc=0x1, indent=12) at ../../src/libiberty/cp-demangle.c:567 567 switch (dc->type) (gdb) bt 3 #0 0x000000000040a8c3 in d_dump (dc=0x1, indent=12) at ../../src/libiberty/cp-demangle.c:567 #1 0x000000000040ae47 in d_dump (dc=0x7fffffffd098, indent=10) at ../../src/libiberty/cp-demangle.c:787 #2 0x000000000040ae47 in d_dump (dc=0x7fffffffd0c8, indent=8) at ../../src/libiberty/cp-demangle.c:787 Note dc=0x1, which is obviously a bogus pointer. This is the end of d_dump recursing for a component type that that doesn't actually have subtrees: 787 d_dump (d_left (dc), indent + 2); 788 d_dump (d_right (dc), indent + 2); This fixes the two cases the testsuite currently trips on. libiberty/ 2014-05-28 Pedro Alves <palves@redhat.com> * cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_FUNCTION_PARAM and DEMANGLE_COMPONENT_NUMBER.
2014-05-08libiberty/ 2014-05-08 Gary Benson <gbenson@redhat.com>gary1-6/+54
* cp-demangle.c (struct d_component_stack): New structure. (struct d_print_info): New field component_stack. (d_print_init): Initialize the above. (d_print_comp_inner): Renamed from d_print_comp. Do not restore template stack if it would cause a loop. (d_print_comp): New function. * testsuite/demangle-expected: New test cases. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210205 138bc75d-0d04-0410-961f-82ee72b054a4
2014-05-08Avoid "'dc' may be uninitialized" warning.tschwinge1-1/+3
libiberty/ * cp-demangle.c (d_demangle_callback): Put an abort call in place, to help the compiler. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207200 138bc75d-0d04-0410-961f-82ee72b054a4
2014-01-06libiberty: sync with gccGary Benson1-61/+206
libiberty/ 2014-01-06 Gary Benson <gbenson@redhat.com> * cp-demangle.c (struct d_print_info): New fields next_saved_scope, copy_templates, next_copy_template and num_copy_templates. (d_count_templates): New function. (d_print_init): New parameter "dc". Estimate numbers of templates and scopes required. (d_print_free): Removed function. (cplus_demangle_print_callback): Allocate stack for templates and scopes. Removed call to d_print_free. (d_copy_templates): Removed function. (d_save_scope): New function. (d_get_saved_scope): Likewise. (d_print_comp): Replace state saving/restoring code with calls to d_save_scope and d_get_saved_scope. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206362 138bc75d-0d04-0410-961f-82ee72b054a4
2014-01-06libiberty: sync with gccBill Maddox1-0/+7
PR c++/41090 Add -fdeclone-ctor-dtor. include/ * demangle.h (enum gnu_v3_ctor_kinds): Added literal gnu_v3_unified_ctor. (enum gnu_v3_ctor_kinds): Added literal gnu_v3_unified_dtor. libiberty/ * cp-demangle.c (cplus_demangle_fill_ctor,cplus_demangle_fill_dtor): Handle unified ctor/dtor. (d_ctor_dtor_name): Handle unified ctor/dtor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206182 138bc75d-0d04-0410-961f-82ee72b054a4
2013-11-26Fix demangler to handle conversion operators correctly.ccoutant1-36/+154
libiberty/ PR other/59195 * cp-demangle.c (struct d_info_checkpoint): New struct. (struct d_print_info): Add current_template field. (d_operator_name): Set flag when processing a conversion operator. (cplus_demangle_type): When processing <template-args> for a conversion operator, backtrack if necessary. (d_expression_1): Renamed from d_expression. (d_expression): New wrapper around d_expression_1. (d_checkpoint): New function. (d_backtrack): New function. (d_print_init): Initialize current_template. (d_print_comp): Set current_template. (d_print_cast): Put current_template in scope for printing conversion operator name. (cplus_demangle_init_info): Initialize is_expression and is_conversion. * cp-demangle.h (struct d_info): Add is_expression and is_conversion fields. * testsuite/demangle-expected: New test cases. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205292 138bc75d-0d04-0410-961f-82ee72b054a4
2013-11-15* cp-demangle.c (d_copy_templates): Cast result of malloc to (struct ↵uros1-4/+6
d_print_template *). (d_print_comp): Cast result of realloc to (struct d_saved scope *). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204713 138bc75d-0d04-0410-961f-82ee72b054a4
2013-11-08libiberty/ 2013-10-25 Gary Benson <gbenson@redhat.com>gary1-2/+129
* cp-demangle.c (struct d_saved_scope): New structure. (struct d_print_info): New fields saved_scopes and num_saved_scopes. (d_print_init): Initialize the above. (d_print_free): New function. (cplus_demangle_print_callback): Call the above. (d_copy_templates): New function. (d_print_comp): New variables saved_templates and need_template_restore. [DEMANGLE_COMPONENT_REFERENCE, DEMANGLE_COMPONENT_RVALUE_REFERENCE]: Capture scope the first time the component is traversed, and use the captured scope for subsequent traversals. * testsuite/demangle-expected: Add regression test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@204068 138bc75d-0d04-0410-961f-82ee72b054a4
2013-10-16merge from gccDJ Delorie1-1/+1
2013-09-10merge from gccDJ Delorie1-167/+2
2013-09-10merge from gccDJ Delorie1-2/+167
2013-04-04merge from gccDJ Delorie1-42/+29
2013-04-03merge from gccDJ Delorie1-13/+124
2013-02-15merge from gccDJ Delorie1-1/+20
2012-11-11merge from gccDJ Delorie1-10/+42
2012-10-10merge from gccDJ Delorie1-0/+26
2012-07-18merge from gccDJ Delorie1-1/+31
2012-05-22merge from gccDJ Delorie1-0/+1
2012-04-02merge from gccDJ Delorie1-0/+5
2012-03-08merge from gccDJ Delorie1-1/+7
2012-01-10merge from gccDJ Delorie1-5/+8
2012-01-06merge from gccDJ Delorie1-79/+203
2011-11-08merge from gccDJ Delorie1-2/+45
2011-11-04merge from gccDJ Delorie1-3/+8
2011-10-10merge from gccDJ Delorie1-0/+24
2011-09-23merge from gccDJ Delorie1-3/+54
2011-08-06merge from gccDJ Delorie1-2/+12
2011-07-26merge from gccDJ Delorie1-1/+9
2011-07-05merge from gccDJ Delorie1-7/+23
2011-07-01merge from gccJan Kratochvil1-2/+55
libiberty/ PR debug/49408 * cp-demangle.c (d_print_comp): Suppress argument list for function references by the '&' unary operator. Keep also already processed variant without the argument list. Suppress argument list types for function call used in an expression. * testsuite/demangle-expected: Fix excessive argument list types in `test for typed function in decltype'. New testcase for no argument list types printed. 3 new testcases for function references by the '&' unary operator..
2011-06-22merge from gccDJ Delorie1-3/+31
2011-06-13merge from gccDJ Delorie1-119/+124
2010-11-16Properly demangle a global constructor symbol.H.J. Lu1-1/+15
2010-11-16 H.J. Lu <hongjiu.lu@intel.com> PR other/42670 PR binutils/11137 * cp-demangle.c (d_make_demangle_mangled_name): New. (d_demangle_callback): Use it on DCT_GLOBAL_XTORS. * testsuite/demangle-expected: Updated.
2010-11-13merge from gccDJ Delorie1-6/+0
2010-09-102010-09-10 James Lyon <jameslyon0@googlemail.com>Tom Tromey1-0/+1
http://sourceware.org/bugzilla/show_bug.cgi?id=11572 * cp-demangle.c (d_find_pack): Add case for DEMANGLE_COMPONENT_LAMBDA. * testsuite/demangle-expected: Add regression test.
2010-06-10 PR other/43838Jakub Jelinek1-1/+11
* cp-demangle.c (struct d_print_info): Add flush_count field. (d_print_init): Initialize it to 0. (d_print_flush): Increment it. (d_print_comp): If needed flush before appending ", ". Only decrement dpi->len if no flushes happened during the recursive call. * testsuite/demangle-expected: Add a test for this.
2010-05-06merge from gccDJ Delorie1-0/+8
2010-03-22merge from gccDJ Delorie1-2/+2
2010-02-03merge from gccDJ Delorie1-10/+83
2010-01-21merge from gccDJ Delorie1-3/+12
2010-01-10Return dgs.alc on successH.J. Lu1-1/+1
2010-01-09 Ian Lance Taylor <iant@google.com> PR other/42230 * cp-demangle.c (d_demangle): Return dgs.alc on success.
2009-10-02merge from gccDJ Delorie1-61/+238
2009-07-17merge from gccDJ Delorie1-18/+43
2009-05-19merge from gccDJ Delorie1-4/+4
2009-03-23merge from gccDJ Delorie1-3/+21
2009-03-18merge from gccDJ Delorie1-8/+63
2009-01-07merge from gccDJ Delorie1-12/+5
2008-12-18merge from gccDJ Delorie1-1/+8