This libgo patch forces LANG=C when looking for the version of the C
compiler.  Tested by installing the gcc-locales package and running
    LANG=de_DE.utf8 go build hello.go
Without this change, that fails, as described at GCC PR 84765.

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 258392)
+++ gcc/go/gofrontend/MERGE     (working copy)
@@ -1,4 +1,4 @@
-ce28919112dbb234366816ab39ce060ad45e8ca9
+e4464efc767b8dee4f4c18ffaf6c891f7b9deee7
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
Index: libgo/go/cmd/go/internal/work/buildid.go
===================================================================
--- libgo/go/cmd/go/internal/work/buildid.go    (revision 257914)
+++ libgo/go/cmd/go/internal/work/buildid.go    (working copy)
@@ -234,7 +234,18 @@ func (b *Builder) gccgoToolID(name, lang
        // compile an empty file on standard input.
        cmdline := str.StringList(cfg.BuildToolexec, name, "-###", "-x", 
language, "-c", "-")
        cmd := exec.Command(cmdline[0], cmdline[1:]...)
-       cmd.Env = base.EnvForDir(cmd.Dir, os.Environ())
+
+       // Strip any LANG or LC_ environment variables, and force
+       // LANG=C, so that we get the untranslated output.
+       var env []string
+       for _, e := range os.Environ() {
+               if !strings.HasPrefix(e, "LANG=") && !strings.HasPrefix(e, 
"LC_") {
+                       env = append(env, e)
+               }
+       }
+       env = append(env, "LANG=C")
+
+       cmd.Env = base.EnvForDir(cmd.Dir, env)
        out, err := cmd.CombinedOutput()
        if err != nil {
                return "", fmt.Errorf("%s: %v; output: %q", name, err, out)

Reply via email to