Skip to content

Commit f3af860

Browse files
committed
add a fixme to use extern_custom when available
1 parent d13a431 commit f3af860

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

library/compiler-builtins/compiler-builtins/src/probestack.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
264270
core::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

Comments
 (0)