|
@@ -147,10 +147,12 @@ static void emit_asm_label(BuildCtx *ctx, const char *name, int size, int isfunc
|
|
switch (ctx->mode) {
|
|
switch (ctx->mode) {
|
|
case BUILD_elfasm:
|
|
case BUILD_elfasm:
|
|
#if LJ_TARGET_PS3
|
|
#if LJ_TARGET_PS3
|
|
- if (!strncmp(name, "lj_vm_", 6)) {
|
|
|
|
|
|
+ if (!strncmp(name, "lj_vm_", 6) &&
|
|
|
|
+ strcmp(name, ctx->beginsym) &&
|
|
|
|
+ !strstr(name, "hook")) {
|
|
fprintf(ctx->fp,
|
|
fprintf(ctx->fp,
|
|
"\n\t.globl %s\n"
|
|
"\n\t.globl %s\n"
|
|
- "\n\t.section \".opd\",\"aw\"\n"
|
|
|
|
|
|
+ "\t.section \".opd\",\"aw\"\n"
|
|
"%s:\n"
|
|
"%s:\n"
|
|
"\t.long .%s,.TOC.@tocbase32\n"
|
|
"\t.long .%s,.TOC.@tocbase32\n"
|
|
"\t.size %s,8\n"
|
|
"\t.size %s,8\n"
|
|
@@ -215,7 +217,11 @@ void emit_asm(BuildCtx *ctx)
|
|
fprintf(ctx->fp, "\t.text\n");
|
|
fprintf(ctx->fp, "\t.text\n");
|
|
emit_asm_align(ctx, 4);
|
|
emit_asm_align(ctx, 4);
|
|
|
|
|
|
|
|
+#if LJ_TARGET_PS3
|
|
|
|
+ emit_asm_label(ctx, ctx->beginsym, ctx->codesz, 0);
|
|
|
|
+#else
|
|
emit_asm_label(ctx, ctx->beginsym, 0, 0);
|
|
emit_asm_label(ctx, ctx->beginsym, 0, 0);
|
|
|
|
+#endif
|
|
if (ctx->mode != BUILD_machasm)
|
|
if (ctx->mode != BUILD_machasm)
|
|
fprintf(ctx->fp, ".Lbegin:\n");
|
|
fprintf(ctx->fp, ".Lbegin:\n");
|
|
|
|
|