Solo5 / solo5

A sandboxed execution environment for unikernels
ISC License
897 stars 138 forks source link

Initial support for OpenBSD 7.5 #573

Open shym opened 5 months ago

shym commented 5 months ago

This PR is a WIP as tests are failing but it makes at least the build succeed on OpenBSD 7.5. Credits to @dustanddreams for identifying the breaking changes.

All the tests errors I see now are:

ld.lld: error: relocation refers to a symbol in a discarded section: __retguard_546
>>> defined in /home/build/solo5/toolchain/bin/../lib/x86_64-solo5-none-static/solo5_hvt.o

or similar with solo5_stub.o.

I think I’ve read somewhere similar errors being tackled previously. Any idea for a fix?

adamsteen commented 5 months ago

I did the initial port, I expect the ‘ret_guard’ protections need to be turned off in the linker or compiler, I don’t have the time to look too deeply atm, but will have a read over the next week to see what I find

adamsteen commented 5 months ago

Just read clang-local

clang includes the retguard security feature on amd64, arm64, mips64, powerpc and powerpc64. This feature can be disabled with the -fno-ret-protector or -fno-stack-protector options.

Should be enough to add -fno-ret-protector to ‘configure.sh’, oops look like we already do https://github.com/Solo5/solo5/blob/master/configure.sh#L438

sorry not sure, seems like something in the chain does not have -fno-ret-protector, that’s where I would look

or is the linker script (object definition thing) dropping the section OpenBSD needs? Sorry I am not more help