+
Point of view
All features
expanded class FOREIGN_DLL_LOADER
Summary
Direct parents
Insert list: DYNAMIC_LINKING_LOADER
Overview
Features
{ANY}
{FOREIGN_DLL_HANDLER}
Queries
{ANY}
Validity
{ANY}
Required flags, either one must be specified
{ANY}
  • rtld_lazy: INTEGER_32
    Perform lazy binding.
  • rtld_now: INTEGER_32
    If this value is specified, or the environment variable LD_BIND_NOW is set to a non-empty string, all undeined symbols in the library are resolved before dlopen() returns.
Optional flags: zero of more of the following values may also be ORed
{ANY}
External calls hidden function __builtin_memcpy skipped.
{}
variable-size types
{WRAPPER_HANDLER}
C type definitions (typedefs)
{WRAPPER_HANDLER}
  • comparison_fn_t: POINTER
    typedef comparison_fn_t from /usr/include/stdlib.h Empty by design, used for anchored declarations.
  • timer_t: POINTER
    typedef timer_t from /usr/include/time.h Empty by design, used for anchored declarations.
  • clockid_t: INTEGER_32
    typedef clockid_t from /usr/include/time.h Empty by design, used for anchored declarations.
  • time_t: INTEGER_64
    typedef time_t from /usr/include/time.h Empty by design, used for anchored declarations.
  • clock_t: INTEGER_64
    typedef clock_t from /usr/include/time.h Empty by design, used for anchored declarations.
  • uintmax_t: NATURAL_64
    typedef uintmax_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • intmax_t: INTEGER_64
    typedef intmax_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uintptr_t: NATURAL_64
    typedef uintptr_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • intptr_t: INTEGER_64
    typedef intptr_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_fast64_t: NATURAL_64
    typedef uint_fast64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_fast32_t: NATURAL_64
    typedef uint_fast32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_fast16_t: NATURAL_64
    typedef uint_fast16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_fast8_t: CHARACTER
    typedef uint_fast8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_fast64_t: INTEGER_64
    typedef int_fast64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_fast32_t: INTEGER_64
    typedef int_fast32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_fast16_t: INTEGER_64
    typedef int_fast16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_fast8_t: CHARACTER
    typedef int_fast8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_least64_t: NATURAL_64
    typedef uint_least64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_least32_t: NATURAL_32
    typedef uint_least32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_least16_t: NATURAL_16
    typedef uint_least16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint_least8_t: CHARACTER
    typedef uint_least8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_least64_t: INTEGER_64
    typedef int_least64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_least32_t: INTEGER_32
    typedef int_least32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_least16_t: INTEGER_16
    typedef int_least16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int_least8_t: CHARACTER
    typedef int_least8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint64_t: NATURAL_64
    typedef uint64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint32_t: NATURAL_32
    typedef uint32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint16_t: NATURAL_16
    typedef uint16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • uint8_t: CHARACTER
    typedef uint8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int64_t: INTEGER_64
    typedef int64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int32_t: INTEGER_32
    typedef int32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int16_t: INTEGER_16
    typedef int16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • int8_t: CHARACTER
    typedef int8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • ssize_t: INTEGER_64
    typedef ssize_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • off64_t: INTEGER_64
    typedef off64_t from /usr/include/stdio.h Empty by design, used for anchored declarations.
  • off_t: INTEGER_64
    typedef off_t from /usr/include/stdio.h Empty by design, used for anchored declarations.
  • size_t: NATURAL_64
    typedef size_t from /usr/include/stdlib.h Empty by design, used for anchored declarations.
  • ptrdiff_t: INTEGER_64
    typedef ptrdiff_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
  • error_t: INTEGER_32
    typedef error_t from /usr/include/errno.h Empty by design, used for anchored declarations.
library (filename: ABSTRACT_STRING): FOREIGN_DLL
effective function
{ANY}
The Result may be Void if the library is not found.
require
  • filename /= Void
ensure
  • Result /= Void implies Result.filename.is_equal(filename)
