Re: [rfc] [0/9] Multi-target support

Ulrich Weigand
2007-11-19T17:24:56Z

Pierre Muller wrote:

> Yes, I started in a new directory.
> mkdir build-all
> cd build-all
> ../src/configure --enable-targets=all
> make all-gdb

OK, thanks for verifying.

> I checked in bfd/bfd.h and BFD_ARCH_SIZE was set to 32 there.

So this looks like a bug in the --enable-target=all support:
apparently in BFD, if both host and target are 32-bit, then
--enable-target=all does not actually add support for all
targets, but only for all 32-bit targets. If you really want
*all* targets, you have to use --enable-64-bit-bfd as well.

I guess I'll have to adapt GDB's --enable-target=all support
to follow the same rules ...

> Adding --enable-64-bit-bfd I still needed to add WERROR_CFLAGS=""
> because I got warnings in win32-nat.c, which implicitly assumes that
> CORE_ADDR is 32 bit long.

Now this is a bug in win32-nat.c, which would have already shown up
if you attempted to build a regular win32 -> amd64-linux (for example)
cross-debugger.

> Should all nat files be able to handle the case where
> sizeof(CORE_ADDR) is strictly greater then sizeof( void *)
> and do explicit conversion for that?

Yes. There should be an explicit conversion via uintptr_t (defined
in "gdb_stdint.h"). Other nat files already to that as appropriate.

> I also got a problem with the m2-exp.y yacc file
> conflicts: 15 shift/reduce, 15 reduce/reduce
> conflicts: 5 shift/reduce
> conflicts: 34 shift/reduce
> /home/Pierre/gdbcvs/build-all/gdb/../../src/gdb/m2-exp.y:354.25-44: warning:
> rule never reduced because of conflicts: @2: /* empty */
>
> But after checking, this warning is also present for a simple build without
> option.

Hmm, this looks like another pre-existing problem. Unfortunately,
I'm not very familiar with yacc/bison details ...