Hi Ian, Some my Linux system, system call numbers are defined as
#define __NR_x32_rt_sigaction __NR_X32_SYSCALL(0) and __NR_X32_SYSCALL(0) is expanded to (0x40000000 | (512 + 0)). This patch tries to deal with by checking '^// unknowndefine SYS_[a-z]' and uses "${CC} -E" to extract the real number. Tested on Linux/x86-64. OK to install? Thanks. H.J. --- 2011-12-09 H.J. Lu <hongjiu...@intel.com> * mksysinfo.sh: Handle system call numbers "(0x40000000 | (234))". diff --git a/libgo/mksysinfo.sh b/libgo/mksysinfo.sh index e29febf..1766136 100755 --- a/libgo/mksysinfo.sh +++ b/libgo/mksysinfo.sh @@ -118,6 +118,22 @@ grep '^const _SYS_' gen-sysinfo.go | \ echo "const $sup = _$sys" >> ${OUT} done +# Handle system call numbers like "(0x40000000 | (234))" +if grep '^// unknowndefine SYS_[a-z]' gen-sysinfo.go >/dev/null 2>&1; then + rm -f unknown-syscalls.c + echo "#include \"sysinfo.c\"" > unknown-syscalls.c + grep '^// unknowndefine SYS_[a-z]' gen-sysinfo.go | \ + grep __NR_ | \ + awk '{ print $3 }' | \ + while read sys; do + sup=`echo $sys | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` + echo "const $sup = $sys" + done >> unknown-syscalls.c + ${CC} -E unknown-syscalls.c | \ + grep "^const SYS_.*=" | \ + grep -v __NR_ >> ${OUT} +fi + # Stat constants. grep '^const _S_' gen-sysinfo.go | \ sed -e 's/^\(const \)_\(S_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}