summaryrefslogtreecommitdiff
path: root/src/buildvm_peobj.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_peobj.c')
-rw-r--r--src/buildvm_peobj.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/buildvm_peobj.c b/src/buildvm_peobj.c
index 4b5d98c6..d45f3c97 100644
--- a/src/buildvm_peobj.c
+++ b/src/buildvm_peobj.c
@@ -284,8 +284,18 @@ void emit_peobj(BuildCtx *ctx)
284 for (i = nzsym; i < ctx->nsym; i++) { 284 for (i = nzsym; i < ctx->nsym; i++) {
285 int pi = ctx->perm[i]; 285 int pi = ctx->perm[i];
286 if (pi >= ctx->npc) { 286 if (pi >= ctx->npc) {
287 sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX "%s", 287 const char *sym = ctx->globnames[pi-ctx->npc];
288 ctx->globnames[pi-ctx->npc]); 288 const char *p = strchr(sym, '@');
289 if (p) {
290#ifdef PEOBJ_SYMF_PREFIX
291 sprintf(name, PEOBJ_SYMF_PREFIX LABEL_PREFIX "%s", sym);
292#else
293 sprintf(name, LABEL_PREFIX "%s", sym);
294 name[p+sizeof(LABEL_PREFIX)] = '\0';
295#endif
296 } else {
297 sprintf(name, PEOBJ_SYM_PREFIX LABEL_PREFIX "%s", sym);
298 }
289 emit_peobj_sym_func(ctx, name, ctx->sym_ofs[pi]); 299 emit_peobj_sym_func(ctx, name, ctx->sym_ofs[pi]);
290#if LJ_HASJIT 300#if LJ_HASJIT
291 } else { 301 } else {