Commit Graph

130 Commits

Author SHA1 Message Date
Jakub Jelinek
99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
Jakub Jelinek
8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Eduard-Mihai Burtescu
32fc3719e0 [PATCH] Refactor rust-demangle to be independent of C++ demangling.
* demangle.h (rust_demangle_callback): Add.

	* cplus-dem.c (cplus_demangle): Use rust_demangle directly.
	(rust_demangle): Remove.
	* rust-demangle.c (is_prefixed_hash): Rename to is_legacy_prefixed_hash.
	(parse_lower_hex_nibble): Rename to decode_lower_hex_nibble.
	(parse_legacy_escape): Rename to decode_legacy_escape.
	(rust_is_mangled): Remove.
	(struct rust_demangler): Add.
	(peek): Add.
	(next): Add.
	(struct rust_mangled_ident): Add.
	(parse_ident): Add.
	(rust_demangle_sym): Remove.
	(print_str): Add.
	(PRINT): Add.
	(print_ident): Add.
	(rust_demangle_callback): Add.
	(struct str_buf): Add.
	(str_buf_reserve): Add.
	(str_buf_append): Add.
	(str_buf_demangle_callback): Add.
	(rust_demangle): Add.
	* rust-demangle.h: Remove.

From-SVN: r278358
2019-11-16 08:32:50 -07:00
Eduard-Mihai Burtescu
979526c9ce demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h.
include/
	* demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h.
	(rust_demangle_sym): Move to libiberty/rust-demangle.h.
libiberty/
	* cplus-dem.c: Include rust-demangle.h.
	* rust-demangle.c: Include rust-demangle.h.
	* rust-demangle.h: New file.

From-SVN: r273573
2019-07-18 16:10:51 +02:00
Jakub Jelinek
a554497024 Update copyright years.
From-SVN: r267494
2019-01-01 13:31:55 +01:00
Jason Merrill
6c8120c5ff Remove support for demangling GCC 2.x era mangling schemes.
libiberty/
	* cplus-dem.c: Remove cplus_mangle_opname, cplus_demangle_opname,
	internal_cplus_demangle, and all subroutines.
	(libiberty_demanglers): Remove entries for ancient GNU (pre-3.0),
	Lucid, ARM, HP, and EDG demangling styles.
	(cplus_demangle): Remove 'work' variable.  Don't call
	internal_cplus_demangle.
include/
	* demangle.h: Remove support for ancient GNU (pre-3.0), Lucid,
	ARM, HP, and EDG demangling styles.

From-SVN: r267363
2018-12-22 19:06:34 -05:00
Nick Clifton
e96d1d8c78 Add a recursion limit to libiberty's demangling code. The limit is enabled by default, but can be disabled via a new demangling option.
include	* demangle.h (DMGL_NO_RECURSE_LIMIT): Define.
        (DEMANGLE_RECURSION_LIMIT): Define

	PR 87681
	PR 87675
	PR 87636
	PR 87350
	PR 87335
libiberty * cp-demangle.h (struct d_info): Add recursion_level field.
	* cp-demangle.c (d_function_type): Add recursion counter.
	If the recursion limit is reached and the check is not disabled,
	then return with a failure result.
	(cplus_demangle_init_info): Initialise the recursion_level field.
        (d_demangle_callback): If the recursion limit is enabled, check
	for a mangled string that is so long that there is not enough
	stack space for the local arrays.
        * cplus-dem.c (struct work): Add recursion_level field.
	(squangle_mop_up): Set the numb and numk fields to zero.
	(work_stuff_copy_to_from): Handle the case where a btypevec or 
	ktypevec field is NULL.
	(demangle_nested_args): Add recursion counter.  If
	the recursion limit is not disabled and reached, return with a
	failure result.

From-SVN: r266886
2018-12-07 10:33:30 +00:00
Tom Tromey
6ef4752bc9 cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.
2018-07-30  Tom Tromey  <tom@tromey.com>

	* cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.

