diff options
Diffstat (limited to 'sysdeps/generic/unwind-dw2.c')
-rw-r--r-- | sysdeps/generic/unwind-dw2.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sysdeps/generic/unwind-dw2.c b/sysdeps/generic/unwind-dw2.c index ac56e7c35c..ca0299468f 100644 --- a/sysdeps/generic/unwind-dw2.c +++ b/sysdeps/generic/unwind-dw2.c @@ -721,9 +721,9 @@ execute_cfa_program (const unsigned char *insn_ptr, _Unwind_Sword offset; _Unwind_Ptr ptrtmp; - if (insn & DW_CFA_advance_loc) + if ((insn & 0xc0) == DW_CFA_advance_loc) fs->pc += (insn & 0x3f) * fs->code_align; - else if (insn & DW_CFA_offset) + else if ((insn & 0xc0) == DW_CFA_offset) { reg = insn & 0x3f; insn_ptr = read_uleb128 (insn_ptr, &ptrtmp); @@ -731,7 +731,7 @@ execute_cfa_program (const unsigned char *insn_ptr, fs->regs.reg[reg].how = REG_SAVED_OFFSET; fs->regs.reg[reg].loc.offset = offset; } - else if (insn & DW_CFA_restore) + else if ((insn & 0xc0) == DW_CFA_restore) { reg = insn & 0x3f; fs->regs.reg[reg].how = REG_UNSAVED; |