Fixes #10453.
Change-Id: I77470279865d4c954df615d6594c69edf68c28ca
Reviewed-on: https://go-review.googlesource.com/9090
Reviewed-by: Ian Lance Taylor <iant@golang.org>
                        val = strings.TrimSpace(line[tabIndex:])
                }
 
+               if key == "__clang__" {
+                       p.GccIsClang = true
+               }
+
                if n := f.Name[key]; n != nil {
                        if *debugDefine {
                                fmt.Fprintf(os.Stderr, "#define %s %s\n", key, val)
                "-c",          // do not link
                "-xc",         // input language is C
        )
-       if strings.Contains(c[0], "clang") {
+       if p.GccIsClang {
                c = append(c,
                        "-ferror-limit=0",
                        // Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn)
 
        PtrSize     int64
        IntSize     int64
        GccOptions  []string
+       GccIsClang  bool
        CgoFlags    map[string][]string // #cgo flags (CFLAGS, LDFLAGS)
        Written     map[string]bool
        Name        map[string]*Name // accumulated Name from Files
 
 // and http://golang.org/issue/5603.
 func (p *Package) packedAttribute() string {
        s := "__attribute__((__packed__"
-       if !strings.Contains(p.gccBaseCmd()[0], "clang") && (goarch == "amd64" || goarch == "386") {
+       if !p.GccIsClang && (goarch == "amd64" || goarch == "386") {
                s += ", __gcc_struct__"
        }
        return s + "))"