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)
+ 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;
find_pc_partial_function (frame_pc_unwind (next_frame), &name, NULL, NULL);
return (name && ((strcmp (name, "calltrap") == 0)
|| (strcmp (name, "alltraps") == 0)
- || (strcmp (name, "osyscall1") == 0)
|| (strcmp (name, "Xsyscall") == 0)
- || (strncmp (name, "Xintr", 5) == 0)));
+ || (strncmp (name, "Xintr", 5) == 0)
+ || (strncmp (name, "Xresume", 7) == 0)
+ || (strncmp (name, "Xrecurse", 8) == 0)
+ || (strcmp (name, "Xdoreti") == 0)
+ || (strncmp (name, "Xsoft", 5) == 0)));
}
static const struct frame_unwind amd64obsd_trapframe_unwind = {
sp = frame_unwind_register_unsigned (next_frame, I386_ESP_REGNUM);
find_pc_partial_function (func, &name, NULL, NULL);
- if (name && strncmp (name, "Xintr", 5) == 0)
+ if (name && (strncmp (name, "Xintr", 5) == 0
+ || strncmp (name, "Xresume", 7) == 0
+ || strncmp (name, "Xstray", 6) == 0
+ || strncmp (name, "Xhold", 5) == 0
+ || strncmp (name, "Xrecurse", 8) == 0
+ || strcmp (name, "Xdoreti") == 0
+ || strncmp (name, "Xsoft", 5) == 0))
addr = sp + 8; /* It's an interrupt frame. */
else if (name && strcmp (name, "alltraps") == 0)
addr = sp + 4; /* It's a trap frame. */
find_pc_partial_function (frame_pc_unwind (next_frame), &name, NULL, NULL);
return (name && (strcmp (name, "calltrap") == 0
|| strcmp (name, "alltraps") == 0
- || strcmp (name, "syscall1") == 0
|| strncmp (name, "Xintr", 5) == 0
+ || strncmp (name, "Xresume", 7) == 0
+ || strncmp (name, "Xstray", 6) == 0
+ || strncmp (name, "Xhold", 5) == 0
+ || strncmp (name, "Xrecurse", 8) == 0
+ || strcmp (name, "Xdoreti") == 0
|| strncmp (name, "Xsoft", 5) == 0));
}