*/*.S: add non-executable GNU stack marking on ELF-linux

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
This commit is contained in:
Sergei Trofimovich 2022-08-06 11:16:29 +01:00 committed by Nigel Croxon
parent 2ed6486834
commit 803b49c40b
28 changed files with 108 additions and 3 deletions

View File

@ -41,3 +41,7 @@ _start:
hello: .byte 'h',0,'e',0,'l',0,'l',0,'o',0,'\n',0,'\r',0,0,0
#endif
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -128,3 +128,7 @@ _start:
0: ldp x29, x30, [sp], #32
ret
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -143,3 +143,7 @@ _start:
.L_DYNAMIC:
.word _DYNAMIC - .
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -75,3 +75,7 @@ dummy: .long 0
.long 12 // Block Size (2*4+2*2), must be aligned by 32 Bits
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -85,3 +85,7 @@ _start_plabel:
data4 12 // Block Size (2*4+2*2), must be aligned by 32 Bits
data2 (IMAGE_REL_BASED_DIR64<<12) + 0 // reloc for plabel's entry point
data2 (IMAGE_REL_BASED_DIR64<<12) + 8 // reloc for plabel's global pointer
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -186,3 +186,7 @@ _pc:
.end _start
.set pop
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -134,3 +134,7 @@ _start:
ld ra, 16(sp)
0: addi sp, sp, 24
ret
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -75,3 +75,6 @@ label1:
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
.word (IMAGE_REL_ABSOLUTE<<12) + 0 // reloc for dummy
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -225,3 +225,7 @@ apply_FPTR64:
fptr_mem_base:
.space MAX_FUNCTION_DESCRIPTORS*16
fptr_mem_limit:
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -1 +1,5 @@
/* This stub is a stub to make the build happy */
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -58,3 +58,7 @@ longjmp:
mov w0, #1
csel w0, w1, w0, ne
br x30
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -153,3 +153,7 @@ label1:
@ What to do about division by zero? For now, just return.
ASM_PFX(__aeabi_idiv0):
bx r14
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -1 +1,5 @@
/* This stub is a stub to make the build happy */
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -57,5 +57,6 @@ L_Test3:
L_Exit:
pop {r4,pc}
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -39,3 +39,7 @@ ASM_PFX(__aeabi_llsl):
lsl r1,r0,r3
mov r0,#0
bx lr
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -39,3 +39,7 @@ ASM_PFX(__aeabi_llsr):
lsr r0,r1,r3
mov r1,#0
bx lr
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -31,3 +31,7 @@ ASM_PFX(__aeabi_lmul):
mla r1, r2, r1, ip
mla r1, r3, lr, r1
ldmia sp!, {pc}
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -23,3 +23,7 @@ setjmp:
.type longjmp, %function
longjmp:
ldmia r0, {r3-r12,r14}
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -264,4 +264,6 @@ ASM_PFX(_ll_div0):
ASM_PFX(__aeabi_ldiv0):
bx r14
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -1 +1,5 @@
/* This stub is a stub to make the build happy */
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -43,3 +43,7 @@ longjmp:
movl (%edx), %ebx
movl 4(%edx), %esi
movl 8(%edx), %edi
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -159,3 +159,6 @@ StackedComeBackFromPALCall:
PROCEDURE_EXIT(MakeStackedPALCall)
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -197,3 +197,7 @@ _skip_flushrs:
invala
mov ar.rsc = r16
br.ret.sptk b0
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -1 +1,5 @@
/* This stub is a stub to make the build happy */
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -90,3 +90,7 @@ longjmp:
li $v0, 1
movn $v0, $a1, $a1
jr $ra
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -67,3 +67,7 @@ longjmp:
seqz a0, a1
add a0, a0, a1
ret
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -187,3 +187,7 @@ ENTRY(efi_call10)
ret
#endif
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif

View File

@ -39,3 +39,7 @@ longjmp:
cmp %rax,%rdx
cmove %rcx,%rax
jmp *0x38(%rdi)
#if defined(__ELF__) && defined(__linux__)
.section .note.GNU-stack,"",%progbits
#endif