/* Signal trampoline unwinder, for GDB the GNU Debugger.
- Copyright (C) 2004-2014 Free Software Foundation, Inc.
+ Copyright (C) 2004-2019 Free Software Foundation, Inc.
This file is part of GDB.
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)
{
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++)