From-SVN: r263069
2018-07-30 13:47:01 +00:00
Jakub Jelinek
85ec4feb11 Update copyright years.
From-SVN: r256169
2018-01-03 11:03:58 +01:00
Jonathan Wakely
de3b531c9a PR demangler/80513 check for overflows and invalid characters in thunks
PR demangler/80513
	* cp-demangle.c (d_number): Check for overflow.
	* cplus-dem.c (consume_count): Fix overflow check.
	(gnu_special): Check for underscore after thunk delta.
	* testsuite/demangle-expected: Add tests for overflows and invalid
	characters in thunks.

From-SVN: r247300
2017-04-27 10:44:28 +01:00
Jakub Jelinek
2afd3180c5 Update copyright years.
From-SVN: r244052
2017-01-04 12:30:51 +01:00
David Tolnay
10d48c59b0 libiberty: Add Rust symbol demangling.
Adds Rust symbol demangler. Rust mangles symbols using GNU_V3 style,
adding a hash and various special character subtitutions. This adds
a new rust style to cplus_demangle and adds 3 helper functions
rust_demangle, rust_demangle_sym and rust_is_mangled.

rust-demangle.c was written by David. Mark did the code formatting to
GNU style and integration into the gcc/libiberty build system and
testsuite.

include/ChangeLog:

2016-11-03  David Tolnay <dtolnay@gmail.com>
           Mark Wielaard  <mark@klomp.org>

       * demangle.h (DMGL_RUST): New macro.
       (DMGL_STYLE_MASK): Add DMGL_RUST.
       (demangling_styles): Add dlang_rust.
       (RUST_DEMANGLING_STYLE_STRING): New macro.
       (RUST_DEMANGLING): New macro.
       (rust_demangle): New prototype.
       (rust_is_mangled): Likewise.
       (rust_demangle_sym): Likewise.

libiberty/ChangeLog:

2016-11-03  David Tolnay <dtolnay@gmail.com>
           Mark Wielaard  <mark@klomp.org>

       * Makefile.in (CFILES): Add rust-demangle.c.
       (REQUIRED_OFILES): Add rust-demangle.o.
       * cplus-dem.c (libiberty_demanglers): Add rust_demangling case.
       (cplus_demangle): Handle RUST_DEMANGLING.
       (rust_demangle): New function.
       * rust-demangle.c: New file.
       * testsuite/Makefile.in (really-check): Add check-rust-demangle.
       (check-rust-demangle): New rule.
       * testsuite/rust-demangle-expected: New file.

Co-Authored-By: Mark Wielaard <mark@klomp.org>

From-SVN: r242524
2016-11-16 23:09:27 +00:00
Mark Wielaard
0d0bfbf47c libiberty: Fix some demangler crashes caused by reading past end of input.
In various situations the cplus_demangle () function could read past the
end of input causing crashes. Add checks in various places to not advance
the demangle string location and fail early when end of string is reached.
Add various examples of input strings to the testsuite that would crash
test-demangle before the fixes.

Found by using the American Fuzzy Lop (afl) fuzzer.

libiberty/ChangeLog:

       * cplus-dem.c (demangle_signature): After 'H', template function,
       no success and don't advance position if end of string reached.
       (demangle_template): After 'z', template name, return zero on
       premature end of string.
       (gnu_special): Guard strchr against searching for zero characters.
       (do_type): If member, only advance mangled string when 'F' found.
       * testsuite/demangle-expected: Add examples of strings that could
       crash the demangler by reading past end of input.

From-SVN: r242450
2016-11-15 19:31:50 +00:00
Mark Wielaard
c4ec8585dc libiberty: Fix -Wimplicit-fallthrough warnings.
Adjust some comments, add some explicit fall through comments or explicit
returns where necessary to not get implicit-fallthrough warnings.

All fall throughs were deliberate. In one case I added an explicit return
false for clarity instead of falling through a default case (that also
would return false).

libiberty/ChangeLog:

       * cplus-dem.c (demangle_signature): Move fall through comment.
       (demangle_fund_type): Add fall through comment between 'G' and 'I'.
       * hashtab.c (iterative_hash): Add fall through comments.
       * regex.c (regex_compile): Add Fall through comment after '+'/'?'.
       (byte_re_match_2_internal): Add Fall through comment after jump_n.
       Change "Note fall through" to "Fall through".
       (common_op_match_null_string_p): Return false after set_number_at
       instead of fall through.

