Re: building fiasco on alpine linux
Adam Lackorzynski <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Message-ID | <[email protected]> |
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