aboutsummaryrefslogtreecommitdiff
path: root/environment.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-06-13 21:20:50 -0400
committerBruce Hill <bruce@bruce-hill.com>2024-06-13 21:20:50 -0400
commit81d55cacb7b86add20613510b8fa9da74e58bdca (patch)
tree0051267dda1a43265251bb6e0d36ebd26022bef5 /environment.c
parentdab2c399f1b574b598c908124acebaa06c80938a (diff)
Do dynamic library symbol prefixing using 'patchelf'
Diffstat (limited to 'environment.c')
-rw-r--r--environment.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/environment.c b/environment.c
index 38c6f104..c71699e1 100644
--- a/environment.c
+++ b/environment.c
@@ -235,14 +235,14 @@ env_t *new_compilation_unit(void)
return env;
}
-env_t *load_module_env(env_t *env, ast_t *ast)
+env_t *load_module_env(env_t *env, const char *prefix, ast_t *ast)
{
const char *name = file_base_name(ast->file->filename);
env_t *cached = Table$str_get(*env->imports, name);
if (cached) return cached;
env = fresh_scope(env);
env->code = new(compilation_unit_t);
- env->file_prefix = heap_strf("%s$", name);
+ env->file_prefix = prefix;
Table$str_set(env->imports, name, env);
for (ast_list_t *stmt = Match(ast, Block)->statements; stmt; stmt = stmt->next)
@@ -251,7 +251,7 @@ env_t *load_module_env(env_t *env, ast_t *ast)
for (ast_list_t *stmt = Match(ast, Block)->statements; stmt; stmt = stmt->next) {
// Hack: make sure global variables are bound as foo$var:
if (stmt->ast->tag == Declare && Match(Match(stmt->ast, Declare)->var, Var)->name[0] != '_')
- env->scope_prefix = heap_strf("%s$", name);
+ env->scope_prefix = prefix;
bind_statement(env, stmt->ast);
env->scope_prefix = NULL;
}