This patch to the script libgo/mksysinfo.sh tries to avoid confusion in upcase_fields when matching type names. It could accidentally match multiple types starting with the same name. I believe this is the underlying cause of GCC PR 78172.
Also redirect a grep to /dev/null to avoid extraneous messages during the build. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 241757) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -150bca67d8bb4b23009f53ba06e85e306e3960d8 +afe0456d25e3c6c0d91a8fd4c0fdfdbaa35cc251 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/mksysinfo.sh =================================================================== --- libgo/mksysinfo.sh (revision 241347) +++ libgo/mksysinfo.sh (working copy) @@ -188,7 +188,7 @@ grep '^const _EPOLL' gen-sysinfo.go | grep -v EPOLLET | sed -e 's/^\(const \)_\(EPOLL[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} # Make sure EPOLLET is positive. -if grep '^const _EPOLLET = [0-9]' gen-sysinfo.go; then +if grep '^const _EPOLLET = [0-9]' gen-sysinfo.go >/dev/null 2>&1; then grep '^const _EPOLLET ' gen-sysinfo.go | sed -e 's/^\(const \)_\(EPOLL[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT} else @@ -268,7 +268,7 @@ fi # is not empty, the structure or type is renamed to $2. upcase_fields () { name="$1" - def=`grep "^type $name" gen-sysinfo.go` + def=`grep "^type $name " gen-sysinfo.go` fields=`echo $def | sed -e 's/^[^{]*{\(.*\)}$/\1/'` prefix=`echo $def | sed -e 's/{.*//'` if test "$2" != ""; then