rust/library
Jacob Pratt da1c27df16
Rollup merge of #146521 - folkertdev:document-va-arg-safe, r=workingjubilee
document `core::ffi::VaArgSafe`

tracking issue: https://github.com/rust-lang/rust/issues/44930

A modification of https://github.com/rust-lang/rust/pull/146454, keeping just the documentation changes, but not unsealing the trait.

Although conceptually we'd want to unseal the trait, there are many edge cases to supporting arbitrary types. We'd need to exhaustively test that all targets/calling conventions support all types that rust might generate (or generate proper error messages for unsupported cases). At present, many of the `va_arg` implementations assume that the argument is a scalar, and has an alignment of at most 8. That is totally  sufficient for an MVP (accepting all of the "standard" C types), but clearly does not cover all rust types.

This PR also adds some various other tests for edge cases of c-variadic:

- the `#[inline]` attribute in its various forms. At present, LLVM is unable to inline c-variadic functions, but the attribute should still be accepted. `#[rustc_force_inline]` already rejects c-variadic functions.
- naked functions should accept and work with a C variable argument list. In the future we'd like to allow more ABIs with naked functions (basically, any ABI for which we accept defining foreign c-variadic functions), but for now only  `"C"` and `"C-unwind` are supported
- guaranteed tail calls: c-variadic functions cannot be tail-called. That was already rejected, but there was not test for it.

r? `@workingjubilee`
2025-09-13 18:55:20 -04:00
..
alloc Rollup merge of #145471 - rs-sac:extr, r=the8472 2025-09-13 03:26:02 -04:00
alloctests Rollup merge of #145471 - rs-sac:extr, r=the8472 2025-09-13 03:26:02 -04:00
backtrace@b65ab935fb Update the backtrace submodule 2025-06-16 07:00:13 +00:00
compiler-builtins Rollup merge of #144443 - WaffleLapkin:integer-target-pointer-width, r=Noratrieb 2025-08-31 13:40:34 +02:00
core Rollup merge of #146521 - folkertdev:document-va-arg-safe, r=workingjubilee 2025-09-13 18:55:20 -04:00
coretests Rollup merge of #146481 - ferrocene:pvdrz/improve-hash-coverage, r=jhpratt 2025-09-13 02:40:46 +02:00
panic_abort Use core via rustc-std-workspace-core in library/panic* 2025-07-31 22:47:24 +00:00
panic_unwind Migrate panic_unwind to use cfg_select! 2025-08-20 16:45:24 -07:00
portable-simd docs(std): add missing closing code block fences in doc comments 2025-09-02 22:11:29 +02:00
proc_macro Rollup merge of #143631 - hkBst:update-escaper-2, r=compiler-errors 2025-07-17 10:41:45 +02:00
profiler_builtins Fix profiler_builtins build script to handle full path to profiler lib 2025-04-11 16:57:38 +02:00
rtstartup Update cfg(bootstrap) 2025-07-01 10:55:49 -07:00
rustc-std-workspace-alloc Disable unit tests for stdlib packages that don't contain any 2025-07-24 09:15:28 +00:00
rustc-std-workspace-core Use core via rustc-std-workspace-core in library/panic* 2025-07-31 22:47:24 +00:00
rustc-std-workspace-std Disable unit tests for stdlib packages that don't contain any 2025-07-24 09:15:28 +00:00
std Rollup merge of #146517 - RalfJung:wait-timeout, r=joboet 2025-09-13 18:55:19 -04:00
std_detect fix typo in comment 2025-09-12 08:18:26 +08:00
stdarch Stabilize sse4a and tbm target features 2025-08-14 02:07:40 +05:30
sysroot Rollup merge of #144399 - bjorn3:stdlib_tests_separate_packages, r=Mark-Simulacrum 2025-07-28 08:36:53 +02:00
test Update getopts to remove unicode-width dependency 2025-08-29 15:08:51 +00:00
unwind Indent some code inside cfg_select! 2025-08-16 16:01:08 -07:00
windows_targets Rollup merge of #144399 - bjorn3:stdlib_tests_separate_packages, r=Mark-Simulacrum 2025-07-28 08:36:53 +02:00
Cargo.lock Rollup merge of #146001 - bjorn3:update_getopts, r=davidtwco 2025-09-09 17:32:21 +02:00
Cargo.toml Remove the std workspace patch for compiler-builtins 2025-08-19 18:56:35 +00:00