diff --git a/repos/base/src/lib/ldso/include/linker.h b/repos/base/src/lib/ldso/include/linker.h index 2507de1e6..dd8ae6671 100644 --- a/repos/base/src/lib/ldso/include/linker.h +++ b/repos/base/src/lib/ldso/include/linker.h @@ -53,6 +53,13 @@ namespace Linker { */ extern bool bind_now; + /** + * Print diagnostic information + * + * The value corresponds to the config attribute "ld_verbose". + */ + extern bool verbose; + /** * Find symbol via index * diff --git a/repos/base/src/lib/ldso/main.cc b/repos/base/src/lib/ldso/main.cc index ff3c96c53..ae9dbc442 100644 --- a/repos/base/src/lib/ldso/main.cc +++ b/repos/base/src/lib/ldso/main.cc @@ -14,7 +14,7 @@ /* Genode includes */ #include #include -#include +#include #include #include #include @@ -37,6 +37,7 @@ namespace Linker { static Binary *binary = 0; bool Linker::bind_now = false; +bool Linker::verbose = false; Link_map *Link_map::first; /** @@ -550,11 +551,13 @@ void Component::construct(Genode::Env &env) if (!Ld::linker()->file()) Ld::linker()->load_phdr(); - /* read configuration */ + /* read configuration, release ROM afterwards */ try { - /* bind immediately */ - bind_now = Genode::config()->xml_node().attribute("ld_bind_now").has_value("yes"); - } catch (...) { } + Genode::Attached_rom_dataspace config(env, "config"); + + bind_now = config.xml().attribute_value("ld_bind_now", false); + verbose = config.xml().attribute_value("ld_verbose", false); + } catch (Genode::Rom_connection::Rom_connection_failed) { } /* load binary and all dependencies */ try { @@ -566,7 +569,7 @@ void Component::construct(Genode::Env &env) /* print loaded object information */ try { - if (Genode::config()->xml_node().attribute("ld_verbose").has_value("yes")) { + if (verbose) { PINF(" %lx .. %lx: stack area", Genode::Thread::stack_area_virtual_base(), Genode::Thread::stack_area_virtual_base() + diff --git a/repos/base/src/lib/ldso/shared_object.cc b/repos/base/src/lib/ldso/shared_object.cc index 9c342a1e2..4b275abc7 100644 --- a/repos/base/src/lib/ldso/shared_object.cc +++ b/repos/base/src/lib/ldso/shared_object.cc @@ -11,9 +11,6 @@ * under the terms of the GNU General Public License version 2. */ -/* Genode includes */ -#include - /* local includes */ #include @@ -70,7 +67,7 @@ Genode::Shared_object::Shared_object(char const *file, unsigned flags) /* print loaded object information */ try { - if (Genode::config()->xml_node().attribute("ld_verbose").has_value("yes")) + if (Linker::verbose) Linker::dump_link_map(to_root(_handle)->dep.head()->obj); } catch (...) { } diff --git a/repos/base/src/test/thread/main.cc b/repos/base/src/test/thread/main.cc index 9d5ef264b..3ce08e756 100644 --- a/repos/base/src/test/thread/main.cc +++ b/repos/base/src/test/thread/main.cc @@ -18,11 +18,10 @@ #include #include #include -#include +#include #include #include - using namespace Genode; @@ -340,7 +339,7 @@ void Component::construct(Env &env) { log("--- thread test started ---"); - Xml_node config = Genode::config()->xml_node(); + Attached_rom_dataspace config(env, "config"); try { test_stack_alloc(env); @@ -348,7 +347,7 @@ void Component::construct(Env &env) test_main_thread(); test_cpu_session(env); - if (config.has_sub_node("pause_resume")) + if (config.xml().has_sub_node("pause_resume")) test_pause_resume(env); test_create_as_many_threads(env); diff --git a/repos/base/src/test/thread/target.mk b/repos/base/src/test/thread/target.mk index f369116be..bf2a0e788 100644 --- a/repos/base/src/test/thread/target.mk +++ b/repos/base/src/test/thread/target.mk @@ -1,3 +1,3 @@ TARGET = test-thread SRC_CC = main.cc -LIBS = base config +LIBS = base