Netboot Mailing List (by thread)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem compiling Etherboot ROM's




Ken Yap wrote:
> 
> >ld -N -Ttext 0x98000 -e _start -nostdlib -o bin32/3c90x.tmp bin32/start32.o b
> >in32/config-3c90x.o
> >bin32/3c90x.o bin32/pci.o bin32/bootlib.a
> >bin32/start32.o(.text+0x23): relocation truncated to fit: R_386_PC16 data
> >make: *** [bin32/3c90x.tmp] Error 1
> >
> >( the linker output file is not produced )
> >
> >       I haven't made any changes to Config or the Makefile.
> >
> >       I'm using gcc-2.95.2 and binutils-2.9.1.0.19
> 
> Hmm, strange one I haven't seen before. If you using start32.o.pre, try
> forcing a build of start32.o, perhaps the preassembled one is incompatible
> with your tool versions. Conversely, if you are assembling start32.S,
> try using the preassembled one. See the symbol AS_PSEUDOS in Makefile.

2.9.1.0.22b would have worked (or some version slightly after that) - so it
was a close miss.  It's a linker bug in older binutils 2.9.1 - it cannot
handle PC-relative relocations that turn out to be negative after a link is
done, even if it would fit inside the signed 16 bit value.  IIRC it would be
possible to work around that bug by splitting start32.S into two files, but
that is rather messy.  I think it would be good to include it in the
documentation that if that error message shows up it's a good idea to upgrade
the binutils.  As I said I think one needs at least 2.9.1.0.22b, but I might
be wrong.  I used some 2.9.5 snapshot for more than a year now (they should
really release that one soon, because it fixes hundreds of bugs and generally
makes it easier to write assembly code as it is much pickier now and doesn't
just silently emit garbage).

> Why is your binutils version older than your gcc version BTW? Shouldn't
> you upgrade binutils?

gcc usually works without a problem with ancient binutils.  Most of the binutils
bugs are found when dealing with hand-written assembly code and will never be
triggered by the output from gcc.  So generally it's not required to upgrade
binutils when gcc is upgraded.  There is no officially released version after
2.9.1 - the 2.9.1.0.x series that Linux has is (was) maintained by Ted T'so
and basically includes a collection of fixes that were developed for the next
release of binutils.
===========================================================================
This Mail was sent to netboot mailing list by:
Klaus Espenlaub <espenlaub@informatik.uni-ulm.de>
To get help about this list, send a mail with 'help' as the only string in
it's body to majordomo@baghira.han.de. If you have problems with this list,
send a mail to netboot-owner@baghira.han.de.



For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.