diff --git a/zipl/boot/entry.S b/zipl/boot/entry.S index 3ee786f1..d888a53a 100644 --- a/zipl/boot/entry.S +++ b/zipl/boot/entry.S @@ -18,3 +18,8 @@ pgm_check_handler: basr %r14,%r14 lmg %r0,%r15,__LC_SAVE_AREA_SYNC lpswe __LC_PGM_OLD_PSW(%r0) + +/* The code doesn't require an executable stack */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/zipl/boot/head.S b/zipl/boot/head.S index f2395f6d..58515012 100644 --- a/zipl/boot/head.S +++ b/zipl/boot/head.S @@ -28,3 +28,8 @@ _start: brasl %r14,initialize .Lstack: .long 0x10000-160 .previous + +/* The code doesn't require an executable stack */ +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/zipl/boot/stage2.lds.S b/zipl/boot/stage2.lds.S index eee1d3c2..2204dd56 100644 --- a/zipl/boot/stage2.lds.S +++ b/zipl/boot/stage2.lds.S @@ -94,5 +94,6 @@ SECTIONS /DISCARD/ : { *(.eh_frame) *(.interp) + *(.note.GNU-stack) } } diff --git a/zipl/boot/stage3.lds.S b/zipl/boot/stage3.lds.S index 9cea19b8..1150fea4 100644 --- a/zipl/boot/stage3.lds.S +++ b/zipl/boot/stage3.lds.S @@ -79,5 +79,6 @@ SECTIONS /DISCARD/ : { *(.eh_frame) *(.interp) + *(.note.GNU-stack) } }