.text .globl asm_main asm_main: sub $0x8, %rsp movq $0, (%rsp) push %rsp jmp nonstandard_stub # Takes a single pointer argument via the stack, which is nonstandard for x64. # Executing 'thread step-out' here will initially attempt to write a # breakpoint to that stack address, but should fail because of the executable # memory check. .globl nonstandard_stub nonstandard_stub: mov (%rsp), %rdi mov (%rdi), %rsi add $1, %rsi mov %rsi, (%rdi) add $0x10, %rsp ret #ifdef __linux__ .section .note.GNU-stack,"",@progbits #endif