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 11 BEGIN { 12 lines = 5 13 fail = 0 14 } 15 16 # Test 1. 17 NR == 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} 18 NR == 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. 21 NR == 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} 22 NR == 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. 25 NR == 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} 26 NR == 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. 29 NR == 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} 30 NR == 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. 33 NR == lines && /^\+\+\+ exited with 0 \+\+\+$/ {next} 34 35 { 36 print "Line " NR " does not match: " $0 37 fail=1 38 } 39 40 END { 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