diff options
Diffstat (limited to '')
-rw-r--r-- | images/user/libdl-load.puml | 39 |
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 |