From-SVN: r241864
2016-11-04 23:55:01 +00:00
Mark Wielaard
a3f3eec079 libiberty: Fix memory leak in ada_demangle when symbol cannot be demangled.
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.

From-SVN: r241760
2016-11-01 23:13:10 +00:00
Marcel Böhme
1841e25ca5 re PR c++/71696 (Libiberty Demangler segfaults (6))
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.

From-SVN: r239143
2016-08-04 10:53:18 -06:00
Marcel Böhme
03ef0c6c55 re PR c++/70926 (Libiberty Demangler segfaults (5))
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.

From-SVN: r238313
2016-07-13 16:06:09 -06:00
Artemiy Volkov
9b27f1138f cplus-dem.c (enum type_kind_t): Add tk_rvalue_reference constant.
* 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.

From-SVN: r236434
2016-05-18 15:52:26 -06:00
Marcel Böhme
bdf66f7734 Fix memory allocation size overflows (PR69687, patch by Marcel Böhme)
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.

From-SVN: r234829
2016-04-08 12:10:21 +00:00
Marcel Böhme
59dad006fa Handle an overflow case (PR70498, patch by Marcel Böhme).
PR c++/70498
	* cplus-dem.c (gnu_special): Handle case where consume_count returns
	-1.

From-SVN: r234828
2016-04-08 12:06:59 +00:00
Mikhail Maltsev
916268f1f2 cplus-dem.c (squangle_mop_up): Zero bsize/ksize after freeing btypevec/ktypevec.
* cplus-dem.c (squangle_mop_up): Zero bsize/ksize after freeing
	btypevec/ktypevec.
	* testsuite/demangle-expected: Add coverage tests.

From-SVN: r234645
2016-03-31 11:20:53 -06:00
Iain Buclaw
43b1b9edfc demangle.h (DMGL_DLANG): New macro.
include/:
	* 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.
libiberty/:
	* 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.

From-SVN: r215530
2014-09-23 18:36:14 +00:00
Andrew Burgess
ac8345a525 Delete temporary string within demangler even in failure cases.
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.

From-SVN: r211449
2014-06-11 10:57:27 +00:00
Andrew Burgess
70c8c2b932 cplus-dmem.c (internal_cplus_demangle): Free any resources allocated by possible previous call to gnu_special.
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.

From-SVN: r210425
2014-05-14 14:18:49 +00:00
Jim Meyering
046957830e remove useless if-before-free tests
Change "if (E) free (E);" to "free (E);" everywhere except in the
libgo/, intl/, zlib/ and classpath/ directories.
Also transform equivalent variants like
"if (E != NULL) free (E);" and allow an extra cast on the
argument to free.  Otherwise, the tested and freed "E"
expressions must be identical, modulo white space.

From-SVN: r172785
2011-04-20 18:19:03 +00:00
Jakub Jelinek
d652f226fc Update Copyright years for files modified in 2010.
From-SVN: r168438
2011-01-03 21:52:22 +01:00
Tristan Gingold
a69d9775fc cplus-dem.c (ada_demangle): Add comments.
2010-09-22 Tristan Gingold  <gingold@adacore.com>

	* cplus-dem.c (ada_demangle): Add comments.
	Handle stream and controlled type operations.
	Decoding of some uppercase letters moved before separators.
	* testsuite/demangle-expected: Add tests.

From-SVN: r164518
2010-09-22 09:26:03 +00:00
Tristan Gingold
5b40c067ef demangle.h (ada_demangle): Add prototype.
include/
2010-01-11  Tristan Gingold  <gingold@adacore.com>

	* demangle.h (ada_demangle): Add prototype.

libiberty/
2010-01-11  Tristan Gingold  <gingold@adacore.com>

	* cplus-dem.c (ada_demangle): Remove prototype.
	(grow_vect): Removed.
	(ada_demangle): Rewritten.
	(cplus_demangle): Fix indentation.
	* testsuite/demangle-expected: Add tests for Ada.

