[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