114114#  error  "Expected definition for RLBOX_WASM2C_MODULE_NAME"
115115#endif 
116116
117+ //  Concat after macro expansion
118+ #define  RLBOX_WASM2C_CONCAT2_HELPER (x, y ) x##y
119+ #define  RLBOX_WASM2C_CONCAT (x, y ) RLBOX_WASM2C_CONCAT2_HELPER(x, y)
120+ #define  RLBOX_WASM2C_CONCAT3_HELPER (x, y, z ) x##y##z
121+ #define  RLBOX_WASM2C_CONCAT3 (x, y, z ) RLBOX_WASM2C_CONCAT3_HELPER(x, y, z)
122+ 
123+ //  #define RLBOX_WASM2C_MANGLED_MODULE_NAME() RLBOX_WASM2C_MODULE_NAME
124+ #define  RLBOX_WASM2C_MANGLED_MODULE_NAME () RLBOX_WASM2C_CONCAT3(0x24 , RLBOX_WASM2C_MODULE_NAME, 0x2Ewasm)
125+ 
117126//  Need an extra macro to expand RLBOX_WASM2C_MODULE_NAME
118127#define  INVOKE_DEFINE_RLBOX_WASM2C_MODULE_TYPE (modname )                        \
119128  DEFINE_RLBOX_WASM2C_MODULE_TYPE (modname)
125134  DEFINE_RLBOX_WASM2C_EXPORTED_MODULE_ATTRIBS (modname)
126135
127136//  Define the base wasm2c module type
128- INVOKE_DEFINE_RLBOX_WASM2C_MODULE_TYPE(RLBOX_WASM2C_MODULE_NAME);
129- 
130- //  Concat after macro expansion
131- #define  RLBOX_WASM2C_CONCAT2 (x, y ) x##y
132- #define  RLBOX_WASM2C_CONCAT (x, y ) RLBOX_WASM2C_CONCAT2(x, y)
137+ INVOKE_DEFINE_RLBOX_WASM2C_MODULE_TYPE(RLBOX_WASM2C_MANGLED_MODULE_NAME());
133138
134139#define  RLBOX_WASM_MODULE_TYPE_CURR                                             \
135-   RLBOX_WASM2C_CONCAT (rlbox_wasm2c_module_type_, RLBOX_WASM2C_MODULE_NAME )
140+   RLBOX_WASM2C_CONCAT (rlbox_wasm2c_module_type_, RLBOX_WASM2C_MANGLED_MODULE_NAME() )
136141
137142#define  RLBOX_WASM2C_STRINGIFY (x ) RLBOX_WASM2C_STRINGIFY2(x)
138143#define  RLBOX_WASM2C_STRINGIFY2 (x ) #x
139144
140145#define  RLBOX_WASM2C_MODULE_NAME_STR                                            \
141146  RLBOX_WASM2C_STRINGIFY (RLBOX_WASM2C_MODULE_NAME)
142147
143- #define  RLBOX_WASM2C_MODULE_FUNC_HELPER2 (part1, part2, part3 )                  \
144-   part1##part2##part3
145- #define  RLBOX_WASM2C_MODULE_FUNC_HELPER (part1, part2, part3 )                   \
146-   RLBOX_WASM2C_MODULE_FUNC_HELPER2 (part1, part2, part3)
147148#define  RLBOX_WASM2C_MODULE_FUNC (name )                                         \
148-   RLBOX_WASM2C_MODULE_FUNC_HELPER (w2c_, RLBOX_WASM2C_MODULE_NAME , name)
149+   RLBOX_WASM2C_CONCAT3 (w2c_, RLBOX_WASM2C_MANGLED_MODULE_NAME() , name)
149150
150151namespace rlbox {
151152
@@ -558,7 +559,7 @@ class rlbox_wasm2c_sandbox
558559      sandbox_memory_info = &local_sandbox_memory_info;
559560      sandbox_callback_table = &local_sandbox_callback_table;
560561
561-       INVOKE_DEFINE_RLBOX_WASM2C_IMPORTED_MODULE_ATTRIBS (RLBOX_WASM2C_MODULE_NAME );
562+       INVOKE_DEFINE_RLBOX_WASM2C_IMPORTED_MODULE_ATTRIBS (RLBOX_WASM2C_MANGLED_MODULE_NAME () );
562563
563564      *sandbox_memory_info = create_wasm2c_memory (
564565        *initial_memory_pages, custom_capacity, instance_name? instance_name : " rlbox_wasm2c"  );
@@ -583,7 +584,7 @@ class rlbox_wasm2c_sandbox
583584      auto  create_instance_func = (RLBOX_WASM_MODULE_TYPE_CURR::create_instance_imported_t ) RLBOX_WASM_MODULE_TYPE_CURR::create_instance;
584585      create_instance_func (&wasm2c_instance, &sandbox_memory_env, &wasi_env);
585586    } else  {
586-       INVOKE_DEFINE_RLBOX_WASM2C_EXPORTED_MODULE_ATTRIBS (RLBOX_WASM2C_MODULE_NAME );
587+       INVOKE_DEFINE_RLBOX_WASM2C_EXPORTED_MODULE_ATTRIBS (RLBOX_WASM2C_MANGLED_MODULE_NAME () );
587588      sandbox_memory_info = get_exported_memory (&wasm2c_instance);
588589      sandbox_callback_table = get_exported_table (&wasm2c_instance);
589590
0 commit comments