klibc-bot for Ben Hutchings
2020-Jul-25 16:36 UTC
[klibc] [klibc:master] arch: Explicitly disable or enable executable stacks
Commit-ID: 27ad55131385821dfe85b0320f4d6ba8861ab7e5 Gitweb: http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=27ad55131385821dfe85b0320f4d6ba8861ab7e5 Author: Ben Hutchings <ben at decadent.org.uk> AuthorDate: Wed, 29 Apr 2020 22:56:59 +0100 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Sat, 25 Jul 2020 17:33:29 +0100 [klibc] arch: Explicitly disable or enable executable stacks For each architecture (except cris, which is obsolete) set KLIBCEXECSTACK to 'y' or 'n', and comment on the kernel's signal return implementation. Signed-off-by: Ben Hutchings <ben at decadent.org.uk> --- usr/klibc/arch/alpha/MCONFIG | 4 ++++ usr/klibc/arch/arm/MCONFIG | 3 +++ usr/klibc/arch/arm64/MCONFIG | 3 +++ usr/klibc/arch/i386/MCONFIG | 3 +++ usr/klibc/arch/ia64/MCONFIG | 3 +++ usr/klibc/arch/m68k/MCONFIG | 4 ++++ usr/klibc/arch/mips/MCONFIG | 3 +++ usr/klibc/arch/mips64/MCONFIG | 3 +++ usr/klibc/arch/parisc/MCONFIG | 3 +++ usr/klibc/arch/ppc/MCONFIG | 3 +++ usr/klibc/arch/ppc64/MCONFIG | 3 +++ usr/klibc/arch/riscv64/MCONFIG | 3 +++ usr/klibc/arch/s390/MCONFIG | 4 ++++ usr/klibc/arch/sh/MCONFIG | 3 +++ usr/klibc/arch/sparc/MCONFIG | 4 ++++ usr/klibc/arch/sparc64/MCONFIG | 3 +++ usr/klibc/arch/x86_64/MCONFIG | 3 +++ 17 files changed, 55 insertions(+) diff --git a/usr/klibc/arch/alpha/MCONFIG b/usr/klibc/arch/alpha/MCONFIG index ad11372f..072adb85 100644 --- a/usr/klibc/arch/alpha/MCONFIG +++ b/usr/klibc/arch/alpha/MCONFIG @@ -14,3 +14,7 @@ KLIBCBITSIZE = 64 # 7 GB - normal binaries start at 4.5 GB, and the stack is below # the binary. KLIBCSHAREDFLAGS = -Ttext-segment 0x1c0000000 + +# Kernel uses stack trampoline for signal return unless we set +# sa_restorer +KLIBCEXECSTACK := y diff --git a/usr/klibc/arch/arm/MCONFIG b/usr/klibc/arch/arm/MCONFIG index 8a7096b8..ae407cb9 100644 --- a/usr/klibc/arch/arm/MCONFIG +++ b/usr/klibc/arch/arm/MCONFIG @@ -33,3 +33,6 @@ else KLIBCREQFLAGS += -mabi=apcs-gnu -mno-thumb-interwork endif endif + +# Kernel uses dedicated page or vDSO for signal return since 2.6.13 +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/arm64/MCONFIG b/usr/klibc/arch/arm64/MCONFIG index 6d22847e..e31ffea7 100644 --- a/usr/klibc/arch/arm64/MCONFIG +++ b/usr/klibc/arch/arm64/MCONFIG @@ -21,3 +21,6 @@ KLIBCREQFLAGS += -fno-exceptions -mgeneral-regs-only # On arm64, binaries are normally loaded at 4MB. Place klibc.so # a little before that at 2MB to prevent overlap. KLIBCSHAREDFLAGS = -Ttext-segment 0x0200000 + +# Kernel has never used stack trampolines +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/i386/MCONFIG b/usr/klibc/arch/i386/MCONFIG index 07046695..c7d3fccd 100644 --- a/usr/klibc/arch/i386/MCONFIG +++ b/usr/klibc/arch/i386/MCONFIG @@ -31,3 +31,6 @@ KLIBCBITSIZE = 32 # calls, and work on the memory models for this architecture # 96 MB - normal binaries start at 128 MB KLIBCSHAREDFLAGS = -Ttext-segment 0x06000000 + +# Kernel uses dedicated page or vDSO for signal return since 2.5.55 +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/ia64/MCONFIG b/usr/klibc/arch/ia64/MCONFIG index d12c9bf2..f2a25395 100644 --- a/usr/klibc/arch/ia64/MCONFIG +++ b/usr/klibc/arch/ia64/MCONFIG @@ -12,3 +12,6 @@ KLIBCOPTFLAGS += -Os KLIBCBITSIZE = 64 KLIBCSHAREDFLAGS = -T $(src)/arch/$(KLIBCARCH)/klibc.ld + +# Kernel has never used stack trampolines +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/m68k/MCONFIG b/usr/klibc/arch/m68k/MCONFIG index 3f4bdae6..b57714e4 100644 --- a/usr/klibc/arch/m68k/MCONFIG +++ b/usr/klibc/arch/m68k/MCONFIG @@ -17,3 +17,7 @@ KLIBCBITSIZE = 32 # script right. Not sure if there is a fundamental reason # to not duck below the halfway point... KLIBCSHAREDFLAGS = -Ttext-segment 0xb0000000 + +# Kernel uses stack trampoline for signal return. Also m68k +# page tables do not have an execute permission bit. +KLIBCEXECSTACK := y diff --git a/usr/klibc/arch/mips/MCONFIG b/usr/klibc/arch/mips/MCONFIG index 7ad65232..7bf65a50 100644 --- a/usr/klibc/arch/mips/MCONFIG +++ b/usr/klibc/arch/mips/MCONFIG @@ -18,3 +18,6 @@ KLIBCBITSIZE = 32 # # Use -Ttext-segment so that the special .MIPS* sections are moved as well. KLIBCSHAREDFLAGS = -Ttext-segment 0x00200000 + +# Kernel uses vDSO for signal return since 2.6.34 +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/mips64/MCONFIG b/usr/klibc/arch/mips64/MCONFIG index 6a4b41b2..94b825a6 100644 --- a/usr/klibc/arch/mips64/MCONFIG +++ b/usr/klibc/arch/mips64/MCONFIG @@ -21,3 +21,6 @@ KLIBCBITSIZE = 64 # # Use -Ttext-segment so that the special .MIPS* sections are moved as well. KLIBCSHAREDFLAGS = -Ttext-segment 0x12FE00000 + +# Kernel uses vDSO for signal return since 2.6.34 +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/parisc/MCONFIG b/usr/klibc/arch/parisc/MCONFIG index 3472df67..1f53555e 100644 --- a/usr/klibc/arch/parisc/MCONFIG +++ b/usr/klibc/arch/parisc/MCONFIG @@ -10,3 +10,6 @@ KLIBCOPTFLAGS += -Os -fomit-frame-pointer KLIBCBITSIZE = 32 KLIBCSHAREDFLAGS = -Ttext-segment 0x40001000 + +# Kernel uses stack trampoline for signal return +KLIBCEXECSTACK := y diff --git a/usr/klibc/arch/ppc/MCONFIG b/usr/klibc/arch/ppc/MCONFIG index 8220f6b9..d8a0c108 100644 --- a/usr/klibc/arch/ppc/MCONFIG +++ b/usr/klibc/arch/ppc/MCONFIG @@ -24,3 +24,6 @@ KLIBCSHAREDFLAGS = -Ttext-segment 0x0f800000 # The asm include files live in asm-powerpc KLIBCASMARCH = powerpc + +# Kernel uses vDSO for signal return since 2.6.12 (compat) or 2.6.15 (native) +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/ppc64/MCONFIG b/usr/klibc/arch/ppc64/MCONFIG index 0315110c..530a07a0 100644 --- a/usr/klibc/arch/ppc64/MCONFIG +++ b/usr/klibc/arch/ppc64/MCONFIG @@ -22,3 +22,6 @@ KLIBCSHAREDFLAGS = -Ttext-segment 0x0f000000 # The asm include files live in asm-powerpc KLIBCASMARCH = powerpc + +# Kernel uses vDSO for signal return since 2.6.12 +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/riscv64/MCONFIG b/usr/klibc/arch/riscv64/MCONFIG index 61681509..35df1f5f 100644 --- a/usr/klibc/arch/riscv64/MCONFIG +++ b/usr/klibc/arch/riscv64/MCONFIG @@ -18,3 +18,6 @@ KLIBCBITSIZE = 64 # Normal binaries start at 64 KB, so start the libary at 2 MB. KLIBCSHAREDFLAGS =-Ttext-segment 0x00200000 + +# Kernel has never used stack trampolines +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/s390/MCONFIG b/usr/klibc/arch/s390/MCONFIG index 637f5aa6..c36acd7a 100644 --- a/usr/klibc/arch/s390/MCONFIG +++ b/usr/klibc/arch/s390/MCONFIG @@ -21,3 +21,7 @@ endif KLIBCASMARCH = s390 KLIBCSHAREDFLAGS = -Ttext-segment 0x40000000 + +# Kernel uses stack trampoline for signal return unless we set +# sa_restorer +KLIBCEXECSTACK := y diff --git a/usr/klibc/arch/sh/MCONFIG b/usr/klibc/arch/sh/MCONFIG index 2facf7cb..8421bbf9 100644 --- a/usr/klibc/arch/sh/MCONFIG +++ b/usr/klibc/arch/sh/MCONFIG @@ -15,3 +15,6 @@ KLIBCBITSIZE = 32 # calls, and work on the memory models for this architecture # 2 MB -- the normal starting point for text is 4 MB. KLIBCSHAREDFLAGS = -Ttext-segment 0x00200000 + +# Kernel uses vDSO for signal return since 2.6.19 +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/sparc/MCONFIG b/usr/klibc/arch/sparc/MCONFIG index 0623fdc2..cabc7cd4 100644 --- a/usr/klibc/arch/sparc/MCONFIG +++ b/usr/klibc/arch/sparc/MCONFIG @@ -17,3 +17,7 @@ KLIBCARCHREQFLAGS += -D__sparc32__ # Normal binaries start at 64K; the linker wants 64K alignment, # and call instructions have a 30-bit signed offset, << 2. KLIBCSHAREDFLAGS = -Ttext-segment 0x40000000 + +# Kernel uses stack trampoline for signal return unless we set +# sa_restorer +KLIBCEXECSTACK := y diff --git a/usr/klibc/arch/sparc64/MCONFIG b/usr/klibc/arch/sparc64/MCONFIG index c8339855..6f5dfbe9 100644 --- a/usr/klibc/arch/sparc64/MCONFIG +++ b/usr/klibc/arch/sparc64/MCONFIG @@ -19,3 +19,6 @@ KLIBCLDFLAGS = -m elf64_sparc # Normal binaries start at 1 MB; the linker wants 1 MB alignment, # and call instructions have a 30-bit signed offset, << 2. KLIBCSHAREDFLAGS = -Ttext-segment 0x80000000 + +# Kernel has never used stack trampolines +KLIBCEXECSTACK := n diff --git a/usr/klibc/arch/x86_64/MCONFIG b/usr/klibc/arch/x86_64/MCONFIG index c5f2fa26..1f5f99c7 100644 --- a/usr/klibc/arch/x86_64/MCONFIG +++ b/usr/klibc/arch/x86_64/MCONFIG @@ -36,3 +36,6 @@ KLIBCLDFLAGS = -m elf_x86_64 # in a broken layout with binutils 2.30. Since there's no # architectural page size betwen 4 KB and 2MB, set it to 4 KB. KLIBCSHAREDFLAGS = -Ttext-segment 0x00200000 -z max-page-size=0x1000 + +# Kernel has never used stack trampolines +KLIBCEXECSTACK := n