rust/compiler/rustc_hir_analysis/src
Matthias Krüger 7c3b2e5254
Rollup merge of #140770 - folkertdev:custom-abi, r=tgross35
add `extern "custom"` functions

tracking issue: rust-lang/rust#140829
previous discussion: https://github.com/rust-lang/rust/issues/140566

In short, an `extern "custom"` function is a function with a custom ABI, that rust does not know about. Therefore, such functions can only be defined with `#[unsafe(naked)]` and `naked_asm!`, or via an `extern "C" { /* ... */ }` block. These functions cannot be called using normal rust syntax: calling them can only be done from inline assembly.

The motivation is low-level scenarios where a custom calling convention is used. Currently, we often pick `extern "C"`, but that is a lie because the function does not actually respect the C calling convention.

At the moment `"custom"` seems to be the name with the most support. That name is not final, but we need to pick something to actually implement this.

r? `@traviscross`
cc `@tgross35`

try-job: x86_64-apple-2
2025-06-13 05:19:14 +02:00
..
check add extern "custom" functions 2025-06-12 20:27:10 +02:00
coherence Replace some Option<Span> with Span and use DUMMY_SP instead of None 2025-06-05 14:14:59 +00:00
collect Reorder fields in hir::ItemKind variants. 2025-05-30 02:23:20 +10:00
errors Don't compute name of associated item if it's an RPITIT 2025-04-20 16:08:39 +00:00
hir_ty_lowering Remove lower_arg_ty as all callers were passing None 2025-06-12 15:04:09 +00:00
impl_wf_check convert some GenericArg to Term 2025-04-26 02:05:31 +00:00
outlives Fix some var names 2025-05-27 11:14:47 +00:00
variance Fix some var names 2025-05-27 11:14:47 +00:00
autoderef.rs FIXME(-Znext-solver) triage 2025-06-03 14:23:56 +02:00
check_unused.rs Move methods from Map to TyCtxt, part 4. 2025-03-12 08:55:37 +11:00
collect.rs Remove lower_arg_ty as all callers were passing None 2025-06-12 15:04:09 +00:00
constrained_generic_params.rs Remove weak alias terminology 2025-04-24 11:59:20 +01:00
delegation.rs Stop relying on rustc_type_ir in non-type-system crates 2025-03-15 06:42:48 +00:00
errors.rs add extern "custom" functions 2025-06-12 20:27:10 +02:00
hir_wf_check.rs Reorder fields in hir::ItemKind variants. 2025-05-30 02:23:20 +10:00
impl_wf_check.rs Move name field from AssocItem to AssocKind variants. 2025-04-15 08:07:15 +10:00
lib.rs introduce new lint infra 2025-06-12 09:56:47 +02:00