https://github.com/libhugetlbfs/libhugetlbfs/pull/9 From 1c41d751d57a598919c40ab9c27514a98da93273 Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 31 Oct 2009 07:59:57 +0000 Subject: [PATCH] set noexec markers in the asm file directly Using -Wl,-z,noexecstack can hide real exec stack issues coming from other files, and is a bit unportable. Instead, set proper section markers in the assembly files directly. It also means people using the static libraries won't have to use -Wl,-z,noexecstack when they link their code. --- Makefile | 2 +- sys-aarch64elf.S | 4 ++++ sys-armelf_linux_eabi.S | 4 ++++ sys-elf32ppclinux.S | 4 ++++ sys-elf64_s390.S | 4 ++++ sys-elf64ppc.S | 4 ++++ sys-elf_i386.S | 4 ++++ sys-elf_s390.S | 4 ++++ sys-elf_x86_64.S | 4 ++++ 9 files changed, 33 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 73ebad7..ca987d9 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ NODEPTARGETS= INSTALL = install -LDFLAGS += -Wl,-z,noexecstack -ldl +LDFLAGS += -ldl CFLAGS ?= -O2 -g CFLAGS += -Wall -fPIC CPPFLAGS += -D__LIBHUGETLBFS__ diff --git a/sys-aarch64elf.S b/sys-aarch64elf.S index 54799d3..210558b 100644 --- a/sys-aarch64elf.S +++ b/sys-aarch64elf.S @@ -32,3 +32,7 @@ direct_syscall: mov x6, x7 svc 0x0 ret + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-armelf_linux_eabi.S b/sys-armelf_linux_eabi.S index dfa7407..265b75d 100644 --- a/sys-armelf_linux_eabi.S +++ b/sys-armelf_linux_eabi.S @@ -31,3 +31,7 @@ direct_syscall: swi 0x0 ldmfd sp!, {r4, r5, r6, r7} bx lr + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-elf32ppclinux.S b/sys-elf32ppclinux.S index 65d8b3f..6ba3f22 100644 --- a/sys-elf32ppclinux.S +++ b/sys-elf32ppclinux.S @@ -32,3 +32,7 @@ direct_syscall: mr 8,9 sc blr + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-elf64_s390.S b/sys-elf64_s390.S index 425a387..5c31899 100644 --- a/sys-elf64_s390.S +++ b/sys-elf64_s390.S @@ -20,3 +20,7 @@ direct_syscall: lgr %r5,%r6 svc 0 br %r14 + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-elf64ppc.S b/sys-elf64ppc.S index d50f4a6..b57a345 100644 --- a/sys-elf64ppc.S +++ b/sys-elf64ppc.S @@ -46,3 +46,7 @@ direct_syscall: mr 8,9 sc blr + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-elf_i386.S b/sys-elf_i386.S index ab30c8d..6182b3d 100644 --- a/sys-elf_i386.S +++ b/sys-elf_i386.S @@ -40,3 +40,7 @@ direct_syscall: pop %edi pop %ebp ret + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-elf_s390.S b/sys-elf_s390.S index 40630d1..e6a9a96 100644 --- a/sys-elf_s390.S +++ b/sys-elf_s390.S @@ -20,3 +20,7 @@ direct_syscall: lr %r5,%r6 svc 0 br %r14 + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif diff --git a/sys-elf_x86_64.S b/sys-elf_x86_64.S index 6af06ad..561f49b 100644 --- a/sys-elf_x86_64.S +++ b/sys-elf_x86_64.S @@ -32,3 +32,7 @@ direct_syscall: mov 0x8(%rsp),%r9 syscall retq + +#if defined(__linux__) && defined(__ELF__) + .section .note.GNU-stack,"",%progbits +#endif -- 2.6.2