From 03ac2a74f949f0ff3796e2d0a083ac6d88e16c20 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sat, 1 May 2004 10:55:19 +0000 Subject: [PATCH] * dwarf2-frame.c (read_encoded_value): Handle DW_EH_PE_funcrel encondings. Fixes PR gdb/1628. --- gdb/ChangeLog | 3 +++ gdb/dwarf2-frame.c | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 937b6f3f0f..dafa5bd1a8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2004-05-01 Mark Kettenis + * dwarf2-frame.c (read_encoded_value): Handle DW_EH_PE_funcrel + encondings. Fixes PR gdb/1628. + * dwarf2-frame.c (execute_cfa_program): Complain if we encounter a DW_CFA_restore state without a matching DW_CFA_remember_state instead of aborting. Fixes PR backtrace/1589. diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index fafc8fc657..fccb94d3e3 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -1088,6 +1088,14 @@ read_encoded_value (struct comp_unit *unit, unsigned char encoding, case DW_EH_PE_textrel: base = unit->tbase; break; + case DW_EH_PE_funcrel: + /* FIXME: kettenis/20040501: For now just pretend + DW_EH_PE_funcrel is equivalent to DW_EH_PE_absptr. For + reading the initial location of an FDE it should be treated + as such, and currently that's the only place where this code + is used. */ + base = 0; + break; case DW_EH_PE_aligned: base = 0; offset = buf - unit->dwarf_frame_buffer;