https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108261
--- Comment #17 from Gaius Mulley <gaius at gcc dot gnu.org> --- Yes I was coming to the same conclusion (re: name mangling). If each library module had its mangled name component set via -flibname=pim or -flibname=iso etc. Then we have one universe of distinct named modules. All ctors fire on startup registering themselves with M2RTS (M2Dependents). main calls M2RTS to traverse the import graph marking the used modules. (From the linking perspective it wouldn't matter if there were two Storages with different API used by 3rd party libraries etc). I'm liking the simplicity of the name mangling implementation.