icp: fix rodata being marked as text in x86 Asm code
objtool properly complains that it can't decode some of the instructions from ICP x86 Asm code. As mentioned in the Makefile, where those object files were excluded from objtool check (but they can still be visible under IBT and LTO), those are just constants, not code. In that case, they must be placed in .rodata, so they won't be marked as "allocatable, executable" (ax) in EFL headers and this effectively prevents objtool from trying to decode this data. That reveals a whole bunch of other issues in ICP Asm code, as previously objtool was bailing out after that warning message. Reviewed-by: Attila Fülöp <attila@fueloep.org> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Lobakin <alobakin@pm.me> Closes #14035 Conflicts: module/Kbuild.in
This commit is contained in:
parent
ee93cbc9d4
commit
33bc03dea7
|
@ -60,12 +60,9 @@ $(MODULE)-$(CONFIG_X86) += algs/modes/gcm_pclmulqdq.o
|
||||||
$(MODULE)-$(CONFIG_X86) += algs/aes/aes_impl_aesni.o
|
$(MODULE)-$(CONFIG_X86) += algs/aes/aes_impl_aesni.o
|
||||||
$(MODULE)-$(CONFIG_X86) += algs/aes/aes_impl_x86-64.o
|
$(MODULE)-$(CONFIG_X86) += algs/aes/aes_impl_x86-64.o
|
||||||
|
|
||||||
# Suppress objtool "can't find jump dest instruction at" warnings. They
|
# Suppress objtool "return with modified stack frame" warnings.
|
||||||
# are caused by the constants which are defined in the text section of the
|
|
||||||
# assembly file using .byte instructions (e.g. bswap_mask). The objtool
|
|
||||||
# utility tries to interpret them as opcodes and obviously fails doing so.
|
|
||||||
OBJECT_FILES_NON_STANDARD_aesni-gcm-x86_64.o := y
|
OBJECT_FILES_NON_STANDARD_aesni-gcm-x86_64.o := y
|
||||||
OBJECT_FILES_NON_STANDARD_ghash-x86_64.o := y
|
|
||||||
# Suppress objtool "unsupported stack pointer realignment" warnings. We are
|
# Suppress objtool "unsupported stack pointer realignment" warnings. We are
|
||||||
# not using a DRAP register while aligning the stack to a 64 byte boundary.
|
# not using a DRAP register while aligning the stack to a 64 byte boundary.
|
||||||
# See #6950 for the reasoning.
|
# See #6950 for the reasoning.
|
||||||
|
|
|
@ -1242,6 +1242,7 @@ atomic_toggle_boolean_nv:
|
||||||
RET
|
RET
|
||||||
.size atomic_toggle_boolean_nv,.-atomic_toggle_boolean_nv
|
.size atomic_toggle_boolean_nv,.-atomic_toggle_boolean_nv
|
||||||
|
|
||||||
|
.pushsection .rodata
|
||||||
.align 64
|
.align 64
|
||||||
.Lbswap_mask:
|
.Lbswap_mask:
|
||||||
.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
||||||
|
@ -1255,6 +1256,7 @@ atomic_toggle_boolean_nv:
|
||||||
.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
|
.byte 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
|
||||||
.align 64
|
.align 64
|
||||||
|
.popsection
|
||||||
|
|
||||||
/* Mark the stack non-executable. */
|
/* Mark the stack non-executable. */
|
||||||
#if defined(__linux__) && defined(__ELF__)
|
#if defined(__linux__) && defined(__ELF__)
|
||||||
|
|
|
@ -655,6 +655,8 @@ gcm_ghash_avx:
|
||||||
RET
|
RET
|
||||||
.cfi_endproc
|
.cfi_endproc
|
||||||
.size gcm_ghash_avx,.-gcm_ghash_avx
|
.size gcm_ghash_avx,.-gcm_ghash_avx
|
||||||
|
|
||||||
|
.pushsection .rodata
|
||||||
.align 64
|
.align 64
|
||||||
.Lbswap_mask:
|
.Lbswap_mask:
|
||||||
.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
.byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
||||||
|
@ -708,6 +710,7 @@ gcm_ghash_avx:
|
||||||
|
|
||||||
.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
|
.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
|
||||||
.align 64
|
.align 64
|
||||||
|
.popsection
|
||||||
|
|
||||||
/* Mark the stack non-executable. */
|
/* Mark the stack non-executable. */
|
||||||
#if defined(__linux__) && defined(__ELF__)
|
#if defined(__linux__) && defined(__ELF__)
|
||||||
|
|
Loading…
Reference in New Issue