From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 63073 invoked by alias); 27 Nov 2017 10:23:39 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 63059 invoked by uid 89); 27 Nov 2017 10:23:38 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.7 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KB_WAM_FROM_NAME_SINGLEWORD,RCVD_IN_DNSWL_NONE,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=experts, Experts, Hx-languages-length:2205, Personally X-HELO: mail.kdab.com Received: from mail.kdab.com (HELO mail.kdab.com) (176.9.126.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 27 Nov 2017 10:23:34 +0000 From: Milian Wolff To: Ian Lance Taylor Cc: GCC Subject: bugs in external debug info support in libbacktrace Date: Mon, 27 Nov 2017 10:23:00 -0000 Message-ID: <5149137.Ncrl3keaZR@milian-kdab2> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart27493911.yI2ytnc88D"; micalg="sha256"; protocol="application/pkcs7-signature" X-SW-Source: 2017-11/txt/msg00155.txt.bz2 --nextPart27493911.yI2ytnc88D Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Content-length: 2219 Hey Ian, others, I was made aware that libbacktrace got support for external debug info with [1], great work! I have just synced the latest libbacktrace into heaptrack [2] in a local branch and played around with it and noticed two limitations: [1]: https://github.com/gcc-mirror/gcc/commit/ b919941efc58035debbcf69b645c072b7dd6ba4e [2]: https://github.com/KDE/heaptrack a) elf_open_debugfile_by_debuglink checks the crc, even if it is not provided by the debug file. I.e. I have a file where `debuglink_crc == 0`, but the got_crc calculated from elf_crc32_file is non-zero. I have patched this locally with the following to make it work for me: diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c index 06823fcf59b..24bf58728fd 100644 --- a/libbacktrace/elf.c +++ b/libbacktrace/elf.c @@ -1005,7 +1005,7 @@ elf_open_debugfile_by_debuglink (struct backtrace_state *state, if (ddescriptor < 0) return -1; - got_crc = elf_crc32_file (state, ddescriptor, error_callback, data); + got_crc = debuglink_crc ? elf_crc32_file (state, ddescriptor, error_callback, data) : 0; if (got_crc != debuglink_crc) { backtrace_close (ddescriptor, error_callback, data); b) elf_add guards the code to inspect the symtab-shndx with a `&& !debuginfo` check in loc 2797. This results in all files with separate debug info yielding `found_sym = 0` when calling elf_add, and symbol resolution is broken. Personally I have patched this check out to make symbol resolution work for me: diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c index 06823fcf59b..6876bd3ed8e 100644 --- a/libbacktrace/elf.c +++ b/libbacktrace/elf.c @@ -2794,7 +2794,7 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor, if (symtab_shndx == 0) symtab_shndx = dynsym_shndx; - if (symtab_shndx != 0 && !debuginfo) + if (symtab_shndx != 0) { const b_elf_shdr *symtab_shdr; unsigned int strtab_shndx; Could you please check whether the two patches above could be upstreamed? Thanks a lot for your work -- Milian Wolff | milian.wolff@kdab.com | Senior Software Engineer KDAB (Deutschland) GmbH&Co KG, a KDAB Group company Tel: +49-30-521325470 KDAB - The Qt Experts --nextPart27493911.yI2ytnc88D Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 Content-length: 5190 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG 9w0BBwEAAKCCDEIwggXmMIIDzqADAgECAhBqm+E4O/8ra58B1dm4p1JWMA0G CSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRl ciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P RE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eTAeFw0xMzAxMTAwMDAwMDBaFw0yODAxMDkyMzU5NTla MIGXMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy MRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRl ZDE9MDsGA1UEAxM0Q09NT0RPIFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24g YW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAL6znlesKHZ1QBbHOAOY08YYdiFQ8yV5C0y1oNF9Olg+nKcxLqf2 NHbZhGra0D00SOTq9bus3/mxgUsg/Wh/eXQ0pnp8tZ8XZWAnlyKMpjL+qUBy RjXCA6RQyDMqVaVUkbIr5SU0RDX/kSsKwer3H1pT/HUrBN0X8sKtPTdGX8XA Wt/VdMLBrZBlgvnkCos+KQWWCo63OTTqRvaq8aWccm+KOMjTcE6s2mj6Rkal weyDI7X+7U5lNo6jzC8RTXtVV4/Vwdax720YpMPJQaDaElmOupyTf1Qib+cp ukNJnQmwygjD8m046DQkLnpXNCAGjuJy1F5NATksUsbfJAr7FLUCAwEAAaOC ATwwggE4MB8GA1UdIwQYMBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1Ud DgQWBBSCr2yM+MX+lmF86B89K3FIXsSLwDAOBgNVHQ8BAf8EBAMCAYYwEgYD VR0TAQH/BAgwBgEB/wIBADARBgNVHSAECjAIMAYGBFUdIAAwTAYDVR0fBEUw QzBBoD+gPYY7aHR0cDovL2NybC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQ2Vy dGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwcQYIKwYBBQUHAQEEZTBjMDsGCCsG AQUFBzAChi9odHRwOi8vY3J0LmNvbW9kb2NhLmNvbS9DT01PRE9SU0FBZGRU cnVzdENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2Eu Y29tMA0GCSqGSIb3DQEBDAUAA4ICAQB4XLKBKDRPPO5fVs6fl1bsj6JrF/bz 9kkIBtTYLzXN30D+03Hj6OxCDBEaIeNmsBhrJmuubvyE7HtoSmR809AgcYbo W+rcTNZ/8u/Hv+GTrNI/AhqX2/kiQNxmgUPt/eJPs92Qclj0HnVyy9TnSvGk SDU7I5Px+TbO+88G4zipA2psZaWeEykgzClZlPz1FjTCkk77ZXp5cQYYexE6 zeeN4/0OqqoAloFrjAF4o50YJafX8mnahjp3I2Y2mkjhk0xQfhNqbzlLWPoT 3m7j7U26u7zg6swjOq8hITYc3/np5tM5aVyu6t99p17bTbY7+1RTWBviN9YJ zK8HxzObXYWBf/L+VGOYNsQDTxAk0Hbvb1j6KjUhg7fO294F29QIhhmiNOr8 4JHoy+fNLpfvYc/Q9EtFOI5ISYgOxLk3nD/whbUe9rmEQXLp8MB933Ij474g wwCPUpwv9mj2PMnXoc7mbrS22XUSeTwxCTP9bcmUdp4jmIoWfhQm7X9w/Zgd dg+JZ/YnIHOwsGsaTUgj7fIvxqith7DoJC91WJ8Lce3CVJqb1XWeKIJ84F7Y LXZN0oa7TktYgDdmQVxYkZo1c5noaDKH9Oq9cbm/vOYRUM1cWcef20Wkyk5S /GFyyPJwG0fR1nRas3DqAf4cXxMiEKcff7PNa4M3RGTqH0pWR8p6EjCCBlQw ggU8oAMCAQICEAf6KCF9+1doL2oEOTPysLwwDQYJKoZIhvcNAQELBQAwgZcx CzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0w OwYDVQQDEzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMB4XDTE3MDUyMzAwMDAwMFoXDTIwMDUyMjIzNTk1 OVowggFZMQswCQYDVQQGEwJTRTEPMA0GA1UEERMGNjgzIDMxMRIwEAYDVQQI EwlWYWVybWxhbmQxEDAOBgNVBAcTB0hhZ2ZvcnMxGDAWBgNVBAkTD05vcnJp bmdzIHZhZWcgMjEPMA0GA1UEEhMGQm94IDMwMSYwJAYDVQQKDB1LbGFyw6Rs dmRhbGVucyBEYXRha29uc3VsdCBBQjEdMBsGA1UECxMUQSBLREFCIEdyb3Vw IENvbXBhbnkxQzBBBgNVBAsMOklzc3VlZCB0aHJvdWdoIEtsYXLDpGx2ZGFs ZW5zIERhdGFrb25zdWx0IEFCIEUtUEtJIE1hbmFnZXIxHzAdBgNVBAsTFkNv cnBvcmF0ZSBTZWN1cmUgRW1haWwxFTATBgNVBAMTDE1pbGlhbiBXb2xmZjEk MCIGCSqGSIb3DQEJARYVbWlsaWFuLndvbGZmQGtkYWIuY29tMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxrzfNBVvRbiAknuTBXuQnNm9sLIF Lo0vbPB6kswk78A3tA++Zn5clQUHhGlQq1cdYxagnUpqwvG3Sod15mPSOLkA Pf/mabLN7p+lFbRaUP+97ZkTZtvb4BCC3osIEFI4G393OSFWqc2qmIPE/SwS ASbAA20Fcaa2M6P1lhOk/ttUh2jIurTPF0wUycIA7lBddrOgaOA8e2m6iLTN HtlrfRbBaUX91D5ebY+UWmIjXSQ9+CtutMzBkwnF0rZKririvOkklg9VzEGN QVHrQfDF2s/UpOtmtuVSwElauGT/KALyCFuIrYC1pmaKH8S1xODJqiRaf6jH 8E+KQzKjyM/ErwIDAQABo4IB1TCCAdEwHwYDVR0jBBgwFoAUgq9sjPjF/pZh fOgfPStxSF7Ei8AwHQYDVR0OBBYEFN+m99RtIuA1bSdw6b1brOX7X3AJMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF BwMEBggrBgEFBQcDAjBGBgNVHSAEPzA9MDsGDCsGAQQBsjEBAgEDBTArMCkG CCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21vZG8ubmV0L0NQUzBaBgNV HR8EUzBRME+gTaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9S U0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGL BggrBgEFBQcBAQR/MH0wVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuY29tb2Rv Y2EuY29tL0NPTU9ET1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJl RW1haWxDQS5jcnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2Nh LmNvbTAgBgNVHREEGTAXgRVtaWxpYW4ud29sZmZAa2RhYi5jb20wDQYJKoZI hvcNAQELBQADggEBABf47LSJADqH+ow9INv3QM1NC/qq2bjxGvsZ68iD11VE UAFlsYfsVTgQqUirwPVTYenXtwVBELHZyywsui1JxL7HKQetLQegDDP/Ryfj ReVaWxhy3OpuItsgLVbru9QVgPifnoBFPtfZcwjeJDmeSbLT8oj4Rd0KYBOI ve7WKvsfNPsNwfbLwY2zILkELjxZcVi2AwZHDyab+dzL/3YcLuJj1lSawBGn 7ilpcdZydlv4aye51pD/MemLIYLcylt+ImrmjnTVy+QlAHRF3s5FE8yAr+W1 MBD/1bKZCSgFt8VQoAlz3hiQh8QqZp4Zl8WuVL4+mP/mT6VDEWgq/0Bocukx ggJuMIICagIBATCBrDCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N T0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1 dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEAf6KCF9+1doL2oE OTPysLwwDQYJYIZIAWUDBAIBBQCggZMwGAYJKoZIhvcNAQkDMQsGCSqGSIb3 DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcxMTI3MTAyMzI4WjAoBgkqhkiG9w0B CQ8xGzAZMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAvBgkqhkiG9w0BCQQx IgQgnBYdtu7tIJa7QqcOwY/10vYWYHfG3HvPA6k8b8CRPikwDQYJKoZIhvcN AQEBBQAEggEApEUJ3NzuAU2vbo3ag5LvnF1TijgjPQ0lYz7LtVtcjrEasIFD egrIQx8QVr8sJVkrNVAYmmNu9RXpP5fkjsjSUHoaHJyqUR9qmz20ORdCh2SE DE85b7xcN+BGWaxsEGFXiYYiA8SldnKHQErOBMdHBkUAGvzfgXf81xiQIMbU hs3nCqjfcoHpZ6A0z1iUlErzjKdofbc/uw2M6Oq+T1xEER28elLmh918EAWe 0BWR+JFQRQlTO5SwycIZj/ljeQ/0iO4G8cLfSdpjtSC3QXMN3v2yv4xSe8FT Vvg+TVFoVzrEV947SkNclRudeKvUpi9egX5hBIqkeIdbQ+ZYUWZHdQAAAAAA AA== --nextPart27493911.yI2ytnc88D--