From 69ea553024155638c89bc12dca648c87a625ab5f Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 1 Mar 2010 06:33:48 +0100 Subject: [PATCH] Fix pc to line number translation for GDB JIT API. --- src/lj_gdbjit.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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++;