GHashTable *unwind_info_offsets;
GPtrArray *unwind_ops;
guint32 unwind_info_offset;
- char *got_symbol_base;
- char *llvm_got_symbol_base;
+ char *global_prefix;
char *got_symbol;
char *llvm_got_symbol;
char *plt_symbol;
sindex = 0;
symbols [sindex ++] = acfg->got_symbol;
if (acfg->llvm) {
- symbols [sindex ++] = g_strdup_printf ("%s%s", acfg->user_symbol_prefix, acfg->llvm_got_symbol_base);
+ symbols [sindex ++] = g_strdup_printf ("%s%s", acfg->user_symbol_prefix, acfg->llvm_got_symbol);
symbols [sindex ++] = acfg->llvm_eh_frame_symbol;
} else {
symbols [sindex ++] = NULL;
*p = '_';
}
- acfg->got_symbol_base = g_strdup_printf ("mono_aot_%s_got", acfg->assembly_name_sym);
- acfg->llvm_got_symbol_base = g_strdup_printf ("mono_aot_%s_llvm_got", acfg->assembly_name_sym);
- acfg->plt_symbol = g_strdup_printf ("%smono_aot_%s_plt", acfg->llvm_label_prefix, acfg->assembly_name_sym);
-
- acfg->got_symbol = g_strdup_printf ("%s%s", acfg->llvm_label_prefix, acfg->got_symbol_base);
- if (acfg->llvm) {
- acfg->llvm_got_symbol = g_strdup_printf ("%s%s", acfg->llvm_label_prefix, acfg->llvm_got_symbol_base);
- acfg->llvm_eh_frame_symbol = g_strdup_printf ("mono_aot_%s_eh_frame", acfg->assembly_name_sym);
+ acfg->global_prefix = g_strdup_printf ("mono_aot_%s", acfg->assembly_name_sym);
+ acfg->plt_symbol = g_strdup_printf ("%s_plt", acfg->global_prefix);
+ acfg->got_symbol = g_strdup_printf ("%s_got", acfg->global_prefix);
+ if (acfg->llvm) {
+ acfg->llvm_got_symbol = g_strdup_printf ("%s_llvm_got", acfg->global_prefix);
+ acfg->llvm_eh_frame_symbol = g_strdup_printf ("%s_eh_frame", acfg->global_prefix);
}
acfg->method_index = 1;
#ifdef ENABLE_LLVM
if (acfg->llvm) {
llvm_acfg = acfg;
- mono_llvm_create_aot_module (acfg->llvm_got_symbol_base, TRUE, TRUE);
+ mono_llvm_create_aot_module (acfg->global_prefix, TRUE);
}
#endif
}
void
-mono_llvm_create_aot_module (const char *got_symbol, gboolean external_symbols, gboolean emit_dwarf)
+mono_llvm_create_aot_module (const char *global_prefix, gboolean emit_dwarf)
{
/* Delete previous module */
if (aot_module.plt_entries)
memset (&aot_module, 0, sizeof (aot_module));
aot_module.module = LLVMModuleCreateWithName ("aot");
- aot_module.got_symbol = got_symbol;
- aot_module.external_symbols = external_symbols;
+ aot_module.got_symbol = g_strdup_printf ("%s_llvm_got", global_prefix);
+ aot_module.external_symbols = TRUE;
aot_module.emit_dwarf = emit_dwarf;
/* The first few entries are reserved */
aot_module.max_got_offset = 16;
void mono_llvm_cleanup (void) MONO_LLVM_INTERNAL;
void mono_llvm_emit_method (MonoCompile *cfg) MONO_LLVM_INTERNAL;
void mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call) MONO_LLVM_INTERNAL;
-void mono_llvm_create_aot_module (const char *got_symbol, gboolean external_symbols, gboolean emit_dwarf) MONO_LLVM_INTERNAL;
+void mono_llvm_create_aot_module (const char *global_prefix, gboolean emit_dwarf) MONO_LLVM_INTERNAL;
void mono_llvm_emit_aot_module (const char *filename, const char *cu_name) MONO_LLVM_INTERNAL;
void mono_llvm_check_method_supported (MonoCompile *cfg) MONO_LLVM_INTERNAL;
void mono_llvm_free_domain_info (MonoDomain *domain) MONO_LLVM_INTERNAL;