alreadey_loaded (a_library: ABSTRACT_STRING): BOOLEAN
effective function
{ANY}
Has a_library already been loaded?
Note: this features require Glibc and is not POSIX
main_program: DYNAMIC_SHARED_OBJECT
once function
{ANY}
The main program accessible as a dynamic shared object.
Symbols will be searched in the main program, followed by all shared libraries loaded at program startup, and then all shared libraries loaded by with the flag RTLD_GLOBAL.
new_dynamic_shared_object (a_filename: ABSTRACT_STRING, some_flags: INTEGER_32): DYNAMIC_SHARED_OBJECT
effective function
{ANY}
A newly allocated dynamic shared object (also known as "library") located at a_filename.
If a_filename contains a slash ("/"), then it is interpreted as a (relative or absolute) pathname. Otherwise, the dynamic linker searches for the library as detailed in ld.so(8) manpage. If the library has dependencies on other shared libraries, then these are also automatically loaded by the dynamic linker using the same rules. This process may occur recursively, if those libraries in turn have dependencies, and so on. some_flags must contain one of the following two values: rtld_lazy: Perform lazy binding. Only resolve symbols as the code that references them is executed. If the symbol is never referenced, then it is never resolved. (Lazy binding is only performed for function references; references to variables are always immediately bound when the library is loaded.) rtld_now: all undefined symbols are immediatly resolved; if this cannot be done Current will be invalid. This behaviour is forced when the environment variable LD_BIND_NOW is set to a non-empty string. Zero of more of the following values may also be (logically) ORed in some_flags: rtld_global: The symbols defined by this library will be made available for symbol resolution of subsequently loaded libraries. rtld_local: This is the converse of rtld_global, and the default if neither flag is specified. Symbols defined in this library are not made available to resolve references in subsequently loaded libraries. rtld_nodelete: (since glibc 2.2) Do no unloa the library when Current is disposed. Consequently, the library's static variables are not reinitialized if the library is reloaded with new_dynamic_shared_object. This flag is not specified in POSIX.1-2001. rtld_deepbind: (since glibc 2.3.4) Place the lookup scope of the symbols in this library ahead of the global scope. This means that a self-contained library will use its own symbols in preference to global symbols with the same name contained in libraries that have already been loaded. This flag is not specified in POSIX.1-2001. External references in the library are resolved using the libraries in that library's dependency list and any other libraries previously opened with the RTLD_GLOBAL flag. If the executable was linked with the flag "-rdynamic" (or, synonymously, "--export-dynamic"), then the global symbols in the executable will also be used to resolve references in a dynamically loaded library. If the same library is loaded again with dlopen(), the same file handle is returned. The dl library maintains reference counts for library handles, so a dynamic library is not deallocated until dlclose() has been called on it as many times as dlopen() has succeeded on it. The _init() routine, if present, is only called once. But a subsequent call with RTLD_NOW may force symbol resolution for a library earlier loaded with RTLD_LAZY. Result will be Void in case of failure.
require
are_valid_dlflags (a_value: INTEGER_32): BOOLEAN
effective function
{ANY}
Are a_value valid flags to be used when creation a DYNAMIC_SHARED_OBJECT?
rtld_lazy: INTEGER_32
{ANY}
Perform lazy binding.
 Only resolve symbols as the code that references them is executed.  If the symbol is never referenced, then it is never resolved.  (Lazy binding is only performed for function references; references to variables are always immediately bound when the library is loaded.)
rtld_now: INTEGER_32
{ANY}
If this value is specified, or the environment variable LD_BIND_NOW is set to a non-empty string, all undeined symbols in the library are resolved before dlopen() returns.
 If this cannot be  done,  an  error  is returned.
rtld_global: INTEGER_32
{ANY}
The symbols defined by this library will be made available for symbol resolution of subsequently loaded libraries.
rtld_local: INTEGER_32
{ANY}
This is the converse of RTLD_GLOBAL, and the default if neither flag is specified.
 Symbols defined in this library are not made available to resolve references in subsequently loaded libraries.
rtld_nodelete: INTEGER_32
{ANY}
(since glibc 2.2) Do not unload the library during dlclose().
 Consequently, the library's static variables are not reiniā€ tialized if the library is reloaded with dlopen()  at  a  later  time.   This  flag  is  not  specified  in POSIX.1-2001.