From-SVN: r155804
2010-01-11 11:38:35 +00:00
Matthew Gingell
30b639a845 cplus-dem.c (ada_demangle): Ensure demangled is freed.
2009-09-23  Matthew Gingell <gingell@adacore.com>

	* cplus-dem.c (ada_demangle): Ensure demangled is freed.

From-SVN: r152060
2009-09-23 08:08:40 +00:00
Seongbae Park
5a9340fd7f cplus-dem.c (malloc, realloc): Use void * instead of char * as return type.
2008-03-12  Seongbae Park <seongbae.park@gmail.com>

	* cplus-dem.c (malloc, realloc): Use void * instead of char *
	as return type.

From-SVN: r133181
2008-03-13 18:49:45 +00:00
Thiago Jung Bauermann
62b445b31c cplus-dem.c (demangle_function_name): Changed to return value indicating if a name was correctly demangled.
2008-01-23  Thiago Jung Bauermann  <bauerman@br.ibm.com>

	* 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.

From-SVN: r131754
2008-01-23 16:04:03 +11:00
Anton Blanchard
824bceb033 cplus-dem.c (demangle_fund_type): Ensure buf is large enough to hold "int%u_t".
* cplus-dem.c (demangle_fund_type): Ensure buf is large enough to
hold "int%u_t".

From-SVN: r113728
2006-05-12 15:44:29 -04:00
Gabriel Dos Reis
d7cf8390c7 libiberty.h (ACONCAT): Properly cast value of alloca().
include/
2005-05-24  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* libiberty.h (ACONCAT): Properly cast value of alloca().

	* ansidecl.h (ATTRIBUTE_UNUSED_LABEL): Don't define if
	__cplusplus.

libiberty/
2005-05-24  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* configure.ac: Check declarations for calloc(), getenv(),
	malloc(), realloc() and sbrk().
	* config.in: Regenerate.
	* configure: Likewise.

	* alloca.c (C_alloca): Change "new" to "new_storage".  Use XNEWVEC
	instead of xmalloc.
	* choose-temp.c (choose_temp_base): Use XNEWVEC instea od xmalloc.
	* concat.c (liiberty_concat_ptr): Surround definition with an
	extern "C" block, if __cplusplus.
	(concat): Use XNEWVEC instead of xmalloc.
	(reconcat): Likewise.
	* cp-demangle.c (struct d_print_template): Rename member
	"template" to "template_decl".  Adjust use throughout the file.
	(d_print_resize): Properly cast return value of realloc().
	(cplus_demangle_print): Same for malloc().
	(d_demangle): Likewise.
	* cp-demint.c (cplus_demangle_fill_builtin_type): Rename parameter
	"typename" to "type_name".
	* cplus-dem.c (grow_vect): Use XRESIZEVEC instead of xrealloc().
	(work_stuff_copy_to_from): Use XNEWVEC insteand of xmalloc().
	(demangle_template_value_parm): Likewise.
	(demangle_template): Likewise.
	(recursively_demangle): Likewise.
	(do_hpacc_template_literal): Likewise.
	(do_arg): Likewise.
	(remember_type): Likewise.
	(remember_Ktype): Likewise.
	(register_Btype): Likewise.
	(string_need): Use XRESIZEVEC instead of xrealloc().
	* dyn-string.c (dyn_string_init): Use XNEWVEC.
	(dyn_string_new): Use XNEW.
	(dyn_string_resize): Use XRESIZEVEC.
	* fnmatch.c (fnmatch): Rename local variable "not" to "negate".
	* getopt.c (getenv): Declare only if !__cplusplus and !getenv.
	Otherwise include <stdlib.h>.
	(exchange): Cast return value of malloc().
	* hashtab.c (htab_size): Define as both macro and non-inline
	function.
	(htab_elements): Likewise.
	* getpwd.c (getpwd): Use XNEWVEC.
	(htab_create_alloc_ex): Use C90 prototype-style.
	* lrealpath.c (lrealpath): Appropriately cast return value of
	malloc().
	* make-relative-prefix.c (save_string): Likewise.
	* make-temp-file.c (try_dir): Rename from "try".  Adjust use in
	the file.
	(choose_tmpdir): Use XNEWVEC.
	* mkstemps.c (mkstemps): Rename parameter "template" to "pattern".
	* pex-common.c (pex_init_common): Use XNEW.
	(pex_add_remove): Use XRESIZEVEC.
	(pex_run): Likewise.
	(pex_get_status_and_time): Likewise.
	* pex-djgpp.c (pex_djgpp_exec_child): Likewise.
	* pex-msdos.c (pex_init): Use XNEW.
	(pex_msdos_exec_child): Likewise.
	(pex_msdos_exec_child): Use XRESIZEVEC.
	* pex-unix.c (pex_wait): Use XNEW.
	* pex-win32.c (fix_argv): Use XNEWVEC.
	* pexecute.c (pwait): Likewise.
	* setenv.c (setenv): Properly cast return value of malloc().
	* sigsetmask.c (sigsetmask): Rename local variables "old" and
	"new" to "old_sig" and "new_sig".
	* sort.c (main): Use XNEWVEC.
	* spaces.c (spaces): Cast return value of malloc().
	* strndup.c (strndup): Likewise.
	* ternary.c (ternary_insert): Use XNEW.
	* xmalloc.c (malloc, realloc, calloc, sbrk): Surround declaration
	with an extern "C" block if __cplusplus.
	* xstrdup.c (xstrdup): Cast return value of memcpy().
	* xstrerror.c (strerror): Enclose declaration in an extern "C"
	block if __cplusplus.
	* xstrndup.c (xstrndup): Use XNEW. Cast return value of memcpy().

