Build problems on i386 (Fiasco-OC.UX)

Adam Lackorzynski adam at
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'
> 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:
> 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 mailing list