@@ -125,6 +125,9 @@ macro_rules! define_rust_probestack {
125125// Our goal here is to touch each page between %rsp+8 and %rsp+8-%rax,
126126// ensuring that if any pages are unmapped we'll make a page fault.
127127//
128+ // FIXME(abi_custom): This function is unsafe because it uses a custom ABI,
129+ // it does not actually match `extern "C"`.
130+ //
128131// The ABI here is that the stack frame size is located in `%rax`. Upon
129132// return we're not supposed to modify `%rsp` or `%rax`.
130133//
@@ -260,6 +263,9 @@ core::arch::global_asm!(
260263// that on Unix we're expected to restore everything as it was, this
261264// function basically can't tamper with anything.
262265//
266+ // FIXME(abi_custom): This function is unsafe because it uses a custom ABI,
267+ // it does not actually match `extern "C"`.
268+ //
263269// The ABI here is the same as x86_64, except everything is 32-bits large.
264270core:: arch:: global_asm!(
265271 define_rust_probestack!(
@@ -303,6 +309,9 @@ core::arch::global_asm!(
303309// probestack function will also do things like _chkstk in MSVC.
304310// So we need to sub %ax %sp in probestack when arch is x86.
305311//
312+ // FIXME(abi_custom): This function is unsafe because it uses a custom ABI,
313+ // it does not actually match `extern "C"`.
314+ //
306315// REF: Rust commit(74e80468347)
307316// rust\src\llvm-project\llvm\lib\Target\X86\X86FrameLowering.cpp: 805
308317// Comments in LLVM:
0 commit comments