Переглянути джерело

Fix pc to line number translation for GDB JIT API.

Mike Pall 15 роки тому
батько
коміт
69ea553024
1 змінених файлів з 4 додано та 1 видалено
  1. 4 1
      src/lj_gdbjit.c

+ 4 - 1
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++;