github.com/kidsbmilk/gofronted_all@v0.0.0-20220701224323-6479d5976c5d/libgo/mksigtab.sh (about) 1 #!/bin/sh 2 3 # Copyright 2016 The Go Authors. All rights reserved. 4 # Use of this source code is governed by a BSD-style 5 # license that can be found in the LICENSE file. 6 7 # Create sigtab.go from gen-sysinfo.go. 8 9 # This shell scripts creates the sigtab.go file, which maps signals to 10 # their dispositions. We generate a file so that we can build a 11 # composite literal that only refers to signals that are defined on 12 # this system. 13 14 # This script simply writes to standard output. 15 16 set -e 17 18 echo '// Generated by mksigtab.sh. Do not edit.' 19 echo 20 echo 'package runtime' 21 echo 22 echo 'var sigtable = [...]sigTabT{' 23 24 SIGLIST="" 25 26 # Handle signals valid on all Unix systems. 27 28 addsig() { 29 # Get the signal number and add it to SIGLIST 30 signum=`grep "const $1 = " gen-sysinfo.go | sed -e 's/.* = //'` 31 if echo "$signum" | grep '^_SIG[A-Z0-9_]*$' >/dev/null 2>&1; then 32 # Recurse once to obtain signal number 33 # This is needed for some MIPS signals defined as aliases of other signals 34 signum=`grep "const $signum = " gen-sysinfo.go | sed -e 's/.* = //'` 35 fi 36 # Only add signal if the signal number isn't in the list yet. 37 # For example, musl libc uses signal 29 for both SIGIO and SIGPOLL. 38 if ! echo "$SIGLIST" | grep "_${signum}_" >/dev/null 2>&1; then 39 echo " $1: $2," 40 SIGLIST=$SIGLIST"_${signum}_" 41 fi 42 } 43 44 echo ' 0: {0, "SIGNONE: no trap"},' 45 addsig _SIGHUP '{_SigNotify + _SigKill, "SIGHUP: terminal line hangup"}' 46 addsig _SIGINT '{_SigNotify + _SigKill, "SIGINT: interrupt"}' 47 addsig _SIGQUIT '{_SigNotify + _SigThrow, "SIGQUIT: quit"}' 48 addsig _SIGILL '{_SigThrow + _SigUnblock, "SIGILL: illegal instruction"}' 49 addsig _SIGTRAP '{_SigThrow + _SigUnblock, "SIGTRAP: trace trap"}' 50 addsig _SIGABRT '{_SigNotify + _SigThrow, "SIGABRT: abort"}' 51 addsig _SIGBUS '{_SigPanic + _SigUnblock, "SIGBUS: bus error"}' 52 addsig _SIGFPE '{_SigPanic + _SigUnblock, "SIGFPE: floating-point exception"}' 53 addsig _SIGKILL '{0, "SIGKILL: kill"}' 54 addsig _SIGUSR1 '{_SigNotify, "SIGUSR1: user-defined signal 1"}' 55 addsig _SIGSEGV '{_SigPanic + _SigUnblock, "SIGSEGV: segmentation violation"}' 56 addsig _SIGUSR2 '{_SigNotify, "SIGUSR2: user-defined signal 2"}' 57 addsig _SIGPIPE '{_SigNotify, "SIGPIPE: write to broken pipe"}' 58 addsig _SIGALRM '{_SigNotify, "SIGALRM: alarm clock"}' 59 addsig _SIGTERM '{_SigNotify + _SigKill, "SIGTERM: termination"}' 60 addsig _SIGCHLD '{_SigNotify + _SigUnblock, "SIGCHLD: child status has changed"}' 61 addsig _SIGCONT '{_SigNotify + _SigDefault, "SIGCONT: continue"}' 62 addsig _SIGSTOP '{0, "SIGSTOP: stop"}' 63 addsig _SIGTSTP '{_SigNotify + _SigDefault, "SIGTSTP: keyboard stop"}' 64 addsig _SIGTTIN '{_SigNotify + _SigDefault, "SIGTTIN: background read from tty"}' 65 addsig _SIGTTOU '{_SigNotify + _SigDefault, "SIGTTOU: background write to tty"}' 66 addsig _SIGURG '{_SigNotify, "SIGURG: urgent condition on socket"}' 67 addsig _SIGXCPU '{_SigNotify, "SIGXCPU: cpu limit exceeded"}' 68 addsig _SIGXFSZ '{_SigNotify, "SIGXFSZ: file size limit exceeded"}' 69 addsig _SIGVTALRM '{_SigNotify, "SIGVTALRM: virtual alarm clock"}' 70 addsig _SIGPROF '{_SigNotify + _SigUnblock, "SIGPROF: profiling alarm clock"}' 71 addsig _SIGWINCH '{_SigNotify, "SIGWINCH: window size change"}' 72 addsig _SIGSYS '{_SigThrow, "SIGSYS: bad system call"}' 73 74 # Handle signals that are not supported on all systems. 75 76 checksig() { 77 if grep "const $1 = " gen-sysinfo.go >/dev/null 2>&1 \ 78 && ! grep "const $1 = _SIG" gen-sysinfo.go > /dev/null 2>&1; then 79 addsig $1 "$2" 80 fi 81 } 82 83 checksig _SIGSTKFLT '{_SigThrow + _SigUnblock, "SIGSTKFLT: stack fault"}' 84 checksig _SIGIO '{_SigNotify, "SIGIO: i/o now possible"}' 85 checksig _SIGPWR '{_SigNotify, "SIGPWR: power failure restart"}' 86 checksig _SIGEMT '{_SigThrow, "SIGEMT: emulate instruction executed"}' 87 checksig _SIGINFO '{_SigNotify, "SIGINFO: status request from keyboard"}' 88 checksig _SIGTHR '{_SigNotify, "SIGTHR: reserved"}' 89 checksig _SIGPOLL '{_SigNotify, "SIGPOLL: pollable event occurred"}' 90 checksig _SIGWAITING '{_SigNotify, "SIGWAITING: reserved signal no longer used by"}' 91 checksig _SIGLWP '{_SigNotify, "SIGLWP: reserved signal no longer used by"}' 92 checksig _SIGFREEZE '{_SigNotify, "SIGFREEZE: special signal used by CPR"}' 93 checksig _SIGTHAW '{_SigNotify, "SIGTHAW: special signal used by CPR"}' 94 checksig _SIGCANCEL '{_SigSetStack + _SigUnblock, "SIGCANCEL: reserved signal for thread cancellation"}' 95 checksig _SIGXRES '{_SigNotify, "SIGXRES: resource control exceeded"}' 96 checksig _SIGJVM1 '{_SigNotify, "SIGJVM1: reserved signal for Java Virtual Machine"}' 97 checksig _SIGJVM2 '{_SigNotify, "SIGJVM2: reserved signal for Java Virtual Machine"}' 98 checksig _SIGLOST ' {_SigNotify, "SIGLOST: resource lost (Sun); server died (GNU)"}' 99 100 # Special handling of signals 32 and 33 on GNU/Linux systems, 101 # because they are special to glibc. 102 # Signal 34 is additionally special to Linux systems with musl. 103 if test "${GOOS}" = "linux"; then 104 SIGLIST=$SIGLIST"_32__33__34_" 105 echo ' 32: {_SigSetStack + _SigUnblock, "signal 32"}, /* SIGCANCEL; see issue 6997 */' 106 echo ' 33: {_SigSetStack + _SigUnblock, "signal 33"}, /* SIGSETXID; see issues 3871, 9400, 12498 */' 107 echo ' 34: {_SigSetStack + _SigUnblock, "signal 34"}, /* musl SIGSYNCCALL; see issue 39343 */' 108 fi 109 110 if test "${GOOS}" = "aix"; then 111 # _NSIG = _NSIG32/_NSIG64 and _NSIG* = _SIGMAX* + 1 112 bits=`grep 'const _NSIG = _NSIG[0-9]*$' gen-sysinfo.go | sed -e 's/.* = _NSIG\([0-9]*\)/\1/'` 113 nsig=`grep "const _SIGMAX$bits = [0-9]*$" gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'` 114 nsig=`expr $nsig + 1` 115 else 116 nsig=`grep 'const _*NSIG = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'` 117 if test -z "$nsig"; then 118 if grep 'const _*NSIG = [ (]*_*SIGRTMAX + 1[ )]*' gen-sysinfo.go >/dev/null 2>&1; then 119 rtmax=`grep 'const _*SIGRTMAX = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'` 120 if test -n "$rtmax"; then 121 nsig=`expr $rtmax + 1` 122 elif grep 'const _*SIGRTMAX = [ (]*_*SIGRTMIN[ )]*' gen-sysinfo.go >/dev/null 2>&1; then 123 rtmin=`grep 'const _*SIGRTMIN = [0-9]*$' gen-sysinfo.go | sed -e 's/.* = \([0-9]*\)/\1/'` 124 if test -n "$rtmin"; then 125 nsig=`expr $rtmin + 1` 126 fi 127 fi 128 fi 129 fi 130 fi 131 132 if test -z "$nsig"; then 133 echo 1>&2 "could not determine number of signals" 134 exit 1 135 fi 136 137 i=1 138 # Fill in the remaining signal numbers in sigtable 139 while test "$i" -lt "$nsig"; do 140 if ! echo $SIGLIST | grep "_${i}_" >/dev/null 2>&1; then 141 echo " $i: {_SigNotify, \"signal $i\"}," 142 fi 143 i=`expr "$i" + 1` 144 done 145 echo '}'