diff options
author | Philip Guenther <guenther@cvs.openbsd.org> | 2018-07-03 20:15:58 +0000 |
---|---|---|
committer | Philip Guenther <guenther@cvs.openbsd.org> | 2018-07-03 20:15:58 +0000 |
commit | 9decf10757b69d8f3d9fc71615993eb79208ce45 (patch) | |
tree | de265a7348142ac58cceb9d87e046550489612c8 /gnu | |
parent | bf5fb2f6bf3a718abb81ea9ea8df203780dabd82 (diff) |
Make intrframe the exact same size as trapframe: instead of pushing
the PPL on top, store it where trapframe puts the trap number. This
makes interrupt handlers get called with the correct stack alignment.
Also, document the use of if_err to differentiate resumed/recursed
interrupts from 'real' ones.
tested in snaps
ok deraadt@
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/usr.bin/binutils/gdb/amd64obsd-tdep.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/gnu/usr.bin/binutils/gdb/amd64obsd-tdep.c b/gnu/usr.bin/binutils/gdb/amd64obsd-tdep.c index 7632ac727f8..b43c698095e 100644 --- a/gnu/usr.bin/binutils/gdb/amd64obsd-tdep.c +++ b/gnu/usr.bin/binutils/gdb/amd64obsd-tdep.c @@ -383,7 +383,6 @@ amd64obsd_trapframe_cache(struct frame_info *next_frame, void **this_cache) struct trad_frame_cache *cache; CORE_ADDR func, sp, addr; ULONGEST cs; - char *name; int i; if (*this_cache) @@ -394,16 +393,7 @@ amd64obsd_trapframe_cache(struct frame_info *next_frame, void **this_cache) func = frame_func_unwind (next_frame); sp = frame_unwind_register_unsigned (next_frame, AMD64_RSP_REGNUM); - - find_pc_partial_function (func, &name, NULL, NULL); - if (name && ((strncmp(name, "Xintr", 5) == 0) - || (strncmp (name, "Xresume", 7) == 0) - || (strncmp (name, "Xrecurse", 8) == 0) - || (strcmp (name, "Xdoreti") == 0) - || (strncmp (name, "Xsoft", 5) == 0))) - addr = sp + 8; /* It's an interrupt frame. */ - else - addr = sp; + addr = sp; for (i = 0; i < ARRAY_SIZE (amd64obsd_tf_reg_offset); i++) if (amd64obsd_tf_reg_offset[i] != -1) |