user: Add a Dynamic Loader section.

This commit is contained in:
Chris Johns
2019-02-15 16:03:59 +11:00
parent 789b0caad7
commit 8a73acb713
12 changed files with 962 additions and 3 deletions

BIN
images/user/libdl-load.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,39 @@
'
' Libdl Load Executable Object file
'
' Copyright (c) 2019 Chris Johns <chrisj@rtems.org>
' All rights reserved.
'
@startuml
start
:dlopen;
if (check libraries ?) then (changed)
:load libraries;
else (no change)
endif
:load object;
floating note left
Searching of unreolved symbols
continues until the remain symbols
cannot be found in the global symbol
table or libraries.
end note
while (unresolved symbols?) is (unresolved)
if (search globals) then (found)
:fix relocations;
else (not found)
endif
if (search libraries ?) then (found)
:load library object;
floating note left
If a symbol is found the library object file
is load adding the symbol to the global
symbol table and potentially adding more
unresolved symbols.
end note
else (not found)
endif
endwhile (all searched)
stop
@enduml

42
images/user/libdl.ditaa Normal file
View File

@@ -0,0 +1,42 @@
'
' Executable debugging : QEMU
'
' Copyright (c) 2018 Chris Johns <chrisj@rtems.org>
' All rights reserved.
'
@startditaa
+----------------------------------------+
/--------------------------\ | RTL (libdl) |
| RTEMS File System | | |
| | | +----------+ /---------------\ |
| | /------->| archives |<--->| lib symbols | |
| +---------------------+ | | | +----------+ \---------------/ |
| | /etc/libdl.conf |-----+ | ^ |
| +---------------------+ | | | | |
| | | | | |
| +---------------------+ | | | V |
| | /lib/librtemscpu.a | | | | +-------------+ /-------------\ |
| | /lib/librtemsbsp.a |-----/ /----->| link editor |<--->| symbols | |
| | /lib/libc.a | | | | +-------------+ \-------------/ |
| | /lib/libm.a | | | | ^ ^ |
| | /lib/libgcc.a | | | | | | |
| +---------------------+ | | | | V |
| | | | | /---------------\ |
| +---------------------+ | | | +----->| objects | |
| | /app/foo.o |-------/ | | \---------------/ |
| +---------------------+ | | | ^ |
\--------------------------/ | | | |
| | | |
| | /------+--------\ |
| +----->| unresolved | |
| | | symbols | |
| | \---------------/ |
| | |
+---------|------------------------------+
|
V
/----------------------------------\
| target memory |
\----------------------------------/
@endditaa

BIN
images/user/libdl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB