Bug when cross-compiling for ppc

Vincent Fortier via Gdb <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <CALAySu+QEeH=g4=g34BVLG3CB9Rh_Ax-rChg4M-a6okY4U1_4A@mail.gmail.com>
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 :)
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.