From: Dan Mick Date: Sat, 15 Nov 2014 01:59:57 +0000 (-0800) Subject: Add annotation to all assembly files to turn off stack-execute bit X-Git-Tag: v0.90~75^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F2946%2Fhead;p=ceph.git 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 --- diff --git a/src/common/crc32c_intel_fast_asm.S b/src/common/crc32c_intel_fast_asm.S index 4ca5d65032e2..2189684b4c75 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 b7246f26380d..34b7f4890169 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 b5655096544a..54f7301181e7 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 7f8b34b79a43..db8064a39718 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 ce9275fbb31e..5d75d8109050 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 2520f9f73ff9..4f324aecc437 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 3c821605aabc..6935cb19347b 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 bff6e755eb0c..4ad01531712f 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 0436c11d2b33..925fd3414d62 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 c621d321cc68..6197f017007d 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 3f29c7601c43..e4267e201f28 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 3626e42c33c1..920a8da71c87 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 8855a2fc8e02..a56256597131 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 e932053e2dbd..7f25c1622bb2 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 b33bab0cc321..003ad2614241 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 4e03e8e83ddb..28ca861357a3 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 7826fb271ea3..a957c9ecc0c8 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 23ef3d9e0321..4910ddd703a2 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 ddc3042943ba..593a731883f0 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 7eebd2792906..f5f928748cd1 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 fd51ee52cfcc..2e13c186673a 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 b60a6ebf2c24..0536ed7950aa 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 3d5fb9405a02..c6d7d5869679 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