projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git]
/
gdb
/
tramp-frame.c
diff --git
a/gdb/tramp-frame.c
b/gdb/tramp-frame.c
index d4d3a4519ab6d68294becdd2598ae578211fdcc6..97b985dab44a06df1f72a4872aeb7933c42ebf08 100644
(file)
--- a/
gdb/tramp-frame.c
+++ b/
gdb/tramp-frame.c
@@
-1,7
+1,6
@@
/* Signal trampoline unwinder, for GDB the GNU Debugger.
/* Signal trampoline unwinder, for GDB the GNU Debugger.
- Copyright (C) 2004, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2004-2020 Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-27,7
+26,6
@@
#include "target.h"
#include "trad-frame.h"
#include "frame-base.h"
#include "target.h"
#include "trad-frame.h"
#include "frame-base.h"
-#include "gdb_assert.h"
struct frame_data
{
struct frame_data
{
@@
-45,7
+43,8
@@
static struct trad_frame_cache *
tramp_frame_cache (struct frame_info *this_frame,
void **this_cache)
{
tramp_frame_cache (struct frame_info *this_frame,
void **this_cache)
{
- struct tramp_frame_cache *tramp_cache = (*this_cache);
+ struct tramp_frame_cache *tramp_cache
+ = (struct tramp_frame_cache *) *this_cache;
if (tramp_cache->trad_cache == NULL)
{
if (tramp_cache->trad_cache == NULL)
{
@@
-88,6
+87,10
@@
tramp_frame_start (const struct tramp_frame *tramp,
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int ti;
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int ti;
+ /* Check if we can use this trampoline. */
+ if (tramp->validate && !tramp->validate (tramp, this_frame, &pc))
+ return 0;
+
/* Search through the trampoline for one that matches the
instruction sequence around PC. */
for (ti = 0; tramp->insn[ti].bytes != TRAMP_SENTINEL_INSN; ti++)
/* Search through the trampoline for one that matches the
instruction sequence around PC. */
for (ti = 0; tramp->insn[ti].bytes != TRAMP_SENTINEL_INSN; ti++)
@@
-163,6
+166,7
@@
tramp_frame_prepend_unwinder (struct gdbarch *gdbarch,
unwinder->type = tramp_frame->frame_type;
unwinder->unwind_data = data;
unwinder->sniffer = tramp_frame_sniffer;
unwinder->type = tramp_frame->frame_type;
unwinder->unwind_data = data;
unwinder->sniffer = tramp_frame_sniffer;
+ unwinder->stop_reason = default_frame_unwind_stop_reason;
unwinder->this_id = tramp_frame_this_id;
unwinder->prev_register = tramp_frame_prev_register;
frame_unwind_prepend_unwinder (gdbarch, unwinder);
unwinder->this_id = tramp_frame_this_id;
unwinder->prev_register = tramp_frame_prev_register;
frame_unwind_prepend_unwinder (gdbarch, unwinder);
This page took
0.023537 seconds
and
4
git commands to generate.