Sync libiberty with GCC.
libiberty/ChangeLog: * d-demangle.c (dlang_call_convention): Handle extern Objective-C function calling convention. (dlang_call_convention_p): Likewise. (dlang_type): Likewise. * testsuite/d-demangle-expected: Add coverage tests. * d-demangle.c (dlang_function_args): Append ',' for variadic functions only if parameters were seen before the elipsis symbol. * testsuite/d-demangle-expected: Add coverage test for parameter-less variadic functions. * d-demangle.c (dlang_type): Handle function types only in the context of seeing a pointer type symbol. * testsuite/d-demangle-expected: Update function pointer tests.
This commit is contained in:
parent
56e374a6bc
commit
9d98de835c
3 changed files with 71 additions and 30 deletions
|
@ -1,3 +1,24 @@
|
||||||
|
2016-01-27 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||||
|
|
||||||
|
* d-demangle.c (dlang_call_convention): Handle extern Objective-C
|
||||||
|
function calling convention.
|
||||||
|
(dlang_call_convention_p): Likewise.
|
||||||
|
(dlang_type): Likewise.
|
||||||
|
* testsuite/d-demangle-expected: Add coverage tests.
|
||||||
|
|
||||||
|
2016-01-27 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||||
|
|
||||||
|
* d-demangle.c (dlang_function_args): Append ',' for variadic functions
|
||||||
|
only if parameters were seen before the elipsis symbol.
|
||||||
|
* testsuite/d-demangle-expected: Add coverage test for parameter-less
|
||||||
|
variadic functions.
|
||||||
|
|
||||||
|
2016-01-27 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||||
|
|
||||||
|
* d-demangle.c (dlang_type): Handle function types only in the context
|
||||||
|
of seeing a pointer type symbol.
|
||||||
|
* testsuite/d-demangle-expected: Update function pointer tests.
|
||||||
|
|
||||||
2016-01-05 Mike Frysinger <vapier@gentoo.org>
|
2016-01-05 Mike Frysinger <vapier@gentoo.org>
|
||||||
|
|
||||||
* argv.c (dupargv): Change arg to char * const *. Update comment.
|
* argv.c (dupargv): Change arg to char * const *. Update comment.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Demangler for the D programming language
|
/* Demangler for the D programming language
|
||||||
Copyright 2014, 2015 Free Software Foundation, Inc.
|
Copyright 2014, 2015, 2016 Free Software Foundation, Inc.
|
||||||
Written by Iain Buclaw (ibuclaw@gdcproject.org)
|
Written by Iain Buclaw (ibuclaw@gdcproject.org)
|
||||||
|
|
||||||
This file is part of the libiberty library.
|
This file is part of the libiberty library.
|
||||||
|
@ -223,6 +223,10 @@ dlang_call_convention (string *decl, const char *mangled)
|
||||||
mangled++;
|
mangled++;
|
||||||
string_append (decl, "extern(C++) ");
|
string_append (decl, "extern(C++) ");
|
||||||
break;
|
break;
|
||||||
|
case 'Y': /* (Objective-C) */
|
||||||
|
mangled++;
|
||||||
|
string_append (decl, "extern(Objective-C) ");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -399,7 +403,9 @@ dlang_function_args (string *decl, const char *mangled)
|
||||||
return mangled;
|
return mangled;
|
||||||
case 'Y': /* (variadic T t, ...) style. */
|
case 'Y': /* (variadic T t, ...) style. */
|
||||||
mangled++;
|
mangled++;
|
||||||
string_append (decl, ", ...");
|
if (n != 0)
|
||||||
|
string_append (decl, ", ");
|
||||||
|
string_append (decl, "...");
|
||||||
return mangled;
|
return mangled;
|
||||||
case 'Z': /* Normal function. */
|
case 'Z': /* Normal function. */
|
||||||
mangled++;
|
mangled++;
|
||||||
|
@ -533,6 +539,15 @@ dlang_type (string *decl, const char *mangled)
|
||||||
}
|
}
|
||||||
case 'P': /* pointer (T*) */
|
case 'P': /* pointer (T*) */
|
||||||
mangled++;
|
mangled++;
|
||||||
|
/* Function pointer types don't include the trailing asterisk. */
|
||||||
|
switch (*mangled)
|
||||||
|
{
|
||||||
|
case 'F': case 'U': case 'W':
|
||||||
|
case 'V': case 'R': case 'Y':
|
||||||
|
mangled = dlang_function_type (decl, mangled);
|
||||||
|
string_append (decl, "function");
|
||||||
|
return mangled;
|
||||||
|
}
|
||||||
mangled = dlang_type (decl, mangled);
|
mangled = dlang_type (decl, mangled);
|
||||||
string_append (decl, "*");
|
string_append (decl, "*");
|
||||||
return mangled;
|
return mangled;
|
||||||
|
@ -564,13 +579,6 @@ dlang_type (string *decl, const char *mangled)
|
||||||
mangled++;
|
mangled++;
|
||||||
return dlang_parse_tuple (decl, mangled);
|
return dlang_parse_tuple (decl, mangled);
|
||||||
|
|
||||||
/* Function types */
|
|
||||||
case 'F': case 'U': case 'W':
|
|
||||||
case 'V': case 'R':
|
|
||||||
mangled = dlang_function_type (decl, mangled);
|
|
||||||
string_append (decl, "function");
|
|
||||||
return mangled;
|
|
||||||
|
|
||||||
/* Basic types */
|
/* Basic types */
|
||||||
case 'n':
|
case 'n':
|
||||||
mangled++;
|
mangled++;
|
||||||
|
@ -1334,7 +1342,7 @@ dlang_call_convention_p (const char *mangled)
|
||||||
switch (*mangled)
|
switch (*mangled)
|
||||||
{
|
{
|
||||||
case 'F': case 'U': case 'V':
|
case 'F': case 'U': case 'V':
|
||||||
case 'W': case 'R':
|
case 'W': case 'R': case 'Y':
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -342,6 +342,10 @@ _D8demangle4testFaaYv
|
||||||
demangle.test(char, char, ...)
|
demangle.test(char, char, ...)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
|
_D8demangle4testFYv
|
||||||
|
demangle.test(...)
|
||||||
|
#
|
||||||
|
--format=dlang
|
||||||
_D8demangle4testFaaZv
|
_D8demangle4testFaaZv
|
||||||
demangle.test(char, char)
|
demangle.test(char, char)
|
||||||
#
|
#
|
||||||
|
@ -390,26 +394,34 @@ _D8demangle4testFDRZaZv
|
||||||
demangle.test(extern(C++) char() delegate)
|
demangle.test(extern(C++) char() delegate)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFZaZv
|
_D8demangle4testFDYZaZv
|
||||||
|
demangle.test(extern(Objective-C) char() delegate)
|
||||||
|
#
|
||||||
|
--format=dlang
|
||||||
|
_D8demangle4testFPFZaZv
|
||||||
demangle.test(char() function)
|
demangle.test(char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFUZaZv
|
_D8demangle4testFPUZaZv
|
||||||
demangle.test(extern(C) char() function)
|
demangle.test(extern(C) char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFWZaZv
|
_D8demangle4testFPWZaZv
|
||||||
demangle.test(extern(Windows) char() function)
|
demangle.test(extern(Windows) char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFVZaZv
|
_D8demangle4testFPVZaZv
|
||||||
demangle.test(extern(Pascal) char() function)
|
demangle.test(extern(Pascal) char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFRZaZv
|
_D8demangle4testFPRZaZv
|
||||||
demangle.test(extern(C++) char() function)
|
demangle.test(extern(C++) char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
|
_D8demangle4testFPYZaZv
|
||||||
|
demangle.test(extern(Objective-C) char() function)
|
||||||
|
#
|
||||||
|
--format=dlang
|
||||||
_D8demangle4testFDFNaZaZv
|
_D8demangle4testFDFNaZaZv
|
||||||
demangle.test(char() pure delegate)
|
demangle.test(char() pure delegate)
|
||||||
#
|
#
|
||||||
|
@ -466,59 +478,59 @@ _D8demangle4testFNjNkDFNjZaZv
|
||||||
demangle.test(return char() return delegate)
|
demangle.test(return char() return delegate)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNaZaZv
|
_D8demangle4testFPFNaZaZv
|
||||||
demangle.test(char() pure function)
|
demangle.test(char() pure function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNbZaZv
|
_D8demangle4testFPFNbZaZv
|
||||||
demangle.test(char() nothrow function)
|
demangle.test(char() nothrow function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNcZaZv
|
_D8demangle4testFPFNcZaZv
|
||||||
demangle.test(char() ref function)
|
demangle.test(char() ref function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNdZaZv
|
_D8demangle4testFPFNdZaZv
|
||||||
demangle.test(char() @property function)
|
demangle.test(char() @property function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNeZaZv
|
_D8demangle4testFPFNeZaZv
|
||||||
demangle.test(char() @trusted function)
|
demangle.test(char() @trusted function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNfZaZv
|
_D8demangle4testFPFNfZaZv
|
||||||
demangle.test(char() @safe function)
|
demangle.test(char() @safe function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNiZaZv
|
_D8demangle4testFPFNiZaZv
|
||||||
demangle.test(char() @nogc function)
|
demangle.test(char() @nogc function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNaNbZaZv
|
_D8demangle4testFPFNaNbZaZv
|
||||||
demangle.test(char() pure nothrow function)
|
demangle.test(char() pure nothrow function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNbNaZaZv
|
_D8demangle4testFPFNbNaZaZv
|
||||||
demangle.test(char() nothrow pure function)
|
demangle.test(char() nothrow pure function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNdNfNaZaZv
|
_D8demangle4testFPFNdNfNaZaZv
|
||||||
demangle.test(char() @property @safe pure function)
|
demangle.test(char() @property @safe pure function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFNjFZaZv
|
_D8demangle4testFNjPFZaZv
|
||||||
demangle.test(char() function)
|
demangle.test(char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFNkFZaZv
|
_D8demangle4testFNkPFZaZv
|
||||||
demangle.test(return char() function)
|
demangle.test(return char() function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFFNjZaZv
|
_D8demangle4testFPFNjZaZv
|
||||||
demangle.test(char() return function)
|
demangle.test(char() return function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D8demangle4testFNjNkFNjZaZv
|
_D8demangle4testFNjNkPFNjZaZv
|
||||||
demangle.test(return char() return function)
|
demangle.test(return char() return function)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
|
@ -989,7 +1001,7 @@ object.TypeInfo_Array.argTypes(out TypeInfo, out TypeInfo)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv
|
_D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv
|
||||||
rt.dmain2._d_run_main(int, char**, extern(C) int(char[][]) function*).tryExec(scope void() delegate)
|
rt.dmain2._d_run_main(int, char**, extern(C) int(char[][]) function).tryExec(scope void() delegate)
|
||||||
#
|
#
|
||||||
--format=dlang
|
--format=dlang
|
||||||
_D6object9Exception6__ctorMFNaNbNfAyaAyamC6object9ThrowableZC9Exception
|
_D6object9Exception6__ctorMFNaNbNfAyaAyamC6object9ThrowableZC9Exception
|
||||||
|
|
Loading…
Reference in a new issue