aboutsummaryrefslogtreecommitdiff
path: root/libiberty/cplus-dem.c
AgeCommit message (Collapse)AuthorFilesLines
2016-11-18libiberty: Fix memory leak in ada_demangle when symbol cannot be demangled.Mark Wielaard1-1/+2
When a symbol cannot be demangled in ada_demangle a new demangled VEC will be allocated without deleting the demangled VEC already in use. Running testsuite/test-demangle under valgrind will show the leak for this entry in testsuite/demangle-expected: # Elaborated flag (not demangled) --format=gnat x_E <x_E> 11 bytes in 1 blocks are definitely lost in loss record 1 of 1 at 0x4C27BE3: malloc (vg_replace_malloc.c:299) by 0x413FE7: xmalloc (xmalloc.c:148) by 0x4025EC: ada_demangle (cplus-dem.c:930) by 0x402C59: cplus_demangle (cplus-dem.c:892) by 0x400FEC: main (test-demangle.c:317) libiberty/ChangeLog: * cplus-dem.c (ada_demangle): Initialize demangled to NULL and XDELETEVEC demangled when unknown.
2016-10-17Sync libiberty sources with gcc mainline.Nick Clifton1-6/+74
2016-09-19 Andrew Stubbs <ams@codesourcery.com> * pex-win32.c (argv_to_cmdline): Quote zero-length parameters. * testsuite/test-pexecute.c (main): Insert check for zero-length parameters. 2016-09-10 Mark Wielaard <mjw@redhat.com> * cp-demangle.c (d_substitution): Change struct demangle_component variable name from c to dc. 2016-08-12 Marek Polacek <polacek@redhat.com> PR c/7652 * cp-demangle.c (d_print_mod): Add FALLTHRU. 2016-08-04 Marcel B?hme <boehme.marcel@gmail.com> PR c++/71696 * cplus-dem.c: Prevent infinite recursion when there is a cycle in the referencing of remembered mangled types. (work_stuff): New stack to keep track of the remembered mangled types that are currently being processed. (push_processed_type): New method to push currently processed remembered type onto the stack. (pop_processed_type): New method to pop currently processed remembered type from the stack. (work_stuff_copy_to_from): Copy values of new variables. (delete_non_B_K_work_stuff): Free stack memory. (demangle_args): Push/Pop currently processed remembered type. (do_type): Do not demangle a cyclic reference and push/pop referenced remembered type.
2016-08-02Synchronize libiberty sources with FSF GCC mainline version.Nick Clifton1-6/+39
include * libiberty.h (MAX_ALLOCA_SIZE): New macro. libiberty * make-relative-prefix.c (make_relative_prefix_1): Fall back to malloc if alloca argument is greater than MAX_ALLOCA_SIZE. * cp-demangle.c (cplus_demangle_operators): Add f[lrLR]. (d_expression_1): Handle them. (d_maybe_print_fold_expression): New. (d_print_comp_inner): Use it. (d_index_template_argument): Handle negative index. * cp-demangle.c (cplus_demangle_operators): Add sP and sZ. (d_print_comp_inner): Handle them. (d_template_args_1): Split out from d_template_args. (d_args_length): New. PR c++/70926 * cplus-dem.c: Handle large values and overflow when demangling length variables. (demangle_template_value_parm): Read only until end of mangled string. (do_hpacc_template_literal): Likewise. (do_type): Handle overflow when demangling array indices. * cp-demangle.c (cplus_demangle_print_callback): Avoid zero-length VLAs. PR c++/70498 * cp-demangle.c (d_expression_1): Formatting fix. * cplus-dem.c (enum type_kind_t): Add tk_rvalue_reference constant. (demangle_template_value_parm): Handle tk_rvalue_reference type kind. (do_type): Support 'O' type id (rvalue references). * testsuite/demangle-expected: Add tests. PR c++/70498 * cp-demangle.c: Parse numbers as integer instead of long to avoid overflow after sanity checks. Include <limits.h> if available. (INT_MAX): Define if necessary. (d_make_template_param): Takes integer argument instead of long. (d_make_function_param): Likewise. (d_append_num): Likewise. (d_identifier): Likewise. (d_number): Parse as and return integer. (d_compact_number): Handle overflow. (d_source_name): Change variable type to integer for parsed number. (d_java_resource): Likewise. (d_special_name): Likewise. (d_discriminator): Likewise. (d_unnamed_type): Likewise. * testsuite/demangle-expected: Add regression test cases. * configure: Remove SH5 support. PR c++/69687 * cplus-dem.c: Include <limits.h> if available. (INT_MAX): Define if necessary. (remember_type, remember_Ktype, register_Btype, string_need): Abort if we detect cases where we the size of the allocation would overflow. PR c++/70492 * cplus-dem.c (gnu_special): Handle case where consume_count returns -1. PR c++/67394 PR c++/70481 * cplus-dem.c (squangle_mop_up): Zero bsize/ksize after freeing btypevec/ktypevec. * testsuite/demangle-expected: Add coverage tests.
2014-10-11Sync libiberty with upstream GCC.Iain Buclaw1-0/+13
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-06-11Delete temporary string within demangler even in failure cases.gdb-7.8-branchpointAndrew Burgess1-1/+4
A call to demangle_template might allocate storage within a temporary string even if the call to demangle_template eventually returns failure. This will never cause the demangler to crash, but does leak memory, as a result I've not added any tests for this. Calling string_delete is safe, even if nothing is allocated into the string, the string is initialised with string_init, so we know the internal pointers are NULL. libiberty/ChangeLog * cplus-dem.c (do_type): Call string_delete even if the call to demangle_template fails.
2014-05-28cplus-demangler, free resource after a failed call to gnu_special.Andrew Burgess1-0/+7
libiberty/ 2014-05-14 Andrew Burgess <aburgess@broadcom.com> * cplus-dmem.c (internal_cplus_demangle): Free any resources allocated by possible previous call to gnu_special. (squangle_mop_up): Reset pointers to NULL after calling free. * testsuite/demangle-expected: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210425 138bc75d-0d04-0410-961f-82ee72b054a4
2011-04-20merge from gccDJ Delorie1-2/+1
2011-03-25merge from gccDJ Delorie1-3/+2
2011-03-042011-03-04 Michael Snyder <msnyder@vmware.com>Michael Snyder1-2/+3
* cplus-dem.c (ada_demangle): Stop memory leak. Also fix a one line indent problem.
2011-01-03merge from gccDJ Delorie1-1/+1
2010-09-27merge from gccDJ Delorie1-63/+137
2010-01-11merge from gccDJ Delorie1-108/+169
2009-09-23merge from gccDJ Delorie1-1/+4
2008-03-13merge from gccDJ Delorie1-2/+2
2008-01-232008-01-23 Thiago Jung Bauermann <bauerman@br.ibm.com>Ben Elliston1-12/+20
* cplus-dem.c (demangle_function_name): Changed to return value indicating if a name was correctly demangled. (iterate_demangle_function): Use demangle_function_name return value.
2006-05-12merge from gccDJ Delorie1-1/+1
2005-05-24merge from gccDJ Delorie1-39/+29
2005-05-10Update the address and phone number of the FSF organization.Nick Clifton1-2/+2
2005-03-27merge from gccDJ Delorie1-333/+156
2004-11-24merge from gccDJ Delorie1-7/+1
2004-01-02merge from gccDJ Delorie1-2/+21
2003-10-20 * cplus-dem.c (demangle_template): Register a new Btype onlyJoel Brobecker1-4/+4
when needed. * testsuite/demangle-expected: Add a new test.
2003-03-11merge from gccDJ Delorie1-23/+26
2003-03-04merge from gccDJ Delorie1-0/+9
2003-02-20merge from gccDJ Delorie1-1/+1
2003-02-13merge from gccDJ Delorie1-15/+16
2002-10-06merge from gccDJ Delorie1-10/+8
2002-09-20merge from gccDJ Delorie1-2/+2
2002-09-12merge from gccDJ Delorie1-334/+0
2002-07-29merge from gccDJ Delorie1-2/+0
2002-02-19merge from gccDJ Delorie1-2/+9
2002-02-18merge from gccDJ Delorie1-5/+16
2002-02-05merge from gccDJ Delorie1-7/+4
2002-02-03merge from gccDJ Delorie1-1/+5
2002-01-03merge from gccDJ Delorie1-1/+1
2002-01-02merge from gccDJ Delorie1-27/+8
2001-12-13merge from gccDJ Delorie1-0/+3
2001-12-06 * demangle.h (no_demangling): New.Richard Henderson1-0/+10
(NO_DEMANGLING_STYLE_STRING): New. * cplus-dem.c (libiberty_demanglers): Add no_demangling case. (cplus_demangle): Support no_demangling.
2001-10-17merge from gccDJ Delorie1-1/+1
2001-10-07merge from gccDJ Delorie1-7/+7
2001-03-20merge from gccDJ Delorie1-1/+1
2001-03-05merge from gccDJ Delorie1-1/+1
2001-02-17merge from gccDJ Delorie1-1/+1
2001-02-02merge from gccDJ Delorie1-9/+11
2000-12-08* safe-ctype.c: New file.DJ Delorie1-32/+33
* Makefile.in (CFILES): Add safe-ctype.c. (REQUIRED_OFILES): Add safe-ctype.o. * argv.c: Define ISBLANK and use it, not isspace. * basename.c, cplus-dem.c, fnmatch.c, pexecute.c, strtod.c, strtol.c, strtoul.c: Include safe-ctype.h, not ctype.h. Use uppercase ctype macros. Don't test ISUPPER(c)/ISLOWER(c) before calling TOLOWER(c)/TOUPPER(c).
2000-12-05* cp-demangle.c: s/new_abi/v3/.DJ Delorie1-12/+17
* cplus-dem.c: Likewise. (current_demangling_style): Now auto_demangling. (cplus_demangle): Try v3 demangling if AUTO_DEMANGLING. (main): Use standard symbol chars for auto_demangling.
2000-11-23 * cplus-dem.c (main): Handle gnat_demangling.Hans-Peter Nilsson1-0/+1
2000-11-21 * cplus-dem.c (cplus_demangle): Fix formatting.Hans-Peter Nilsson1-32/+38
(grow_vect): Ditto. (ada_demangle): Ditto. (internal_cplus_demangle): Ditto. (mop_up): Ditto. * cplus-dem.c (main): Handle java_demangling. * cplus-dem.c (grow_vect): Prototype. (ada_demangle): Cast the arg of ctype macros to unsigned char.
2000-11-16* cplus-dem.c (ada_demangle): Add back ATTRIBUTE_UNUSED forHans-Peter Nilsson1-1/+1
parameter `option'. Do s/cplus_dem.c/cplus-dem.c/g on ChangeLog.
2000-11-15[merge]DJ Delorie1-8/+8
* cplus_dem.c: Eliminate use of DEFUN, it is obsolete and cannot be used in GCC.