From-SVN: r100115
2005-05-24 20:48:25 +00:00
Nick Clifton
ee58dffdbc Update the address and phone number of the FSF organization.
From-SVN: r99519
2005-05-10 15:33:18 +00:00
Gabriel Dos Reis
500d77012d Convert libiberty to use ISO C prototype style 3/n.
* cplus-dem.c (set_cplus_marker_for_demangling, consume_count,
        consume_count_with_underscores, code_for_qualifier,
        qualifier_string, demangle_qualifier, cplus_demangle_opname,
        cplus_mangle_opname, cplus_demangle_set_style,
        cplus_demangle_name_to_style, cplus_demangle, grow_vect,
        ada_demangle, internal_cplus_demangle, squangle_mop_up,
        work_stuff_copy_to_from, delete_non_B_K_work_stuff,
        delete_work_stuff, mop_up, demangle_signature,
        demangle_method_args, demangle_template_template_parm,
        demangle_expression, demangle_integral_value,
        demangle_real_value, demangle_template_value_parm,
        demangle_template, arm_pt, demangle_arm_hp_template,
        demangle_class_name, demangle_class,
        iterate_demangle_function,
        demangle_prefix, gnu_special, recursively_demangle,
        arm_special,
        demangle_qualified, get_count, do_type, demangle_fund_type,
        do_hpacc_template_const_value, do_hpacc_template_literal,
        snarf_numeric_literal, do_arg, remember_type, remember_Ktype,
        register_Btype, remember_Btype, forget_B_and_K_types,
        forget_types, demangle_args, demangle_nested_args,
        demangle_function_name, string_need, string_delete,
        string_init,
        string_clear, string_empty, string_append, string_appends,
        string_appendn, string_prepend, string_prepends,
        string_prependn,
        string_append_template_idx): Use ISO C prootype style.
        * cp-demint.c (cplus_demangle_fill_component,
        cplus_demangle_fill_builtin_type,
        cplus_demangle_fill_operator,
        cplus_demangle_v3_components): Likewise.

From-SVN: r97109
2005-03-27 05:00:12 +00:00
Ian Lance Taylor
0b167d51ed re PR other/18623 (4 * libiberty local variables set but never used)
PR other/18623
	* cp-demangle.c (d_call_offset): Remove useless local variables
	offset and virtual_offset.
	* cplus-dem.c (ada_demangle): Remove useless local variable
	at_start_name.
	(demangle_template): Remove useless local variable start.

