summaryrefslogblamecommitdiffstats
path: root/images/user/libdl-load.puml
blob: b9ae20d9c85cb6ffef2c76141d4de50e2fb0cf89 (plain) (tree)






































                                                   
'
' 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