diff options
Diffstat (limited to 'src/lj_gdbjit.c')
-rw-r--r-- | src/lj_gdbjit.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c index 284195a1..4dbc9593 100644 --- a/src/lj_gdbjit.c +++ b/src/lj_gdbjit.c | |||
@@ -14,6 +14,8 @@ | |||
14 | #include "lj_err.h" | 14 | #include "lj_err.h" |
15 | #include "lj_debug.h" | 15 | #include "lj_debug.h" |
16 | #include "lj_frame.h" | 16 | #include "lj_frame.h" |
17 | #include "lj_buf.h" | ||
18 | #include "lj_strfmt.h" | ||
17 | #include "lj_jit.h" | 19 | #include "lj_jit.h" |
18 | #include "lj_dispatch.h" | 20 | #include "lj_dispatch.h" |
19 | 21 | ||
@@ -426,16 +428,6 @@ static void gdbjit_catnum(GDBJITctx *ctx, uint32_t n) | |||
426 | *ctx->p++ = '0' + n; | 428 | *ctx->p++ = '0' + n; |
427 | } | 429 | } |
428 | 430 | ||
429 | /* Add a ULEB128 value. */ | ||
430 | static void gdbjit_uleb128(GDBJITctx *ctx, uint32_t v) | ||
431 | { | ||
432 | uint8_t *p = ctx->p; | ||
433 | for (; v >= 0x80; v >>= 7) | ||
434 | *p++ = (uint8_t)((v & 0x7f) | 0x80); | ||
435 | *p++ = (uint8_t)v; | ||
436 | ctx->p = p; | ||
437 | } | ||
438 | |||
439 | /* Add a SLEB128 value. */ | 431 | /* Add a SLEB128 value. */ |
440 | static void gdbjit_sleb128(GDBJITctx *ctx, int32_t v) | 432 | static void gdbjit_sleb128(GDBJITctx *ctx, int32_t v) |
441 | { | 433 | { |
@@ -452,7 +444,7 @@ static void gdbjit_sleb128(GDBJITctx *ctx, int32_t v) | |||
452 | #define DU16(x) (*(uint16_t *)p = (x), p += 2) | 444 | #define DU16(x) (*(uint16_t *)p = (x), p += 2) |
453 | #define DU32(x) (*(uint32_t *)p = (x), p += 4) | 445 | #define DU32(x) (*(uint32_t *)p = (x), p += 4) |
454 | #define DADDR(x) (*(uintptr_t *)p = (x), p += sizeof(uintptr_t)) | 446 | #define DADDR(x) (*(uintptr_t *)p = (x), p += sizeof(uintptr_t)) |
455 | #define DUV(x) (ctx->p = p, gdbjit_uleb128(ctx, (x)), p = ctx->p) | 447 | #define DUV(x) (p = (uint8_t *)lj_strfmt_wuleb128((char *)p, (x))) |
456 | #define DSV(x) (ctx->p = p, gdbjit_sleb128(ctx, (x)), p = ctx->p) | 448 | #define DSV(x) (ctx->p = p, gdbjit_sleb128(ctx, (x)), p = ctx->p) |
457 | #define DSTR(str) (ctx->p = p, gdbjit_strz(ctx, (str)), p = ctx->p) | 449 | #define DSTR(str) (ctx->p = p, gdbjit_strz(ctx, (str)), p = ctx->p) |
458 | #define DALIGNNOP(s) while ((uintptr_t)p & ((s)-1)) *p++ = DW_CFA_nop | 450 | #define DALIGNNOP(s) while ((uintptr_t)p & ((s)-1)) *p++ = DW_CFA_nop |