From 3ea9fe971424ac8d324e6937bf738eea1fd3db19 Mon Sep 17 00:00:00 2001 From: rth Date: Wed, 24 Sep 2008 22:38:03 +0000 Subject: [PATCH] * dwarf2.h (DW_OP_GNU_encoded_addr): New. * unwind-dw2.c (execute_stack_op): Handle it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140648 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/dwarf2.h | 1 + gcc/unwind-dw2.c | 8 ++++++++ 3 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 386e27e..dd68096 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-09-24 Richard Henderson + + * dwarf2.h (DW_OP_GNU_encoded_addr): New. + * unwind-dw2.c (execute_stack_op): Handle it. + 2008-09-24 David Edelsohn Revert: diff --git a/gcc/dwarf2.h b/gcc/dwarf2.h index 89bc08a..a20d469 100644 --- a/gcc/dwarf2.h +++ b/gcc/dwarf2.h @@ -543,6 +543,7 @@ enum dwarf_location_atom DW_OP_GNU_push_tls_address = 0xe0, /* The following is for marking variables that are uninitialized. */ DW_OP_GNU_uninit = 0xf0, + DW_OP_GNU_encoded_addr = 0xf1, /* HP extensions. */ DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */ DW_OP_HP_is_value = 0xe1, diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c index 1bea1b3..f55f577 100644 --- a/gcc/unwind-dw2.c +++ b/gcc/unwind-dw2.c @@ -494,6 +494,14 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end, op_ptr += sizeof (void *); break; + case DW_OP_GNU_encoded_addr: + { + _Unwind_Ptr presult; + op_ptr = read_encoded_value (context, *op_ptr, op_ptr+1, &presult); + result = presult; + } + break; + case DW_OP_const1u: result = read_1u (op_ptr); op_ptr += 1; -- 2.7.4