summaryrefslogtreecommitdiff
path: root/gnu/usr.bin
diff options
context:
space:
mode:
authorPhilip Guenther <guenther@cvs.openbsd.org>2018-07-03 20:15:58 +0000
committerPhilip Guenther <guenther@cvs.openbsd.org>2018-07-03 20:15:58 +0000
commit9decf10757b69d8f3d9fc71615993eb79208ce45 (patch)
treede265a7348142ac58cceb9d87e046550489612c8 /gnu/usr.bin
parentbf5fb2f6bf3a718abb81ea9ea8df203780dabd82 (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/usr.bin')
-rw-r--r--gnu/usr.bin/binutils/gdb/amd64obsd-tdep.c12
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)