aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2018-01-17 18:33:50 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2018-01-17 18:33:50 +0000
commitc1fa27707a4542803c1c04fba57eeee46c214f09 (patch)
treed8566779fe5525243834c21aadda6df88685b1ce
parent4436a3ce496abccfc405ade7fb8b575ea55a64ee (diff)
downloadgcc-c1fa27707a4542803c1c04fba57eeee46c214f09.zip
gcc-c1fa27707a4542803c1c04fba57eeee46c214f09.tar.gz
gcc-c1fa27707a4542803c1c04fba57eeee46c214f09.tar.bz2
archive/tar: support stat and device numbers on AIX
Reviewed-on: https://go-review.googlesource.com/87198 From-SVN: r256810
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--libgo/go/archive/tar/stat_actime1.go2
-rw-r--r--libgo/go/archive/tar/stat_unix.go12
3 files changed, 13 insertions, 3 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index b6f59a6..fb7da45e 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-ca805b704fc141d7ad61f8fcd3badbaa04b7e363
+3ea7fc3b918210e7248dbc51d90af20639dc4167
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/libgo/go/archive/tar/stat_actime1.go b/libgo/go/archive/tar/stat_actime1.go
index cf9cc79..1bdd1c9 100644
--- a/libgo/go/archive/tar/stat_actime1.go
+++ b/libgo/go/archive/tar/stat_actime1.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build linux dragonfly openbsd solaris
+// +build aix linux dragonfly openbsd solaris
package tar
diff --git a/libgo/go/archive/tar/stat_unix.go b/libgo/go/archive/tar/stat_unix.go
index 868105f..c37a57a 100644
--- a/libgo/go/archive/tar/stat_unix.go
+++ b/libgo/go/archive/tar/stat_unix.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-// +build linux darwin dragonfly freebsd openbsd netbsd solaris
+// +build aix linux darwin dragonfly freebsd openbsd netbsd solaris
package tar
@@ -54,6 +54,16 @@ func statUnix(fi os.FileInfo, h *Header) error {
if h.Typeflag == TypeChar || h.Typeflag == TypeBlock {
dev := uint64(sys.Rdev) // May be int32 or uint32
switch runtime.GOOS {
+ case "aix":
+ var major, minor uint32
+ if runtime.GOARCH == "ppc64" {
+ major = uint32((dev & 0x3fffffff00000000) >> 32)
+ minor = uint32((dev & 0x00000000ffffffff) >> 0)
+ } else {
+ major = uint32((dev >> 16) & 0xffff)
+ minor = uint32(dev & 0xffff)
+ }
+ h.Devmajor, h.Devminor = int64(major), int64(minor)
case "linux":
// Copied from golang.org/x/sys/unix/dev_linux.go.
major := uint32((dev & 0x00000000000fff00) >> 8)