[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH 0/7] Eine dynamisch gelinkte libc
Am Ende der Serie sind alle Programme in src/modules/c dynamisch mit der libc
gelinkt. Vorläufig muss das explizit in einer Makefile.conf aktiviert werden,
weil alles, was potentiell während dem frühen Bootvorgang benötigt wird,
natürlich keine .so von der Platte nachladen kann. Später könnte man vielleicht
auch eine libc als Multiboot-Modul reingeben, dann müsste nur noch init
statisch gelinkt sein.
Es geht hier um dynamisches Linken, was uns im Moment ein bisschen Plattenplatz
spart (mein file:/apps hat jetzt statt 1,2 MB nur noch 764k), aber der
eigentliche Nutzen kommt dann, sobalds lbuilds das nutzen können. Zum einen
sind dort ein paar richtig fette Libs drin, und zum anderen kann man dann die
libc ersetzen, ohne alles neu zu bauen, was bisher ein bisschen nervig war.
Echte Shared Libs sind das allerdings noch nicht, sondern jeder Prozess hat
seine eigene Kopie im Speicher. RAM wird also erst einmal tendenziell mehr
verbraucht als vorher.
Kevin Wolf (7):
libc: SLIST-Makros aus sys/queue.h
libc: ELF-32-Loader ein bisschen umgebaut
init: loader_get_library() implementiert
libc: Einfacher dynmaischer Linker für den ELF-Loader
user-i386.ld: Linkerskript .so-tauglich machen
Buildsystem: libc in src/modules/c dynamisch linken
libc: Mit -fPIC kompilieren
buildmk.sh | 14 +-
src/include/elf32.h | 4 +-
src/include/loader.h | 11 +
src/include/sys/queue.h | 48 +++
src/kernel2/src/tasks/modules.c | 9 +
src/lib/bin_loader/elf32.c | 573 ++++++++++++++++++++++++++++++++--
src/modules/c/Makefile.conf | 1 +
src/modules/init/loader.c | 82 +++++
src/modules/lib/Makefile.all | 4 +
src/modules/lib/Makefile.conf | 1 +
src/modules/lib/rpc/Makefile.all | 1 -
src/modules/lib/syscalls/Makefile.all | 1 -
src/modules/lib/syscalls/lostio.c | 6 +-
src/modules/user-i386.ld | 15 +-
14 files changed, 725 insertions(+), 45 deletions(-)
create mode 100644 src/include/sys/queue.h
create mode 100644 src/modules/c/Makefile.conf
create mode 100644 src/modules/lib/Makefile.conf
delete mode 100644 src/modules/lib/rpc/Makefile.all
delete mode 100644 src/modules/lib/syscalls/Makefile.all
--
2.1.4