1 // Mark stack as non-executable
2 #if defined(__linux__) && defined(__ELF__)
3 .section .note.GNU-stack, "", @progbits
6 /* See i386/morestack.S for the lengthy, general explanation. */
10 #if defined(__APPLE__)
11 #define MORESTACK ___morestack
13 #define MORESTACK __morestack
16 #if defined(__APPLE__)
17 #define EXHAUSTED _rust_stack_exhausted
18 #elif defined(__linux__) || defined(__FreeBSD__)
19 #define EXHAUSTED rust_stack_exhausted@PLT
21 #define EXHAUSTED rust_stack_exhausted
24 #if defined(__linux__) || defined(__FreeBSD__)
27 #if defined(__APPLE__)
28 .private_extern MORESTACK
33 .type MORESTACK,@function
41 // The CFA is 24 bytes above the register that it will
42 // be associated with for this frame (%rbp). That is 8
43 // bytes greater than a normal frame, to allow the unwinder
44 // to skip the partial frame of the original function.
45 .cfi_def_cfa_offset 24
47 #if defined(__APPLE__)
48 // The pattern of the return address being saved twice to the same location
49 // tells the OS X linker that it should not attempt to convert the DWARF
50 // unwind information to the compact format.
55 // %rbp is -24 bytes from the CFA
58 // Calculate the CFA as on offset from %ebp
59 .cfi_def_cfa_register %rbp
67 // the exhaustion function guarantees that it can't return