Re: Bug when cross-compiling for ppc

Simon Marchi via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 9/12/23 12:42, Vincent Fortier via Gdb wrote:
> As introduction, I part of SynoCommunity who maintains free software
> packages that can be installed on synology NAS.  Multiple archs are
> supported from armv5, v7, v8, ppc, i686 and x64.  I am able to build
> gdb for all archs with exception of ppc, more specifically qoriq arch
> using gcc-4.9.3 from Synology provided toolchain.
> 
> github PR available here: https://github.com/SynoCommunity/spksrc/pull/5879
> 
> I was finally able to figure out why (now needs to know how to fix it)
> gdb fails to cross-compile for ppc.  I am able to reproduce this
> problem on both gdb-7.12.1 and latest 13.2.
> 
> Basically, when it goes into the configure script under sim/ppc at a
> certain point it tests the "build" c compiler:
> 
> checking for i686-pc-linux-gcc... gcc
> checking whether the C compiler works... no
> configure: error: in
> `/home/spksrc/qoriq-debug/spksrc/cross/gdb-latest/work-qoriq-6.2.4/gdb-13.2/sim/ppc/build.4119280':
> configure: error: C compiler cannot create executables
> See `config.log' for more details
> mv: cannot stat 'config.h': No such file or directory
> 
> The end-result way later on is that build-config.h is then missing:
> 
> fatal error: build-config.h: No such file or directory
>    23 | #include "build-config.h"
>       |          ^~~~~~~~~~~~~~~~
> compilation terminated.
> 
> As at the end of sim/ppc/configure it does a mv config.h
> ../build-config.h but config.h was not generated in the first place.
> 
> What I ended-up doing is commenting out the tmpdir removal from that
> configure script:
> 
>   CFLAGS="${saved_CFLAGS}"
>   mv config.h ../build-config.h
>   cd ..
>   ###rm -rf $tempdir
> 
> Which allowed me to keep track of the real error happening in background:
> 
> configure:2482: checking whether the C compiler works
> configure:2504: gcc -g -O
> -I/home/spksrc/qoriq-debug/spksrc/toolchain/syno-qoriq-6.2.4/work/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sysroot/usr/include
> -mcpu=8548 -mhard-float -mfloat-gprs=double
> -I/home/spksrc/qoriq-debug/spksrc/cross/gdb-latest/work-qoriq-6.2.4/install/usr/local/gdb/include
>   conftest.c  >&5
> gcc: warning: '-mcpu=' is deprecated; use '-mtune=' or '-march=' instead
> gcc: error: unrecognized command-line option '-mfloat-gprs=double'
> configure:2508: $? = 1
> configure:2546: result: no
> 
> When testing the "build" compiler it includes the "target" flags which
> includes -mcpu=8548 -mhard-float -mfloat-gprs=double. In turns these
> flags should never get used on with "build" compiler making it to
> fail.
> 
> Now the question is, how to fix that?  Help would be much welcomed :)

Not a way to fix it but to circumvent it.  Do you need sim support (it's
a simulator hosted inside GDB)?  If not, you can configure with
--disable-sim, it will skip configuring/building the sim directory.

Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.