diff --git a/divine/cc/cc1.cpp b/divine/cc/cc1.cpp
index 5d951fde8a727785e6c5aece3df2b1f1cee5d8ab..9c4ed07e2ee06503f96df2bc72f8876a72b8f56f 100644
--- a/divine/cc/cc1.cpp
+++ b/divine/cc/cc1.cpp
@@ -32,10 +32,10 @@ DIVINE_UNRELAX_WARNINGS
 #include <divine/cc/cc1.hpp>
 #include <lart/divine/vaarg.h>
 
-namespace divine::str::cc
+namespace divine::str
 {
-    extern const std::string_view stddef_h;
-    extern const std::string_view stdarg_h;
+    struct stringtable { std::string n; std::string_view c; };
+    extern stringtable cc_list[];
 }
 
 namespace divine::cc
@@ -84,8 +84,8 @@ namespace divine::cc
         if ( !ctx )
             ctx.reset( new llvm::LLVMContext );
 
-        mapVirtualFile( "/builtin/stddef.h", ::divine::str::cc::stddef_h );
-        mapVirtualFile( "/builtin/stdarg.h", ::divine::str::cc::stdarg_h );
+        for ( auto src = str::cc_list; !src->n.empty(); ++src )
+            mapVirtualFile( brick::fs::joinPath( "/builtin/", src->n ), src->c );
     }
 
     CC1::~CC1() { }
diff --git a/divine/rt/runtime.cpp b/divine/rt/runtime.cpp
index 0e69c2e361c0104535ddfd71d3f15d61f3982c86..1965b0ccd0e65a28c8f50bddbda463689a154fd9 100644
--- a/divine/rt/runtime.cpp
+++ b/divine/rt/runtime.cpp
@@ -20,7 +20,6 @@
 
 namespace divine::str
 {
-
     struct stringtable { std::string n; std::string_view c; };
     extern stringtable dios_list[];
     namespace dios_native { extern std::string_view libdios_host_a, libc__abi_a, libc___a; }