Build problems on i386 (Fiasco-OC.UX)

Paul Boddie paul at boddie.org.uk
Mon Jan 29 22:36:34 CET 2018


Hello,

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:

https://lkml.org/lkml/2017/11/15/159
https://lkml.org/lkml/2018/1/25/522

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:

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.

Both of the above issues are present in repository versions 74, 75 and 76 at 
the very least. Certainly, the first issue is not likely to be absent in 
earlier versions.

Paul

P.S. I have also been experiencing a build problem with L4Re on i386, but this 
will be described in another message.




More information about the l4-hackers mailing list