diff --git a/sw/host/opentitanlib/src/app/mod.rs b/sw/host/opentitanlib/src/app/mod.rs
index c3109be..c0ce49b 100644
--- a/sw/host/opentitanlib/src/app/mod.rs
+++ b/sw/host/opentitanlib/src/app/mod.rs
@@ -123,10 +123,16 @@
     /// string as is.
     fn map_name(map: &HashMap<String, String>, name: &str) -> String {
         let name = name.to_uppercase();
-        // TODO(#8769): Support multi-level aliasing, either by
-        // flattening after parsing all files, or by repeated lookup
-        // here.
-        map.get(&name).cloned().unwrap_or(name)
+        match map.get(&name) {
+            Some(v) => {
+                if v.eq(&name) {
+                    name
+                } else {
+                    Self::map_name(map, v)
+                }
+            }
+            None => name,
+        }
     }
 
     /// Apply given configuration to a single pins.
diff --git a/sw/host/opentitanlib/src/backend/mod.rs b/sw/host/opentitanlib/src/backend/mod.rs
index a3806f0..273e241 100644
--- a/sw/host/opentitanlib/src/backend/mod.rs
+++ b/sw/host/opentitanlib/src/backend/mod.rs
@@ -47,8 +47,8 @@
     #[structopt(flatten)]
     ti50emulator_opts: ti50emulator::Ti50EmulatorOpts,
 
-    #[structopt(long, help = "Configuration files")]
-    conf: Option<PathBuf>,
+    #[structopt(long, number_of_values(1), help = "Configuration files")]
+    conf: Vec<PathBuf>,
 }
 
 #[derive(Error, Debug)]
@@ -60,7 +60,7 @@
 /// Creates the requested backend interface according to [`BackendOpts`].
 pub fn create(args: &BackendOpts) -> Result<TransportWrapper> {
     let interface = args.interface.as_str();
-    let (backend, conf) = match interface {
+    let (backend, default_conf) = match interface {
         "" => (create_empty_transport()?, None),
         "proxy" => (proxy::create(&args.proxy_opts)?, None),
         "verilator" => (
@@ -91,8 +91,14 @@
     };
     let mut env = TransportWrapper::new(backend);
 
-    for conf_file in args.conf.as_ref().map(PathBuf::as_ref).or(conf) {
-        process_config_file(&mut env, conf_file)?
+    if args.conf.is_empty() {
+        for conf_file in default_conf {
+            // Zero or one iteration
+            process_config_file(&mut env, conf_file)?
+        }
+    }
+    for conf_file in &args.conf {
+        process_config_file(&mut env, conf_file.as_ref())?
     }
     Ok(env)
 }
