building fiasco on alpine linux
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Fri Jun 24 00:05:43 CEST 2016
On Thu Jun 23, 2016 at 03:00:49 +0200, Michael Schnupp wrote:
> On Wed, Jun 22, 2016 at 12:18:56AM +0200, Adam Lackorzynski wrote:
> > > I tried to build fiasco on alpine linux.
> > > This will fail with the following line:
> > >
> > > auto/jdb_ktrace.cc:1:0: error: code model kernel does not support PIC mode
> >
> > Just this file or more/all files?
>
> Not sure. The build stopped after the first error and I was not able to reconfigure for ignoring that file.
>
> > > Their gcc enables PIC per default for security reasons. Since fiasco seems to need PIC disabled I have to tell the build system either to add -fno-PIC explictly, or to -D__KERNEL__ in any way.
> > > (I already tried DEFINES += -D__KERNEL__ or CFLAGS := -fno-PIC in Makeconf without success.)
> > >
> > > What is the correct way to add such an option to the fiasco build system?
> > > Would it hurt to add -D__KERNEL__ per default on future releases? (After all it *is* a kernel.)
> >
> > I'd add this to src/Makeconf:
> > SHARED_FLAGS += -fno-pic
> >
> > Does this fix it?
>
> Not completely. Now compiling seem to work fine, but linking will run into problems:
>
> ==> Linking fiasco.image
> boot_img.o: In function `bootstrap_bootstrap':
> (.bootstrap.text+0x98): relocation truncated to fit: R_X86_64_32 against symbol `_start' defined in .text section in crt0.o
> kip_init-ia32.o: In function `Kip_init::init()':
> kip_init-ia32.cc:(.initcall.text+0x33): relocation truncated to fit: R_X86_64_32 against symbol `my_kernel_info_page' defined in .kernel_info_page section in kip_init-ia32.o
> kip_init-ia32.cc:(.initcall.text+0xd8): relocation truncated to fit: R_X86_64_32 against symbol `_kernel_image_start' defined in .kip section in fiasco.image
> kip_init-ia32.cc:(.initcall.text+0xe8): relocation truncated to fit: R_X86_64_32 against symbol `_end' defined in .bss section in fiasco.image
> kip_init-ia32.cc:(.initcall.text+0x27d): relocation truncated to fit: R_X86_64_32 against symbol `_kernel_image_start' defined in .kip section in fiasco.image
> kip_init-ia32.cc:(.initcall.text+0x30b): relocation truncated to fit: R_X86_64_32 against symbol `_end' defined in .bss section in fiasco.image
> kip_init-ia32.cc:(.initcall.text+0x33d): relocation truncated to fit: R_X86_64_32 against symbol `_end' defined in .bss section in fiasco.image
> kip_init-ia32.cc:(.initcall.text+0x37e): relocation truncated to fit: R_X86_64_32 against symbol `_kernel_image_start' defined in .kip section in fiasco.image
> libabi.a(kip.o): In function `Kip::add_mem_region(Mem_desc const&)':
> kip.cc:(.text+0x61): relocation truncated to fit: R_X86_64_32 against `.rodata.str1.8'
> thread-ia32.o: In function `Thread::handle_int3(Trap_state*)':
> thread-ia32.cc:(.text+0x55): relocation truncated to fit: R_X86_64_32 against `.rodata.str1.1'
> thread-ia32.cc:(.text+0x14e): additional relocation overflows omitted from the output
> .../kernel/fiasco/src/boot/amd64/Makerules.BOOT.amd64:29: recipe for target 'fiasco.image' failed
>
> The above output is from building with 'make SHARED_FLAGS=-D__KERNEL__'.
> There is a bit more noise with -fno-pic or -fno-PIC, but it is the same kind of problem.
>
> Any idea what exactly is going on here?
I gave this a try with Alpine 3.4 and just the -fno-pic addition made it
compile for me. However, the error message while compiling was
different. Thus: Which version do you use?
Adam
More information about the l4-hackers
mailing list