rtld_noload: INTEGER_32
{ANY}
(since glibc 2.2) Don't load the library.
 This can be used to test if the library is already resident (dlopen() returns NULL if it is not, or the library's handle if it is resident).  This flag can also be used to promote the  flags on a library that is already loaded.  For example, a library that was previously loaded with RTLD_LOCAL can be re-opened with RTLD_NOLOAD | RTLD_GLOBAL.  This flag is not specified in POSIX.1-2001.
rtld_deepbind: INTEGER_32
{ANY}
(since glibc 2.3.4) Place the lookup scope of the symbols in this library ahead of the global scope.
 This means that  a  self- contained  library will use its own symbols in preference to global symbols with the same name contained in libraries that have already been loaded.  This flag is not specified in POSIX.1-2001.
dladdr (an_address: POINTER, an_info: POINTER): INTEGER_32
{}
function dladdr (in /usr/include/dlfcn.h) dladdr
dladdr1 (an_address: POINTER, an_info: POINTER, an_extra_info: POINTER, a_flags: INTEGER_32): INTEGER_32
{}
function dladdr1 (in /usr/include/dlfcn.h) dladdr1
dlclose (a_handle: POINTER): INTEGER_32
{}
function dlclose (in /usr/include/dlfcn.h) dlclose
dlerror: POINTER
{}
function dlerror (in /usr/include/dlfcn.h) dlerror
dlinfo (a_handle: POINTER, a_request: INTEGER_32, an_arg: POINTER): INTEGER_32
{}
function dlinfo (in /usr/include/dlfcn.h) dlinfo
dlmopen (a_nsid: INTEGER_64, a_file: POINTER, a_mode: INTEGER_32): POINTER
{}
function dlmopen (in /usr/include/dlfcn.h) dlmopen
dlopen (a_file: POINTER, a_mode: INTEGER_32): POINTER
{}
function dlopen (in /usr/include/dlfcn.h) dlopen
dlsym (a_handle: POINTER, a_name: POINTER): POINTER
{}
function dlsym (in /usr/include/dlfcn.h) dlsym
dlvsym (a_handle: POINTER, a_name: POINTER, a_version: POINTER): POINTER
{}
function dlvsym (in /usr/include/dlfcn.h) dlvsym
long: INTEGER_64
effective function
a query with the same type of c 'long int'.
useful when dealing with code that uses long int variable: just insert th class and mark the type as 'like long'
long_unsigned: NATURAL_64
effective function
a query with the same type of c 'long unsigned int'.
useful when dealing with code that uses long int variable: just insert th class and mark the type as 'like long_unsigned'
comparison_fn_t: POINTER
effective function
typedef comparison_fn_t from /usr/include/stdlib.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
timer_t: POINTER
effective function
typedef timer_t from /usr/include/time.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
clockid_t: INTEGER_32
effective function
typedef clockid_t from /usr/include/time.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
time_t: INTEGER_64
effective function
typedef time_t from /usr/include/time.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
clock_t: INTEGER_64
effective function
typedef clock_t from /usr/include/time.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uintmax_t: NATURAL_64
effective function
typedef uintmax_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
intmax_t: INTEGER_64
effective function
typedef intmax_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uintptr_t: NATURAL_64
effective function
typedef uintptr_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
intptr_t: INTEGER_64
effective function
typedef intptr_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_fast64_t: NATURAL_64
effective function
typedef uint_fast64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_fast32_t: NATURAL_64
effective function
typedef uint_fast32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_fast16_t: NATURAL_64
effective function
typedef uint_fast16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_fast8_t: CHARACTER
effective function
typedef uint_fast8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_fast64_t: INTEGER_64
effective function
typedef int_fast64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_fast32_t: INTEGER_64
effective function
typedef int_fast32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_fast16_t: INTEGER_64
effective function
typedef int_fast16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_fast8_t: CHARACTER
effective function
typedef int_fast8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_least64_t: NATURAL_64
effective function
typedef uint_least64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_least32_t: NATURAL_32
effective function
typedef uint_least32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_least16_t: NATURAL_16
effective function
typedef uint_least16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint_least8_t: CHARACTER
effective function
typedef uint_least8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_least64_t: INTEGER_64
effective function
typedef int_least64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_least32_t: INTEGER_32
effective function
typedef int_least32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_least16_t: INTEGER_16
effective function
typedef int_least16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int_least8_t: CHARACTER
effective function
typedef int_least8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint64_t: NATURAL_64
effective function
typedef uint64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint32_t: NATURAL_32
effective function
typedef uint32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint16_t: NATURAL_16
effective function
typedef uint16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
uint8_t: CHARACTER
effective function
typedef uint8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int64_t: INTEGER_64
effective function
typedef int64_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int32_t: INTEGER_32
effective function
typedef int32_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int16_t: INTEGER_16
effective function
typedef int16_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
int8_t: CHARACTER
effective function
typedef int8_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
ssize_t: INTEGER_64
effective function
typedef ssize_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
off64_t: INTEGER_64
effective function
typedef off64_t from /usr/include/stdio.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
off_t: INTEGER_64
effective function
typedef off_t from /usr/include/stdio.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
size_t: NATURAL_64
effective function
typedef size_t from /usr/include/stdlib.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
ptrdiff_t: INTEGER_64
effective function
typedef ptrdiff_t from /usr/include/stdint.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default
error_t: INTEGER_32
effective function
typedef error_t from /usr/include/errno.h Empty by design, used for anchored declarations.
ensure
  • Result.is_default