History log of /rust-libc-0.2.174/src/unix/linux_like/linux/gnu/mod.rs (Results 1 – 25 of 170)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: 0.2.174
# 264a5399 16-Jun-2025 Ola x Nilsson <[email protected]>

Add missing timespec.tv_nsec for gnux32

The tv_nsec field was removed by mistake for gnux32 in bbaa0173daa4
("gnu: Update struct timespec for GNU _TIME_BITS=64").

Fixes #4495

Link: https://github.

Add missing timespec.tv_nsec for gnux32

The tv_nsec field was removed by mistake for gnux32 in bbaa0173daa4
("gnu: Update struct timespec for GNU _TIME_BITS=64").

Fixes #4495

Link: https://github.com/bminor/glibc/blob/d1b27eeda3d92f33314e93537437cab11ddf4777/time/bits/types/struct_timespec.h#L11-L31

[ add referenced commit summary and link to the message - Trevor ]

(backport <https://github.com/rust-lang/libc/pull/4497>)
(cherry picked from commit e9bd0b43e0b6830072e5af3e7c6618ec62732363)

show more ...


Revision tags: 0.2.173
# c04c92ed 02-Jun-2025 Trevor Gross <[email protected]>

Replace handwritten `Debug` impls with derives

`s_no_extra_traits!` doesn't derive `Debug` so there are a lot of
handwritten implementations. However, since we have a derive-like
solution for unions

Replace handwritten `Debug` impls with derives

`s_no_extra_traits!` doesn't derive `Debug` so there are a lot of
handwritten implementations. However, since we have a derive-like
solution for unions now (printing them like an opaque struct), there
really isn't any reason these can't all be derived.

Add `derive(Debug)` to `s_no_extra_traits`, still gated behind `feature
= "extra_traits"`, which allows getting rid of manual implementations.

(backport <https://github.com/rust-lang/libc/pull/4471>)
(cherry picked from commit 65c39bf1b0c7b904cf512280860120307d17703b)

show more ...


Revision tags: 0.2.172, ctest-v0.4.11, ctest-v0.4.10
# 516e529e 25-Mar-2025 Ola x Nilsson <[email protected]>

gnu: Move struct timex from gnu to gnu/b32 and gnu/b64

Will make it easier to adapt for _TIME_BITS=64

(backport <https://github.com/rust-lang/libc/pull/4433>)
(cherry picked from commit 87d9e201c3f

gnu: Move struct timex from gnu to gnu/b32 and gnu/b64

Will make it easier to adapt for _TIME_BITS=64

(backport <https://github.com/rust-lang/libc/pull/4433>)
(cherry picked from commit 87d9e201c3feb62e58f6ede10637ecc45db2f7b4)

show more ...


Revision tags: 0.2.171, 0.2.170, 0.2.169, 0.2.168, ctest-v0.4.9, 0.2.167, 0.2.166, 0.2.165, 0.2.164, 0.2.163, 0.2.162, 0.2.161, 0.2.160, 0.2.159, 0.2.158, 0.2.157, 0.2.156, 0.2.155, 0.2.154, ctest-v0.4.8, 0.2.153, 0.2.152, 0.2.151, 0.2.150, 0.2.149, 0.2.148, 0.2.147, ctest-v0.4.7, 0.2.146, 0.2.145, 0.2.144, 0.2.143, ctest-v0.4.6, 0.2.142, 0.2.141
# dfcfcf84 27-Mar-2023 Ola x Nilsson <[email protected]>

gnu: Update struct timespec for GNU _TIME_BITS=64

Use a GNU libc specific version of struct timespec in
unix/linux_like/linux/gnu and keep the version in unix for all other
unix libc's.

Big-endian

gnu: Update struct timespec for GNU _TIME_BITS=64

Use a GNU libc specific version of struct timespec in
unix/linux_like/linux/gnu and keep the version in unix for all other
unix libc's.

Big-endian platforms wants 32 bits of padding before tv_nsec,
little-endian after.

GNU libc always uses long for tv_nsec.

References:

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/time/bits/types/struct_timespec.h

(backport <https://github.com/rust-lang/libc/pull/4433>)
(cherry picked from commit bbaa0173daa439f55e6fabfd71982fc579bb3e8c)

show more ...


# 8f3da768 21-Nov-2024 Ola x Nilsson <[email protected]>

gnu: Use _TIME_BITS=64 versions of glibc symbols

Set the link names of relevant symbols to use be the same as when a C
program is built against GNU libc with -D_TIME_BITS=64 -- which also
requires -

gnu: Use _TIME_BITS=64 versions of glibc symbols

Set the link names of relevant symbols to use be the same as when a C
program is built against GNU libc with -D_TIME_BITS=64 -- which also
requires -D_FILE_OFFSET_BITS=64.

References:

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/io/fcntl.h
fcntl on line 190

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/io/sys/poll.h
ppoll on line 71

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/io/sys/stat.h
difftime on line 86
fstat on line 218
fstat64 on line 249
fstatat on line 270
fstatat64 on line 296
futimens on line 456
gmtime on line 140
gmtime_r on line 163
localtime on line 141
localtime_r on line 167
lstat on line 318
lstat64 on line 318
mktime on line 88
stat on line 214
stat64 on line 214
time on line 85
timegm on line 249
utimensat on line 439

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/io/utime.h
utime on line 56

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/misc/sys/ioctl.h
ioctl on line 45

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/misc/sys/select.h
pselect on line 134
select on line 108

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/posix/glob.h
glob on line 154
glob64 on line 174
globfree on line 160
globfree64 on line 180

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/posix/sched.h
sched_rr_get_interval on line 81

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/posix/sys/wait.h
wait4 on line 163

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/resource/sys/resource.h
getrusage on line 93

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/rt/aio.h
aio_suspend on line 197

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/rt/mqueue.h
mq_timedreceive on line 91
mq_timedsend on line 99

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/signal/signal.h
sigtimedwait on line 279

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/socket/sys/socket.h
getsockopt on line 260
recvmmsg on line 219
recvmsg on line 219
sendmmsg on line 199
sendmsg on line 178
setsockopt on line 281

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/nptl/pthread.h
pthread_cond_timedwait on line 1151
pthread_mutex_timedlock on line 805

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/pthread/semaphore.h
sem_timedwait on line 68

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/unix/sysv/linux/bits/time.h
clock_adjtime on line 82

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/unix/sysv/linux/sys/epoll.h
epoll_pwait2 on line 146

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/unix/sysv/linux/sys/prctl.h
prctl on line 45

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/unix/sysv/linux/sys/timerfd.h
timerfd_gettime on line 67
timerfd_settime on line 52

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysdeps/unix/sysv/linux/sys/timex.h
adjtimex on line 70
ntp_adjtime on line 76
ntp_gettime on line 72

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysvipc/sys/msg.h
msgctl on line 65

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysvipc/sys/sem.h
semctl on line 55

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/sysvipc/sys/shm.h
shmctl on line 53

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/time/sys/time.h
adjtime on line 102
futimes on line 200
gettimeofday on line 71
lutimes on line 196
settimeofday on line 98
utimes on line 176

https://github.com/bminor/glibc/blob/e78caeb4ff812ae19d24d65f4d4d48508154277b/time/time.h
clock_getres on line 299
clock_gettime on line 302
clock_nanosleep on line 328
clock_settime on line 305
ctime_r on line 206
nanosleep on line 328
timer_gettime on line 366
timer_settime on line 361

(backport <https://github.com/rust-lang/libc/pull/4433>)
(cherry picked from commit 4c58e4b560b29408f8f3aba012add7756ea70d0d)

show more ...


# b6971335 15-Apr-2025 Jakub Janowski <[email protected]>

Cleanup IOCTL definitions in linux_like tree

(backport <https://github.com/rust-lang/libc/pull/4418>)
(cherry picked from commit 49a6e233a085866dff1a4c410dc21d1cd96e861e)


# 3db74e3c 11-May-2025 The 8472 <[email protected]>

linux: add new flags for pwritev2/preadv2

(backport <https://github.com/rust-lang/libc/pull/4452>)
(cherry picked from commit 6e7549d34f839aa3b76476df0408a155fec81186)


# a598506f 15-Apr-2025 Yuri Astrakhan <[email protected]>

chore: apply some clippy lints

(backport <https://github.com/rust-lang/libc/pull/4415>)
[ drop changes around the FreeBSD version in build.rs since the logic
isn't the same - Trevor ]
(cherry pick

chore: apply some clippy lints

(backport <https://github.com/rust-lang/libc/pull/4415>)
[ drop changes around the FreeBSD version in build.rs since the logic
isn't the same - Trevor ]
(cherry picked from commit a283b9e66d4a8e9371b0aa69d8534010a1c7d9e7)

show more ...


# 2f3e8685 12-Apr-2025 rusty-snake <[email protected]>

Update pidfd constants and types (Linux 6.9-6.15)

(backport <https://github.com/rust-lang/libc/pull/4402>)
(cherry picked from commit 126f2c66d23a00f8dfd1d99459fb6a1f9011dfbb)


# 1ff2f218 09-Apr-2025 David Carlier <[email protected]>

adding linux glibc ptrace_sud_config and related PTRACE_*ET_SYSCALL_USER_DISPATCH_CONFIG.

[ref](https://github.com/torvalds/linux/blob/a24588245776dafc227243a01bfbeb8a59bafba9/include/uapi/linux/ptr

adding linux glibc ptrace_sud_config and related PTRACE_*ET_SYSCALL_USER_DISPATCH_CONFIG.

[ref](https://github.com/torvalds/linux/blob/a24588245776dafc227243a01bfbeb8a59bafba9/include/uapi/linux/ptrace.h#L138)
[ref](https://github.com/torvalds/linux/blob/a24588245776dafc227243a01bfbeb8a59bafba9/include/uapi/linux/ptrace.h#L115)

(backport <https://github.com/rust-lang/libc/pull/4386>)
(cherry picked from commit 795a6d6e6619742755e79db38bb33da7d534d9a7)

show more ...


# c553ad52 20-Mar-2023 Ola x Nilsson <[email protected]>

gnu: Update struct aiocb for gnu_file_offset_bits64

(backport <https://github.com/rust-lang/libc/pull/4345>)
(cherry picked from commit 7ba56f2adf2585e6ca6293c934209ccf20f8eb67)


# 394f97fa 21-Nov-2024 Ola x Nilsson <[email protected]>

gnu: Add proper structs for fpos_t and fpos64_t

(backport <https://github.com/rust-lang/libc/pull/4345>)
(cherry picked from commit 872642ada4a2992d9125bd7c47d31a2d50491b1d)


# c6a40ea4 21-Nov-2024 Ola x Nilsson <[email protected]>

gnu: Use _FILE_OFFSET_BITS=64 versions of glibc symbols

When _FILE_OFFSET_BITS=64, glibc redirects some function calls to 64
bit versions. These symbols are sometimes the public LFS variants,
somet

gnu: Use _FILE_OFFSET_BITS=64 versions of glibc symbols

When _FILE_OFFSET_BITS=64, glibc redirects some function calls to 64
bit versions. These symbols are sometimes the public LFS variants,
sometimes hidden variants.

(backport <https://github.com/rust-lang/libc/pull/4345>)
(cherry picked from commit 2b4fafbbea40c66c8fc5c7001afb3ed2dbe141c4)

show more ...


# 01499643 14-Feb-2025 David Carlier <[email protected]>

linux: deprecate obsolete packet filter interfaces.

sockaddr_ll/AF_PACKET are in place since Linux 2.2

(backport <https://github.com/rust-lang/libc/pull/4267>)
(cherry picked from commit eb78ad0090

linux: deprecate obsolete packet filter interfaces.

sockaddr_ll/AF_PACKET are in place since Linux 2.2

(backport <https://github.com/rust-lang/libc/pull/4267>)
(cherry picked from commit eb78ad0090fb2d2195bd4564368468334d399dea)

show more ...


# 0987973a 27-Nov-2024 arctic-alpaca <[email protected]>

move AF_XDP structs and constants to linux/mod.rs

(backport <https://github.com/rust-lang/libc/pull/4163>)
(cherry picked from commit 7eaea55a4571530a4ca1cc5431c95cdc9b05d38a)


# 4f1c07bc 05-Jan-2025 lvllvl <[email protected]>

Chore: add labels to each FIXME

(backport <https://github.com/rust-lang/libc/pull/4229>)
(cherry picked from commit 6b8535b3703e8ccc3d044095de38fa222c5a083f)


# 1e2da75b 08-Dec-2024 David Carlier <[email protected]>

adding POSIX memccpy and mempcpy GNU extension.

[memccpy](https://pubs.opengroup.org/onlinepubs/9699919799/functions/memccpy.html)

[mempcpy](https://man7.org/linux/man-pages/man3/mempcpy.3.html)

(

adding POSIX memccpy and mempcpy GNU extension.

[memccpy](https://pubs.opengroup.org/onlinepubs/9699919799/functions/memccpy.html)

[mempcpy](https://man7.org/linux/man-pages/man3/mempcpy.3.html)

(backport <https://github.com/rust-lang/libc/pull/4186>)
(cherry picked from commit ba5930dbc20dba0dbb3d39496313f6be4468cf01)

show more ...


# 8592ff94 08-Dec-2024 Jukka Taimisto <[email protected]>

Lift IFA_* constants from linux/gnu to linux

(backport <https://github.com/rust-lang/libc/pull/4185>)
(cherry picked from commit 70c1e823ef4faf5a77202bb01698da2a2b1c216a)


# 108310db 27-Nov-2024 Trevor Gross <[email protected]>

Make use of the crate's prelude to replace individual imports

Automatically apply changes with the following:

#!/bin/bash

set -eux

files=()

# Types either defined in this crate o

Make use of the crate's prelude to replace individual imports

Automatically apply changes with the following:

#!/bin/bash

set -eux

files=()

# Types either defined in this crate or in `core`
prelude_types=(
c_char
c_double
c_float
c_int
c_longlong
c_long
c_short
c_uchar
c_uint
c_ulonglong
c_ulong
c_ushort
c_void
intptr_t
size_t
ssize_t
Clone
Copy
Option
Send
Sync
)

# Reexports from core
prelude_modules=(
fmt
hash
iter
mem
)

# Everything in the prelude
prelude=( "${prelude_types[@]}" "${prelude_modules[@]}" )

# Generate a list of all files excluding `lib.rs` (since the prelude being
# defined there makes string matching weird).
while IFS= read -r -d '' file; do
files+=("$file")
done < <(find src -name '*.rs' -not -name '*lib.rs' -not -name '*macros.rs' -not -name 'fixed_width_ints.rs' -print0)

for file in "${files[@]}"; do
needs_prelude=0

# If the file already has some sort of glob import, skip it
if rg --pcre2 -q 'use (crate|super)::(?!prelude).*\*' "$file"; then
continue
fi

# Core types always require the prelude to handle rustc-dep-of-std
if rg --pcre2 -q '\b(?<!\.)(Option|Clone|Copy|Send|Sync|fmt|hash|iter|mem)\b' "$file"; then
needs_prelude=1
fi

# If we use any types that are specified in the prelude then we will import it
for ty in "${prelude[@]}"; do
# If the type is defined in the current module, we don't need it from the prelude
if rg -q "type $ty =" "$file"; then
continue
fi

if rg -qU '((crate|super)::'"$ty"'|use (crate|super)::(\{\n){0,2}.*'"$ty)" "$file"; then
needs_prelude=1
fi
done

# Check if the prelude is needed and does not already exist; if so, add it
if [ "$needs_prelude" = "1" ] && ! rg -q 'use crate::prelude::\*' "$file"; then
# Split the file into two parts: module-level attributes and rest
# Imports will be added after module-level attributes

attrs=$(awk '/^#!|^\/\/!/ {found=NR} {lines[NR]=$0} END {for (i=1; i<=found; i++) print lines[i]}' "$file")
rest=$(awk '/^#!|^\/\/!/ {found=NR} END {if (found) {for (i=found+1; i<=NR; i++) print lines[i]} else {for (i=1; i<=NR; i++) print lines[i]}} {lines[NR]=$0}' "$file")

printf "%s\n" "$attrs" > "$file"
printf "\n%s\n\n" "use crate::prelude::*;" >> "$file"
printf "%s" "$rest" >> "$file"
fi

for ty in "${prelude[@]}"; do
export TY="$ty" # env for perl to use

# Remove simple imports `use crate::ty;`
perl -pi -0777 -e 's/use ((crate|super)::)?($ENV{TY});//g' "$file"

# Remove the type if it is part of a group import
perl -pi -0777 -e 's/(use (crate|super)::\{?(.*|(\n.*){0,2}))\b$ENV{TY}\b,? ?/$1/g' "$file"

# Replace pathed `crate::ty`
perl -pi -0777 -e 's/(crate|super)::($ENV{TY})\b/$2/g' "$file"
done

# For some reason, rustfmt doesn't trim leading newlines. Do so manually here.
perl -pi -0777 -e 's/\A\n+//' "$file"

rustfmt "$file"
done

./ci/style.sh

(backport <https://github.com/rust-lang/libc/pull/4161>)
(cherry picked from commit f8a018a8e3efaf8cc4fbad84974255b0fa899fc2)

Applied by rerunning the script rather than resolving conflicts
manually.

show more ...


# 643182f7 26-Nov-2024 Eduardo Sánchez Muñoz <[email protected]>

Automatic migration to Rust edition 2021

Migration script:

```sh
set -ex

git restore Cargo.toml src

for file in $(find src -name "*.rs"); do
perl -pi -077 -e 's/(?<!\w)::(Option|Copy|Clone)\b/$

Automatic migration to Rust edition 2021

Migration script:

```sh
set -ex

git restore Cargo.toml src

for file in $(find src -name "*.rs"); do
perl -pi -077 -e 's/(?<!\w)::(Option|Copy|Clone)\b/$1/g' "$file"
done

implicit_c_long_ulong_char=(
src/fuchsia/mod.rs
src/solid/mod.rs
src/unix/aix/mod.rs
src/unix/bsd/apple/mod.rs
src/unix/bsd/freebsdlike/freebsd/mod.rs
src/unix/bsd/freebsdlike/mod.rs
src/unix/bsd/netbsdlike/netbsd/mod.rs
src/unix/bsd/netbsdlike/openbsd/mod.rs
src/unix/bsd/netbsdlike/mod.rs
src/unix/bsd/mod.rs
src/unix/haiku/mod.rs
src/unix/hurd/mod.rs
src/unix/linux_like/android/b32/mod.rs
src/unix/linux_like/android/b64/mod.rs
src/unix/linux_like/android/mod.rs
src/unix/linux_like/linux/gnu/b32/mod.rs
src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
src/unix/linux_like/linux/gnu/b64/mod.rs
src/unix/linux_like/linux/gnu/mod.rs
src/unix/linux_like/linux/musl/mod.rs
src/unix/linux_like/linux/uclibc/mips/mod.rs
src/unix/linux_like/linux/uclibc/mod.rs
src/unix/linux_like/linux/mod.rs
src/unix/linux_like/mod.rs
src/unix/newlib/mod.rs
src/unix/nto/mod.rs
src/unix/mod.rs
src/vxworks/mod.rs
)

for file in "${implicit_c_long_ulong_char[@]}"; do
perl -pi -077 -e 's/(?<!\w)::(c_long|c_ulong|c_char)\b/$1/g' "$file"
done

implicit_off_t=(
src/unix/linux_like/linux/gnu/mod.rs
src/unix/linux_like/linux/mod.rs
src/unix/linux_like/mod.rs
src/unix/mod.rs
)

for file in "${implicit_off_t[@]}"; do
perl -pi -077 -e 's/(?<!\w)::(off_t)\b/$1/g' "$file"
done

implicit_off64_t=(
src/unix/linux_like/android/mod.rs
src/unix/linux_like/mod.rs
)

for file in "${implicit_off64_t[@]}"; do
perl -pi -077 -e 's/(?<!\w)::(off64_t)\b/$1/g' "$file"
done

implicit_Ioctl=(
src/unix/linux_like/linux/mod.rs
)

for file in "${implicit_Ioctl[@]}"; do
perl -pi -077 -e 's/(?<!\w)::(Ioctl)\b/$1/g' "$file"
done

perl -pi -077 -e 's/(?<!\w)::(__u8|__u16|__u32|__s16|__s32)\b/$1/g' src/unix/linux_like/linux/mod.rs

perl -pi -077 -e 's/(?<!\w)::(SIG[A-Z]+)\b/$1/g' src/unix/solarish/mod.rs

perl -pi -077 -e 's/(?<!\w)::c_ulong\b/crate::c_ulong/g' src/unix/newlib/generic.rs
perl -pi -077 -e 's/(?<!\w)::c_ulong\b/crate::c_ulong/g' src/unix/linux_like/linux/arch/generic/mod.rs
perl -pi -077 -e 's/(?<!\w)::c_ulonglong\b/crate::c_ulonglong/g' src/unix/linux_like/linux/gnu/b64/mod.rs
perl -pi -077 -e 's/(?<!\w)::c_ulonglong\b/crate::c_ulonglong/g' src/unix/linux_like/linux/mod.rs
perl -pi -077 -e 's/(?<!\w)::c_ulonglong\b/crate::c_ulonglong/g' src/unix/linux_like/mod.rs
perl -pi -077 -e 's/(?<!\w)::c_short\b/crate::c_short/g' src/unix/linux_like/linux/gnu/b32/mod.rs
perl -pi -077 -e 's/(?<!\w)::c_short\b/crate::c_short/g' src/unix/newlib/mod.rs
perl -pi -077 -e 's/(?<!\w)::c_float\b/c_float/g' src/unix/linux_like/linux/gnu/b64/s390x.rs
perl -pi -077 -e 's/(?<!\w)::c_float\b/c_float/g' src/unix/linux_like/linux/musl/b64/s390x.rs

function handle_type() {
type="$1"
uses_type="$(rg -l "[^\w]::$type\b" src || echo)"
has_type_def="$(rg -l "(type|struct) $type " src || echo)"
has_type_import="$(rg -l "use ([0-9a-zA-Z_]+::)*$type;" src || echo)"

add_import=($(comm -3 <(echo "$uses_type" | sort) <(printf "%s\n%s" "$has_type_def" "$has_type_import" | sort) | cut -f1))
for file in "${add_import[@]}"; do
# Split the file into two parts: module-level attributes and rest
# Imports will be added after module-level attributes

awk '/^#!|^\/\/!/ {found=NR} {lines[NR]=$0} END {for (i=1; i<=found; i++) print lines[i]}' \
"$file" > "$file.attrs"
awk '/^#!|^\/\/!/ {found=NR} END {if (found) {for (i=found+1; i<=NR; i++) print lines[i]} else {for (i=1; i<=NR; i++) print lines[i]}} {lines[NR]=$0}' \
"$file" > "$file.rest"

cat "$file.attrs" > "$file"
echo >> "$file"
echo 'use crate::'"$type"';' >> "$file"
echo >> "$file"
cat "$file.rest" >> "$file"

rm "$file.attrs" "$file.rest"
done

for file in $uses_type; do
perl -pi -077 -e 's/(?<!\w)::('"$type"')\b/$1/g' "$file"
done
}

handle_type c_void
handle_type c_int
handle_type c_uint
handle_type c_char
handle_type c_schar
handle_type c_uchar
handle_type c_short
handle_type c_ushort
handle_type c_long
handle_type c_ulong
handle_type c_longlong
handle_type c_ulonglong
handle_type c_float
handle_type c_double
handle_type size_t
handle_type ssize_t
handle_type intptr_t
handle_type ptrdiff_t
handle_type off_t
handle_type off64_t
handle_type Ioctl
handle_type cmsghdr # To avoid "line formatted, but exceeded maximum width"

targets=(
aarch64-apple-darwin
aarch64-apple-ios
aarch64-apple-ios-macabi
aarch64-apple-ios-sim
aarch64-apple-tvos
aarch64-apple-tvos-sim
aarch64-apple-visionos
aarch64-apple-visionos-sim
aarch64-apple-watchos
aarch64-apple-watchos-sim
aarch64-kmc-solid_asp3
aarch64-linux-android
aarch64-nintendo-switch-freestanding
aarch64-pc-windows-gnullvm
aarch64-pc-windows-msvc
aarch64-unknown-freebsd
aarch64-unknown-fuchsia
aarch64-unknown-hermit
aarch64-unknown-illumos
aarch64-unknown-linux-gnu
aarch64-unknown-linux-gnu_ilp32
aarch64-unknown-linux-musl
aarch64-unknown-linux-ohos
aarch64-unknown-netbsd
aarch64-unknown-none
aarch64-unknown-none-softfloat
aarch64-unknown-nto-qnx700
aarch64-unknown-nto-qnx710
aarch64-unknown-openbsd
aarch64-unknown-redox
#aarch64-unknown-teeos
aarch64-unknown-trusty
aarch64-unknown-uefi
aarch64-uwp-windows-msvc
aarch64-wrs-vxworks
aarch64_be-unknown-linux-gnu
aarch64_be-unknown-linux-gnu_ilp32
aarch64_be-unknown-netbsd
arm-linux-androideabi
arm-unknown-linux-gnueabi
arm-unknown-linux-gnueabihf
arm-unknown-linux-musleabi
arm-unknown-linux-musleabihf
arm64_32-apple-watchos
arm64e-apple-darwin
arm64e-apple-ios
arm64e-apple-tvos
arm64ec-pc-windows-msvc
armeb-unknown-linux-gnueabi
armebv7r-none-eabi
armebv7r-none-eabihf
armv4t-none-eabi
armv4t-unknown-linux-gnueabi
armv5te-none-eabi
armv5te-unknown-linux-gnueabi
armv5te-unknown-linux-musleabi
armv5te-unknown-linux-uclibceabi
armv6-unknown-freebsd
armv6-unknown-netbsd-eabihf
armv6k-nintendo-3ds
armv7-linux-androideabi
armv7-rtems-eabihf
armv7-sony-vita-newlibeabihf
armv7-unknown-freebsd
armv7-unknown-linux-gnueabi
armv7-unknown-linux-gnueabihf
armv7-unknown-linux-musleabi
armv7-unknown-linux-musleabihf
armv7-unknown-linux-ohos
armv7-unknown-linux-uclibceabi
armv7-unknown-linux-uclibceabihf
armv7-unknown-netbsd-eabihf
armv7-unknown-trusty
armv7-wrs-vxworks-eabihf
armv7a-kmc-solid_asp3-eabi
armv7a-kmc-solid_asp3-eabihf
armv7a-none-eabi
armv7a-none-eabihf
armv7k-apple-watchos
armv7r-none-eabi
armv7r-none-eabihf
armv7s-apple-ios
armv8r-none-eabihf
#avr-unknown-gnu-atmega328
bpfeb-unknown-none
bpfel-unknown-none
csky-unknown-linux-gnuabiv2
csky-unknown-linux-gnuabiv2hf
hexagon-unknown-linux-musl
#hexagon-unknown-none-elf
i386-apple-ios
#i586-pc-nto-qnx700
i586-pc-windows-msvc
i586-unknown-linux-gnu
i586-unknown-linux-musl
i586-unknown-netbsd
i686-apple-darwin
i686-linux-android
i686-pc-windows-gnu
i686-pc-windows-gnullvm
i686-pc-windows-msvc
i686-unknown-freebsd
i686-unknown-haiku
i686-unknown-hurd-gnu
i686-unknown-linux-gnu
i686-unknown-linux-musl
i686-unknown-netbsd
i686-unknown-openbsd
i686-unknown-redox
i686-unknown-uefi
i686-uwp-windows-gnu
i686-uwp-windows-msvc
i686-win7-windows-msvc
i686-wrs-vxworks
loongarch64-unknown-linux-gnu
loongarch64-unknown-linux-musl
loongarch64-unknown-linux-ohos
loongarch64-unknown-none
loongarch64-unknown-none-softfloat
#m68k-unknown-linux-gnu
mips-unknown-linux-gnu
mips-unknown-linux-musl
mips-unknown-linux-uclibc
mips64-openwrt-linux-musl
mips64-unknown-linux-gnuabi64
mips64-unknown-linux-muslabi64
mips64el-unknown-linux-gnuabi64
mips64el-unknown-linux-muslabi64
mipsel-sony-psp
mipsel-sony-psx
mipsel-unknown-linux-gnu
mipsel-unknown-linux-musl
mipsel-unknown-linux-uclibc
mipsel-unknown-netbsd
mipsel-unknown-none
mipsisa32r6-unknown-linux-gnu
mipsisa32r6el-unknown-linux-gnu
mipsisa64r6-unknown-linux-gnuabi64
mipsisa64r6el-unknown-linux-gnuabi64
msp430-none-elf
nvptx64-nvidia-cuda
powerpc-unknown-freebsd
powerpc-unknown-linux-gnu
powerpc-unknown-linux-gnuspe
powerpc-unknown-linux-musl
powerpc-unknown-linux-muslspe
powerpc-unknown-netbsd
powerpc-unknown-openbsd
powerpc-wrs-vxworks
powerpc-wrs-vxworks-spe
powerpc64-ibm-aix
powerpc64-unknown-freebsd
powerpc64-unknown-linux-gnu
powerpc64-unknown-linux-musl
powerpc64-unknown-openbsd
powerpc64-wrs-vxworks
powerpc64le-unknown-freebsd
powerpc64le-unknown-linux-gnu
powerpc64le-unknown-linux-musl
riscv32-wrs-vxworks
riscv32e-unknown-none-elf
riscv32em-unknown-none-elf
riscv32emc-unknown-none-elf
riscv32gc-unknown-linux-gnu
riscv32gc-unknown-linux-musl
riscv32i-unknown-none-elf
riscv32im-risc0-zkvm-elf
riscv32im-unknown-none-elf
riscv32ima-unknown-none-elf
riscv32imac-esp-espidf
riscv32imac-unknown-none-elf
riscv32imac-unknown-nuttx-elf
riscv32imac-unknown-xous-elf
riscv32imafc-esp-espidf
riscv32imafc-unknown-none-elf
riscv32imafc-unknown-nuttx-elf
riscv32imc-esp-espidf
riscv32imc-unknown-none-elf
riscv32imc-unknown-nuttx-elf
riscv64-linux-android
riscv64-wrs-vxworks
riscv64gc-unknown-freebsd
riscv64gc-unknown-fuchsia
riscv64gc-unknown-hermit
riscv64gc-unknown-linux-gnu
riscv64gc-unknown-linux-musl
#riscv64gc-unknown-netbsd
riscv64gc-unknown-none-elf
riscv64gc-unknown-nuttx-elf
riscv64gc-unknown-openbsd
riscv64imac-unknown-none-elf
riscv64imac-unknown-nuttx-elf
s390x-unknown-linux-gnu
s390x-unknown-linux-musl
sparc-unknown-linux-gnu
sparc-unknown-none-elf
sparc64-unknown-linux-gnu
sparc64-unknown-netbsd
sparc64-unknown-openbsd
sparcv9-sun-solaris
thumbv4t-none-eabi
thumbv5te-none-eabi
thumbv6m-none-eabi
thumbv6m-nuttx-eabi
thumbv7a-pc-windows-msvc
thumbv7a-uwp-windows-msvc
thumbv7em-none-eabi
thumbv7em-none-eabihf
thumbv7em-nuttx-eabi
thumbv7em-nuttx-eabihf
thumbv7m-none-eabi
thumbv7m-nuttx-eabi
thumbv7neon-linux-androideabi
thumbv7neon-unknown-linux-gnueabihf
thumbv7neon-unknown-linux-musleabihf
thumbv8m.base-none-eabi
thumbv8m.base-nuttx-eabi
thumbv8m.main-none-eabi
thumbv8m.main-none-eabihf
thumbv8m.main-nuttx-eabi
thumbv8m.main-nuttx-eabihf
wasm32-unknown-emscripten
wasm32-unknown-unknown
wasm32-wasip1
wasm32-wasip1-threads
wasm32-wasip2
wasm32v1-none
wasm64-unknown-unknown
x86_64-apple-darwin
x86_64-apple-ios
x86_64-apple-ios-macabi
x86_64-apple-tvos
x86_64-apple-watchos-sim
x86_64-fortanix-unknown-sgx
x86_64-linux-android
x86_64-pc-nto-qnx710
x86_64-pc-solaris
x86_64-pc-windows-gnu
x86_64-pc-windows-gnullvm
x86_64-pc-windows-msvc
x86_64-unikraft-linux-musl
x86_64-unknown-dragonfly
x86_64-unknown-freebsd
x86_64-unknown-fuchsia
x86_64-unknown-haiku
x86_64-unknown-hermit
x86_64-unknown-hurd-gnu
x86_64-unknown-illumos
x86_64-unknown-l4re-uclibc
x86_64-unknown-linux-gnu
x86_64-unknown-linux-gnux32
x86_64-unknown-linux-musl
#x86_64-unknown-linux-none
x86_64-unknown-linux-ohos
x86_64-unknown-netbsd
x86_64-unknown-none
x86_64-unknown-openbsd
x86_64-unknown-redox
x86_64-unknown-trusty
x86_64-unknown-uefi
x86_64-uwp-windows-gnu
x86_64-uwp-windows-msvc
x86_64-win7-windows-msvc
x86_64-wrs-vxworks
x86_64h-apple-darwin
#xtensa-esp32-espidf
#xtensa-esp32-none-elf
#xtensa-esp32s2-espidf
#xtensa-esp32s2-none-elf
#xtensa-esp32s3-espidf
#xtensa-esp32s3-none-elf
)

for target in "${targets[@]}"; do
echo "Migrating 2015 -> 2018 target $target"
cargo fix --target "$target" -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib
done

freebsd_versions=(freebsd13 freebsd14 freebsd15)
for ver in "${freebsd_versions[@]}"; do
echo "Migrating 2015 -> 2018 $ver"
RUSTFLAGS="--cfg $ver" cargo fix --target i686-unknown-freebsd -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib
RUSTFLAGS="--cfg $ver" cargo fix --target x86_64-unknown-freebsd -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib
done

perl -pi -077 -e 's/edition = "2015"/edition = "2018"/' Cargo.toml

for target in "${targets[@]}"; do
echo "Migrating 2018 -> 2021 target $target"
cargo fix --target "$target" -Zbuild-std=core --features extra_traits --allow-dirty --edition --broken-code --lib
done

perl -pi -077 -e 's/edition = "2018"/edition = "2021"/' Cargo.toml

for target in "${targets[@]}"; do
echo "Checking target $target"
cargo check --target "$target" -Zbuild-std=core --features extra_traits --lib || {
echo "Failed for target $target"
exit 1
}
done

for ver in "${freebsd_versions[@]}"; do
echo "Checking $ver"
RUSTFLAGS="--cfg $ver" cargo check --target i686-unknown-freebsd -Zbuild-std=core --features extra_traits --lib || {
echo "Failed for i686 $freebsd_versions"
exit 1
}
RUSTFLAGS="--cfg $ver" cargo check --target x86_64-unknown-freebsd -Zbuild-std=core --features extra_traits || --lib {
echo "Failed for x86_64 $freebsd_versions"
exit 1
}
done

ci/style.sh
```

(backport <https://github.com/rust-lang/libc/pull/4132>)
(cherry picked from commit 20f6aa4c8135ba5e2c079ff21b20f0a1be87e1c4)

[ applied by rerunning the script rather than resolving conflicts. Also
updated the script to fail on error and to pass `--lib` so `cargo fix`
doesn't try to upgrade anything that requires `std`. -Trevor ]

show more ...


# c1cdf7b0 16-Oct-2024 J. Neuschäfer <[email protected]>

linux_like: Unify statx definitions

The statx system call and corresponding constants are defined by the
Linux kernel and don't depend on the libc or architecture. The only
difference is whether a l

linux_like: Unify statx definitions

The statx system call and corresponding constants are defined by the
Linux kernel and don't depend on the libc or architecture. The only
difference is whether a libc exports the statx syscall wrapper or not.

We can thus unify the statx definitions for all Linux "like" platforms:
GNU (glibc), Android (bionic), and (in a later commit) musl.

Plain u64 (or uint64_t in C) can't be used for the statx fields because
bionic defines them as __u64, and provides incompatible definitions of
uint64_t and __u64.

(backport <https://github.com/rust-lang/libc/pull/3978>)
(cherry picked from commit e46bbe467087e5e6fdfdf480532594296c993d4f)

show more ...


# 19464c3a 20-Nov-2024 arctic-alpaca <[email protected]>

move changes to `src/unix/linux_like/linux/mod.rs`

(backport <https://github.com/rust-lang/libc/pull/3956>)
(cherry picked from commit 88aa42a2c6a7addf3ab66dd77cbd014e0af6181c)


# e28e2ec9 20-Nov-2024 arctic-alpaca <[email protected]>

update/add missing AF_XDP structs & constants

(backport <https://github.com/rust-lang/libc/pull/3956>)
(cherry picked from commit 6bc41c9ce4cb22672db71a7f54f8f733c717f31b)


# 50f26e08 19-Nov-2024 Trevor Gross <[email protected]>

Apply formatting to macro bodies

Run `ci/style.sh` with the changes introduced in [1].

[1]: https://github.com/rust-lang/libc/pull/4107

(backport <https://github.com/rust-lang/libc/pull/4107>)

Th

Apply formatting to macro bodies

Run `ci/style.sh` with the changes introduced in [1].

[1]: https://github.com/rust-lang/libc/pull/4107

(backport <https://github.com/rust-lang/libc/pull/4107>)

This is the `libc-0.2` version of 49cb0ff99f ("Apply formatting to macro
bodies"), though not a direct cherry pick.

show more ...


# ab0819b0 25-Feb-2024 Martin Liska <[email protected]>

Add glibc's function: malloc_stats

The function is used to report stats about glibc's memory allocator to
stderr:

```
Arena 0:
system bytes = 1350406144
in use bytes = 3725633952
Arena 1:
s

Add glibc's function: malloc_stats

The function is used to report stats about glibc's memory allocator to
stderr:

```
Arena 0:
system bytes = 1350406144
in use bytes = 3725633952
Arena 1:
system bytes = 1895907328
in use bytes = 1653748608
Total (incl. mmap):
system bytes = 277286912
in use bytes = 2410356000
max mmap regions = 56
max mmap bytes = 2876198912
```

(backport <https://github.com/rust-lang/libc/pull/3596>)
(cherry picked from commit 78e6d62b3fd328fc77d6bcb852445f7bd175efe9)

show more ...


1234567