From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12475 invoked by alias); 9 Jan 2014 23:46:25 -0000 Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org Received: (qmail 12386 invoked by uid 89); 9 Jan 2014 23:46:24 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail.kdab.com Received: from mail.kdab.com (HELO mail.kdab.com) (188.40.50.12) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 09 Jan 2014 23:46:23 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.kdab.com (Postfix) with ESMTP id 82077148107F for ; Fri, 10 Jan 2014 00:46:19 +0100 (CET) Received: from mail.kdab.com ([127.0.0.1]) by localhost (mail.kdab.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YkpLLqjYwXRP for ; Fri, 10 Jan 2014 00:46:18 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mail.kdab.com (Postfix) with ESMTP id 3AB571481081 for ; Fri, 10 Jan 2014 00:46:18 +0100 (CET) Message-ID: <52CF34C9.1060509@kdab.com> Date: Thu, 09 Jan 2014 23:46:00 -0000 From: Giuseppe D'Angelo User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: gcc-help@gcc.gnu.org Subject: -Bsymbolic-functions breaks PMF comparison under ARM Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms090801030703010502020805" X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00032.txt.bz2 This is a cryptographically signed message in MIME format. --------------ms090801030703010502020805 Content-Type: multipart/mixed; boundary="------------060401050609070601040701" This is a multi-part message in MIME format. --------------060401050609070601040701 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Content-length: 1080 Hello, the attached program changes the output from "true" to "false" when the=20 -Bsymbolic / -Bsymbolic-functions options are passed to GCC. This=20 happens on ARM -- on x86-64 output is always "true". The program involves a comparison, within a shared library, of a PMF=20 defined inside the shared library itself with the same PMF passed by the=20 application. At this stage I still don't know if it's a GCC problem, a ld.so problem,=20 ABI constraints, undefined behaviour, or whatnot; but any help is=20 appreciated. Compile with: > g++ -fPIC -shared -Wall -o libshared.so -Wl,-Bsymbolic shared.cpp > g++ -fPIE -Wall -o main main.cpp -L. -lshared (The long story is that Qt 5 is taking PMFs in its public API, and the=20 comparison failing inside of Qt shared libraries is breaking code on=20 ARM, as -Bsymbolic is set by default there.) Thanks, --=20 Giuseppe D'Angelo | giuseppe.dangelo@kdab.com | Software Engineer KDAB (UK) Ltd., a KDAB Group company Tel. UK +44-1738-450410, Sweden (HQ) +46-563-540090 KDAB - Qt Experts - Platform-independent software solutions --------------060401050609070601040701 Content-Type: text/x-c++src; name="main.cpp" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="main.cpp" Content-length: 266 #include #include "shared.h" =20 struct T : S { T() { foo(); } }; =20 bool magic(Spmf f) { return test(reinterpret_cast(&f)); } =20 int main() { using namespace std; T t; cout << boolalpha << magic(&T::foo) << endl; } --------------060401050609070601040701 Content-Type: text/x-c++src; name="shared.cpp" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="shared.cpp" Content-length: 431 #include "shared.h" #include =20 S::~S() {} void S::foo() {} void S::bar() {} =20 static const Spmf spmfArray[] =3D { 0, &S::foo, 0 }; static const size_t spmfArraySize =3D sizeof(spmfArray) / sizeof(spmfArray[= 0]); =20 bool test(void **f) { for (size_t i =3D 0; i < spmfArraySize; ++i) { if (spmfArray[i] =3D=3D *reinterpret_cast(f)) return true; } =20=20=20 return false; } =20 --------------060401050609070601040701 Content-Type: text/x-chdr; name="shared.h" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="shared.h" Content-length: 181 #ifndef SHARED_H #define SHARED_H =20 struct S { virtual ~S(); void foo(); void bar(); }; =20 typedef void (S::*Spmf)(); =20 bool test(void **f); =20 #endif // SHARED_H --------------060401050609070601040701-- --------------ms090801030703010502020805 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: Firma crittografica S/MIME Content-length: 5490 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEH AQAAoIILeTCCBRowggQCoAMCAQICEG0Z6qcZT2ozIuYiMnqqcd4wDQYJKoZI hvcNAQEFBQAwga4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UE BxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0 d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMTYwNAYD VQQDEy1VVE4tVVNFUkZpcnN0LUNsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg RW1haWwwHhcNMTEwNDI4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjCBkzELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxOTA3BgNV BAMTMENPTU9ETyBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBF bWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJKEhFtL V5jUXi+LpOFAyKNTWF9mZfEyTvefMn1V0HhMVbdClOD5J3EHxcZppLkyxPFA GpDMJ1Zifxe1cWmu5SAb5MtjXmDKokH2auGj/7jfH0htZUOMKi4rYzh337EX rMLaggLW1DJq1GdvIBOPXDX65VSAr9hxCh03CgJQU2yVHakQFLSZlVkSMf8J otJM3FLb3uJAAVtIaN3FSrTg7SQfOq9xXwfjrL8UO7AlcWg99A/WF1hGFYE8 aIuLgw9teiFX5jSw2zJ+40rhpVJyZCaRTqWSD//gsWD9Gm9oUZljjRqLpcxC m5t9ImPTqaD8zp6Q30QZ9FxbNboW86eb/8ECAwEAAaOCAUswggFHMB8GA1Ud IwQYMBaAFImCZ33EnSZwAEu0UEh83j2uBG59MB0GA1UdDgQWBBR6E04AdFvG eGNkJ8Ev4qBbvHnFezAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB /wIBADARBgNVHSAECjAIMAYGBFUdIAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0 cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtQ2xpZW50QXV0 aGVudGljYXRpb25hbmRFbWFpbC5jcmwwdAYIKwYBBQUHAQEEaDBmMD0GCCsG AQUFBzAChjFodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVROQWRkVHJ1c3RD bGllbnRfQ0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1 c3QuY29tMA0GCSqGSIb3DQEBBQUAA4IBAQCF1r54V1VtM39EUv5C1QaoAQOA ivsNsv1Kv/avQUn1G1rF0q0bc24+6SZ85kyYwTAo38v7QjyhJT4KddbQPTmG ZtGhm7VNm2+vKGwdr+XqdFqo2rHA8XV6L566k3nK/uKRHlZ0sviN0+BDchvt j/1gOSBH+4uvOmVIPJg9pSW/ve9g4EnlFsjrP0OD8ODuDcHTzTNfm9C9YGqz O/761Mk6PB/tm/+bSTO+Qik5g+4zaS6CnUVNqGnagBsePdIaXXxHmaWbCG0S mYbWXVcHG6cwvktJRLiQfsrReTjrtDP6oDpdJlieYVUYtCHVmdXgQ0BCML7q peeU0rD+83X5f27nMIIGVzCCBT+gAwIBAgIQbW+YpthfoRy1+O78c5tipjAN BgkqhkiG9w0BAQUFADCBkzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N T0RPIENBIExpbWl0ZWQxOTA3BgNVBAMTMENPTU9ETyBDbGllbnQgQXV0aGVu dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTAeFw0xMzA1MzEwMDAwMDBa Fw0xNjA1MzAyMzU5NTlaMIIBYjELMAkGA1UEBhMCU0UxDzANBgNVBBETBjY4 MyAzMTESMBAGA1UECBMJVmFlcm1sYW5kMRAwDgYDVQQHEwdIYWdmb3JzMRgw FgYDVQQJEw9Ob3JyaW5ncyB2YWVnIDIxDzANBgNVBBITBkJveCAzMDEmMCQG A1UECgwdS2xhcsOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIxHTAbBgNVBAsT FEEgS0RBQiBHcm91cCBDb21wYW55MUMwQQYDVQQLDDpJc3N1ZWQgdGhyb3Vn aCBLbGFyw6RsdmRhbGVucyBEYXRha29uc3VsdCBBQiBFLVBLSSBNYW5hZ2Vy MR8wHQYDVQQLExZDb3Jwb3JhdGUgU2VjdXJlIEVtYWlsMRowGAYDVQQDExFH aXVzZXBwZSBEJ0FuZ2VsbzEoMCYGCSqGSIb3DQEJARYZZ2l1c2VwcGUuZGFu Z2Vsb0BrZGFiLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AM/Par2wcg53FGGYUKg3fVoYyzqY0oJ8jHsHGRZbyamc/1DJKjc8s1F/cMet 4BkAECzRdw1111ftqWmzjkGqcjR5Io8K0hu9ZIm3/fX/2LL/L9rj7cSQi2SA m2+CERH8gNYthcEC2ntchqXyAtcR0M7hOVAJU47kDTkcTgskXAFfbcS/WXo/ f9TDhDNHu0mtdYMlQJ1GJ/664mdDy/mvg4lnfOQM5nEKJ5i0GenddaNoJAhT /0cyTqKANaoo0ZfFj/BrNwpg4+OjiMv6iz0fIkhJZEPBuLFFQDBIwj62sgyr ksRkQjCNGTkqKrmvEsTZCjnV8qSS2NKHlaP1qa9U6AUCAwEAAaOCAdMwggHP MB8GA1UdIwQYMBaAFHoTTgB0W8Z4Y2QnwS/ioFu8ecV7MB0GA1UdDgQWBBQ8 BEtH0oYzefOBkeLBvzJJjz9zFDAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/ BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwRgYDVR0gBD8w PTA7BgwrBgEEAbIxAQIBAwUwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1 cmUuY29tb2RvLm5ldC9DUFMwVwYDVR0fBFAwTjBMoEqgSIZGaHR0cDovL2Ny bC5jb21vZG9jYS5jb20vQ09NT0RPQ2xpZW50QXV0aGVudGljYXRpb25hbmRT ZWN1cmVFbWFpbENBLmNybDCBiAYIKwYBBQUHAQEEfDB6MFIGCCsGAQUFBzAC hkZodHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01PRE9DbGllbnRBdXRoZW50 aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3J0MCQGCCsGAQUFBzABhhhodHRw Oi8vb2NzcC5jb21vZG9jYS5jb20wJAYDVR0RBB0wG4EZZ2l1c2VwcGUuZGFu Z2Vsb0BrZGFiLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAJ/yuRXS5ZpqHQATC 37anVHtXrRfY/9YvFG06Hp7QC2zSZMsMYG03f4s/VsK2PUJu+9HWvZG2/6Av 47SGLKJzIph4Srt63eP/auK4fMDKlAvXzwgjsqwY8SKIFR4PP1bWORByxS2G 2qTSbQ/tbxARcmn10dBYKPCfHM/tMz8pwYfNu575/x0qMOxeRD87QjdVj53x 4DFLdKmuMWOSJH8PucIPTWuCuteSvTxake2ONW2t5bh9x5vNCIMAi/3ATXPu FWntGlRWMSWf5lR9GH/MBZFk1Syx68wan+B9X6FoVfL85ejhOXsoJ9qZ1oYA QlMwv6LeX5VcfPoA41DT6KiEqjGCBBkwggQVAgEBMIGoMIGTMQswCQYDVQQG EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT YWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE5MDcGA1UEAxMw Q09NT0RPIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWls IENBAhBtb5im2F+hHLX47vxzm2KmMAkGBSsOAwIaBQCgggJFMBgGCSqGSIb3 DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE0MDEwOTIzNDYx N1owIwYJKoZIhvcNAQkEMRYEFA+3uKyFfj1inHm1+GkgAh0dN5nMMGwGCSqG SIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG 9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcw DQYIKoZIhvcNAwICASgwgbkGCSsGAQQBgjcQBDGBqzCBqDCBkzELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMH U2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxOTA3BgNVBAMT MENPTU9ETyBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFp bCBDQQIQbW+YpthfoRy1+O78c5tipjCBuwYLKoZIhvcNAQkQAgsxgauggagw gZMxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIx EDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVk MTkwNwYDVQQDEzBDT01PRE8gQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBT ZWN1cmUgRW1haWwgQ0ECEG1vmKbYX6Ectfju/HObYqYwDQYJKoZIhvcNAQEB BQAEggEADf8yCt6eNJOfVZL1DY/wYnE9nDFRYnV5PFDVO+vWMKuTQaugV8R3 ZiRMUULOm3ahDYEXMsjVcAYaMMYC0O4PeSyWyeN+TnrxJuNax+S0JkU/vHzv uH2Zt/rHYInVeP+7qHWXWKEq82f5rtiP7WhR7aC3T0Ux4drRcVrahxOSxLrO ZMfOlryze6nFoqdW4XLSyPSIQhURsBotz0Kr+twxGlYdjamJTMpnOZEECno2 fWJQ4mS/MZz0nfpB+7zIKkoZzbWL9CB5LyYfnVaqhTlBkVZhuG6fCk4x0emq oykP5djHkOqdnR6aMfNHb7/dArpcQTqV9Xf9+5AgugKFyiTLAwAAAAAAAA== --------------ms090801030703010502020805--