summaryrefslogtreecommitdiffstats
path: root/images/user/libdl-load.puml
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/user/libdl-load.puml
parentc-user: INTERNAL_ERROR_NO_MEMORY_FOR_PER_CPU_DATA (diff)
downloadrtems-docs-8a73acb71305c58c6ea58aa0da84d4adb4c125cc.tar.bz2
user: Add a Dynamic Loader section.
Diffstat (limited to '')
-rw-r--r--images/user/libdl-load.puml39
1 files changed, 39 insertions, 0 deletions
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