From mboxrd@z Thu Jan 1 00:00:00 1970 From: david.jander@protonic.nl (David Jander) Date: Tue, 11 Sep 2012 13:52:12 +0200 Subject: GCC 4.6.x miscompiling arm-linux? In-Reply-To: <20559.8716.124212.451155@pilspetsen.it.uu.se> References: <20120910171654.1d4972b2@archvile> <20120911092753.7b8315d4@archvile> <20558.61974.299424.536837@pilspetsen.it.uu.se> <20120911104925.3461603e@archvile> <20559.1844.786507.216580@pilspetsen.it.uu.se> <20120911123743.29e0ed40@archvile> <20559.8716.124212.451155@pilspetsen.it.uu.se> Message-ID: <20120911135212.187bd224@archvile> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, 11 Sep 2012 13:35:40 +0200 Mikael Pettersson wrote: > David Jander writes: > > > I can make the patches available if there's confirmation that a vanilla > > > upstream gcc-4.6.3 doesn't work. > > > > I am pretty sure this is the case... do you have a patch series that you can > > easily tar and mail to me? I'd like to try those patches with OSELAS, to see > > if I can indeed build a gcc-4.6.3 toolchain that generates correct code.... I > > already know that I can generate one that doesn't ;-) > > > ... > > > If you're sure no add-on patches were applied, then yes please do. > > > > Pretty sure, but not 100%, so I'd like to try your patches first if you don't > > mind.... > > And I'd like to confirm first. Please tell us the following: > > > > > > 2: include the output of gcc -v which tells how that gcc was configured, Using built-in specs. COLLECT_GCC=/opt/OSELAS.Toolchain-2011.11.1/arm-v5te-linux-gnueabi/gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/bin/arm-v5te-linux-gnueabi-gcc-4.6.3 COLLECT_LTO_WRAPPER=/opt/OSELAS.Toolchain-2011.11.1/arm-v5te-linux-gnueabi/gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/libexec/gcc/arm-v5te-linux-gnueabi/4.6.3/lto-wrapper Target: arm-v5te-linux-gnueabi Configured with: /home/djander/ptxdist/OSELAS.Toolchain-2011.11.1/platform-arm-v5te-linux-gnueabi-gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/build-cross/gcc-4.6.3/configure --target=arm-v5te-linux-gnueabi --with-sysroot=/opt/OSELAS.Toolchain-2011.11.1/arm-v5te-linux-gnueabi/gcc-4.6.3 -glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/sysroot-arm-v5te-linux-gnueabi --disable-multilib --with-float=soft --with-fpu=vfp --with-cpu=arm926ej-s --enable-__cxa_atexit --disable-sjlj-exceptions --disable-nls --disable-decimal-float --disable-fixed-point --disable-win32-registry --enable-symvers=gnu --with-pkgversion=OSELAS.Toolchain-2011.11.1 --with-system-zlib --with-gmp=/home/djander/ptxdist/OSELAS.Toolchain-2011.11.1/platform-arm-v5te -linux-gnueabi-gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/sysroot-host --with-mpfr=/home/djander/ptxdist/OSELAS.Toolchain-2011.11.1/platform-arm-v5te-linux-gnueabi-gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/sysroot-host --prefix=/opt/OSELAS.Toolchain-2011.11.1/arm-v5te-linux-gnueabi/gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized --enable-languages=c,c++ --enable-threads=posix --enable-c99 --enable-long-long --enable-libstdcxx-debug --enable-profile --enable-shared --disable-libssp --enable-checking=release Thread model: posix gcc version 4.6.3 (OSELAS.Toolchain-2011.11.1) > > > > > 3: give the exact set of gcc options used then compiling the test case. If I type this in a terminal: $ /opt/OSELAS.Toolchain-2011.11.1/arm-v5te-linux-gnueabi/gcc-4.6.3-glibc-2.14.1-binutils-2.21.1a-kernel-2.6.39-sanitized/bin/arm-v5te-linux-gnueabi-gcc-4.6.3 -Os -S -o - -x c - struct flexcan_regs { unsigned int mcr; unsigned int rxfgmask; }; #define flexcan_read(a) (*(volatile unsigned int *)(a)) #define flexcan_write(v,a) (*(volatile unsigned int *)(a) = (v)) int flexcan_chip_start(int ver, struct flexcan_regs *regs) { flexcan_write(0, ®s->mcr); if (ver >= 10) flexcan_write(0, ®s->rxfgmask); return 0; } I get this output after hitting : .cpu arm926ej-s .fpu softvfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 4 .eabi_attribute 18, 4 .file "" .text .align 2 .global flexcan_chip_start .type flexcan_chip_start, %function flexcan_chip_start: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. mov r3, #0 cmp r0, #9 str r3, [r1, #0] ldrle r3, [r1, #4] mov r0, #0 str r3, [r1, #4] bx lr .size flexcan_chip_start, .-flexcan_chip_start .ident "GCC: (OSELAS.Toolchain-2011.11.1) 4.6.3" .section .note.GNU-stack,"",%progbits Do you need more information? Best regards, -- David Jander Protonic Holland.