Build problems on i386 (Fiasco-OC.UX)
adam at os.inf.tu-dresden.de
Tue Jan 30 00:32:30 CET 2018
On Mon Jan 29, 2018 at 22:36:34 +0100, Paul Boddie wrote:
> More awkward news from Debian on i386! I was looking to build the "Linux
> Usermode Platform" variant of Fiasco-OC on i386 (well, Pentium 4) and
> encountered a couple of issues.
> Firstly, "struct ucontext" is mentioned in src/kern/ux/usermode.cpp but has
> been deprecated in favour of "ucontext_t". There are some User Mode Linux
> reports about this:
> A search-and-replace involving the two terms fixes the compilation error that
> otherwise occurs.
> 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'
> 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:
> 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.
More information about the l4-hackers