diff mbox

[7/7] Fix several crashes in d_find_pack

Message ID 559AD9C2.9000805@gmail.com
State New
Headers show

Commit Message

Mikhail Maltsev July 6, 2015, 7:40 p.m. UTC
---
 libiberty/cp-demangle.c               |  3 +++
 libiberty/testsuite/demangle-expected | 12 ++++++++++++
 2 files changed, 15 insertions(+)

Comments

Jeff Law July 7, 2015, 10:50 p.m. UTC | #1
On 07/06/2015 01:40 PM, Mikhail Maltsev wrote:
> ---
>   libiberty/cp-demangle.c               |  3 +++
>   libiberty/testsuite/demangle-expected | 12 ++++++++++++
>   2 files changed, 15 insertions(+)
>
> diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
> index 289a704..4ca285e 100644
> --- a/libiberty/cp-demangle.c
> +++ b/libiberty/cp-demangle.c
> @@ -4203,6 +4203,9 @@ d_find_pack (struct d_print_info *dpi,
>       case DEMANGLE_COMPONENT_CHARACTER:
>       case DEMANGLE_COMPONENT_FUNCTION_PARAM:
>       case DEMANGLE_COMPONENT_UNNAMED_TYPE:
> +    case DEMANGLE_COMPONENT_FIXED_TYPE:
> +    case DEMANGLE_COMPONENT_DEFAULT_ARG:
> +    case DEMANGLE_COMPONENT_NUMBER:
>         return NULL;
>
>       case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
> diff --git a/libiberty/testsuite/demangle-expected
> b/libiberty/testsuite/demangle-expected
> index cfa2691..b58cea2 100644
> --- a/libiberty/testsuite/demangle-expected
> +++ b/libiberty/testsuite/demangle-expected
> @@ -4108,6 +4108,18 @@ _ZDTtl
>   --format=gnu-v3
>   _ZZN1fEEd_lEv
>   _ZZN1fEEd_lEv
> +# Handle DEMANGLE_COMPONENT_FIXED_TYPE in d_find_pack
> +--format=gnu-v3
> +DpDFT_
> +DpDFT_
> +# Likewise, DEMANGLE_COMPONENT_DEFAULT_ARG
> +--format=gnu-v3
> +DpZ1fEd_
> +DpZ1fEd_
> +# Likewise, DEMANGLE_COMPONENT_NUMBER (??? result is probably still wrong)
> +--format=gnu-v3
> +DpDv1_c
> +(char __vector(1))...
>   #
>   # Ada (GNAT) tests.
>   #
>
OK with a suitable ChangeLog entry.

FWIW, demangler.com doesn't give any results for that case.  It just 
returns DpDv1_c

Jeff
diff mbox

Patch

diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 289a704..4ca285e 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -4203,6 +4203,9 @@  d_find_pack (struct d_print_info *dpi,
     case DEMANGLE_COMPONENT_CHARACTER:
     case DEMANGLE_COMPONENT_FUNCTION_PARAM:
     case DEMANGLE_COMPONENT_UNNAMED_TYPE:
+    case DEMANGLE_COMPONENT_FIXED_TYPE:
+    case DEMANGLE_COMPONENT_DEFAULT_ARG:
+    case DEMANGLE_COMPONENT_NUMBER:
       return NULL;

     case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
diff --git a/libiberty/testsuite/demangle-expected
b/libiberty/testsuite/demangle-expected
index cfa2691..b58cea2 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -4108,6 +4108,18 @@  _ZDTtl
 --format=gnu-v3
 _ZZN1fEEd_lEv
 _ZZN1fEEd_lEv
+# Handle DEMANGLE_COMPONENT_FIXED_TYPE in d_find_pack
+--format=gnu-v3
+DpDFT_
+DpDFT_
+# Likewise, DEMANGLE_COMPONENT_DEFAULT_ARG
+--format=gnu-v3
+DpZ1fEd_
+DpZ1fEd_
+# Likewise, DEMANGLE_COMPONENT_NUMBER (??? result is probably still wrong)
+--format=gnu-v3
+DpDv1_c
+(char __vector(1))...
 #
 # Ada (GNAT) tests.
 #