Re: building fiasco on alpine linux

Michael Schnupp <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
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?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.