From-SVN: r91133
2004-11-24 02:19:10 +00:00
Ian Lance Taylor
e4796f1c88 cp-demangle.c (d_encoding): When DMGL_PARAMS is not set...
* cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
	CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
	* cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
	demangling template parameters.
	* testsuite/test-demangle.c (fail): New static function.
	(main): Support new options in input file: --no-params,
	--is-v3-ctor, and --is-v3-dtor.
	* testsuite/demangle-expected: Add --no-params to most tests, and
	add the correct result when parameters are not demangled.  Add
	some simple tests for V3 constructor/destructor recognition.

From-SVN: r75336
2004-01-02 20:33:55 +00:00
J. Brobecker
08c5b96d1b cplus-dem.c (demangle_template): Register a new Btype only when needed.
* cplus-dem.c (demangle_template): Register a new Btype only
        when needed.
        * testsuite/demangle-expected: Add a new test.

From-SVN: r72729
2003-10-20 23:21:30 +00:00
Carlo Wood
8fe857758f cplus-dem.c (demangle_integral_value): Correction to reflect patch of 2002-01-10 in order to also make negative...
* cplus-dem.c (demangle_integral_value): Correction to reflect
patch of 2002-01-10 in order to also make negative multi-digits
without leading underscore work.

From-SVN: r64179
2003-03-11 14:55:46 -05:00
Mark Mitchell
3bf2782272 * cplus-dem.c: Add license exception to copyright notice.
From-SVN: r63760
2003-03-04 02:57:16 +00:00
jmc
e182f0a397 * cplus_dem.c: Fix typo: intializes -> initializes.
From-SVN: r63182
2003-02-20 15:31:18 -05:00
Daniel Jacobowitz
902cf50c93 re PR c++/7612 (Memory leaks in cplus-dem.c)
Fix PR c++/7612.
	* cplus-dem.c (demangle_signature): Call string_delete.
	Remove extra string_init.
	(demangle_arm_hp_template): Call string_delete instead of
	string_clear.  Add missing string_delete call.
	(demangle_qualified): Add missing string_delete call.
	(do_type): Remove unused variable btype.  Add missing string_delete
	call.  Call string_delete instead of string_clear.
	(demangle_fund_type): Move variable btype inside of the switch
	statement.  Add missing string_delete call.
	(do_arg): Call string_delete instead of string_clear.  Remove extra
	string_init.
	(demangle_nested_args): Free work->previous_argument.

From-SVN: r62852
2003-02-13 17:21:20 +00:00
Andreas Jaeger
de78f58bcf cplus-dem.c (ada_demangle): Get rid of unneeded variable and of strict-aliasing warning.
* libiberty/cplus-dem.c (ada_demangle): Get rid of unneeded
	variable and of strict-aliasing warning.
	(grow_vect): Use char as first parameter.

From-SVN: r57866
2002-10-06 21:29:24 +02:00
John David Anglin
f08b7eee21 cp-demangle.c (demangling_new): Cast 0 to enum.
* cp-demangle.c (demangling_new): Cast 0 to enum.
	(demangle_char): Cast return of strdup to char *.
	(is_gnu_v3_mangled_ctor): Cast 0 to enum.
	(is_gnu_v3_mangled_dtor): Likewise.
	* cplus-dem.c (grow_vect): Cast return of xrealloc to void *.
	(work_stuff_copy_to_from): Cast return of xmalloc to char **.
	* fibheap.c (fibnode_new): Cast return of xcalloc to fibnode_t.
	* md5.c (md5_process_bytes): Cast results back to const void *.
	(md5_process_block): Add cast to const md5_uint32 *.
	* regex.c (re_compile_fastmap): Cast enum to UCHAR_T.
	* safe-ctype.c (L, XL, U, XU, D, P, _, C, Z, M, V, T, S): Add cast to
	unsigned short.
	* splay-tree.c (splay_tree_xmalloc_allocate): Cast return of xmalloc
	to void *.
	* vasprintf.c (int_vasprintf): Cast return of malloc to char *.

