summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@amacapital.net>2014-12-04 13:43:30 -0800
committerAndy Lutomirski <luto@amacapital.net>2014-12-04 13:43:30 -0800
commit2eff3a85758e87f5b04f5a8541ab6159c39f7d4f (patch)
tree88ed5fe8253c0af1d863a7203d516caca4d366cb
parent0b0e0cbec6cdc353fb538580db8ef4ac2bf40467 (diff)
downloadmisc-tests-2eff3a85758e87f5b04f5a8541ab6159c39f7d4f.tar.gz
sigreturn: Fixes for 32-bit kernels
-rw-r--r--sigreturn.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sigreturn.c b/sigreturn.c
index 510d193..fb15b99 100644
--- a/sigreturn.c
+++ b/sigreturn.c
@@ -418,6 +418,8 @@ static int test_bad_iret(int cs_bits, unsigned short ss, int force_cs)
strcpy(trapname, "NP");
else if (sig_trapno == 12)
strcpy(trapname, "SS");
+ else if (sig_trapno == 32)
+ strcpy(trapname, "IRET"); /* X86_TRAP_IRET */
else
sprintf(trapname, "%d", sig_trapno);
@@ -472,6 +474,7 @@ int main()
clearhandler(SIGTRAP);
sethandler(SIGSEGV, sigtrap, SA_ONSTACK);
sethandler(SIGBUS, sigtrap, SA_ONSTACK);
+ sethandler(SIGILL, sigtrap, SA_ONSTACK); /* 32-bit kernels do this */
test_bad_iret(64, (2 << 3) | 7, -1);
test_bad_iret(32, (2 << 3) | 7, -1);