Hello, we have now mainly all running with shared libraries on Genode/seL4, so that we had to adjust the syscall bindings to be position independent [0]. Now is the time to try to get in a form that it may get upstream. According to this post: On 29.10.2014 02:33, Adrian Danis wrote:
Position independent code is a bit of a trickier issue. Presently we have no desire to use PIC, so copping a performance hit (incredibly small it may be) is undesirable. I think the best option here would be to make support of PIC at user level a build configuration option, and then make the stubs conditionally build in the additional ebx save/restore code. I do not know if attempting such conditional building will end up turning the assembly into an unreadable mess, but it would resolve the performance argument at least. The 'correct' way to do this with fitting into the current seL4 build system setup would be to add a configuration option to tools/common/Kconfig, use that variable to do the conditional compilation in syscalls.h and have tools/common/common.mk generate the -fPIC / -fno-PIC flags. If you can come up with a nice way of conditionally building both PIC and non-PIC versions of what is in syscalls.h then we would certainly accept it.
you would prefer to have, depending on some define, the syscall binding adjusted. In OKL4 there were already such define magic, see beginning of [1] e.g. There, depending on "__pic__", different L4_SAVE_REG/L4_RESTORE_REG defines are prepared and later on used by the assembler parts. Is this the way to go ? Thanks for any suggestions. Cheers, Alexander Boettcher. [0] https://github.com/genodelabs/genode/blob/master/repos/base-sel4/patches/sys... [1] https://github.com/genodelabs/genode/blob/master/repos/base-okl4/patches/sys...