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.