]> Cypherpunks.ru repositories - gostls13.git/commitdiff
misc/cgo/testsanitizers: fix code to detect gcc version correctly
authorArchana R <aravind5@in.ibm.com>
Wed, 10 Aug 2022 14:57:51 +0000 (09:57 -0500)
committerThan McIntosh <thanm@google.com>
Thu, 11 Aug 2022 17:23:33 +0000 (17:23 +0000)
The current implementation of compilerVersion incorrectly gives an
error message that the compiler version is too old even though the
system has a recent compiler. This happens for specifically for the
gcc compiler and causes ASAN tests to be skipped.
Replacing -v with gcc dump version options seems to fix it. Running
./testsanitizers.test -test.v now shows the ASAN tests being run.
--- PASS: TestASAN (16.81s)
    --- PASS: TestASAN/asan_useAfterReturn (0.60s)
    --- PASS: TestASAN/asan_global5 (0.61s)
    --- PASS: TestASAN/asan_unsafe_fail1 (0.73s)
    --- PASS: TestASAN/asan_unsafe_fail3 (0.73s)
    --- PASS: TestASAN/asan_unsafe_fail2 (0.74s)
    --- PASS: TestASAN/asan_global4_fail (0.74s)
    --- PASS: TestASAN/asan5_fail (0.74s)
    --- PASS: TestASAN/asan3_fail (0.88s)
    --- PASS: TestASAN/asan4_fail (0.89s)
    --- PASS: TestASAN/asan2_fail (0.99s)
    --- PASS: TestASAN/asan_global3_fail (1.00s)
    --- PASS: TestASAN/asan_global1_fail (1.01s)
    --- PASS: TestASAN/asan1_fail (1.01s)
    --- PASS: TestASAN/asan_global2_fail (1.02s)
PASS

Fixes #54370

Change-Id: Iac13a1cf37de54432a6e49555f61e9ec1d781ab8
Reviewed-on: https://go-review.googlesource.com/c/go/+/422574
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Run-TryBot: Archana Ravindar <aravind5@in.ibm.com>
Reviewed-by: Than McIntosh <thanm@google.com>
misc/cgo/testsanitizers/cc_test.go

index 4f0252a27cce9def21d84f3933efdd05f2645423..f447b5c89f889151df8c4bf95b42ee99d78977ae 100644 (file)
@@ -202,16 +202,16 @@ func compilerVersion() (version, error) {
                        var match [][]byte
                        if bytes.HasPrefix(out, []byte("gcc")) {
                                compiler.name = "gcc"
-                               cmd, err := cc("-v")
+                               cmd, err := cc("-dumpfullversion", "-dumpversion")
                                if err != nil {
                                        return err
                                }
-                               out, err := cmd.CombinedOutput()
+                               out, err := cmd.Output()
                                if err != nil {
                                        // gcc, but does not support gcc's "-v" flag?!
                                        return err
                                }
-                               gccRE := regexp.MustCompile(`gcc version (\d+)\.(\d+)`)
+                               gccRE := regexp.MustCompile(`(\d+)\.(\d+)`)
                                match = gccRE.FindSubmatch(out)
                        } else {
                                clangRE := regexp.MustCompile(`clang version (\d+)\.(\d+)`)