From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6263 invoked by alias); 3 Sep 2011 21:05:48 -0000 Received: (qmail 6250 invoked by uid 22791); 3 Sep 2011 21:05:47 -0000 X-SWARE-Spam-Status: No, hits=-6.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail4-relais-sop.national.inria.fr (HELO mail4-relais-sop.national.inria.fr) (192.134.164.105) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 03 Sep 2011 21:05:30 +0000 Received: from afontenayssb-151-1-34-201.w82-121.abo.wanadoo.fr (HELO laptop-mg.local) ([82.121.80.201]) by mail4-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 03 Sep 2011 23:05:27 +0200 Date: Sat, 03 Sep 2011 21:05:00 -0000 From: Marc Glisse To: gcc-patches@gcc.gnu.org cc: jason@redhat.com Subject: demangle C++ extern "C" functions Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-849717594-1315083927=:6207" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-09/txt/msg00231.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-849717594-1315083927=:6207 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Content-length: 1322 Hello, this patch is obviously related to PR c++/2316 ("g++ fails to overload on language linkage") but seems fairly independent. Currently, the demangler recognizes 'Y' for extern "C" functions and ignores it. The patch makes it print extern "C" after the function type: _Z1aIFYviEEvPT_ void a(void (*)(int) extern "C") Writing it before the return type seems more natural, but it is ambiguous. I guess it could also be printed in the middle (next to the star that indicates a function pointer), but placing it like the cv-qualifiers of member functions seemed good (plus, that's where Oracle puts it in its implementation of c++filt). Since g++ doesn't generate such mangling, the effect should be hard to notice ;-) (Even if the patch was ok, I am not a committer) 2011-09-03 Marc Glisse * include/demangle.h (demangle_component_type) [DEMANGLE_COMPONENT_EXTERN_C]: Handle extern "C". * libiberty/cp-demangle.c (d_dump): Likewise. (d_make_comp): Likewise. (d_function_type): Likewise. (d_print_comp): Likewise. (d_print_mod_list): Likewise. (d_print_mod): Likewise. (d_print_function_type): Likewise. * libiberty/testsuite/demangle-expected: Test it. -- Marc Glisse --8323329-849717594-1315083927=:6207 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=demangle-patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=demangle-patch Content-length: 6149 SW5kZXg6IGluY2x1ZGUvZGVtYW5nbGUuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIGluY2x1ZGUvZGVtYW5nbGUuaAkocmV2aXNpb24gMTc4NDk4 KQ0KKysrIGluY2x1ZGUvZGVtYW5nbGUuaAkod29ya2luZyBjb3B5KQ0KQEAg LTI4OCw2ICsyODgsOSBAQA0KICAgLyogVGhlIGNvbnN0IHF1YWxpZmllci4g IFRoZSBvbmUgc3VidHJlZSBpcyB0aGUgdHlwZSB3aGljaCBpcyBiZWluZw0K ICAgICAgcXVhbGlmaWVkLiAgKi8NCiAgIERFTUFOR0xFX0NPTVBPTkVOVF9D T05TVCwNCisgIC8qIGV4dGVybiAiQyIgbGlua2FnZS4gIFRoZSBvbmUgc3Vi dHJlZSBpcyB0aGUgZnVuY3Rpb24gdHlwZSB3aGljaA0KKyAgICAgaXMgYmVp bmcgcXVhbGlmaWVkLiAgKi8NCisgIERFTUFOR0xFX0NPTVBPTkVOVF9FWFRF Uk5fQywNCiAgIC8qIFRoZSByZXN0cmljdCBxdWFsaWZpZXIgbW9kaWZ5aW5n IGEgbWVtYmVyIGZ1bmN0aW9uLiAgVGhlIG9uZQ0KICAgICAgc3VidHJlZSBp cyB0aGUgdHlwZSB3aGljaCBpcyBiZWluZyBxdWFsaWZpZWQuICAqLw0KICAg REVNQU5HTEVfQ09NUE9ORU5UX1JFU1RSSUNUX1RISVMsDQpJbmRleDogbGli aWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZA0KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQ0KLS0tIGxpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5n bGUtZXhwZWN0ZWQJKHJldmlzaW9uIDE3ODQ5OCkNCisrKyBsaWJpYmVydHkv dGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkCSh3b3JraW5nIGNvcHkpDQpA QCAtNDE1MSwzICs0MTUxLDggQEANCiAtLWZvcm1hdD1hdXRvDQogX1pOM1Bz aTdWYXJpYW50SUljUEtjRUU1dmlzaXRJSVJaTjExVmFyaWFudFRlc3Q5VGVz dFZpc2l0MTF0ZXN0X21ldGhvZEV2RVVsUzJfRTBfUlpOUzZfMTF0ZXN0X21l dGhvZEV2RVVsY0UxX1JaTlM2XzExdGVzdF9tZXRob2RFdkVVbE5TXzROb25l RUVfRUVFTlNfMTNWYXJpYW50RGV0YWlsMTlTZWxlY3RWaXNpdG9yUmVzdWx0 SUlEcFRfRUU0dHlwZUVEcE9TR18NCiBQc2k6OlZhcmlhbnREZXRhaWw6OlNl bGVjdFZpc2l0b3JSZXN1bHQ8VmFyaWFudFRlc3Q6OlRlc3RWaXNpdDo6dGVz dF9tZXRob2QoKTo6e2xhbWJkYShjaGFyIGNvbnN0KikjMn0mLCBWYXJpYW50 VGVzdDo6VGVzdFZpc2l0Ojp0ZXN0X21ldGhvZCgpOjp7bGFtYmRhKGNoYXIp IzN9JiwgVmFyaWFudFRlc3Q6OlRlc3RWaXNpdDo6dGVzdF9tZXRob2QoKTo6 e2xhbWJkYShQc2k6Ok5vbmUpIzF9Jj46OnR5cGUgUHNpOjpWYXJpYW50PGNo YXIsIGNoYXIgY29uc3QqPjo6dmlzaXQ8VmFyaWFudFRlc3Q6OlRlc3RWaXNp dDo6dGVzdF9tZXRob2QoKTo6e2xhbWJkYShjaGFyIGNvbnN0KikjMn0mLCBW YXJpYW50VGVzdDo6VGVzdFZpc2l0Ojp0ZXN0X21ldGhvZCgpOjp7bGFtYmRh KGNoYXIpIzN9JiwgVmFyaWFudFRlc3Q6OlRlc3RWaXNpdDo6dGVzdF9tZXRo b2QoKTo6e2xhbWJkYShQc2k6Ok5vbmUpIzF9Jj4oKFZhcmlhbnRUZXN0OjpU ZXN0VmlzaXQ6OnRlc3RfbWV0aG9kKCk6OntsYW1iZGEoUHNpOjpOb25lKSMx fSYpLi4uKQ0KKyMNCisjIGV4dGVybiAiQyIgbGlua2FnZSBmb3IgZnVuY3Rp b24gdHlwZXMuDQorLS1mb3JtYXQ9Z251LXYzDQorX1oxYUlGWXZpRUV2UFRf DQordm9pZCBhPHZvaWQgKGludCkgZXh0ZXJuICJDIj4odm9pZCAoKikoaW50 KSBleHRlcm4gIkMiKQ0KSW5kZXg6IGxpYmliZXJ0eS9jcC1kZW1hbmdsZS5j DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gbGliaWJlcnR5L2NwLWRl bWFuZ2xlLmMJKHJldmlzaW9uIDE3ODQ5OCkNCisrKyBsaWJpYmVydHkvY3At ZGVtYW5nbGUuYwkod29ya2luZyBjb3B5KQ0KQEAgLTU5MSw2ICs1OTEsOSBA QA0KICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9DT05TVDoNCiAgICAg ICBwcmludGYgKCJjb25zdFxuIik7DQogICAgICAgYnJlYWs7DQorICAgIGNh c2UgREVNQU5HTEVfQ09NUE9ORU5UX0VYVEVSTl9DOg0KKyAgICAgIHByaW50 ZiAoImV4dGVybiBcIkNcIlxuIik7DQorICAgICAgYnJlYWs7DQogICAgIGNh c2UgREVNQU5HTEVfQ09NUE9ORU5UX1JFU1RSSUNUX1RISVM6DQogICAgICAg cHJpbnRmICgicmVzdHJpY3QgdGhpc1xuIik7DQogICAgICAgYnJlYWs7DQpA QCAtODA3LDYgKzgxMCw3IEBADQogICAgICAgYnJlYWs7DQogDQogICAgICAg LyogVGhlc2UgdHlwZXMgb25seSByZXF1aXJlIG9uZSBwYXJhbWV0ZXIuICAq Lw0KKyAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9FWFRFUk5fQzoNCiAg ICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfVlRBQkxFOg0KICAgICBjYXNl IERFTUFOR0xFX0NPTVBPTkVOVF9WVFQ6DQogICAgIGNhc2UgREVNQU5HTEVf Q09NUE9ORU5UX1RZUEVJTkZPOg0KQEAgLTIzMjQsMTggKzIzMjgsMjIgQEAN CiBkX2Z1bmN0aW9uX3R5cGUgKHN0cnVjdCBkX2luZm8gKmRpKQ0KIHsNCiAg IHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKnJldDsNCisgIGludCBpc19l eHRlcm5fYyA9IDA7DQogDQogICBpZiAoISBkX2NoZWNrX2NoYXIgKGRpLCAn RicpKQ0KICAgICByZXR1cm4gTlVMTDsNCiAgIGlmIChkX3BlZWtfY2hhciAo ZGkpID09ICdZJykNCiAgICAgew0KLSAgICAgIC8qIEZ1bmN0aW9uIGhhcyBD IGxpbmthZ2UuICBXZSBkb24ndCBwcmludCB0aGlzIGluZm9ybWF0aW9uLg0K LQkgRklYTUU6IFdlIHNob3VsZCBwcmludCBpdCBpbiB2ZXJib3NlIG1vZGUu ICAqLw0KKyAgICAgIC8qIEZ1bmN0aW9uIGhhcyBDIGxpbmthZ2UuICAqLw0K KyAgICAgIGlzX2V4dGVybl9jID0gMTsNCiAgICAgICBkX2FkdmFuY2UgKGRp LCAxKTsNCisgICAgICBkaS0+ZXhwYW5zaW9uICs9IHNpemVvZiAiZXh0ZXJu IFwiQ1wiIjsNCiAgICAgfQ0KICAgcmV0ID0gZF9iYXJlX2Z1bmN0aW9uX3R5 cGUgKGRpLCAxKTsNCiAgIGlmICghIGRfY2hlY2tfY2hhciAoZGksICdFJykp DQogICAgIHJldHVybiBOVUxMOw0KKyAgaWYgKGlzX2V4dGVybl9jKQ0KKyAg ICByZXQgPSBkX21ha2VfY29tcCAoZGksIERFTUFOR0xFX0NPTVBPTkVOVF9F WFRFUk5fQywgcmV0LCBOVUxMKTsNCiAgIHJldHVybiByZXQ7DQogfQ0KIA0K QEAgLTM5MjUsNiArMzkzMyw3IEBADQogICAgIGNhc2UgREVNQU5HTEVfQ09N UE9ORU5UX1JFU1RSSUNUX1RISVM6DQogICAgIGNhc2UgREVNQU5HTEVfQ09N UE9ORU5UX1ZPTEFUSUxFX1RISVM6DQogICAgIGNhc2UgREVNQU5HTEVfQ09N UE9ORU5UX0NPTlNUX1RISVM6DQorICAgIGNhc2UgREVNQU5HTEVfQ09NUE9O RU5UX0VYVEVSTl9DOg0KICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9W RU5ET1JfVFlQRV9RVUFMOg0KICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVO VF9QT0lOVEVSOg0KICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9DT01Q TEVYOg0KQEAgLTQ1MzcsNyArNDU0Niw4IEBADQogICAgICAgfHwgKCEgc3Vm Zml4DQogCSAgJiYgKG1vZHMtPm1vZC0+dHlwZSA9PSBERU1BTkdMRV9DT01Q T05FTlRfUkVTVFJJQ1RfVEhJUw0KIAkgICAgICB8fCBtb2RzLT5tb2QtPnR5 cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX1ZPTEFUSUxFX1RISVMNCi0JICAg ICAgfHwgbW9kcy0+bW9kLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9D T05TVF9USElTKSkpDQorCSAgICAgIHx8IG1vZHMtPm1vZC0+dHlwZSA9PSBE RU1BTkdMRV9DT01QT05FTlRfQ09OU1RfVEhJUw0KKwkgICAgICB8fCBtb2Rz LT5tb2QtPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0VYVEVSTl9DKSkp DQogICAgIHsNCiAgICAgICBkX3ByaW50X21vZF9saXN0IChkcGksIG9wdGlv bnMsIG1vZHMtPm5leHQsIHN1ZmZpeCk7DQogICAgICAgcmV0dXJuOw0KQEAg LTQ2MjgsNiArNDYzOCw5IEBADQogICAgIGNhc2UgREVNQU5HTEVfQ09NUE9O RU5UX0NPTlNUX1RISVM6DQogICAgICAgZF9hcHBlbmRfc3RyaW5nIChkcGks ICIgY29uc3QiKTsNCiAgICAgICByZXR1cm47DQorICAgIGNhc2UgREVNQU5H TEVfQ09NUE9ORU5UX0VYVEVSTl9DOg0KKyAgICAgIGRfYXBwZW5kX3N0cmlu ZyAoZHBpLCAiIGV4dGVybiBcIkNcIiIpOw0KKyAgICAgIHJldHVybjsNCiAg ICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfVkVORE9SX1RZUEVfUVVBTDoN CiAgICAgICBkX2FwcGVuZF9jaGFyIChkcGksICcgJyk7DQogICAgICAgZF9w cmludF9jb21wIChkcGksIG9wdGlvbnMsIGRfcmlnaHQgKG1vZCkpOw0KQEAg LTQ3MTEsNiArNDcyNCw3IEBADQogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5U X1JFU1RSSUNUX1RISVM6DQogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1ZP TEFUSUxFX1RISVM6DQogCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NPTlNU X1RISVM6DQorCWNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0VYVEVSTl9DOg0K IAkgIGJyZWFrOw0KIAlkZWZhdWx0Og0KIAkgIGJyZWFrOw0K --8323329-849717594-1315083927=:6207--