mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-14 01:50:35 +08:00
cmd/go, go/internal/gccgoimporter: pass -X to ar on AIX
Reviewed-on: https://go-review.googlesource.com/72930 From-SVN: r255090
This commit is contained in:
parent
f6f28ab807
commit
02dc624e21
@ -1,4 +1,4 @@
|
||||
1db7dc97d01ee230ff4874ce1c9775a24ffd16ac
|
||||
57adb928c3cc61ac8fa47554394670a1c455afc2
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -2757,7 +2757,14 @@ func (gccgoToolchain) pack(b *Builder, p *load.Package, objDir, afile string, of
|
||||
absAfile := mkAbs(objDir, afile)
|
||||
// Try with D modifier first, then without if that fails.
|
||||
if b.run(p.Dir, p.ImportPath, nil, "ar", "rcD", absAfile, absOfiles) != nil {
|
||||
return b.run(p.Dir, p.ImportPath, nil, "ar", "rc", absAfile, absOfiles)
|
||||
if cfg.Goos == "aix" && cfg.Goarch == "ppc64" {
|
||||
// AIX puts both 32-bit and 64-bit objects in the same archive.
|
||||
// Tell the AIX "ar" command to only care about 64-bit objects.
|
||||
// AIX "ar" command does not know D option.
|
||||
return b.run(p.Dir, p.ImportPath, nil, "ar", "-X64", "rc", absAfile, absOfiles)
|
||||
} else {
|
||||
return b.run(p.Dir, p.ImportPath, nil, "ar", "rc", absAfile, absOfiles)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -104,12 +104,14 @@ func openExportFile(fpath string) (reader io.ReadSeeker, closer io.Closer, err e
|
||||
// TODO(pcc): Read the archive directly instead of using "ar".
|
||||
f.Close()
|
||||
closer = nil
|
||||
var cmd *exec.Cmd
|
||||
|
||||
cmd := exec.Command("ar", "p", fpath)
|
||||
if runtime.GOOS == "aix" && runtime.GOARCH == "ppc64" {
|
||||
// AIX puts both 32-bit and 64-bit objects in the same archive.
|
||||
// Tell the AIX "ar" command to only care about 64-bit objects.
|
||||
cmd.Env = append(os.Environ(), "OBJECT_MODE=64")
|
||||
cmd = exec.Command("ar", "-X64", "p", fpath)
|
||||
} else {
|
||||
cmd = exec.Command("ar", "p", fpath)
|
||||
}
|
||||
var out []byte
|
||||
out, err = cmd.Output()
|
||||
|
Loading…
x
Reference in New Issue
Block a user