aboutsummaryrefslogtreecommitdiffstats
path: root/main/gcc/402-dlang-stat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/gcc/402-dlang-stat.patch')
-rw-r--r--main/gcc/402-dlang-stat.patch448
1 files changed, 448 insertions, 0 deletions
diff --git a/main/gcc/402-dlang-stat.patch b/main/gcc/402-dlang-stat.patch
new file mode 100644
index 0000000000..faf4ed731f
--- /dev/null
+++ b/main/gcc/402-dlang-stat.patch
@@ -0,0 +1,448 @@
+diff -Nurp a/libphobos/libdruntime/core/sys/posix/fcntl.d b/libphobos/libdruntime/core/sys/posix/fcntl.d
+--- a/libphobos/libdruntime/core/sys/posix/fcntl.d 2020-01-01 00:00:00.000000000 +0900
++++ b/libphobos/libdruntime/core/sys/posix/fcntl.d 2020-01-01 00:00:00.000000000 +0900
+@@ -779,7 +779,102 @@ else version (CRuntime_Bionic)
+ }
+ else version (CRuntime_Musl)
+ {
+- enum {
++ version (X86_64)
++ {
++ enum
++ {
++ O_DIRECTORY = 0x010000, // octal 0200000
++ O_NOFOLLOW = 0x020000, // octal 0400000
++ O_DIRECT = 0x004000, // octal 040000
++ O_LARGEFILE = 0,
++ O_TMPFILE = 0x410000, // octal 020200000
++
++ F_GETLK = 5,
++ F_SETLK = 6,
++ F_SETLKW = 7,
++ }
++ }
++ // Note: Definitions for i386 are in arch/generic/bits/fcntl.h
++ else version (X86)
++ {
++ enum
++ {
++ O_DIRECTORY = 0x010000, // octal 0200000
++ O_NOFOLLOW = 0x020000, // octal 0400000
++ O_DIRECT = 0x004000, // octal 040000
++ O_LARGEFILE = 0x008000, // octal 0100000
++ O_TMPFILE = 0x410000, // octal 020200000
++
++ F_GETLK = 12,
++ F_SETLK = 13,
++ F_SETLKW = 14,
++ }
++ }
++ else version (ARM)
++ {
++ enum
++ {
++ O_DIRECTORY = 0x004000, // octal 040000
++ O_NOFOLLOW = 0x008000, // octal 0100000
++ O_DIRECT = 0x010000, // octal 0200000
++ O_LARGEFILE = 0x020000, // octal 0400000
++ O_TMPFILE = 0x404000, // octal 020040000
++
++ F_GETLK = 12,
++ F_SETLK = 13,
++ F_SETLKW = 14,
++ }
++ }
++ else version (AArch64)
++ {
++ enum
++ {
++ O_DIRECTORY = 0x004000, // octal 040000
++ O_NOFOLLOW = 0x008000, // octal 0100000
++ O_DIRECT = 0x010000, // octal 0200000
++ O_LARGEFILE = 0x020000, // octal 0400000
++ O_TMPFILE = 0x404000, // octal 020040000
++
++ F_GETLK = 5,
++ F_SETLK = 6,
++ F_SETLKW = 7,
++ }
++ }
++ else version (SystemZ)
++ {
++ enum
++ {
++ O_DIRECTORY = 0x010000, // octal 0200000
++ O_NOFOLLOW = 0x020000, // octal 0400000
++ O_DIRECT = 0x004000, // octal 040000
++ O_LARGEFILE = 0x008000, // octal 0100000
++ O_TMPFILE = 0x410000, // octal 020200000
++
++ F_GETLK = 5,
++ F_SETLK = 6,
++ F_SETLKW = 7,
++ }
++ }
++ else version (PPC64)
++ {
++ enum
++ {
++ O_DIRECTORY = 0x004000, // octal 040000
++ O_NOFOLLOW = 0x008000, // octal 0100000
++ O_DIRECT = 0x020000, // octal 0400000
++ O_LARGEFILE = 0x010000, // octal 0200000
++ O_TMPFILE = 0x410000, // octal 020200000
++
++ F_GETLK = 5,
++ F_SETLK = 6,
++ F_SETLKW = 7,
++ }
++ }
++ else
++ static assert(0, "Platform not supported");
++
++ enum
++ {
+ O_CREAT = 0x40, // octal 0100
+ O_EXCL = 0x80, // octal 0200
+ O_NOCTTY = 0x100, // octal 0400
+@@ -790,16 +885,11 @@ else version (CRuntime_Musl)
+ O_DSYNC = 0x1000, // octal 010000
+ O_SYNC = 0x101000, // octal 04010000
+ O_RSYNC = O_SYNC,
+- O_DIRECTORY = 0x10000,
+- O_NOFOLLOW = 0x20000,
+ O_CLOEXEC = 0x80000,
+
+ O_ASYNC = 0x2000,
+- O_DIRECT = 0x4000,
+- O_LARGEFILE = 0,
+ O_NOATIME = 0x40000,
+ O_PATH = 0x200000,
+- O_TMPFILE = 0x410000,
+ O_NDELAY = O_NONBLOCK,
+ O_SEARCH = O_PATH,
+ O_EXEC = O_PATH,
+@@ -809,19 +899,19 @@ else version (CRuntime_Musl)
+ O_WRONLY = 01,
+ O_RDWR = 02,
+ }
+- enum {
++ enum
++ {
+ F_DUPFD = 0,
+ F_GETFD = 1,
+ F_SETFD = 2,
+ F_GETFL = 3,
+ F_SETFL = 4,
+- F_GETLK = 5,
+- F_SETLK = 6,
+- F_SETLKW = 7,
++ // F_GETLK, F_SETLK, F_SETLKW are arch-specific
+ F_SETOWN = 8,
+ F_GETOWN = 9,
+ }
+- enum {
++ enum
++ {
+ F_RDLCK = 0,
+ F_WRLCK = 1,
+ F_UNLCK = 2,
+diff -Nurp a/libphobos/libdruntime/core/sys/posix/semaphore.d b/libphobos/libdruntime/core/sys/posix/semaphore.d
+--- a/libphobos/libdruntime/core/sys/posix/semaphore.d 2020-01-01 00:00:00.000000000 +0900
++++ b/libphobos/libdruntime/core/sys/posix/semaphore.d 2020-01-01 00:00:00.000000000 +0900
+@@ -143,8 +143,10 @@ else version (CRuntime_Bionic)
+ else version (CRuntime_Musl)
+ {
+ struct sem_t {
+- int[4*long.sizeof/int.sizeof] __val;
++ int[4*c_long.sizeof/int.sizeof] __val;
+ }
++
++ enum SEM_FAILED = (sem_t*).init;
+ }
+ else version (CRuntime_UClibc)
+ {
+diff -Nurp a/libphobos/libdruntime/core/sys/posix/sys/stat.d b/libphobos/libdruntime/core/sys/posix/sys/stat.d
+--- a/libphobos/libdruntime/core/sys/posix/sys/stat.d 2020-01-01 00:00:00.000000000 +0900
++++ b/libphobos/libdruntime/core/sys/posix/sys/stat.d 2020-01-01 00:00:00.000000000 +0900
+@@ -1587,31 +1587,225 @@ else version (CRuntime_Musl)
+ S_ISGID = 0x400, // octal 02000
+ S_ISVTX = 0x200, // octal 01000
+ }
+- struct stat_t {
+- dev_t st_dev;
+- ino_t st_ino;
+- nlink_t st_nlink;
+-
+- mode_t st_mode;
+- uid_t st_uid;
+- gid_t st_gid;
+- uint __pad0;
+- dev_t st_rdev;
+- off_t st_size;
+- blksize_t st_blksize;
+- blkcnt_t st_blocks;
+-
+- timespec st_atim;
+- timespec st_mtim;
+- timespec st_ctim;
+- extern(D) @safe @property inout pure nothrow
+- {
+- ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
+- ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
+- ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ version (ARM)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ int __st_dev_padding;
++ c_long __st_ino_truncated;
++ mode_t st_mode;
++ nlink_t st_nlink;
++
++ uid_t st_uid;
++ gid_t st_gid;
++ dev_t st_rdev;
++ int __st_rdev_padding;
++ off_t st_size;
++ blksize_t st_blksize;
++ blkcnt_t st_blocks;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++ ino_t st_ino;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
++ }
++ }
++ else version (AArch64)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ ino_t st_ino;
++ mode_t st_mode;
++ nlink_t st_nlink;
++
++ uid_t st_uid;
++ gid_t st_gid;
++ dev_t st_rdev;
++ c_ulong __pad;
++ off_t st_size;
++ blksize_t st_blksize;
++ int __pad2;
++ blkcnt_t st_blocks;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++ uint[2] __unused;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
++ }
++ }
++ else version (X86_64)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ ino_t st_ino;
++ nlink_t st_nlink;
++
++ mode_t st_mode;
++ uid_t st_uid;
++ gid_t st_gid;
++ uint __pad0;
++ dev_t st_rdev;
++ off_t st_size;
++ blksize_t st_blksize;
++ blkcnt_t st_blocks;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++
++ c_long[3] __unused;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
++ }
++ }
++ else version (X86)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ int __st_dev_padding;
++ c_long __st_ino_truncated;
++ mode_t st_mode;
++ nlink_t st_nlink;
++
++ uid_t st_uid;
++ gid_t st_gid;
++ dev_t st_rdev;
++ int __st_rdev_padding;
++ off_t st_size;
++ blksize_t st_blksize;
++ blkcnt_t st_blocks;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++ ino_t st_ino;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
+ }
+- long[3] __unused;
+ }
++ else version (MIPS64)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ int[3] __pad1;
++ ino_t st_ino;
++ mode_t st_mode;
++ nlink_t st_nlink;
++
++ uid_t st_uid;
++ gid_t st_gid;
++ dev_t st_rdev;
++ uint[2] __pad2;
++ off_t st_size;
++ int __pad3;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++ blksize_t st_blksize;
++ uint __pad4;
++ blkcnt_t st_blocks;
++ int[14] __pad5;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
++ }
++ }
++ else version (PPC64)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ ino_t st_ino;
++ nlink_t st_nlink;
++ mode_t st_mode;
++
++ uid_t st_uid;
++ gid_t st_gid;
++ dev_t st_rdev;
++ off_t st_size;
++ blksize_t st_blksize;
++ blkcnt_t st_blocks;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++ c_ulong[3] __unused;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
++ }
++ }
++ else version (SystemZ)
++ {
++ struct stat_t
++ {
++ dev_t st_dev;
++ ino_t st_ino;
++ nlink_t st_nlink;
++ mode_t st_mode;
++
++ uid_t st_uid;
++ gid_t st_gid;
++ dev_t st_rdev;
++ off_t st_size;
++
++ timespec st_atim;
++ timespec st_mtim;
++ timespec st_ctim;
++
++ blksize_t st_blksize;
++ blkcnt_t st_blocks;
++ c_ulong[3] __unused;
++
++ extern(D) @safe @property inout pure nothrow
++ {
++ ref inout(time_t) st_atime() return { return st_atim.tv_sec; }
++ ref inout(time_t) st_mtime() return { return st_mtim.tv_sec; }
++ ref inout(time_t) st_ctime() return { return st_ctim.tv_sec; }
++ }
++ }
++ }
++ else
++ static assert("Unsupported platform");
++
+ private
+ {
+ extern (D) bool S_ISTYPE( mode_t mode, uint mask )
+diff -Nurp a/libphobos/libdruntime/core/sys/posix/sys/types.d b/libphobos/libdruntime/core/sys/posix/sys/types.d
+--- a/libphobos/libdruntime/core/sys/posix/sys/types.d 2020-01-08 00:00:00.000000000 +0900
++++ b/libphobos/libdruntime/core/sys/posix/sys/types.d 2020-01-08 00:00:00.000000000 +0900
+@@ -112,8 +112,26 @@ version (CRuntime_Glibc)
+ }
+ else version (CRuntime_Musl)
+ {
+- alias c_long blksize_t;
+- alias c_ulong nlink_t;
++ version (AArch64)
++ {
++ alias int blksize_t;
++ alias uint nlink_t;
++ }
++ else version (MIPS64)
++ {
++ alias c_long blksize_t;
++ alias uint nlink_t;
++ }
++ else version (RISCV64)
++ {
++ alias int blksize_t;
++ alias uint nlink_t;
++ }
++ else
++ {
++ alias c_long blksize_t;
++ alias c_ulong nlink_t;
++ }
+ alias long dev_t;
+ alias long blkcnt_t;
+ alias ulong ino_t;