This libgo patch by Clément Chigot changes the libgo testsuite script to ignore symbols with a leading dot. On AIX, a function has two symbols, a text symbol (with a leading dot) and a data one (without it). As the tests must be run only once, only the data symbol can be used to retrieve the final go symbol. Therefore, all symbols beginning with a dot are ignored by symtogo. 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 272661) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -1d6578a20a9a2ee599a07f03cf7f8e7797d72b9c +d3d0f3c5bbe9d272178d55bdb907b07c188800e1 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/testsuite/gotest =================================================================== --- libgo/testsuite/gotest (revision 272608) +++ libgo/testsuite/gotest (working copy) @@ -501,6 +501,13 @@ localname() { symtogo() { result="" for tp in $*; do + # Discard symbols with a leading dot. + # On AIX, this will remove function text symbols (with a leading dot). + # Therefore, only function descriptor symbols (without this leading dot) + # will be used to retrieve the go symbols, avoiding duplication. + if expr "$tp" : '^\.' >/dev/null 2>&1; then + continue + fi s=$(echo "$tp" | sed -e 's/\.\.z2f/%/g' | sed -e 's/.*%//') # Screen out methods (X.Y.Z). if ! expr "$s" : '^[^.]*\.[^.]*$' >/dev/null 2>&1; then