Skip to content

AIX std does not build #143443

Open
Open
@Noratrieb

Description

@Noratrieb

Since 2025-06-20, std does not build on AIX: https://does-it-build.noratrieb.dev/target?target=powerpc64-ibm-aix

There are a variety of errors around libc: https://does-it-build.noratrieb.dev/build?nightly=2025-07-04&target=powerpc64-ibm-aix&mode=miri-std

Details

error[E0609]: no field `st_atime` on type `&libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/aix/fs.rs:325:36
    |
325 |         self.as_inner().as_inner().st_atime.tv_sec as i64
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
325 -         self.as_inner().as_inner().st_atime.tv_sec as i64
325 +         self.as_inner().as_inner().st_atim.tv_sec as i64
    |

error[E0609]: no field `st_atime` on type `&libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/aix/fs.rs:328:36
    |
328 |         self.as_inner().as_inner().st_atime.tv_nsec as i64
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
328 -         self.as_inner().as_inner().st_atime.tv_nsec as i64
328 +         self.as_inner().as_inner().st_atim.tv_nsec as i64
    |

error[E0609]: no field `st_mtime` on type `&libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/aix/fs.rs:331:36
    |
331 |         self.as_inner().as_inner().st_mtime.tv_sec as i64
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
331 -         self.as_inner().as_inner().st_mtime.tv_sec as i64
331 +         self.as_inner().as_inner().st_mtim.tv_sec as i64
    |

error[E0609]: no field `st_mtime` on type `&libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/aix/fs.rs:334:36
    |
334 |         self.as_inner().as_inner().st_mtime.tv_nsec as i64
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
334 -         self.as_inner().as_inner().st_mtime.tv_nsec as i64
334 +         self.as_inner().as_inner().st_mtim.tv_nsec as i64
    |

error[E0609]: no field `st_ctime` on type `&libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/aix/fs.rs:337:36
    |
337 |         self.as_inner().as_inner().st_ctime.tv_sec as i64
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
337 -         self.as_inner().as_inner().st_ctime.tv_sec as i64
337 +         self.as_inner().as_inner().st_ctim.tv_sec as i64
    |

error[E0609]: no field `st_ctime` on type `&libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/aix/fs.rs:340:36
    |
340 |         self.as_inner().as_inner().st_ctime.tv_nsec as i64
    |                                    ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
340 -         self.as_inner().as_inner().st_ctime.tv_nsec as i64
340 +         self.as_inner().as_inner().st_ctim.tv_nsec as i64
    |

error[E0308]: mismatched types
    --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fd/unix.rs:547:47
     |
547  |             cvt(libc::ioctl(self.as_raw_fd(), libc::FIOCLEX))?;
     |                 -----------                   ^^^^^^^^^^^^^ expected `i32`, found `i64`
     |                 |
     |                 arguments to this function are incorrect
     |
note: function defined here
    --> /var/lib/does-it-build/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.174/src/unix/aix/mod.rs:2994:12
     |
2994 |     pub fn ioctl(fildes: c_int, request: c_int, ...) -> c_int;
     |            ^^^^^
help: you can convert an `i64` to an `i32` and panic if the converted value doesn't fit
     |
547  |             cvt(libc::ioctl(self.as_raw_fd(), libc::FIOCLEX.try_into().unwrap()))?;
     |                                                            ++++++++++++++++++++

error[E0609]: no field `st_mtime` on type `libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs:464:35
    |
464 |         SystemTime::new(self.stat.st_mtime.tv_sec as i64, self.stat.st_mtime.tv_nsec as i64)
    |                                   ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
464 -         SystemTime::new(self.stat.st_mtime.tv_sec as i64, self.stat.st_mtime.tv_nsec as i64)
464 +         SystemTime::new(self.stat.st_mtim.tv_sec as i64, self.stat.st_mtime.tv_nsec as i64)
    |

error[E0609]: no field `st_mtime` on type `libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs:464:69
    |
464 |         SystemTime::new(self.stat.st_mtime.tv_sec as i64, self.stat.st_mtime.tv_nsec as i64)
    |                                                                     ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
464 -         SystemTime::new(self.stat.st_mtime.tv_sec as i64, self.stat.st_mtime.tv_nsec as i64)
464 +         SystemTime::new(self.stat.st_mtime.tv_sec as i64, self.stat.st_mtim.tv_nsec as i64)
    |

error[E0609]: no field `st_atime` on type `libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs:468:35
    |
468 |         SystemTime::new(self.stat.st_atime.tv_sec as i64, self.stat.st_atime.tv_nsec as i64)
    |                                   ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
468 -         SystemTime::new(self.stat.st_atime.tv_sec as i64, self.stat.st_atime.tv_nsec as i64)
468 +         SystemTime::new(self.stat.st_atim.tv_sec as i64, self.stat.st_atime.tv_nsec as i64)
    |

error[E0609]: no field `st_atime` on type `libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs:468:69
    |
