mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 15:32:25 +00:00
cfdbccc5c2
This is a redesign of the root and parent interfaces to eliminate blocking RPC calls. - New session representation at the parent (base/session_state.h) - base-internal root proxy mechanism as migration path - Redesign of base/service.h - Removes ancient 'Connection::KEEP_OPEN' feature - Interface change of 'Child', 'Child_policy', 'Slave', 'Slave_policy' - New 'Slave::Connection' - Changed child-construction procedure to be compatible with the non-blocking parent interface and to be easier to use - The child's initial LOG session, its binary ROM session, and the linker ROM session have become part of the child's envirenment. - Session upgrading must now be performed via 'env.upgrade' instead of performing a sole RPC call the parent. To make RAM upgrades easier, the 'Connection' provides a new 'upgrade_ram' method. Issue #2120 |
||
---|---|---|
.. | ||
include | ||
spec | ||
startup | ||
debug.cc | ||
dependency.cc | ||
exception.cc | ||
linker.ld | ||
linux-32.ld | ||
main.cc | ||
README | ||
shared_object.cc | ||
symbol.map | ||
test.cc |
This directory contains Genode's dynamic linker (ldso) Usage ----- To build a shared library instead of a regular static library, you just need to declare 'SHARED_LIB = yes' in the library-description file. When doing so, a '<libname>.lib.so' file will be generated and installed in the '<build-dir>/bin/' directory. For building an executable that uses a shared library, no special precautions are needed. The build system will automatically detect the use of shared libraries, concludes that the binary must be dynamically linked, and will use the correct linker script. When loading a dynamically linked program, the dynamic linker 'ldso.lib.so' and all used shared objects must be loaded as well. The linker can be configured through the '<config>' node when loading a dynamic binary. Currently there are to configurations options, 'ld_bind_now="yes"' causes the linker to resolve all symbol references on program loading. 'ld_verbose="yes"' outputs library load informations before starting the program. Configuration snippet: !<!-- bind immediately, no library informations --> !<start name="dynamic_binary"> ! <resource name="RAM" quantum="1M" /> ! <config ld_bind_now="yes" ld_verbose="no"> ! </config> !</start> Debugging dynamic binaries with GDB stubs ----------------------------------------- ! # go to directory containing the binaries ! cd <build/dir>/bin ! ! # start GDB with binary to debug ! gdb <binary name> ! ! # break in main routine ! b main ! ! # inspect loaded shared libraries ! info sharedlibrary ! ! # load shared symbols of shared libraries (if not already loaded) ! share ! ! # from here you can debug within libraries :Known issues: GDB 7.2 has a regression bug in its line information parser. These issue has been fixed with version 7.3.