Skip to content

Commit 3b4032d

Browse files
authored
Merge branch 'main' into issues/4340
2 parents 872b743 + fdeca3b commit 3b4032d

File tree

16 files changed

+79
-38
lines changed

16 files changed

+79
-38
lines changed
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
FROM ubuntu:24.10
22

33
RUN apt-get update && apt-get install -y --no-install-recommends \
4-
ca-certificates curl gcc git libc6-dev make qemu-user xz-utils
4+
ca-certificates curl gcc gcc-14-loongarch64-linux-gnu git libc6-dev \
5+
make qemu-user xz-utils patch rsync
56

6-
COPY install-musl-cross.sh /
7-
RUN /install-musl-cross.sh loongarch64-unknown-linux-musl
7+
COPY install-musl.sh /
8+
RUN /install-musl.sh loongarch64
89

9-
ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_MUSL_LINKER=loongarch64-unknown-linux-musl-gcc \
10+
ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_MUSL_LINKER=musl-gcc \
1011
CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_MUSL_RUNNER="qemu-loongarch64" \
11-
CC_loongarch64_unknown_linux_musl=loongarch64-unknown-linux-musl-gcc \
12+
CC_loongarch64_unknown_linux_musl=musl-gcc \
1213
CFLAGS_loongarch64_unknown_linux_musl="-mabi=lp64d -fPIC" \
13-
QEMU_LD_PREFIX=/loongarch64-unknown-linux-musl/loongarch64-unknown-linux-musl/sysroot \
14-
PATH=$PATH:/loongarch64-unknown-linux-musl/bin:/rust/bin
14+
RUSTFLAGS="-Ctarget-feature=+crt-static" \
15+
QEMU_LD_PREFIX=/musl-loongarch64 \
16+
PATH=$PATH:/musl-loongarch64/bin:/rust/bin

ci/install-musl-cross.sh

Lines changed: 0 additions & 10 deletions
This file was deleted.

ci/install-musl.sh

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,15 @@
55

66
set -eux
77

8-
musl_version=1.1.24
8+
case ${1} in
9+
loongarch64)
10+
musl_version=1.2.5
11+
;;
12+
*)
13+
musl_version=1.1.24
14+
;;
15+
esac
16+
917
musl="musl-${musl_version}"
1018

1119
# Download, configure, build, and install musl:
@@ -53,6 +61,13 @@ case ${1} in
5361
./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
5462
make install -j4
5563
;;
64+
loongarch64)
65+
musl_arch=loongarch64
66+
kernel_arch=loongarch
67+
CC=loongarch64-linux-gnu-gcc-14 \
68+
./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
69+
make install -j4
70+
;;
5671
*)
5772
echo "Unknown target arch: \"${1}\""
5873
exit 1

libc-test/build.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,6 +1253,10 @@ fn test_solarish(target: &str) {
12531253
// https://github.com/gnzlbg/ctest/issues/68
12541254
"lio_listio" => true,
12551255

1256+
// Exists on illumos too but, for now, is
1257+
// [a recent addition](https://www.illumos.org/issues/17094).
1258+
"secure_getenv" if is_illumos => true,
1259+
12561260
_ => false,
12571261
}
12581262
});
@@ -4064,8 +4068,7 @@ fn test_linux(target: &str) {
40644068
"epoll_params" => true,
40654069

40664070
// FIXME(linux): Requires >= 6.12 kernel headers.
4067-
"dmabuf_cmsg" |
4068-
"dmabuf_token" => true,
4071+
"dmabuf_cmsg" | "dmabuf_token" => true,
40694072

40704073
_ => false,
40714074
}

libc-test/semver/android.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3338,6 +3338,7 @@ fwrite_unlocked
33383338
gai_strerror
33393339
genlmsghdr
33403340
getaddrinfo
3341+
getauxval
33413342
getchar
33423343
getchar_unlocked
33433344
getcwd

libc-test/semver/hermit.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
AF_INET
22
AF_INET6
3+
AF_UNSPEC
4+
AF_VSOCK
35
CLOCK_MONOTONIC
46
CLOCK_REALTIME
57
DT_BLK

src/hermit.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,10 @@ s! {
114114
}
115115
}
116116

117-
pub const AF_INET: i32 = 0;
117+
pub const AF_UNSPEC: i32 = 0;
118+
pub const AF_INET: i32 = 3;
118119
pub const AF_INET6: i32 = 1;
120+
pub const AF_VSOCK: i32 = 2;
119121

120122
pub const CLOCK_REALTIME: clockid_t = 1;
121123
pub const CLOCK_MONOTONIC: clockid_t = 4;

src/unix/linux_like/android/b64/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ f! {
305305
}
306306

