From c1371d1b3e9a76c6ad546884fa3728a4e1f652b4 Mon Sep 17 00:00:00 2001 From: Daria Sukhonina Date: Fri, 8 Sep 2023 18:35:53 +0300 Subject: [PATCH 1/5] fix newlib definitions --- src/unix/newlib/horizon/mod.rs | 10 ---------- src/unix/newlib/mod.rs | 27 ++++++++++++++++++--------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/unix/newlib/horizon/mod.rs b/src/unix/newlib/horizon/mod.rs index bcb93ad9df4f..d7bc227c2234 100644 --- a/src/unix/newlib/horizon/mod.rs +++ b/src/unix/newlib/horizon/mod.rs @@ -150,16 +150,6 @@ pub const POLLERR: ::c_short = 0x0008; pub const POLLHUP: ::c_short = 0x0010; pub const POLLNVAL: ::c_short = 0x0020; -pub const EAI_AGAIN: ::c_int = 2; -pub const EAI_BADFLAGS: ::c_int = 3; -pub const EAI_FAIL: ::c_int = 4; -pub const EAI_SERVICE: ::c_int = 9; -pub const EAI_SYSTEM: ::c_int = 11; -pub const EAI_BADHINTS: ::c_int = 12; -pub const EAI_PROTOCOL: ::c_int = 13; -pub const EAI_OVERFLOW: ::c_int = 14; -pub const EAI_MAX: ::c_int = 15; - pub const AF_UNIX: ::c_int = 1; pub const AF_INET6: ::c_int = 23; diff --git a/src/unix/newlib/mod.rs b/src/unix/newlib/mod.rs index ce84f1421f0e..c3928f715329 100644 --- a/src/unix/newlib/mod.rs +++ b/src/unix/newlib/mod.rs @@ -546,8 +546,8 @@ pub const IFF_LINK2: ::c_int = 0x4000; // per link layer defined bit pub const IFF_ALTPHYS: ::c_int = IFF_LINK2; // use alternate physical connection pub const IFF_MULTICAST: ::c_int = 0x8000; // supports multicast -pub const TCP_NODELAY: ::c_int = 8193; -pub const TCP_MAXSEG: ::c_int = 8194; +pub const TCP_NODELAY: ::c_int = 1; +pub const TCP_MAXSEG: ::c_int = 2; pub const TCP_NOPUSH: ::c_int = 4; pub const TCP_NOOPT: ::c_int = 8; pub const TCP_KEEPIDLE: ::c_int = 256; @@ -561,12 +561,12 @@ cfg_if! { pub const IP_TOS: ::c_int = 3; } } -pub const IP_TTL: ::c_int = 8; +pub const IP_TTL: ::c_int = 4; pub const IP_MULTICAST_IF: ::c_int = 9; pub const IP_MULTICAST_TTL: ::c_int = 10; pub const IP_MULTICAST_LOOP: ::c_int = 11; -pub const IP_ADD_MEMBERSHIP: ::c_int = 11; -pub const IP_DROP_MEMBERSHIP: ::c_int = 12; +pub const IP_ADD_MEMBERSHIP: ::c_int = 12; +pub const IP_DROP_MEMBERSHIP: ::c_int = 13; pub const IPV6_UNICAST_HOPS: ::c_int = 4; pub const IPV6_MULTICAST_IF: ::c_int = 9; @@ -598,10 +598,19 @@ pub const NI_NAMEREQD: ::c_int = 4; pub const NI_NUMERICSERV: ::c_int = 0; pub const NI_DGRAM: ::c_int = 0; -pub const EAI_FAMILY: ::c_int = -303; -pub const EAI_MEMORY: ::c_int = -304; -pub const EAI_NONAME: ::c_int = -305; -pub const EAI_SOCKTYPE: ::c_int = -307; +pub const EAI_AGAIN: ::c_int = 2; +pub const EAI_BADFLAGS: ::c_int = 3; +pub const EAI_FAIL: ::c_int = 4; +pub const EAI_FAMILY: ::c_int = 5; +pub const EAI_MEMORY: ::c_int = 6; +pub const EAI_NONAME: ::c_int = 8; +pub const EAI_SERVICE: ::c_int = 9; +pub const EAI_SOCKTYPE: ::c_int = 10; +pub const EAI_SYSTEM: ::c_int = 11; +pub const EAI_BADHINTS: ::c_int = 12; +pub const EAI_PROTOCOL: ::c_int = 13; +pub const EAI_OVERFLOW: ::c_int = 14; +pub const EAI_MAX: ::c_int = 15; pub const EXIT_SUCCESS: ::c_int = 0; pub const EXIT_FAILURE: ::c_int = 1; From 1279b4d052e132ee57745b27ff886de489a9ef4d Mon Sep 17 00:00:00 2001 From: Daria Sukhonina Date: Fri, 8 Sep 2023 18:38:57 +0300 Subject: [PATCH 2/5] remove EAI_MAX for newlib --- src/unix/newlib/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/unix/newlib/mod.rs b/src/unix/newlib/mod.rs index c3928f715329..8bbd499e4251 100644 --- a/src/unix/newlib/mod.rs +++ b/src/unix/newlib/mod.rs @@ -610,7 +610,6 @@ pub const EAI_SYSTEM: ::c_int = 11; pub const EAI_BADHINTS: ::c_int = 12; pub const EAI_PROTOCOL: ::c_int = 13; pub const EAI_OVERFLOW: ::c_int = 14; -pub const EAI_MAX: ::c_int = 15; pub const EXIT_SUCCESS: ::c_int = 0; pub const EXIT_FAILURE: ::c_int = 1; From 829242f91c4a63cdbc97edc4c711a3579b100a78 Mon Sep 17 00:00:00 2001 From: Daria Sukhonina Date: Sat, 9 Sep 2023 00:29:54 +0300 Subject: [PATCH 3/5] Isolate horizon newlib definitions --- src/unix/newlib/mod.rs | 85 +++++++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 26 deletions(-) diff --git a/src/unix/newlib/mod.rs b/src/unix/newlib/mod.rs index 8bbd499e4251..938bcaa890e4 100644 --- a/src/unix/newlib/mod.rs +++ b/src/unix/newlib/mod.rs @@ -10,30 +10,58 @@ cfg_if! { } cfg_if! { - if #[cfg(any(target_os = "espidf"))] { + if #[cfg(target_os = "horizon")] { + pub type dev_t = u32; + pub type off_t = i64; + } else { pub type dev_t = ::c_short; - pub type ino_t = ::c_ushort; pub type off_t = ::c_long; - } else if #[cfg(any(target_os = "vita"))] { - pub type dev_t = ::c_short; - pub type ino_t = ::c_ushort; - pub type off_t = ::c_int; - } else { - pub type dev_t = u32; + } +} + +cfg_if! { + if #[cfg(target_os = "horizon")] { pub type ino_t = u32; - pub type off_t = i64; + } else if #[cfg(target_arch = "sparc")] { + pub type ino_t = ::c_ulong; + } else { + pub type ino_t = ::c_ushort; } } pub type fsblkcnt_t = u64; pub type fsfilcnt_t = u32; pub type id_t = u32; -pub type key_t = ::c_int; + +cfg_if! { + if #[cfg(target_os = "horizon")] { + pub type key_t = ::c_int; + } else { + pub type key_t = ::c_long; + } +} + pub type loff_t = ::c_longlong; -pub type mode_t = ::c_uint; -pub type nfds_t = u32; + +cfg_if! { + if #[cfg(target_os = "horizon")] { + pub type mode_t = ::c_uint; + pub type nfds_t = u32; + } else { + pub type mode_t = u32; + pub type nfds_t = ::c_uint; + } +} + pub type nlink_t = ::c_ushort; -pub type pthread_t = ::c_ulong; + +cfg_if! { + if #[cfg(target_os = "horizon")] { + pub type pthread_t = ::c_ulong; + } else { + pub type pthread_t = u32; + } +} pub type pthread_key_t = ::c_uint; pub type rlim_t = u32; @@ -93,16 +121,16 @@ s! { } pub struct in_addr { - pub s_addr: ::in_addr_t, + pub s_addr: ::in_addr_t, } pub struct hostent { - pub h_name: *mut ::c_char, - pub h_aliases: *mut *mut ::c_char, - pub h_addrtype: ::c_int, - pub h_length: ::c_int, - pub h_addr_list: *mut *mut ::c_char, - pub h_addr: *mut ::c_char, + pub h_name: *mut ::c_char, + pub h_aliases: *mut *mut ::c_char, + pub h_addrtype: ::c_int, + pub h_length: ::c_int, + pub h_addr_list: *mut *mut ::c_char, + pub h_addr: *mut ::c_char, } pub struct pollfd { @@ -557,16 +585,21 @@ pub const TCP_KEEPCNT: ::c_int = 1024; cfg_if! { if #[cfg(target_os = "horizon")] { pub const IP_TOS: ::c_int = 7; + pub const IP_TTL: ::c_int = 8; + pub const IP_MULTICAST_LOOP: ::c_int = 9; + pub const IP_MULTICAST_TTL: ::c_int = 10; + pub const IP_ADD_MEMBERSHIP: ::c_int = 11; + pub const IP_DROP_MEMBERSHIP: ::c_int = 12; } else { pub const IP_TOS: ::c_int = 3; + pub const IP_TTL: ::c_int = 4; + pub const IP_MULTICAST_IF: ::c_int = 9; + pub const IP_MULTICAST_TTL: ::c_int = 10; + pub const IP_MULTICAST_LOOP: ::c_int = 11; + pub const IP_ADD_MEMBERSHIP: ::c_int = 12; + pub const IP_DROP_MEMBERSHIP: ::c_int = 13; } } -pub const IP_TTL: ::c_int = 4; -pub const IP_MULTICAST_IF: ::c_int = 9; -pub const IP_MULTICAST_TTL: ::c_int = 10; -pub const IP_MULTICAST_LOOP: ::c_int = 11; -pub const IP_ADD_MEMBERSHIP: ::c_int = 12; -pub const IP_DROP_MEMBERSHIP: ::c_int = 13; pub const IPV6_UNICAST_HOPS: ::c_int = 4; pub const IPV6_MULTICAST_IF: ::c_int = 9; From 609066120e1f0d851f21c615d00e45077b720ce3 Mon Sep 17 00:00:00 2001 From: Daria Sukhonina Date: Thu, 4 Jan 2024 13:25:34 +0300 Subject: [PATCH 4/5] WIP fixes (may not work) --- src/unix/newlib/align.rs | 13 ++++++++++++- src/unix/newlib/mod.rs | 18 ++---------------- src/unix/newlib/no_align.rs | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/unix/newlib/align.rs b/src/unix/newlib/align.rs index db9beb83523c..eb6bf795482d 100644 --- a/src/unix/newlib/align.rs +++ b/src/unix/newlib/align.rs @@ -47,7 +47,8 @@ macro_rules! expand_align { size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T], } - #[repr(align(8))] + #[cfg_attr(not(target_os = "vita"), repr(align(8)))] + #[cfg_attr(target_os = "vita", repr(align(4)))] pub struct pthread_cond_t { // Unverified size: [u8; ::__SIZEOF_PTHREAD_COND_T], } @@ -56,6 +57,16 @@ macro_rules! expand_align { pub struct pthread_condattr_t { // Unverified size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T], } + + #[cfg_attr(target_os = "vita", repr(align(4)))] + pub struct pthread_attr_t { // Unverified + size: [u8; ::__SIZEOF_PTHREAD_ATTR_T] + } + + #[cfg_attr(target_os = "vita", repr(align(4)))] + pub struct pthread_rwlockattr_t { // Unverified + size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T] + } } }; } diff --git a/src/unix/newlib/mod.rs b/src/unix/newlib/mod.rs index 938bcaa890e4..39ba918428ca 100644 --- a/src/unix/newlib/mod.rs +++ b/src/unix/newlib/mod.rs @@ -1,13 +1,7 @@ pub type blkcnt_t = i32; pub type blksize_t = i32; -cfg_if! { - if #[cfg(target_os = "vita")] { - pub type clockid_t = ::c_uint; - } else { - pub type clockid_t = ::c_ulong; - } -} +pub type clockid_t = ::c_ulong; cfg_if! { if #[cfg(target_os = "horizon")] { @@ -130,7 +124,7 @@ s! { pub h_addrtype: ::c_int, pub h_length: ::c_int, pub h_addr_list: *mut *mut ::c_char, - pub h_addr: *mut ::c_char, + // pub h_addr: *mut ::c_char, } pub struct pollfd { @@ -260,14 +254,6 @@ s! { pub struct cpu_set_t { // Unverified bits: [u32; 32], } - - pub struct pthread_attr_t { // Unverified - __size: [u8; __SIZEOF_PTHREAD_ATTR_T] - } - - pub struct pthread_rwlockattr_t { // Unverified - __size: [u8; __SIZEOF_PTHREAD_RWLOCKATTR_T] - } } // unverified constants diff --git a/src/unix/newlib/no_align.rs b/src/unix/newlib/no_align.rs index ce3aca4ed572..f2c31e91572b 100644 --- a/src/unix/newlib/no_align.rs +++ b/src/unix/newlib/no_align.rs @@ -38,6 +38,9 @@ macro_rules! expand_align { } pub struct pthread_cond_t { // Unverified + #[cfg(target_os = "vita")] + __align: [::c_long; 0]; + #[cfg(not(target_os = "vita"))] __align: [::c_longlong; 0], size: [u8; ::__SIZEOF_PTHREAD_COND_T], } @@ -46,6 +49,18 @@ macro_rules! expand_align { __align: [::c_int; 0], size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T], } + + pub struct pthread_attr_t { // Unverified + #[cfg(target_os = "vita")] + __align: [::c_long; 0], + size: [u8; ::__SIZEOF_PTHREAD_ATTR_T] + } + + pub struct pthread_rwlockattr_t { // Unverified + #[cfg(target_os = "vita")] + __align: [::c_long; 0], + size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T] + } } }; } From 1aa247cfdd7630eed64260733e448f513c07f42f Mon Sep 17 00:00:00 2001 From: Daria Sukhonina Date: Thu, 4 Jan 2024 13:30:06 +0300 Subject: [PATCH 5/5] WIP newlib fixes pt.2 (may not work) --- src/unix/newlib/mod.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/unix/newlib/mod.rs b/src/unix/newlib/mod.rs index 39ba918428ca..908d7f4053ee 100644 --- a/src/unix/newlib/mod.rs +++ b/src/unix/newlib/mod.rs @@ -13,6 +13,16 @@ cfg_if! { } } +cfg_if! { + if #[cfg(target_os = "horizon")] { + pub type dev_t = u32; + pub type off_t = i64; + } else { + pub type dev_t = ::c_short; + pub type off_t = ::c_long; + } +} + cfg_if! { if #[cfg(target_os = "horizon")] { pub type ino_t = u32; @@ -124,7 +134,6 @@ s! { pub h_addrtype: ::c_int, pub h_length: ::c_int, pub h_addr_list: *mut *mut ::c_char, - // pub h_addr: *mut ::c_char, } pub struct pollfd {