mirror of
https://github.com/justinian/jsix.git
synced 2025-12-09 16:04:32 -08:00
This commit includes a number of changes to enable loading of PIE executables: - The loader in srv.init checks for a `PT_INTERP` segment in the program its loading, and if it exists, loads the specified interpreter and passes control to it instead of the program itself. - Added ld.so the dynamic linker executable and set it as the interpreter for all user-target programs. - Program initial stack changed again to now contain a number of possible tagged structures, including a new one for ld.so's arguments, and for passing handles tagged with protocol ids. - Added a stub for a new VFS protocol. Unused so far, but srv.init will need to serve VFS requests from ld.so once I transition libraries to shared libs for user-target programs. (Right now all executables are PIE but statically linked, so they only need internal relocations.) - Added 16 and 8 bit variants of `util::bitset`. This ended up not being used, but could be useful.
34 lines
570 B
YAML
34 lines
570 B
YAML
---
|
|
asflags: [ "-I${source_root}/src/kernel/" ]
|
|
|
|
ccflags: [
|
|
"--target=x86_64-jsix-elf",
|
|
"-fno-omit-frame-pointer",
|
|
"-fno-stack-protector",
|
|
|
|
"-fvisibility=hidden",
|
|
"-fvisibility-inlines-hidden",
|
|
|
|
"-D__ELF__",
|
|
"-D__jsix__",
|
|
"-U__linux",
|
|
"-U__linux__",
|
|
|
|
"--sysroot='${source_root}/sysroot'",
|
|
]
|
|
|
|
cxxflags: [
|
|
"-fno-exceptions",
|
|
"-fno-rtti",
|
|
]
|
|
|
|
ldflags: [
|
|
"-m", "elf_x86_64",
|
|
"--sysroot='${source_root}/sysroot'",
|
|
"--no-eh-frame-hdr",
|
|
"-L", "${source_root}/sysroot/lib",
|
|
"-z", "separate-code",
|
|
"--no-dependent-libraries",
|
|
"-Bstatic",
|
|
]
|