468 |         SystemTime::new(self.stat.st_atime.tv_sec as i64, self.stat.st_atime.tv_nsec as i64)
    |                                                                     ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
468 -         SystemTime::new(self.stat.st_atime.tv_sec as i64, self.stat.st_atime.tv_nsec as i64)
468 +         SystemTime::new(self.stat.st_atime.tv_sec as i64, self.stat.st_atim.tv_nsec as i64)
    |

error[E0609]: no field `st_ctime` on type `libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs:472:35
    |
472 |         SystemTime::new(self.stat.st_ctime.tv_sec as i64, self.stat.st_ctime.tv_nsec as i64)
    |                                   ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
472 -         SystemTime::new(self.stat.st_ctime.tv_sec as i64, self.stat.st_ctime.tv_nsec as i64)
472 +         SystemTime::new(self.stat.st_ctim.tv_sec as i64, self.stat.st_ctime.tv_nsec as i64)
    |

error[E0609]: no field `st_ctime` on type `libc::stat`
   --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs:472:69
    |
472 |         SystemTime::new(self.stat.st_ctime.tv_sec as i64, self.stat.st_ctime.tv_nsec as i64)
    |                                                                     ^^^^^^^^ unknown field
    |
help: a field with a similar name exists
    |
472 -         SystemTime::new(self.stat.st_ctime.tv_sec as i64, self.stat.st_ctime.tv_nsec as i64)
472 +         SystemTime::new(self.stat.st_ctime.tv_sec as i64, self.stat.st_ctim.tv_nsec as i64)
    |

error[E0308]: mismatched types
    --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/net/connection/socket/unix.rs:582:52
     |
582  |         cvt(unsafe { libc::ioctl(self.as_raw_fd(), libc::FIONBIO, &mut nonblocking) }).map(drop)
     |                      -----------                   ^^^^^^^^^^^^^ expected `i32`, found `i64`
     |                      |
     |                      arguments to this function are incorrect
     |
note: function defined here
    --> /var/lib/does-it-build/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.174/src/unix/aix/mod.rs:2994:12
     |
2994 |     pub fn ioctl(fildes: c_int, request: c_int, ...) -> c_int;
     |            ^^^^^
help: you can convert an `i64` to an `i32` and panic if the converted value doesn't fit
     |
582  |         cvt(unsafe { libc::ioctl(self.as_raw_fd(), libc::FIONBIO.try_into().unwrap(), &mut nonblocking) }).map(drop)
     |                                                                 ++++++++++++++++++++

error[E0308]: mismatched types
    --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/process/unix/unix.rs:298:67
     |
298  |                 cvt(libc::setgroups(_g.len().try_into().unwrap(), _g.as_ptr()))?;
     |                     ---------------                               ^^^^^^^^^^^ types differ in mutability
     |                     |
     |                     arguments to this function are incorrect
     |
     = note: expected raw pointer `*mut u32`
                found raw pointer `*const u32`
note: function defined here
    --> /var/lib/does-it-build/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.174/src/unix/aix/mod.rs:3255:12
     |
3255 |     pub fn setgroups(ngroups: c_int, ptr: *mut crate::gid_t) -> c_int;
     |            ^^^^^^^^^

error[E0308]: mismatched types
    --> /var/lib/does-it-build/.rustup/toolchains/nightly-2025-07-04-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/process/unix/unix.rs:313:54
     |
313  |                     let res = cvt(libc::setgroups(0, crate::ptr::null()));
     |                                   ---------------    ^^^^^^^^^^^^^^^^^^ types differ in mutability
     |                                   |
     |                                   arguments to this function are incorrect
     |
     = note: expected raw pointer `*mut u32`
                found raw pointer `*const _`
note: function defined here
    --> /var/lib/does-it-build/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.174/src/unix/aix/mod.rs:3255:12
     |
3255 |     pub fn setgroups(ngroups: c_int, ptr: *mut crate::gid_t) -> c_int;
     |            ^^^^^^^^^
help: consider using `core::ptr::null_mut` instead
     |
313  -                     let res = cvt(libc::setgroups(0, crate::ptr::null()));
313  +                     let res = cvt(libc::setgroups(0, core::ptr::null_mut()));
     |

Some errors have detailed explanations: E0308, E0609.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `std` (lib) due to 16 previous errors
fatal error: failed to build sysroot: sysroot build failed

@daltenty @gilamn5tr

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.O-aixOS: Big Blue's Advanced Interactive eXecutive..T-libsRelevant to the library team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions