This libgo patch avoids an endless loop in a cgo test if we can parse the notes. Thanks to Richi for identifying the problem. This may be the cause of GCC PR 83794. Bootstrapped and ran cgo tests on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 256474) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -1176dd2b53f2d2b826b599a126f3f9828283cec3 +fe8481db9f5b37eb9a0c329673789eaaf1335598 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/misc/cgo/test/buildid_linux.go =================================================================== --- libgo/misc/cgo/test/buildid_linux.go (revision 256366) +++ libgo/misc/cgo/test/buildid_linux.go (working copy) @@ -27,6 +27,7 @@ func testBuildID(t *testing.T) { defer f.Close() c := 0 +sections: for i, s := range f.Sections { if s.Type != elf.SHT_NOTE { continue @@ -47,7 +48,7 @@ func testBuildID(t *testing.T) { if len(d) < 12 { t.Logf("note section %d too short (%d < 12)", i, len(d)) - continue + continue sections } namesz := f.ByteOrder.Uint32(d) @@ -59,7 +60,7 @@ func testBuildID(t *testing.T) { if int(12+an+ad) > len(d) { t.Logf("note section %d too short for header (%d < 12 + align(%d,4) + align(%d,4))", i, len(d), namesz, descsz) - continue + continue sections } // 3 == NT_GNU_BUILD_ID