Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 2eca79b

Browse files
authored
Merge pull request #2899 from Geod24/fix-musl-arm
stable: Fix broken 'stat' definitions for ARM, AArch64 & more merged-on-behalf-of: Nicholas Wilson <[email protected]>
2 parents c447859 + d8c2817 commit 2eca79b

File tree

4 files changed

+339
-35
lines changed

4 files changed

+339
-35
lines changed

src/core/sys/posix/fcntl.d

Lines changed: 101 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,102 @@ else version (CRuntime_Bionic)
779779
}
780780
else version (CRuntime_Musl)
781781
{
782-
enum {
782+
version (X86_64)
783+
{
784+
enum
785+
{
786+
O_DIRECTORY = 0x010000, // octal 0200000
787+
O_NOFOLLOW = 0x020000, // octal 0400000
788+
O_DIRECT = 0x004000, // octal 040000
789+
O_LARGEFILE = 0,
790+
O_TMPFILE = 0x410000, // octal 020200000
791+
792+
F_GETLK = 5,
793+
F_SETLK = 6,
794+
F_SETLKW = 7,
795+
}
796+
}
797+
// Note: Definitions for i386 are in arch/generic/bits/fcntl.h
798+
else version (X86)
799+
{
800+
enum
801+
{
802+
O_DIRECTORY = 0x010000, // octal 0200000
803+
O_NOFOLLOW = 0x020000, // octal 0400000
804+
O_DIRECT = 0x004000, // octal 040000
805+
O_LARGEFILE = 0x008000, // octal 0100000
806+
O_TMPFILE = 0x410000, // octal 020200000
807+
808+
F_GETLK = 12,
809+
F_SETLK = 13,
810+
F_SETLKW = 14,
811+
}
812+
}
813+
else version (ARM)
814+
{
815+
enum
816+
{
817+
O_DIRECTORY = 0x004000, // octal 040000
818+
O_NOFOLLOW = 0x008000, // octal 0100000
819+
O_DIRECT = 0x010000, // octal 0200000
820+
O_LARGEFILE = 0x020000, // octal 0400000
821+
O_TMPFILE = 0x404000, // octal 020040000
822+
823+
F_GETLK = 12,
824+
F_SETLK = 13,
825+
F_SETLKW = 14,
826+
}
827+
}
828+
else version (AArch64)
829+
{
830+
enum
831+
{
832+
O_DIRECTORY = 0x004000, // octal 040000
833+
O_NOFOLLOW = 0x008000, // octal 0100000
834+
O_DIRECT = 0x010000, // octal 0200000
835+
O_LARGEFILE = 0x020000, // octal 0400000
836+
O_TMPFILE = 0x404000, // octal 020040000
837+
838+
F_GETLK = 5,
839+
F_SETLK = 6,
840+
F_SETLKW = 7,
841+
}
842+
}
843+
else version (SystemZ)
844+
{
845+
enum
846+
{
847+
O_DIRECTORY = 0x010000, // octal 0200000
848+
O_NOFOLLOW = 0x020000, // octal 0400000
849+
O_DIRECT = 0x004000, // octal 040000
850+
O_LARGEFILE = 0x008000, // octal 0100000
851+
O_TMPFILE = 0x410000, // octal 020200000
852+
853+
F_GETLK = 5,
854+
F_SETLK = 6,
855+
F_SETLKW = 7,
856+
}
857+
}
858+
else version (PPC64)
859+
{
860+
enum
861+
{
862+
O_DIRECTORY = 0x004000, // octal 040000
863+
O_NOFOLLOW = 0x008000, // octal 0100000
864+
O_DIRECT = 0x020000, // octal 0400000
865+
O_LARGEFILE = 0x010000, // octal 0200000
866+
O_TMPFILE = 0x410000, // octal 020200000
867+
868+
F_GETLK = 5,
869+
F_SETLK = 6,
870+
F_SETLKW = 7,
871+
}
872+
}
873+
else
874+
static assert(0, "Platform not supported");
875+
876+
enum
877+
{
783878
O_CREAT = 0x40, // octal 0100
784879
O_EXCL = 0x80, // octal 0200
785880
O_NOCTTY = 0x100, // octal 0400
@@ -790,16 +885,11 @@ else version (CRuntime_Musl)
790885
O_DSYNC = 0x1000, // octal 010000
791886
O_SYNC = 0x101000, // octal 04010000
792887
O_RSYNC = O_SYNC,
793-
O_DIRECTORY = 0x10000,
794-
O_NOFOLLOW = 0x20000,
795888
O_CLOEXEC = 0x80000,
796889

797890
O_ASYNC = 0x2000,
798-
O_DIRECT = 0x4000,
799-
O_LARGEFILE = 0,
800891
O_NOATIME = 0x40000,
801892
O_PATH = 0x200000,
802-
O_TMPFILE = 0x410000,
803893
O_NDELAY = O_NONBLOCK,
804894
O_SEARCH = O_PATH,
805895
O_EXEC = O_PATH,
@@ -809,19 +899,19 @@ else version (CRuntime_Musl)
809899
O_WRONLY = 01,
810900
O_RDWR = 02,
811901
}
812-
enum {
902+
enum
903+
{
813904
F_DUPFD = 0,
814905
F_GETFD = 1,
815906
F_SETFD = 2,
816907
F_GETFL = 3,
817908
F_SETFL = 4,
818-
F_GETLK = 5,
819-
F_SETLK = 6,
820-
F_SETLKW = 7,
909+
// F_GETLK, F_SETLK, F_SETLKW are arch-specific
821910
F_SETOWN = 8,
822911
F_GETOWN = 9,
823912
}
824-
enum {
913+
enum
914+
{
825915
F_RDLCK = 0,
826916
F_WRLCK = 1,
827917
F_UNLCK = 2,

src/core/sys/posix/semaphore.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,10 @@ else version (CRuntime_Bionic)
143143
else version (CRuntime_Musl)
144144
{
145145
struct sem_t {
146-
int[4*long.sizeof/int.sizeof] __val;
146+
int[4*c_long.sizeof/int.sizeof] __val;
147147
}
148+
149+
enum SEM_FAILED = (sem_t*).init;
148150
}
149151
else version (CRuntime_UClibc)
150152
{

0 commit comments

Comments
 (0)