diff options
author | Chris Johns <chrisj@rtems.org> | 2019-02-15 16:03:59 +1100 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2019-02-20 09:05:35 +1100 |
commit | 8a73acb71305c58c6ea58aa0da84d4adb4c125cc (patch) | |
tree | bf67f62b560c58adbeeba1235bf649c6f9fa8469 /images | |
parent | c-user: INTERNAL_ERROR_NO_MEMORY_FOR_PER_CPU_DATA (diff) | |
download | rtems-docs-8a73acb71305c58c6ea58aa0da84d4adb4c125cc.tar.bz2 |
user: Add a Dynamic Loader section.
Diffstat (limited to 'images')
-rw-r--r-- | images/user/libdl-load.png | bin | 0 -> 38044 bytes | |||
-rw-r--r-- | images/user/libdl-load.puml | 39 | ||||
-rw-r--r-- | images/user/libdl.ditaa | 42 | ||||
-rw-r--r-- | images/user/libdl.png | bin | 0 -> 26974 bytes |
4 files changed, 81 insertions, 0 deletions
diff --git a/images/user/libdl-load.png b/images/user/libdl-load.png Binary files differnew file mode 100644 index 0000000..10aafcf --- /dev/null +++ b/images/user/libdl-load.png 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 Binary files differnew file mode 100644 index 0000000..f1446dd --- /dev/null +++ b/images/user/libdl.png |