blob: e3004884fd29178773086a63273d22e27bd1121a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
Index: i386/i386/trap.c
===================================================================
RCS file: /home/cvs/cvs/src/sys/i386/i386/trap.c,v
retrieving revision 1.133.2.1
diff -u -u -r1.133.2.1 trap.c
--- trap.c 1999/08/29 16:05:56 1.133.2.1
+++ trap.c 1999/09/10 14:42:21
@@ -1041,6 +1084,7 @@
int error;
int args[8];
u_int code;
+ int tracedsyscall = ((frame.tf_eflags & PSL_T) && !(frame.tf_eflags & PSL_VM));
#ifdef DIAGNOSTIC
if (ISPL(frame.tf_cs) != SEL_UPL)
@@ -1135,10 +1179,12 @@
break;
}
- if ((frame.tf_eflags & PSL_T) && !(frame.tf_eflags & PSL_VM)) {
+ if (tracedsyscall) {
/* Traced syscall. */
frame.tf_eflags &= ~PSL_T;
- trapsignal(p, SIGTRAP, 0);
+ /* tell the signal handler this is a trace trap */
+ frame.tf_trapno = T_TRCTRAP;
+ trapsignal(p, SIGTRAP, T_TRCTRAP);
}
userret(p, &frame, sticks);
|