From e9a75ddd76522bf7e56f282bf64976e0c9e8eb10 Mon Sep 17 00:00:00 2001
From: Greg V <greg@unrelenting.technology>
Date: Sun, 29 Dec 2019 23:07:05 +0000
Subject: [PATCH] FreeBSD: use stat header in freebsd11/freebsd12 on aarch64

sys/stat.h is a machine-independent header, but it has ifdefs for i386.
The version that was called x86_64.rs should be used on powerpc64 too,
but I don't have a machine to test that on.
---
 src/unix/bsd/freebsdlike/freebsd/aarch64.rs   | 26 -------------------
 .../freebsd/freebsd11/{x86_64.rs => b64.rs}   |  0
 .../bsd/freebsdlike/freebsd/freebsd11/mod.rs  |  7 ++---
 .../freebsd/freebsd12/{x86_64.rs => b64.rs}   |  0
 .../bsd/freebsdlike/freebsd/freebsd12/mod.rs  |  7 ++---
 5 files changed, 8 insertions(+), 32 deletions(-)
 rename src/unix/bsd/freebsdlike/freebsd/freebsd11/{x86_64.rs => b64.rs} (100%)
 rename src/unix/bsd/freebsdlike/freebsd/freebsd12/{x86_64.rs => b64.rs} (100%)

diff --git a/src/unix/bsd/freebsdlike/freebsd/aarch64.rs b/src/unix/bsd/freebsdlike/freebsd/aarch64.rs
index 22fd2b84..2ac6d4fb 100644
--- a/src/unix/bsd/freebsdlike/freebsd/aarch64.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/aarch64.rs
@@ -4,32 +4,6 @@ pub type c_ulong = u64;
 pub type time_t = i64;
 pub type suseconds_t = i64;
 
-s! {
-    pub struct stat {
-        pub st_dev: ::dev_t,
-        pub st_ino: ::ino_t,
-        pub st_mode: ::mode_t,
-        pub st_nlink: ::nlink_t,
-        pub st_uid: ::uid_t,
-        pub st_gid: ::gid_t,
-        pub st_rdev: ::dev_t,
-        pub st_atime: ::time_t,
-        pub st_atime_nsec: ::c_long,
-        pub st_mtime: ::time_t,
-        pub st_mtime_nsec: ::c_long,
-        pub st_ctime: ::time_t,
-        pub st_ctime_nsec: ::c_long,
-        pub st_size: ::off_t,
-        pub st_blocks: ::blkcnt_t,
-        pub st_blksize: ::blksize_t,
-        pub st_flags: ::fflags_t,
-        pub st_gen: u32,
-        pub st_lspare: i32,
-        pub st_birthtime: ::time_t,
-        pub st_birthtime_nsec: ::c_long,
-    }
-}
-
 // should be pub(crate), but that requires Rust 1.18.0
 cfg_if! {
     if #[cfg(libc_const_size_of)] {
diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/x86_64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs
similarity index 100%
rename from src/unix/bsd/freebsdlike/freebsd/freebsd11/x86_64.rs
rename to src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs
diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
index 79a152fc..b443da31 100644
--- a/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
@@ -217,8 +217,9 @@ extern "C" {
 }
 
 cfg_if! {
-    if #[cfg(target_arch = "x86_64")] {
-        mod x86_64;
-        pub use self::x86_64::*;
+    if #[cfg(any(target_arch = "x86_64",
+                 target_arch = "aarch64"))] {
+        mod b64;
+        pub use self::b64::*;
     }
 }
diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
similarity index 100%
rename from src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs
rename to src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs
diff --git a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
index 6bf7f957..e0dd712b 100644
--- a/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
@@ -217,8 +217,9 @@ extern "C" {
 }
 
 cfg_if! {
-    if #[cfg(target_arch = "x86_64")] {
-        mod x86_64;
-        pub use self::x86_64::*;
+    if #[cfg(any(target_arch = "x86_64",
+                 target_arch = "aarch64"))] {
+        mod b64;
+        pub use self::b64::*;
     }
 }
-- 
GitLab