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