diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/s390-linux-tdep.c | 15 |
2 files changed, 17 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f614f1b..6eef81a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2014-01-16 Pedro Alves <palves@redhat.com> + + * s390-linux-tdep.c (s390_frame_unwind_cache): Swallow + NOT_AVAILABLE_ERROR errors while parsing the prologue or reading + the backchain. + 2014-01-16 Doug Evans <dje@google.com> * dwarf2read.c (open_and_init_dwp_file): Fix typo in comment. diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c index b75c86a..8b71e78 100644 --- a/gdb/s390-linux-tdep.c +++ b/gdb/s390-linux-tdep.c @@ -2039,7 +2039,9 @@ static struct s390_unwind_cache * s390_frame_unwind_cache (struct frame_info *this_frame, void **this_prologue_cache) { + volatile struct gdb_exception ex; struct s390_unwind_cache *info; + if (*this_prologue_cache) return *this_prologue_cache; @@ -2050,10 +2052,15 @@ s390_frame_unwind_cache (struct frame_info *this_frame, info->frame_base = -1; info->local_base = -1; - /* Try to use prologue analysis to fill the unwind cache. - If this fails, fall back to reading the stack backchain. */ - if (!s390_prologue_frame_unwind_cache (this_frame, info)) - s390_backchain_frame_unwind_cache (this_frame, info); + TRY_CATCH (ex, RETURN_MASK_ERROR) + { + /* Try to use prologue analysis to fill the unwind cache. + If this fails, fall back to reading the stack backchain. */ + if (!s390_prologue_frame_unwind_cache (this_frame, info)) + s390_backchain_frame_unwind_cache (this_frame, info); + } + if (ex.reason < 0 && ex.error != NOT_AVAILABLE_ERROR) + throw_exception (ex); return info; } |