307307
extern "C" {
308-
pub fn getauxval(type_: c_ulong) -> c_ulong;
309308
pub fn __system_property_wait(
310309
pi: *const crate::prop_info,
311310
__old_serial: u32,

src/unix/linux_like/android/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4043,6 +4043,8 @@ extern "C" {
40434043

40444044
pub fn gettid() -> crate::pid_t;
40454045

4046+
pub fn getauxval(type_: c_ulong) -> c_ulong;
4047+
40464048
/// Only available in API Version 28+
40474049
pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t;
40484050
pub fn getentropy(buf: *mut c_void, buflen: size_t) -> c_int;

src/unix/linux_like/linux/musl/b32/arm/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,3 @@ pub const SYS_process_mrelease: c_long = 448;
795795
pub const SYS_futex_waitv: c_long = 449;
796796
pub const SYS_set_mempolicy_home_node: c_long = 450;
797797
pub const SYS_mseal: c_long = 462;
798-
799-
extern "C" {
800-
pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t;
801-
}

src/unix/linux_like/linux/musl/b32/powerpc.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,3 @@ pub const SYS_process_mrelease: c_long = 448;
745745
pub const SYS_futex_waitv: c_long = 449;
746746
pub const SYS_set_mempolicy_home_node: c_long = 450;
747747
pub const SYS_mseal: c_long = 462;
748-
749-
extern "C" {
750-
pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t;
751-
}

src/unix/linux_like/linux/musl/b32/x86/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,3 @@ pub const CS: c_int = 13;
913913
pub const EFL: c_int = 14;
914914
pub const UESP: c_int = 15;
915915
pub const SS: c_int = 16;
916-
917-
extern "C" {
918-
pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t;
919-
}

src/unix/linux_like/linux/musl/b64/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
8181
pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
8282
pub const __SIZEOF_PTHREAD_BARRIER_T: usize = 32;
8383

84-
extern "C" {
85-
pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t;
86-
}
87-
8884
cfg_if! {
8985
if #[cfg(target_arch = "aarch64")] {
9086
mod aarch64;

src/unix/linux_like/linux/musl/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -973,6 +973,9 @@ extern "C" {
973973
pub fn dirname(path: *mut c_char) -> *mut c_char;
974974
pub fn basename(path: *mut c_char) -> *mut c_char;
975975

976+
// Addded in `musl` 1.1.20
977+
pub fn getrandom(buf: *mut c_void, buflen: size_t, flags: c_uint) -> ssize_t;
978+
976979
// Added in `musl` 1.1.24
977980
pub fn posix_spawn_file_actions_addchdir_np(
978981
actions: *mut crate::posix_spawn_file_actions_t,

src/unix/linux_like/linux/uclibc/mod.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,42 @@ s! {
114114
pub struct pthread_condattr_t {
115115
size: [u8; crate::__SIZEOF_PTHREAD_CONDATTR_T],
116116
}
117+
118+
pub struct tcp_info {
119+
pub tcpi_state: u8,
120+
pub tcpi_ca_state: u8,
121+
pub tcpi_retransmits: u8,
122+
pub tcpi_probes: u8,
123+
pub tcpi_backoff: u8,
124+
pub tcpi_options: u8,
125+
/// This contains the bitfields `tcpi_snd_wscale` and `tcpi_rcv_wscale`.
126+
/// Each is 4 bits.
127+
pub tcpi_snd_rcv_wscale: u8,
128+
pub tcpi_rto: u32,
129+
pub tcpi_ato: u32,
130+
pub tcpi_snd_mss: u32,
131+
pub tcpi_rcv_mss: u32,
132+
pub tcpi_unacked: u32,
133+
pub tcpi_sacked: u32,
134+
pub tcpi_lost: u32,
135+
pub tcpi_retrans: u32,
136+
pub tcpi_fackets: u32,
137+
pub tcpi_last_data_sent: u32,
138+
pub tcpi_last_ack_sent: u32,
139+
pub tcpi_last_data_recv: u32,
140+
pub tcpi_last_ack_recv: u32,
141+
pub tcpi_pmtu: u32,
142+
pub tcpi_rcv_ssthresh: u32,
143+
pub tcpi_rtt: u32,
144+
pub tcpi_rttvar: u32,
145+
pub tcpi_snd_ssthresh: u32,
146+
pub tcpi_snd_cwnd: u32,
147+
pub tcpi_advmss: u32,
148+
pub tcpi_reordering: u32,
149+
pub tcpi_rcv_rtt: u32,
150+
pub tcpi_rcv_space: u32,
151+
pub tcpi_total_retrans: u32,
152+
}
117153
}
118154

119155
impl siginfo_t {

src/unix/solarish/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3201,6 +3201,8 @@ extern "C" {
32013201
pub fn arc4random() -> u32;
32023202
pub fn arc4random_buf(buf: *mut c_void, nbytes: size_t);
32033203
pub fn arc4random_uniform(upper_bound: u32) -> u32;
3204+
3205+
pub fn secure_getenv(name: *const c_char) -> *mut c_char;
32043206
}
32053207

32063208
#[link(name = "sendfile")]

0 commit comments

Comments
 (0)