Build problems on i386 (Fiasco-OC.UX)

Paul Boddie paul at boddie.org.uk
Tue Jan 30 21:42:51 CET 2018


On Tuesday 30. January 2018 00.32.30 Adam Lackorzynski wrote:
> On Mon Jan 29, 2018 at 22:36:34 +0100, Paul Boddie wrote:
> >
> > Secondly, linking of the kernel fails due to symbol conflicts between the
> > minilibc functionality and glibc:
> > 
> > /usr/lib/gcc/i686-linux-gnu/6/../../../i386-linux-gnu/libc.a(memcmp.o):
> > In function `memcmp':
> > (.text+0x0): multiple definition of `memcmp'
> > libc.a(memcmp.o):/home/paulb/L4/UX-75/src/kernel/fiasco/src/lib/minilibc/
> > memcmp.c:7: first defined here
> > collect2: error: ld returned 1 exit status
> > /home/paulb/L4/UX-75/src/kernel/fiasco/src/kern/ux/Makerules.KERNEL:35:
> > recipe for target 'fiasco.debug' failed
> > 
> > So, not knowing how best to deal with this, I relied on the
> > --allow-multiple- definition linker option:
> > 
> > https://gcc.gnu.org/ml/gcc-help/2009-09/msg00108.html
> > 
> > I doubt that this is the right way to deal with it. Maybe GCC 6.4 (Debian
> > 6.4.0-12) introduced some behaviour that is not compatible with the way
> > this linking is being done.
> 
> With older binutils it works, with the most recent ones not.
> Anyway, removing memcmp.c from src/Modules.ux seems to fix it, and it
> works on both older and recent environments.

Again, this doesn't seem to be a problem on jessie/oldstable and 
stretch/stable, but only on sid/unstable.

So I think that the Debian GCC versions for the former two (4.9.2-10, 
6.3.0-18) are fine, whereas 6.4.0-12 (and probably earlier 6.4.0 versions) are 
not.

Or if this is a linker issue, then the binutils versions for the former two 
(2.25, 2.28) are fine, whereas 2.30 is not.

It may be prudent to not change anything definitively if this is just a 
transient toolchain bug, although if there are no disadvantages then maybe 
just removing memcmp.c saves you from further bug reports. :-)

Paul




More information about the l4-hackers mailing list