From 06a245a9845c0c126fb3106b41b2fd2bc4bc4df3 Mon Sep 17 00:00:00 2001 From: Dan Mick Date: Fri, 14 Nov 2014 17:59:57 -0800 Subject: [PATCH] Add annotation to all assembly files to turn off stack-execute bit See discussion in http://tracker.ceph.com/issues/10114 Building with these changes allows output from readelf like this: $ readelf -lW src/.libs/librados.so.2 | grep GNU_STACK GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x8 (note the absence of 'X' in 'RW') Fixes: #10114 Signed-off-by: Dan Mick --- src/common/crc32c_intel_fast_asm.S | 2 ++ src/common/crc32c_intel_fast_zero_asm.S | 2 ++ src/erasure-code/isa/isa-l/erasure_code/ec_multibinary.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_2vect_dot_prod_avx.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_2vect_dot_prod_avx2.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_2vect_dot_prod_sse.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_3vect_dot_prod_avx.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_3vect_dot_prod_avx2.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_3vect_dot_prod_sse.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_4vect_dot_prod_avx.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_4vect_dot_prod_avx2.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_4vect_dot_prod_sse.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_5vect_dot_prod_avx.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_5vect_dot_prod_avx2.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_5vect_dot_prod_sse.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_6vect_dot_prod_avx.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_6vect_dot_prod_avx2.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_6vect_dot_prod_sse.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_vect_dot_prod_avx.asm.s | 4 ++++ .../isa/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm.s | 2 ++ .../isa/isa-l/erasure_code/gf_vect_dot_prod_sse.asm.s | 2 ++ src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_avx.asm.s | 2 ++ src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_sse.asm.s | 2 ++ 23 files changed, 48 insertions(+) diff --git a/src/common/crc32c_intel_fast_asm.S b/src/common/crc32c_intel_fast_asm.S index 4ca5d65032e..2189684b4c7 100644 --- a/src/common/crc32c_intel_fast_asm.S +++ b/src/common/crc32c_intel_fast_asm.S @@ -662,3 +662,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion crc32_iscsi_00, 00, 02, 0014 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/common/crc32c_intel_fast_zero_asm.S b/src/common/crc32c_intel_fast_zero_asm.S index b7246f26380..34b7f489016 100644 --- a/src/common/crc32c_intel_fast_zero_asm.S +++ b/src/common/crc32c_intel_fast_zero_asm.S @@ -644,3 +644,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion crc32_iscsi_zero_00, 00, 02, 0014 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/ec_multibinary.asm.s b/src/erasure-code/isa/isa-l/erasure_code/ec_multibinary.asm.s index b5655096544..54f7301181e 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/ec_multibinary.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/ec_multibinary.asm.s @@ -264,3 +264,5 @@ global %1_slver slversion ec_encode_data, 00, 02, 0133 slversion gf_vect_mul, 00, 02, 0134 slversion gf_vect_dot_prod, 00, 01, 0138 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx.asm.s index 7f8b34b79a4..db8064a3971 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx.asm.s @@ -232,3 +232,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_2vect_dot_prod_avx, 02, 03, 0191 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx2.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx2.asm.s index ce9275fbb31..5d75d810905 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx2.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_avx2.asm.s @@ -244,3 +244,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_2vect_dot_prod_avx2, 04, 03, 0196 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_sse.asm.s index 2520f9f73ff..4f324aecc43 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_2vect_dot_prod_sse.asm.s @@ -234,3 +234,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_2vect_dot_prod_sse, 00, 02, 0062 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx.asm.s index 3c821605aab..6935cb19347 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx.asm.s @@ -255,4 +255,6 @@ global %1_slver db 0x%3, 0x%2 %endmacro ;;; func core, ver, snum +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits slversion gf_3vect_dot_prod_avx, 02, 03, 0192 diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx2.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx2.asm.s index bff6e755eb0..4ad01531712 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx2.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_avx2.asm.s @@ -269,3 +269,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_3vect_dot_prod_avx2, 04, 03, 0197 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_sse.asm.s index 0436c11d2b3..925fd3414d6 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_3vect_dot_prod_sse.asm.s @@ -257,3 +257,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_3vect_dot_prod_sse, 00, 03, 0063 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx.asm.s index c621d321cc6..6197f017007 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx.asm.s @@ -294,3 +294,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_4vect_dot_prod_avx, 00, 02, 0064 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx2.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx2.asm.s index 3f29c7601c4..e4267e201f2 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx2.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_avx2.asm.s @@ -303,3 +303,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_4vect_dot_prod_avx2, 04, 03, 0064 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_sse.asm.s index 3626e42c33c..920a8da71c8 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_4vect_dot_prod_sse.asm.s @@ -294,3 +294,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_4vect_dot_prod_sse, 00, 03, 0064 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx.asm.s index 8855a2fc8e0..a5625659713 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx.asm.s @@ -309,3 +309,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_5vect_dot_prod_avx, 02, 03, 0194 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx2.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx2.asm.s index e932053e2db..7f25c1622bb 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx2.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_avx2.asm.s @@ -321,3 +321,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_5vect_dot_prod_avx2, 04, 03, 0199 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_sse.asm.s index b33bab0cc32..003ad261424 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_5vect_dot_prod_sse.asm.s @@ -309,4 +309,6 @@ global %1_slver db 0x%3, 0x%2 %endmacro ;;; func core, ver, snum +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits slversion gf_5vect_dot_prod_sse, 00, 03, 0065 diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx.asm.s index 4e03e8e83dd..28ca861357a 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx.asm.s @@ -321,3 +321,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_6vect_dot_prod_avx, 02, 03, 0195 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx2.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx2.asm.s index 7826fb271ea..a957c9ecc0c 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx2.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_avx2.asm.s @@ -332,3 +332,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_6vect_dot_prod_avx2, 04, 03, 019a +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_sse.asm.s index 23ef3d9e032..4910ddd703a 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_6vect_dot_prod_sse.asm.s @@ -321,3 +321,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_6vect_dot_prod_sse, 00, 03, 0066 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx.asm.s index ddc3042943b..593a731883f 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx.asm.s @@ -196,3 +196,7 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_vect_dot_prod_avx, 02, 03, 0061 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm.s index 7eebd279290..f5f928748cd 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_avx2.asm.s @@ -201,3 +201,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_vect_dot_prod_avx2, 04, 03, 0190 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_sse.asm.s index fd51ee52cfc..2e13c186673 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_dot_prod_sse.asm.s @@ -193,3 +193,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_vect_dot_prod_sse, 00, 03, 0060 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_avx.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_avx.asm.s index b60a6ebf2c2..0536ed7950a 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_avx.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_avx.asm.s @@ -170,3 +170,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_vect_mul_avx, 01, 02, 0036 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_sse.asm.s b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_sse.asm.s index 3d5fb9405a0..c6d7d586967 100644 --- a/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_sse.asm.s +++ b/src/erasure-code/isa/isa-l/erasure_code/gf_vect_mul_sse.asm.s @@ -176,3 +176,5 @@ global %1_slver %endmacro ;;; func core, ver, snum slversion gf_vect_mul_sse, 00, 02, 0034 +; inform linker that this doesn't require executable stack +section .note.GNU-stack noalloc noexec nowrite progbits -- 2.47.3