diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-01-08 06:28:46 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-01-08 06:28:46 +0000 |
commit | a0dcb6896c35abf88810296367a63da75ebf1828 (patch) | |
tree | d2c3fad2eab4eac4f2020866ca36f2cd4a011169 /sysdeps/generic/unwind-dw2.c | |
parent | abd336891bd17071ed166ae536ef381dbafe00b3 (diff) | |
download | glibc-a0dcb6896c35abf88810296367a63da75ebf1828.tar.gz glibc-a0dcb6896c35abf88810296367a63da75ebf1828.tar.xz glibc-a0dcb6896c35abf88810296367a63da75ebf1828.zip |
Update.
2002-01-03 Jakub Jelinek <jakub@redhat.com> * elf/Makefile (routines, shared-only-routines): Add unwind-dw2-fde-glibc instead of unwind-dw2-fde. * elf/elf.h (PT_GNU_EH_FRAME): Define. * sysdeps/generic/unwind-dw2-fde-glibc.c: New file. * sysdeps/generic/unwind-dw2-fde.c (__register_frame_info_bases): Optimize if .eh_frame section contains no FDEs. (__register_frame, __deregister_frame_info_bases, __deregister_frame): Likewise. * sysdeps/generic/unwind-dw2.c (execute_cfa_program): Fix DW_CFA_restore handling. 2002-01-07 Stephen L Moshier <moshier@mediaone.net>
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; |