blob: 5bd0568650d40b3605a9aeaa66463e85054001bf [file] [log] [blame]
Elliott Hughes5dec78d2014-02-26 15:56:23 -08001# rt_sigaction on ALPHA has 5 args: sig, act, oact, sigsetsize, restorer.
2# rt_sigaction on SPARC has 5 args: sig, act, oact, restorer, sigsetsize.
3# rt_sigaction on other architectures has 4 args: sig, act, oact, sigsetsize.
4# Some architectures have SA_RESTORER, some don't;
5# in particular, SPARC has and ALPHA hasn't.
6#
7# There are two regexps for each test:
8# the 1st is for any architecture with SA_RESTORER, including SPARC;
9# the 2nd is for any architecture without SA_RESTORER, including ALPHA.
10
Elliott Hughes5a139222014-02-27 15:09:57 -080011BEGIN {
12 lines = 5
13 fail = 0
14}
15
Elliott Hughes5dec78d2014-02-26 15:56:23 -080016# Test 1.
17NR == 1 && /^rt_sigaction\(SIGUSR2, {SIG_IGN, \[HUP INT\], SA_RESTORER\|SA_RESTART, 0x[0-9a-f]+}, {SIG_DFL, \[\], 0}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
18NR == 1 && /^rt_sigaction\(SIGUSR2, {SIG_IGN, \[HUP INT\], SA_RESTART}, {SIG_DFL, \[\], 0}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
19
20# Test 2.
21NR == 2 && /^rt_sigaction\(SIGUSR2, {0x[0-9a-f]+, \[QUIT TERM\], SA_RESTORER\|SA_SIGINFO, 0x[0-9a-f]+}, {SIG_IGN, \[HUP INT\], SA_RESTORER\|SA_RESTART, 0x[0-9a-f]+}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
22NR == 2 && /^rt_sigaction\(SIGUSR2, {0x[0-9a-f]+, \[QUIT TERM\], SA_SIGINFO}, {SIG_IGN, \[HUP INT\], SA_RESTART}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
23
24# Test 3.
25NR == 3 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, \[\], SA_RESTORER, 0x[0-9a-f]+}, {0x[0-9a-f]+, \[QUIT TERM\], SA_RESTORER\|SA_SIGINFO, 0x[0-9a-f]+}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
26NR == 3 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, \[\], 0}, {0x[0-9a-f]+, \[QUIT TERM\], SA_SIGINFO}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
27
Elliott Hughes5a139222014-02-27 15:09:57 -080028# Test 4.
29NR == 4 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, ~\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\], SA_RESTORER, 0x[0-9a-f]+}, {SIG_DFL, \[\], SA_RESTORER, 0x[0-9a-f]+}, (0x[0-9a-f]+, )?(4|8|16)\) = 0$/ {next}
30NR == 4 && /^rt_sigaction\(SIGUSR2, {SIG_DFL, ~\[HUP( ((RT|SIGRT)[^] ]+|[3-9][0-9]|1[0-9][0-9]))*\], 0}, {SIG_DFL, \[\], 0}, (4|8|16)(, 0x[0-9a-f]+)?\) = 0$/ {next}
31
Elliott Hughes5dec78d2014-02-26 15:56:23 -080032# The last line.
Elliott Hughes5a139222014-02-27 15:09:57 -080033NR == lines && /^\+\+\+ exited with 0 \+\+\+$/ {next}
Elliott Hughes5dec78d2014-02-26 15:56:23 -080034
35{
36 print "Line " NR " does not match: " $0
Elliott Hughes5a139222014-02-27 15:09:57 -080037 fail=1
Elliott Hughes5dec78d2014-02-26 15:56:23 -080038}
39
40END {
Elliott Hughes5a139222014-02-27 15:09:57 -080041 if (NR != lines) {
42 print "Expected " lines " lines, found " NR " line(s)."
43 print ""
44 exit 1
45 }
46 if (fail) {
47 print ""
Elliott Hughes5dec78d2014-02-26 15:56:23 -080048 exit 1
49 }
50}