summaryrefslogtreecommitdiffstats
path: root/images
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2019-02-15 16:03:59 +1100
committerChris Johns <chrisj@rtems.org>2019-02-20 09:05:35 +1100
commit8a73acb71305c58c6ea58aa0da84d4adb4c125cc (patch)
treebf67f62b560c58adbeeba1235bf649c6f9fa8469 /images
parent789b0caad7a2b715398927491b9e70bda718c987 (diff)
downloadrtems-docs-8a73acb71305c58c6ea58aa0da84d4adb4c125cc.tar.bz2
user: Add a Dynamic Loader section.
Diffstat (limited to 'images')
-rw-r--r--images/user/libdl-load.pngbin0 -> 38044 bytes
-rw-r--r--images/user/libdl-load.puml39
-rw-r--r--images/user/libdl.ditaa42
-rw-r--r--images/user/libdl.pngbin0 -> 26974 bytes
4 files changed, 81 insertions, 0 deletions
diff --git a/images/user/libdl-load.png b/images/user/libdl-load.png
new file mode 100644
index 0000000..10aafcf
--- /dev/null
+++ b/images/user/libdl-load.png
Binary files differ
diff --git a/images/user/libdl-load.puml b/images/user/libdl-load.puml
new file mode 100644
index 0000000..b9ae20d
--- /dev/null
+++ b/images/user/libdl-load.puml
@@ -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
diff --git a/images/user/libdl.ditaa b/images/user/libdl.ditaa
new file mode 100644
index 0000000..c317dd1
--- /dev/null
+++ b/images/user/libdl.ditaa
@@ -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
diff --git a/images/user/libdl.png b/images/user/libdl.png
new file mode 100644
index 0000000..f1446dd
--- /dev/null
+++ b/images/user/libdl.png
Binary files differ