803b49c40b
binutils-2.39 enabed a few warning by default (https://sourceware.org/pipermail/binutils/2022-August/122246.html): > The ELF linker will now generate a warning message if the stack is made executable. Let's suppress the warnings in assembly files by adding non-executables stack markings. This fixes at least systemd build which uses '-Wl,--fatal-warnings': https://github.com/systemd/systemd/issues/24226
46 lines
814 B
ArmAsm
46 lines
814 B
ArmAsm
.text
|
|
.globl setjmp
|
|
#ifndef __MINGW32__
|
|
.type setjmp, @function
|
|
#else
|
|
.def setjmp; .scl 2; .type 32; .endef
|
|
#endif
|
|
setjmp:
|
|
pop %rsi
|
|
movq %rbx,0x00(%rdi)
|
|
movq %rsp,0x08(%rdi)
|
|
push %rsi
|
|
movq %rbp,0x10(%rdi)
|
|
movq %r12,0x18(%rdi)
|
|
movq %r13,0x20(%rdi)
|
|
movq %r14,0x28(%rdi)
|
|
movq %r15,0x30(%rdi)
|
|
movq %rsi,0x38(%rdi)
|
|
xor %rax,%rax
|
|
ret
|
|
|
|
.globl longjmp
|
|
#ifndef __MINGW32__
|
|
.type longjmp, @function
|
|
#else
|
|
.def longjmp; .scl 2; .type 32; .endef
|
|
#endif
|
|
longjmp:
|
|
movl %esi, %eax
|
|
movq 0x00(%rdi), %rbx
|
|
movq 0x08(%rdi), %rsp
|
|
movq 0x10(%rdi), %rbp
|
|
movq 0x18(%rdi), %r12
|
|
movq 0x20(%rdi), %r13
|
|
movq 0x28(%rdi), %r14
|
|
movq 0x30(%rdi), %r15
|
|
xor %rdx,%rdx
|
|
mov $1,%rcx
|
|
cmp %rax,%rdx
|
|
cmove %rcx,%rax
|
|
jmp *0x38(%rdi)
|
|
|
|
#if defined(__ELF__) && defined(__linux__)
|
|
.section .note.GNU-stack,"",%progbits
|
|
#endif
|