1# 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 11BEGIN { 12 lines = 5 13 fail = 0 14} 15 16# 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 28# 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 32# The last line. 33NR == lines && /^\+\+\+ exited with 0 \+\+\+$/ {next} 34 35{ 36 print "Line " NR " does not match: " $0 37 fail=1 38} 39 40END { 41 if (NR != lines) { 42 print "Expected " lines " lines, found " NR " line(s)." 43 print "" 44 exit 1 45 } 46 if (fail) { 47 print "" 48 exit 1 49 } 50} 51