ppc: Fix unwind info for ppc64.

This commit is contained in:
Marcin Kościelnicki 2016-07-09 03:00:14 +02:00
parent 89f7457952
commit 1d40c34ec3

View File

@ -5209,7 +5209,11 @@ static void emit_asm_debug(BuildCtx *ctx)
"\t.byte 0x1\n" "\t.byte 0x1\n"
"\t.string \"\"\n" "\t.string \"\"\n"
"\t.uleb128 0x1\n" "\t.uleb128 0x1\n"
#if LJ_ARCH_PPC32ON64
"\t.sleb128 -8\n"
#else
"\t.sleb128 -4\n" "\t.sleb128 -4\n"
#endif
"\t.byte 65\n" "\t.byte 65\n"
"\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n" "\t.byte 0xc\n\t.uleb128 1\n\t.uleb128 0\n"
"\t.align 2\n" "\t.align 2\n"
@ -5222,14 +5226,24 @@ static void emit_asm_debug(BuildCtx *ctx)
"\t.long .Lbegin\n" "\t.long .Lbegin\n"
"\t.long %d\n" "\t.long %d\n"
"\t.byte 0xe\n\t.uleb128 %d\n" "\t.byte 0xe\n\t.uleb128 %d\n"
#if LJ_ARCH_PPC32ON64
"\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -2\n"
"\t.byte 0x11\n\t.uleb128 70\n\t.sleb128 -1\n",
#else
"\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n"
"\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n",
#endif
fcofs, CFRAME_SIZE); fcofs, CFRAME_SIZE);
for (i = 14; i <= 31; i++) for (i = 14; i <= 31; i++)
fprintf(ctx->fp, fprintf(ctx->fp,
"\t.byte %d\n\t.uleb128 %d\n" "\t.byte %d\n\t.uleb128 %d\n"
"\t.byte %d\n\t.uleb128 %d\n", "\t.byte %d\n\t.uleb128 %d\n",
0x80+i, 37+(31-i), 0x80+32+i, 2+2*(31-i)); #if LJ_ARCH_PPC32ON64
0x80+i, 19+(31-i), 0x80+32+i, 1+(31-i)
#else
0x80+i, 37+(31-i), 0x80+32+i, 2+2*(31-i)
#endif
);
fprintf(ctx->fp, fprintf(ctx->fp,
"\t.align 2\n" "\t.align 2\n"
".LEFDE0:\n\n"); ".LEFDE0:\n\n");
@ -5261,7 +5275,11 @@ static void emit_asm_debug(BuildCtx *ctx)
"\t.byte 0x1\n" "\t.byte 0x1\n"
"\t.string \"zPR\"\n" "\t.string \"zPR\"\n"
"\t.uleb128 0x1\n" "\t.uleb128 0x1\n"
#if LJ_ARCH_PPC32ON64
"\t.sleb128 -8\n"
#else
"\t.sleb128 -4\n" "\t.sleb128 -4\n"
#endif
"\t.byte 65\n" "\t.byte 65\n"
"\t.uleb128 6\n" /* augmentation length */ "\t.uleb128 6\n" /* augmentation length */
"\t.byte 0x1b\n" /* pcrel|sdata4 */ "\t.byte 0x1b\n" /* pcrel|sdata4 */
@ -5279,14 +5297,24 @@ static void emit_asm_debug(BuildCtx *ctx)
"\t.long %d\n" "\t.long %d\n"
"\t.uleb128 0\n" /* augmentation length */ "\t.uleb128 0\n" /* augmentation length */
"\t.byte 0xe\n\t.uleb128 %d\n" "\t.byte 0xe\n\t.uleb128 %d\n"
#if LJ_ARCH_PPC32ON64
"\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -2\n"
"\t.byte 0x11\n\t.uleb128 70\n\t.sleb128 -1\n",
#else
"\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n" "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n"
"\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n", "\t.byte 0x5\n\t.uleb128 70\n\t.uleb128 55\n",
#endif
fcofs, CFRAME_SIZE); fcofs, CFRAME_SIZE);
for (i = 14; i <= 31; i++) for (i = 14; i <= 31; i++)
fprintf(ctx->fp, fprintf(ctx->fp,
"\t.byte %d\n\t.uleb128 %d\n" "\t.byte %d\n\t.uleb128 %d\n"
"\t.byte %d\n\t.uleb128 %d\n", "\t.byte %d\n\t.uleb128 %d\n",
0x80+i, 37+(31-i), 0x80+32+i, 2+2*(31-i)); #if LJ_ARCH_PPC32ON64
0x80+i, 19+(31-i), 0x80+32+i, 1+(31-i)
#else
0x80+i, 37+(31-i), 0x80+32+i, 2+2*(31-i)
#endif
);
fprintf(ctx->fp, fprintf(ctx->fp,
"\t.align 2\n" "\t.align 2\n"
".LEFDE2:\n\n"); ".LEFDE2:\n\n");