Autor Thema: Dynamisches Linken von Elf Executeables  (Gelesen 5973 mal)

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« am: 19. August 2005, 14:12 »
Hi,
Kennt jemand ein Tutorial oder eine Seite, in der beschrieben wird, wie das dynamische Linken von Elf Files funktioniert? Ich habe mir die Dokumentation schon angesehen, ich verstehe aber nicht wirklich, was der dynamische Linker alles machen muss.

mfg,
SSJ7Gohan

maumo

  • Beiträge: 182
    • Profil anzeigen
    • http://maumo.50webs.com/
Gespeichert
« Antwort #1 am: 19. August 2005, 15:30 »
ich hab das so verstanden:
der dloader läd die elf datei und dann läd er entweder alle dlls oder mapt diese in den address space vom process, falls diese schon geladen sind. dan werden einfach die relocs auf aspace basierende werte gesetz und vertich

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 19. August 2005, 16:37 »
Ich verstehe noch nicht so richtig, wie das mit der GOT funktionieren soll.
Eine shared library kann ja in mehrere Prozesse gemappt werden und auch an verschiedene Stellen, wenn ich das richtig verstanden habe.
Also in Prozess A kann die lib an Addresse 0x2000 liegen und in Prozess B an 0x3000.
Wie wird jetzt die Addresse der globalen Variablen aufgelöst?
Eigentlich bräuchte man dann doch für jeden Prozess eine eigene GOT, oder?

jeb

  • Beiträge: 341
    • Profil anzeigen
    • http://www.jebdev.net
Gespeichert
« Antwort #3 am: 19. August 2005, 17:01 »
http://www.cs.princeton.edu/courses/archive/fall05/cos217/reading/elf.pdf

Book III wenns mir recht ist. Hab grad das ganze ausgedruckt.

mfg, jeb

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 19. August 2005, 17:35 »
Diese Spezifikation kenne ich, ich verstehe aber nicht genau, wie der Linker jetzt vorgehen soll.

Erstmal wird ja die Executeable geladen.
Danach soll der dynamische Linker die shared libs laden.
Die werden dann relocated.
Wenn jetzt eine Library schon geladen ist, kann ich sie dann einfach in den Prozess mappen, oder muss ich noch etwas anderes machen?
Kann ich danach einfach in die Executeable springen oder was muss ich davor noch machen?

Ich verstehe irgentwie das Konzept der GOT nicht.

 

Einloggen