diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c index e4f96212..0cff11b0 100644 --- a/src/lj_gdbjit.c +++ b/src/lj_gdbjit.c @@ -298,6 +298,9 @@ enum { DW_REG_SP = 1, DW_REG_RA = 65, DW_REG_CR = 70, +#elif LJ_TARGET_MIPS + DW_REG_SP = 29, + DW_REG_RA = 31, #else #error "Unsupported target architecture" #endif @@ -369,6 +372,8 @@ static const ELFheader elfhdr_template = { .machine = 40, #elif LJ_TARGET_PPC .machine = 20, +#elif LJ_TARGET_MIPS + .machine = 8, #else #error "Unsupported target architecture" #endif @@ -562,19 +567,24 @@ static void LJ_FASTCALL gdbjit_ehframe(GDBJITctx *ctx) #elif LJ_TARGET_ARM { int i; - DB(DW_CFA_offset_extended); DB(DW_REG_CR); DUV(55); - for (i = 11; i >= 4; i--) { /* R4-R11. */ - DB(DW_CFA_offset|i); DUV(2+(11-i)); - } + for (i = 11; i >= 4; i--) { DB(DW_CFA_offset|i); DUV(2+(11-i)); } } #elif LJ_TARGET_PPC { int i; + DB(DW_CFA_offset_extended); DB(DW_REG_CR); DUV(55); for (i = 14; i <= 31; i++) { DB(DW_CFA_offset|i); DUV(37+(31-i)); DB(DW_CFA_offset|32|i); DUV(2+2*(31-i)); } } +#elif LJ_TARGET_MIPS + { + int i; + DB(DW_CFA_offset|30); DUV(2); + for (i = 23; i >= 16; i--) { DB(DW_CFA_offset|i); DUV(26-i); } + for (i = 30; i >= 20; i -= 2) { DB(DW_CFA_offset|32|i); DUV(42-i); } + } #else #error "Unsupported target architecture" #endif