From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 100782 invoked by alias); 17 Oct 2019 12:37:17 -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 100774 invoked by uid 89); 17 Oct 2019 12:37:17 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: =?ISO-8859-1?Q?No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 spammy=Mnchen, 8:Ge, 8:St, 8:f=c3?= X-HELO: mail.marco.de Received: from mail.marco.de (HELO mail.marco.de) (93.104.247.36) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 Oct 2019 12:37:15 +0000 Received: from mailbox.marco.de (mailbox [10.1.2.4]) by mail.marco.de (Postfix) with ESMTP id 3F4A7762167 for ; Thu, 17 Oct 2019 14:37:13 +0200 (CEST) Received: from [10.1.1.28] (rhea.dachau.marco.de [10.1.1.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: leo) by mailbox.marco.de (Postfix) with ESMTPSA for ; Thu, 17 Oct 2019 14:37:13 +0200 (CEST) Subject: Re: Crash when cross compiling for ARM with GCC-8-2-0 and -ftree-loop-distribute-patterns To: gcc-help@gcc.gnu.org References: <20191016131759.GA11171@raven.inka.de> <5b75d9aa-9f33-2ec6-ff46-713b113b3539@gmail.com> <20191017113157.GC11171@raven.inka.de> From: Matthias Pfaller Openpgp: preference=signencrypt Message-ID: Date: Thu, 17 Oct 2019 12:37:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <20191017113157.GC11171@raven.inka.de> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="------------ms080409060403030602010606" X-IsSubscribed: yes X-SW-Source: 2019-10/txt/msg00066.txt.bz2 This is a cryptographically signed message in MIME format. --------------ms080409060403030602010606 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Content-length: 4721 On 10/17/19 1:31 PM, Josef Wolf wrote: > Thanks for your Help, Martin! >=20 > On Wed, Oct 16, 2019 at 12:18:15PM -0600, Martin Sebor wrote: >> On 10/16/19 7:17 AM, Josef Wolf wrote: >>> Hello all, >>> >>> I experience target crashing when cross compiling for ARM with >>> -ftree-loop-distribute-patterns, which is enabled by the -O3 flag. >>> >>> The crash happens in the startup code, before main() is called. This st= artup >>> code looks like this: >>> >>> extern unsigned long _sidata; /* Set by the linker */ >>> extern unsigned long _sdata; /* Set by the linker */ >>> extern unsigned long _sbss; /* Set by the linker */ >>> extern unsigned long _ebss; /* Set by the linker */ >>> void Reet_Handler (void) >>> { >>> unsigned long *src =3D &_sidata >>> unsigned long *src =3D &_sdata >>> /* Copy data segment into RAM */ >>> if (src !=3D dst) { >>> while (dst < &_edata) >>> *(dst++) =3D *(src++); >>> } >>> /* Zero BSS segment */ >>> dst =3D &_sbss; >>> while (dst < &_ebss) >>> *(dst++) =3D 0; >>> main(); >>> } >>> >>> >>> With -ftree-loop-distribute-patterns those two loops are replaced by ca= lls to >>> memcpy() and memset(). >>> >>> The memcpy function finishes just fine. But the memset function doesn't= seem >>> to finish. It looks like this: >>> >>> void memset (void *s, int c, size_t n) >>> { >>> int i; >>> for (i=3D0; i>> ((char *)s)[i] =3D c; >>> } >> >> This is probably not the cause of the crash but it's worth keeping >> in mind. The standard memset function returns void* and (unless >> disabled) recent versions of GCC will issue a warning: >=20 > Ooops! >=20 > This was actually my fault. Since the computer doesn't have network, I > had typed the code by hand into the mail. >=20 > Although I double-checked multiple times, I managed to introduce several > typos :-/// >=20 > Sorry for the confusion! >=20 >=20 > The code of Reset_Handler() and memset() actually looks like this: >=20 > void Reset_Handler (void) > { > unsigned long *src =3D &_sidata > unsigned long *dst =3D &_sdata >=20 > /* Copy data segment into RAM */ > if (src !=3D dst) { > while (dst < &_edata) > *(dst++) =3D *(src++); > } >=20 > /* Zero BSS segment */ > dst =3D &_sbss; > while (dst < &_ebss) > *(dst++) =3D 0; >=20=20 > main(); > } >=20 > void *memset (void *s, int c, size_t n) > { > int i; > for (i=3D0; i /* B */ ((char *)s)[i] =3D c; >=20=20=20=20 > /* B */ return s; > } >=20 >>> Any ideas why this function is crashing? I can't see anything suspiciou= s here. >> >> I doubt it's the cause of the crash either but only addresses of >> bytes of the same object can be used in relational expressions >> (i.e., the two less-than controlling expressions). >=20 > Hmm, you are talking about the two loops in Reset_Handler(), right? >=20 >> Using address to unrelated objects is undefined. >=20 > Hmmm... I am not an expert on this topic. But I tend to think the BSS seg= ment > is an object, which in turn is an array of uint8_t and/or uint32_t. > Taking the address one past the last element of an array for comparison is > a perfectly valid operation, AFAIK. >=20 > So what would be the proper way to communicate the dimensions of the BSS > segment from the linker to the runtime of the compiled program? >=20 > The memset() function is called with the right parameters. And it seems to > work when I single-step it on instruction level (that is, "stepi" command= in > gdb). But it crashes if I set breakpints to the two instructions marked a= bove > and use the "cont" statement or the "step" statement in gdb. >=20 Have a look at "arm-eabi-objdump -S -d main.elf". Sometimes this is quite revealing. Are you using openocd or something similar for debugging? You are compiling for a cortex-m0/3/4? Are you single stepping through the complete startup sequence or do set a break point ath the top of memset (i.e. are break points working at all)? Interrupts are still disabled? Why is the stack pointer so low at this point of execution? Using 0x20018000-0x20017d20 =3D=3D 0x2e0 bytes of stack seems a little excessive for just one call. I usually start toggling output lines when I'm stuck like this... Matthias --=20 Matthias Pfaller Software Entwicklung marco Systemanalyse und Entwicklung GmbH Tel +49 8131 5161 41 Hans-B=C3=B6ckler-Str. 2, D 85221 Dachau Fax +49 8131 5161 66 http://www.marco.de/ Email leo@marco.de Gesch=C3=A4ftsf=C3=BChrer Martin Reuter HRB 171775 Amtsgericht = M=C3=BCnchen --------------ms080409060403030602010606 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature Content-length: 4868 MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG 9w0BBwEAAKCCCxIwggUkMIIEDKADAgECAhEAwJ0c2FQOFli8qfnl2jSguTAN BgkqhkiG9w0BAQsFADCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0 ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N T0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1 dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwHhcNMTgxMDI1MDAw MDAwWhcNMTkxMDI1MjM1OTU5WjAdMRswGQYJKoZIhvcNAQkBFgxsZW9AbWFy Y28uZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEyBWD4ec9 uDQgcudef14eU/d6xNm37v0H06RVz/05OH06hv38DuR7paoA7qJsyBTZTUDO qRrAfL4xTTkf4rXC9h+93pRqIu646XQ3mUM3Zv7MjB32VxI26DrAOy6kxMbI p4o+NPaaWCJds2SvLQre8szvHexKhALn2bTvGcaREBFVQNmdc4NdSNR5BWKc cKQryJQEPow1t4Q3JjvBlKZJKLS+/p2mCOxnC6C/3J2P/AtPgdSmBSMuJVWC i4HLb34iQAmso/U4hQd6N8K0zkXyTL0g+BE/xAemu8uMjruZudsaaHB0rtC6 4lGUn3sCNZUr4cpXkuSxkzj2Od8BcN3NAgMBAAGjggHiMIIB3jAfBgNVHSME GDAWgBSCr2yM+MX+lmF86B89K3FIXsSLwDAdBgNVHQ4EFgQU6GYOqAGKNbnv 3wqp4PQR4MMqWucwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwIAYD VR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUCMBEGCWCGSAGG+EIBAQQE AwIFIDBGBgNVHSAEPzA9MDsGDCsGAQQBsjEBAgEBATArMCkGCCsGAQUFBwIB Fh1odHRwczovL3NlY3VyZS5jb21vZG8ubmV0L0NQUzBaBgNVHR8EUzBRME+g TaBLhklodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9SU0FDbGllbnRB dXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGLBggrBgEFBQcB AQR/MH0wVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NP TU9ET1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5j cnQwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTAXBgNV HREEEDAOgQxsZW9AbWFyY28uZGUwDQYJKoZIhvcNAQELBQADggEBAEEtpIWh 1gzcn412jnb0NNDk/C+PQ/hD64hIjbJ96o1aODCdoimlNbf/MKnKa/9Q2eIg 1drMIWmunhri5aNhoU9L9J5Vq5DJJ0/VRutM6jecD1HOSC57d/13GdikVuqu Ou+ayKqGhVjLGHoK4+syi+AQ5VhaeZpYiFZ5Jw40B2fPChxaQeEJuFTjPdIP aC3sZCJLIk/3g5vIE3qKRgO7Lr2VYxoTQMxDujhDxroJeG1XrT4JWcQ/A6Xy HPmaIInPel67zZXGnzb/ICH9XKuBfrm0d2YQFb/8m4UQTFnAqW5QamtL1pA9 gdvmn90I4wcxIg+v8B95zadX+1MssGJDLaYwggXmMIIDzqADAgECAhBqm+E4 O/8ra58B1dm4p1JWMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3Jk MRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RP IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMzAxMTAwMDAwMDBa Fw0yODAxMDkyMzU5NTlaMIGXMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDE9MDsGA1UEAxM0Q09NT0RPIFJTQSBDbGllbnQg QXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAL6znlesKHZ1QBbHOAOY08YYdiFQ8yV5 C0y1oNF9Olg+nKcxLqf2NHbZhGra0D00SOTq9bus3/mxgUsg/Wh/eXQ0pnp8 tZ8XZWAnlyKMpjL+qUByRjXCA6RQyDMqVaVUkbIr5SU0RDX/kSsKwer3H1pT /HUrBN0X8sKtPTdGX8XAWt/VdMLBrZBlgvnkCos+KQWWCo63OTTqRvaq8aWc cm+KOMjTcE6s2mj6RkalweyDI7X+7U5lNo6jzC8RTXtVV4/Vwdax720YpMPJ QaDaElmOupyTf1Qib+cpukNJnQmwygjD8m046DQkLnpXNCAGjuJy1F5NATks UsbfJAr7FLUCAwEAAaOCATwwggE4MB8GA1UdIwQYMBaAFLuvfgI9+qbxPISO re44mOzZMjLUMB0GA1UdDgQWBBSCr2yM+MX+lmF86B89K3FIXsSLwDAOBgNV HQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADARBgNVHSAECjAIMAYG BFUdIAAwTAYDVR0fBEUwQzBBoD+gPYY7aHR0cDovL2NybC5jb21vZG9jYS5j b20vQ09NT0RPUlNBQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwcQYIKwYB BQUHAQEEZTBjMDsGCCsGAQUFBzAChi9odHRwOi8vY3J0LmNvbW9kb2NhLmNv bS9DT01PRE9SU0FBZGRUcnVzdENBLmNydDAkBggrBgEFBQcwAYYYaHR0cDov L29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQB4XLKBKDRP PO5fVs6fl1bsj6JrF/bz9kkIBtTYLzXN30D+03Hj6OxCDBEaIeNmsBhrJmuu bvyE7HtoSmR809AgcYboW+rcTNZ/8u/Hv+GTrNI/AhqX2/kiQNxmgUPt/eJP s92Qclj0HnVyy9TnSvGkSDU7I5Px+TbO+88G4zipA2psZaWeEykgzClZlPz1 FjTCkk77ZXp5cQYYexE6zeeN4/0OqqoAloFrjAF4o50YJafX8mnahjp3I2Y2 mkjhk0xQfhNqbzlLWPoT3m7j7U26u7zg6swjOq8hITYc3/np5tM5aVyu6t99 p17bTbY7+1RTWBviN9YJzK8HxzObXYWBf/L+VGOYNsQDTxAk0Hbvb1j6KjUh g7fO294F29QIhhmiNOr84JHoy+fNLpfvYc/Q9EtFOI5ISYgOxLk3nD/whbUe 9rmEQXLp8MB933Ij474gwwCPUpwv9mj2PMnXoc7mbrS22XUSeTwxCTP9bcmU dp4jmIoWfhQm7X9w/Zgddg+JZ/YnIHOwsGsaTUgj7fIvxqith7DoJC91WJ8L ce3CVJqb1XWeKIJ84F7YLXZN0oa7TktYgDdmQVxYkZo1c5noaDKH9Oq9cbm/ vOYRUM1cWcef20Wkyk5S/GFyyPJwG0fR1nRas3DqAf4cXxMiEKcff7PNa4M3 RGTqH0pWR8p6EjGCArMwggKvAgEBMIGtMIGXMQswCQYDVQQGEwJHQjEbMBkG A1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRow GAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE9MDsGA1UEAxM0Q09NT0RPIFJT QSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIR AMCdHNhUDhZYvKn55do0oLkwDQYJYIZIAWUDBAIBBQCggdcwGAYJKoZIhvcN AQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTkxMDE3MTIzNzEy WjAvBgkqhkiG9w0BCQQxIgQgRGHAXXxS6UUgu9+fHZp+1mxXO/AZHFhEUToj pn4++WAwbAYJKoZIhvcNAQkPMV8wXTALBglghkgBZQMEASowCwYJYIZIAWUD BAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIB QDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQCl uWbsxMRj3cPo2q+sEsR+xGiHDaJX/yKaMkqZksoZsQf9urMbxjY186uX3AMb SBU6Wo6Atydw6kAa73wAb7bmPjscYb7kM8HAzwwrkcKq1WItudcU2fopEhYm jUgDmVtQOeM3w4N/8svvJ8BdJQyZUasCoBR753BAyTCbcqyZCBJHSoa++eUB PQbbim4FlG1qZrqVku9L9f0c1iIVShY1uBIFYkvrfl5QBbrfCliDS6GzPcFa TKcmHd1UOMCQ4qRZT/VDLGyMnRmBIJyYU9dYOAI1sdBqINZXOxnTAn9JFkzL oIrnYEgdn9bV9NqHzScUtAnE7SqMuNu8etxjQ7SXAAAAAAAA --------------ms080409060403030602010606--