summaryrefslogtreecommitdiff
path: root/src/lj_gdbjit.c
diff options
context:
space:
mode:
authorMike Pall <mike>2010-03-01 06:33:48 +0100
committerMike Pall <mike>2010-03-01 06:33:48 +0100
commit69ea553024155638c89bc12dca648c87a625ab5f (patch)
treeed8edd7e7939b33c671be161222da621826568b9 /src/lj_gdbjit.c
parent7e696124ec94c0312b4a23d07ba2fb15cc1014b9 (diff)
downloadluajit2-69ea553024155638c89bc12dca648c87a625ab5f.tar.gz
Fix pc to line number translation for GDB JIT API.
Diffstat (limited to 'src/lj_gdbjit.c')
-rw-r--r--src/lj_gdbjit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c
index c6e34807..951d52ec 100644
--- a/src/lj_gdbjit.c
+++ b/src/lj_gdbjit.c
@@ -711,7 +711,10 @@ void lj_gdbjit_addtrace(jit_State *J, Trace *T, TraceNo traceno)
ctx.szmcode = T->szmcode;
ctx.spadjp = CFRAME_SIZE_JIT + (MSize)(parent?J->trace[parent]->spadjust:0);
ctx.spadj = CFRAME_SIZE_JIT + T->spadjust;
- ctx.lineno = proto_line(pt, proto_bcpos(pt, startpc));
+ if (startpc >= proto_bc(pt) && startpc < proto_bc(pt) + pt->sizebc)
+ ctx.lineno = proto_line(pt, proto_bcpos(pt, startpc));
+ else
+ ctx.lineno = proto_line(pt, 0); /* Wrong, but better than nothing. */
ctx.filename = strdata(proto_chunkname(pt));
if (*ctx.filename == '@' || *ctx.filename == '=')
ctx.filename++;