From b37b1de6a7af811df26f6d406d72a563f7ebe33e Mon Sep 17 00:00:00 2001 From: Quinton Miller Date: Fri, 31 Mar 2023 02:19:53 +0800 Subject: [PATCH 1/3] Fix some Linux `LibC` bindings --- src/lib_c/x86_64-linux-gnu/c/dirent.cr | 4 ++-- src/lib_c/x86_64-linux-gnu/c/link.cr | 4 ++++ src/lib_c/x86_64-linux-gnu/c/signal.cr | 4 ++-- src/lib_c/x86_64-linux-gnu/c/sys/resource.cr | 2 +- src/lib_c/x86_64-linux-gnu/c/sys/socket.cr | 2 +- src/lib_c/x86_64-linux-gnu/c/sys/types.cr | 13 ------------- 6 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/lib_c/x86_64-linux-gnu/c/dirent.cr b/src/lib_c/x86_64-linux-gnu/c/dirent.cr index 5a413f754815..778485d8b4bc 100644 --- a/src/lib_c/x86_64-linux-gnu/c/dirent.cr +++ b/src/lib_c/x86_64-linux-gnu/c/dirent.cr @@ -9,9 +9,9 @@ lib LibC struct Dirent d_ino : InoT - d_off : Long + d_off : OffT d_reclen : UShort - d_type : Char + d_type : UChar d_name : StaticArray(Char, 256) end diff --git a/src/lib_c/x86_64-linux-gnu/c/link.cr b/src/lib_c/x86_64-linux-gnu/c/link.cr index a29bd3030a42..5f930116e936 100644 --- a/src/lib_c/x86_64-linux-gnu/c/link.cr +++ b/src/lib_c/x86_64-linux-gnu/c/link.cr @@ -6,6 +6,10 @@ lib LibC name : Char* phdr : Elf_Phdr* phnum : Elf_Half + adds : ULongLong + subs : ULongLong + tls_modid : SizeT + tls_data : Void* end alias DlPhdrCallback = (DlPhdrInfo*, LibC::SizeT, Void*) -> LibC::Int diff --git a/src/lib_c/x86_64-linux-gnu/c/signal.cr b/src/lib_c/x86_64-linux-gnu/c/signal.cr index 0556b55ae3e1..46b6dba5cc62 100644 --- a/src/lib_c/x86_64-linux-gnu/c/signal.cr +++ b/src/lib_c/x86_64-linux-gnu/c/signal.cr @@ -57,7 +57,7 @@ lib LibC si_code : Int __pad0 : Int si_addr : Void* # Assuming the sigfault form of siginfo_t - __pad1 : StaticArray(Int, 20) # __SI_PAD_SIZE (28) - sizeof(void*) (8) = 20 + __pad1 : StaticArray(Int, 26) # __SI_PAD_SIZE (28) - sizeof(void*) / sizeof(int) = 26 end alias SigactionHandlerT = (Int, SiginfoT*, Void*) -> @@ -66,7 +66,7 @@ lib LibC sa_sigaction : SigactionHandlerT sa_mask : SigsetT sa_flags : Int - sa_restorer : Void* + sa_restorer : -> end struct StackT diff --git a/src/lib_c/x86_64-linux-gnu/c/sys/resource.cr b/src/lib_c/x86_64-linux-gnu/c/sys/resource.cr index 7f550c37a622..a0900a4730c4 100644 --- a/src/lib_c/x86_64-linux-gnu/c/sys/resource.cr +++ b/src/lib_c/x86_64-linux-gnu/c/sys/resource.cr @@ -21,5 +21,5 @@ lib LibC RUSAGE_SELF = 0 RUSAGE_CHILDREN = -1 - fun getrusage(who : Int, usage : RUsage*) : Int16 + fun getrusage(who : Int, usage : RUsage*) : Int end diff --git a/src/lib_c/x86_64-linux-gnu/c/sys/socket.cr b/src/lib_c/x86_64-linux-gnu/c/sys/socket.cr index 6cee17373bca..388534dcb0ac 100644 --- a/src/lib_c/x86_64-linux-gnu/c/sys/socket.cr +++ b/src/lib_c/x86_64-linux-gnu/c/sys/socket.cr @@ -38,8 +38,8 @@ lib LibC struct SockaddrStorage ss_family : SaFamilyT + __ss_padding : StaticArray(Char, 118) __ss_align : ULong - __ss_padding : StaticArray(Char, 112) end struct Linger diff --git a/src/lib_c/x86_64-linux-gnu/c/sys/types.cr b/src/lib_c/x86_64-linux-gnu/c/sys/types.cr index c217abaf72e1..0fa18856ed06 100644 --- a/src/lib_c/x86_64-linux-gnu/c/sys/types.cr +++ b/src/lib_c/x86_64-linux-gnu/c/sys/types.cr @@ -20,19 +20,7 @@ lib LibC __align : Long end - struct PthreadCondTData - __lock : Int - __futex : UInt - __total_seq : ULongLong - __wakeup_seq : ULongLong - __woken_seq : ULongLong - __mutex : Void* - __nwaiters : UInt - __broadcast_seq : UInt - end - union PthreadCondT - __data : PthreadCondTData __size : StaticArray(Char, 48) __align : LongLong end @@ -43,7 +31,6 @@ lib LibC end union PthreadMutexT - __data : Void* __size : StaticArray(Char, 40) __align : Long end From d1bcf40b762b7e8e75a7ff96431c2dbb3ad25da7 Mon Sep 17 00:00:00 2001 From: Quinton Miller Date: Tue, 4 Apr 2023 01:25:29 +0800 Subject: [PATCH 2/3] i386 --- src/lib_c/i386-linux-gnu/c/dirent.cr | 2 +- src/lib_c/i386-linux-gnu/c/link.cr | 4 ++++ src/lib_c/i386-linux-gnu/c/signal.cr | 6 +++--- src/lib_c/i386-linux-gnu/c/sys/resource.cr | 2 +- src/lib_c/i386-linux-gnu/c/sys/socket.cr | 2 +- src/lib_c/i386-linux-gnu/c/sys/stat.cr | 6 +++--- src/lib_c/i386-linux-gnu/c/sys/types.cr | 17 ++--------------- 7 files changed, 15 insertions(+), 24 deletions(-) diff --git a/src/lib_c/i386-linux-gnu/c/dirent.cr b/src/lib_c/i386-linux-gnu/c/dirent.cr index 2d456dfe8bc1..ff905a04d099 100644 --- a/src/lib_c/i386-linux-gnu/c/dirent.cr +++ b/src/lib_c/i386-linux-gnu/c/dirent.cr @@ -11,7 +11,7 @@ lib LibC d_ino : InoT d_off : OffT d_reclen : UShort - d_type : Char + d_type : UChar d_name : StaticArray(Char, 256) end diff --git a/src/lib_c/i386-linux-gnu/c/link.cr b/src/lib_c/i386-linux-gnu/c/link.cr index a29bd3030a42..5f930116e936 100644 --- a/src/lib_c/i386-linux-gnu/c/link.cr +++ b/src/lib_c/i386-linux-gnu/c/link.cr @@ -6,6 +6,10 @@ lib LibC name : Char* phdr : Elf_Phdr* phnum : Elf_Half + adds : ULongLong + subs : ULongLong + tls_modid : SizeT + tls_data : Void* end alias DlPhdrCallback = (DlPhdrInfo*, LibC::SizeT, Void*) -> LibC::Int diff --git a/src/lib_c/i386-linux-gnu/c/signal.cr b/src/lib_c/i386-linux-gnu/c/signal.cr index 22e4fdd561b9..2a2219968e04 100644 --- a/src/lib_c/i386-linux-gnu/c/signal.cr +++ b/src/lib_c/i386-linux-gnu/c/signal.cr @@ -45,7 +45,7 @@ lib LibC SIG_IGN = SighandlerT.new(Pointer(Void).new(1_u64), Pointer(Void).null) struct SigsetT - val : ULong[32] # (1024 / (8 * sizeof(long))) + val : ULong[32] # (1024 / (8 * sizeof(ULong))) end SA_ONSTACK = 0x08000000 @@ -56,7 +56,7 @@ lib LibC si_errno : Int si_code : Int si_addr : Void* # Assuming the sigfault form of siginfo_t - __pad : StaticArray(Int, 25) # __SI_PAD_SIZE (29) - sizeof(void*) (4) = 25 + __pad : StaticArray(Int, 27) # __SI_PAD_SIZE (29) - sizeof(void*) (4) = 25 end alias SigactionHandlerT = (Int, SiginfoT*, Void*) -> @@ -65,7 +65,7 @@ lib LibC sa_sigaction : SigactionHandlerT sa_mask : SigsetT sa_flags : Int - sa_restorer : Void* + sa_restorer : -> end struct StackT diff --git a/src/lib_c/i386-linux-gnu/c/sys/resource.cr b/src/lib_c/i386-linux-gnu/c/sys/resource.cr index 7f550c37a622..a0900a4730c4 100644 --- a/src/lib_c/i386-linux-gnu/c/sys/resource.cr +++ b/src/lib_c/i386-linux-gnu/c/sys/resource.cr @@ -21,5 +21,5 @@ lib LibC RUSAGE_SELF = 0 RUSAGE_CHILDREN = -1 - fun getrusage(who : Int, usage : RUsage*) : Int16 + fun getrusage(who : Int, usage : RUsage*) : Int end diff --git a/src/lib_c/i386-linux-gnu/c/sys/socket.cr b/src/lib_c/i386-linux-gnu/c/sys/socket.cr index b02ed75210dc..2bea5510a9df 100644 --- a/src/lib_c/i386-linux-gnu/c/sys/socket.cr +++ b/src/lib_c/i386-linux-gnu/c/sys/socket.cr @@ -38,8 +38,8 @@ lib LibC struct SockaddrStorage ss_family : SaFamilyT + __ss_padding : StaticArray(Char, 122) __ss_align : ULong - __ss_padding : StaticArray(Char, 120) end struct Linger diff --git a/src/lib_c/i386-linux-gnu/c/sys/stat.cr b/src/lib_c/i386-linux-gnu/c/sys/stat.cr index 7facced563ea..7a6dca15c3ba 100644 --- a/src/lib_c/i386-linux-gnu/c/sys/stat.cr +++ b/src/lib_c/i386-linux-gnu/c/sys/stat.cr @@ -26,16 +26,16 @@ lib LibC S_ISGID = 0o2000 S_ISVTX = 0o1000 - struct Stat + struct Stat # stat64 st_dev : DevT - __pad1 : UShort + __pad1 : UInt __st_ino : ULong st_mode : ModeT st_nlink : NlinkT st_uid : UidT st_gid : GidT st_rdev : DevT - __pad2 : UShort + __pad2 : UInt st_size : OffT st_blksize : BlksizeT st_blocks : BlkcntT diff --git a/src/lib_c/i386-linux-gnu/c/sys/types.cr b/src/lib_c/i386-linux-gnu/c/sys/types.cr index f89d29723e65..a1d00215d55d 100644 --- a/src/lib_c/i386-linux-gnu/c/sys/types.cr +++ b/src/lib_c/i386-linux-gnu/c/sys/types.cr @@ -20,37 +20,24 @@ lib LibC __align : Long end - struct PthreadCondTData - __lock : Int - __futex : UInt - __total_seq : ULongLong - __wakeup_seq : ULongLong - __woken_seq : ULongLong - __mutex : Void* - __nwaiters : UInt - __broadcast_seq : UInt - end - union PthreadCondT - __data : PthreadCondTData __size : StaticArray(Char, 48) __align : LongLong end union PthreadCondattrT __size : StaticArray(Char, 4) - __align : Long + __align : Int end union PthreadMutexT - __data : Void* __size : StaticArray(Char, 24) __align : Long end union PthreadMutexattrT __size : StaticArray(Char, 4) - __align : Long + __align : Int end alias PthreadT = ULong From d785d2866eac7ca0120da3e6aecc5b8c11646d20 Mon Sep 17 00:00:00 2001 From: Quinton Miller Date: Fri, 7 Apr 2023 02:19:10 +0800 Subject: [PATCH 3/3] aarch64 --- src/lib_c/aarch64-linux-gnu/c/dirent.cr | 4 ++-- src/lib_c/aarch64-linux-gnu/c/link.cr | 4 ++++ src/lib_c/aarch64-linux-gnu/c/signal.cr | 4 ++-- src/lib_c/aarch64-linux-gnu/c/stddef.cr | 2 +- src/lib_c/aarch64-linux-gnu/c/sys/resource.cr | 2 +- src/lib_c/aarch64-linux-gnu/c/sys/socket.cr | 2 +- src/lib_c/aarch64-linux-gnu/c/sys/types.cr | 17 ++--------------- 7 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/lib_c/aarch64-linux-gnu/c/dirent.cr b/src/lib_c/aarch64-linux-gnu/c/dirent.cr index 5a413f754815..778485d8b4bc 100644 --- a/src/lib_c/aarch64-linux-gnu/c/dirent.cr +++ b/src/lib_c/aarch64-linux-gnu/c/dirent.cr @@ -9,9 +9,9 @@ lib LibC struct Dirent d_ino : InoT - d_off : Long + d_off : OffT d_reclen : UShort - d_type : Char + d_type : UChar d_name : StaticArray(Char, 256) end diff --git a/src/lib_c/aarch64-linux-gnu/c/link.cr b/src/lib_c/aarch64-linux-gnu/c/link.cr index a29bd3030a42..5f930116e936 100644 --- a/src/lib_c/aarch64-linux-gnu/c/link.cr +++ b/src/lib_c/aarch64-linux-gnu/c/link.cr @@ -6,6 +6,10 @@ lib LibC name : Char* phdr : Elf_Phdr* phnum : Elf_Half + adds : ULongLong + subs : ULongLong + tls_modid : SizeT + tls_data : Void* end alias DlPhdrCallback = (DlPhdrInfo*, LibC::SizeT, Void*) -> LibC::Int diff --git a/src/lib_c/aarch64-linux-gnu/c/signal.cr b/src/lib_c/aarch64-linux-gnu/c/signal.cr index c9d22e360cb7..d7c2a8790d2a 100644 --- a/src/lib_c/aarch64-linux-gnu/c/signal.cr +++ b/src/lib_c/aarch64-linux-gnu/c/signal.cr @@ -57,7 +57,7 @@ lib LibC si_code : Int __pad0 : Int si_addr : Void* # Assuming the sigfault form of siginfo_t - __pad1 : StaticArray(Int, 20) # __SI_PAD_SIZE (28) - sizeof(void*) (8) = 20 + __pad1 : StaticArray(Int, 26) # __SI_PAD_SIZE (28) - sizeof(void*) / sizeof(int) = 26 end alias SigactionHandlerT = (Int, SiginfoT*, Void*) -> @@ -66,7 +66,7 @@ lib LibC sa_sigaction : SigactionHandlerT sa_mask : SigsetT sa_flags : Int - sa_restorer : Void* + sa_restorer : -> end struct StackT diff --git a/src/lib_c/aarch64-linux-gnu/c/stddef.cr b/src/lib_c/aarch64-linux-gnu/c/stddef.cr index 4169a0d2ad0e..4afcdf34d723 100644 --- a/src/lib_c/aarch64-linux-gnu/c/stddef.cr +++ b/src/lib_c/aarch64-linux-gnu/c/stddef.cr @@ -1,3 +1,3 @@ lib LibC - alias SizeT = ULongLong + alias SizeT = ULong end diff --git a/src/lib_c/aarch64-linux-gnu/c/sys/resource.cr b/src/lib_c/aarch64-linux-gnu/c/sys/resource.cr index 7f550c37a622..a0900a4730c4 100644 --- a/src/lib_c/aarch64-linux-gnu/c/sys/resource.cr +++ b/src/lib_c/aarch64-linux-gnu/c/sys/resource.cr @@ -21,5 +21,5 @@ lib LibC RUSAGE_SELF = 0 RUSAGE_CHILDREN = -1 - fun getrusage(who : Int, usage : RUsage*) : Int16 + fun getrusage(who : Int, usage : RUsage*) : Int end diff --git a/src/lib_c/aarch64-linux-gnu/c/sys/socket.cr b/src/lib_c/aarch64-linux-gnu/c/sys/socket.cr index 11785c128f52..82e48d78c9f2 100644 --- a/src/lib_c/aarch64-linux-gnu/c/sys/socket.cr +++ b/src/lib_c/aarch64-linux-gnu/c/sys/socket.cr @@ -38,8 +38,8 @@ lib LibC struct SockaddrStorage ss_family : SaFamilyT + __ss_padding : StaticArray(Char, 118) __ss_align : ULong - __ss_padding : StaticArray(Char, 112) end struct Linger diff --git a/src/lib_c/aarch64-linux-gnu/c/sys/types.cr b/src/lib_c/aarch64-linux-gnu/c/sys/types.cr index 0dcd396eb3a9..bef2498d1494 100644 --- a/src/lib_c/aarch64-linux-gnu/c/sys/types.cr +++ b/src/lib_c/aarch64-linux-gnu/c/sys/types.cr @@ -20,21 +20,9 @@ lib LibC __align : Long end - struct PthreadCondTData - __lock : Int - __futex : UInt - __total_seq : ULongLong - __wakeup_seq : ULongLong - __woken_seq : ULongLong - __mutex : Void* - __nwaiters : UInt - __broadcast_seq : UInt - end - union PthreadCondT - __data : PthreadCondTData __size : StaticArray(Char, 48) - __align : Long + __align : LongLong end union PthreadCondattrT @@ -43,14 +31,13 @@ lib LibC end union PthreadMutexT - __data : Void* __size : StaticArray(Char, 48) __align : Long end union PthreadMutexattrT __size : StaticArray(Char, 8) - __align : Long + __align : Int end alias PthreadT = ULong