From-SVN: r57330
2002-09-20 02:40:51 +00:00
Zack Weinberg
3fd9d606f3 Makefile.in: Remove all references to s-under and underscore.c.
gcc:
	* Makefile.in: Remove all references to s-under and underscore.c.
	* collect2.c, tlink.c: Change all uses of prepends_underscore
	to look directly at USER_LABEL_PREFIX.

gcc/cp:
	* Make-lang.in: Build cp/cxxfilt.o from $(srcdir)/cp/cxxfilt.c,
	and c++filt from cxxfilt.o + version.o + $(LIBDEPS).
	* cxxfilt.c: New file: split from libiberty/cplus-dem.c, with
	minor adjustments (use version_string, eliminate yet another
	duplicate of xmalloc)

libiberty:
	* cplus-dem.c: Code code under #ifdef MAIN moved to gcc/cp/cxxfilt.c.
	* testsuite/Makefile.in: Adjust for test-demangle.
	* testsuite/regress-demangle: Deleted.
	* testsuite/test-demangle.c: New file.
	* testsuite/demangle-expected: Change \$ to $ throughout, now that
	this file is not being read by a shell script.

From-SVN: r57037
2002-09-11 19:58:02 +00:00
Neil Booth
437974a94b * cplus-dem.c (PREPEND_BLANK): Remove.
From-SVN: r55837
2002-07-29 17:11:10 +00:00
Scott Snyder
b1c1a22fb2 demangle-expected: Add test case for infinite loop in demangler.
* testsuite/demangle-expected: Add test case for infinite loop in
demangler.
* cplus-dem.c (demangle_arm_hp_template): Stop trying to demangle
if do_type() doesn't make any progress --- prevents an infinite
loop.

From-SVN: r49875
2002-02-19 15:02:16 -05:00
Carlo Wood
336669e7b0 re PR other/5390 ([3.3 only?] Libiberty fails to demangle multi-digit template parameters.)
2002-02-18  Carlo Wood  <carlo@gnu.org>

	PR c++/5390
        * cplus-dem.c (demangle_integral_value): Accept multi-digit
        numbers that do not start with an underscore; This is needed
        for integer template parameters. This doesn't break anything
        because multi-digit numbers are never followed by a digit.
        * testsuite/demangle-expected: Corrected all mangled test
        cases with multi-digit template parameters: g++ 2.95.x does
        not generate underscores around these parameters.

From-SVN: r49851
2002-02-18 22:41:45 +00:00
Jason Merrill
c13db5d119 demangle.h (cplus_demangle_v3): Add "options" parm.
* demangle.h (cplus_demangle_v3): Add "options" parm.
        (cplus_demangle_v3_type): Remove prototype.
        (DMGL_VERBOSE): New macro.
        (DMGL_TYPES): New macro.

        * cplus-dem.c (flags): Add DMGL_VERBOSE
        (cplus_demangle_v3_p): Remove.
        (demangle_it): Add DMGL_TYPES to passed flags.
        * cp-demangle.c (cplus_demangle_v3_all): Remove.
        (cplus_demangle_v3_type): Remove.
        (cplus_demangle_v3): Add options parm.

        * collect2.c (dump_file): Pass DMGL_VERBOSE to cplus_demangle.

From-SVN: r49525
2002-02-05 11:33:31 -05:00
H.J. Lu
d74697b84d cp-demangle.c (cp_demangle_type): Do not protect with IN_LIBGCC2.
2002-02-02  H.J. Lu  (hjl@gnu.org)

	* cp-demangle.c (cp_demangle_type): Do not protect with
	IN_LIBGCC2.
	(cplus_demangle_v3_all): New.
	(cplus_demangle_v3): Call cplus_demangle_v3_all.
	(cplus_demangle_v3_type): Call cplus_demangle_v3_all.

	* cplus-dem.c (cplus_demangle_v3_p): New function pointer.
	Initialized to cplus_demangle_v3.
	(cplus_demangle_with_style): Call cplus_demangle_v3_p instead
	of cplus_demangle_v3.
	(main): Set cplus_demangle_v3_p to cplus_demangle_v3_type for
	command line symbol.

	* testsuite/regress-demangle: Pass the mangled name at the
	command line.

From-SVN: r49456
2002-02-02 20:00:36 -08:00