x86: remove always-defined CONFIG_AS_* options
Subsystems (2)
cover x86: remove always-defined CONFIG_AS_* options
arch/x86/Makefile tests instruction code by $(call as-instr, ...)
Some of them are very old.
For example, the check for CONFIG_AS_CFI dates back to 2006.
We raise GCC versions from time to time, and we clean old code away. The same policy applied to binutils.
The current minimal supported version of binutils is 2.21
This is new enough to recognize the instruction in most of as-instr calls.
Masahiro Yamada (7):
x86: remove unneeded defined(__ASSEMBLY__) check from asm/dwarf2.h
x86: remove always-defined CONFIG_AS_CFI
x86: remove always-defined CONFIG_AS_CFI_SIGNAL_FRAME
x86: remove always-defined CONFIG_AS_CFI_SECTIONS
x86: remove always-defined CONFIG_AS_SSSE3
x86: remove always-defined CONFIG_AS_AVX
x86: add comments about the binutils version to support code in
as-instr
arch/x86/Makefile | 21 +++------ arch/x86/crypto/Makefile | 32 ++++++-------- arch/x86/crypto/aesni-intel_avx-x86_64.S | 3 -- arch/x86/crypto/aesni-intel_glue.c | 14 +----- arch/x86/crypto/blake2s-core.S | 2 - arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 8 ---- arch/x86/crypto/poly1305_glue.c | 6 +-- arch/x86/crypto/sha1_ssse3_asm.S | 4 -- arch/x86/crypto/sha1_ssse3_glue.c | 9 +--- arch/x86/crypto/sha256-avx-asm.S | 3 -- arch/x86/crypto/sha256_ssse3_glue.c | 8 +--- arch/x86/crypto/sha512-avx-asm.S | 2 - arch/x86/crypto/sha512_ssse3_glue.c | 7 +-- arch/x86/include/asm/dwarf2.h | 43 ------------------- arch/x86/include/asm/xor_avx.h | 9 ---- lib/raid6/algos.c | 2 - lib/raid6/recov_ssse3.c | 6 --- lib/raid6/test/Makefile | 3 -- 18 files changed, 26 insertions(+), 156 deletions(-)
Signature · 1 line
2.17.1
PATCH 1/7 x86: remove unneeded defined(__ASSEMBLY__) check from asm/dwarf2.h
This header file has the following check at the top:
#ifndef __ASSEMBLY__ #warning "asm/dwarf2.h should be only included in pure assembly files" #endif
So, we expect defined(__ASSEMBLY__) is always true.
---
arch/x86/include/asm/dwarf2.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/include/asm/dwarf2.h +1 -1
@@ -36,7 +36,7 @@#define CFI_SIGNAL_FRAME #endif -#if defined(CONFIG_AS_CFI_SECTIONS ) && defined(__ASSEMBLY__) +#if defined(CONFIG_AS_CFI_SECTIONS )#ifndef BUILD_VDSO /* * Emit CFI data in .debug_frame sections, not .eh_frame sections.
Signature · 1 line
2.17.1
PATCH 2/7 x86: remove always-defined CONFIG_AS_CFI
In reply to Masahiro YamadaCONFIG_AS_CFI was introduced by commit e2414910f212 ("[PATCH] x86:
Detect CFI support in the assembler at runtime"), and extended by commit f0f12d85af85 ("x86_64: Check for .cfi_rel_offset in CFI probe").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_CFI, which is always defined.
---
If this series is OK, we can do follwup cleanups.
We can hard-code the assembler code, and delete CFI_* macros entirely.
arch/x86/Makefile | 10 ++-------- arch/x86/include/asm/dwarf2.h | 36 ----------------------------------- 2 files changed, 2 insertions(+), 44 deletions(-)
arch/x86/Makefile +2 -8
@@ -177,12 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -# Stackpointer is addressed different for 32 bit and 64 bit x86 -sp-$(CONFIG_X86_32) := esp -sp-$(CONFIG_X86_64) := rsp - -# do binutils support CFI? -cfi := $(call as-instr,.cfi_startproc\n.cfi_rel_offset $(sp-y)$(comma)0\n.cfi_endproc,-DCONFIG_AS_CFI=1) # is .cfi_signal_frame supported too? cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1) cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1)
@@ -196,8 +190,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
arch/x86/include/asm/dwarf2.h +0 -36
@@ -6,15 +6,6 @@#warning "asm/dwarf2.h should be only included in pure assembly files"#endif -/* -* Macros for dwarf2 CFI unwind table entries. -* See "as.info" for details on these pseudo ops. Unfortunately -* they are only supported in very new binutils, so define them -* away for older version. -*/ - -#ifdef CONFIG_AS_CFI -#define CFI_STARTPROC .cfi_startproc#define CFI_ENDPROC .cfi_endproc#define CFI_DEF_CFA .cfi_def_cfa
@@ -55,31 +46,4 @@#endif #endif -#else - -/* -* Due to the structure of pre-exisiting code, don't use assembler line -* comment character # to ignore the arguments. Instead, use a dummy macro. -*/ -.macro cfi_ignore a=0, b=0, c=0, d=0 -.endm - -#define CFI_STARTPROC cfi_ignore -#define CFI_ENDPROC cfi_ignore -#define CFI_DEF_CFA cfi_ignore -#define CFI_DEF_CFA_REGISTER cfi_ignore -#define CFI_DEF_CFA_OFFSET cfi_ignore -#define CFI_ADJUST_CFA_OFFSET cfi_ignore -#define CFI_OFFSET cfi_ignore -#define CFI_REL_OFFSET cfi_ignore -#define CFI_REGISTER cfi_ignore -#define CFI_RESTORE cfi_ignore -#define CFI_REMEMBER_STATE cfi_ignore -#define CFI_RESTORE_STATE cfi_ignore -#define CFI_UNDEFINED cfi_ignore -#define CFI_ESCAPE cfi_ignore -#define CFI_SIGNAL_FRAME cfi_ignore - -#endif -#endif /* _ASM_X86_DWARF2_H */
Signature · 1 line
2.17.1
Re: [PATCH 2/7] x86: remove always-defined CONFIG_AS_CFI
Quoted 8 lines · Masahiro Yamada
CONFIG_AS_CFIwas introduced by commite2414910f212("[PATCH] x86:
Detect CFI support in the assembler at runtime"), and extended by commitf0f12d85af85("x86_64: Check for .cfi_rel_offset in CFI probe").We raise the minimal supported binutils version from time to time. The last bump was commit
1fb12b35e5ff("kbuild: Raise the minimum required binutils version to 2.21").
Yep, looks like 2.21 was released in 2010, while CFI_rel_offset was added to binutils back in 2003. LGTM, thanks for the patch (2 less assembler invocations during a build).
Quoted 104 lines
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove
CONFIG_AS_CFI, which is always defined.Signed-off-by Masahiro Yamada <[email protected]>---
If this series is OK, we can do follwup cleanups.
We can hard-code the assembler code, and delete CFI_* macros entirely.arch/x86/Makefile | 10 ++-------- arch/x86/include/asm/dwarf2.h | 36 ----------------------------------- 2 files changed, 2 insertions(+), 44 deletions(-)arch/x86/Makefile +2
-8@@ -177,12 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -# Stackpointer is addressed different for 32 bit and 64 bit x86 -sp-$(CONFIG_X86_32) := esp -sp-$(CONFIG_X86_64) := rsp - -# do binutils support CFI? -cfi := $(call as-instr,.cfi_startproc\n.cfi_rel_offset $(sp-y)$(comma)0\n.cfi_endproc,-DCONFIG_AS_CFI=1) # is .cfi_signal_frame supported too? cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1) cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1)@@ -196,8 +190,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi) $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)arch/x86/include/asm/dwarf2.h +0
-37@@ -6,15 +6,6 @@#warning "asm/dwarf2.h should be only included in pure assembly files"#endif -/* -* Macros for dwarf2 CFI unwind table entries. -* See "as.info" for details on these pseudo ops. Unfortunately -* they are only supported in very new binutils, so define them -* away for older version. -*/ - -#ifdef CONFIG_AS_CFI -#define CFI_STARTPROC .cfi_startproc#define CFI_ENDPROC .cfi_endproc#define CFI_DEF_CFA .cfi_def_cfa@@ -55,31 +46,4 @@#endif #endif -#else - -/* -* Due to the structure of pre-exisiting code, don't use assembler line -* comment character # to ignore the arguments. Instead, use a dummy macro. -*/ -.macro cfi_ignore a=0, b=0, c=0, d=0 -.endm - -#define CFI_STARTPROC cfi_ignore -#define CFI_ENDPROC cfi_ignore -#define CFI_DEF_CFA cfi_ignore -#define CFI_DEF_CFA_REGISTER cfi_ignore -#define CFI_DEF_CFA_OFFSET cfi_ignore -#define CFI_ADJUST_CFA_OFFSET cfi_ignore -#define CFI_OFFSET cfi_ignore -#define CFI_REL_OFFSET cfi_ignore -#define CFI_REGISTER cfi_ignore -#define CFI_RESTORE cfi_ignore -#define CFI_REMEMBER_STATE cfi_ignore -#define CFI_RESTORE_STATE cfi_ignore -#define CFI_UNDEFINED cfi_ignore -#define CFI_ESCAPE cfi_ignore -#define CFI_SIGNAL_FRAME cfi_ignore - -#endif -#endif /* _ASM_X86_DWARF2_H */ --2.17.1
--
You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200323020844.17064-3-masahiroy%40kernel.org.
Signature · 2 lines
Thanks, ~Nick Desaulniers
PATCH 3/7 x86: remove always-defined CONFIG_AS_CFI_SIGNAL_FRAME
In reply to Masahiro YamadaCONFIG_AS_CFI_SIGNAL_FRAME was introduced by commit adf1423698f0 ("[PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_CFI_SIGNAL_FRAME, which is always defined.
---
arch/x86/Makefile | 6 ++---- arch/x86/include/asm/dwarf2.h | 5 ----- 2 files changed, 2 insertions(+), 9 deletions(-)
arch/x86/Makefile +2 -4
@@ -177,8 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -# is .cfi_signal_frame supported too? -cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1) cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1) # does binutils support specific instructions?
@@ -190,8 +188,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
arch/x86/include/asm/dwarf2.h +0 -5
@@ -20,12 +20,7 @@#define CFI_RESTORE_STATE .cfi_restore_state#define CFI_UNDEFINED .cfi_undefined#define CFI_ESCAPE .cfi_escape - -#ifdef CONFIG_AS_CFI_SIGNAL_FRAME #define CFI_SIGNAL_FRAME .cfi_signal_frame -#else -#define CFI_SIGNAL_FRAME -#endif #if defined(CONFIG_AS_CFI_SECTIONS )#ifndef BUILD_VDSO
Signature · 1 line
2.17.1
Re: [PATCH 3/7] x86: remove always-defined CONFIG_AS_CFI_SIGNAL_FRAME
Quoted 5 lines · Masahiro Yamada
CONFIG_AS_CFI_SIGNAL_FRAMEwas introduced by commitadf1423698f0("[PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder").
Quoted 8 lines
We raise the minimal supported binutils version from time to time. The last bump was commit
1fb12b35e5ff("kbuild: Raise the minimum required binutils version to 2.21").I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove
CONFIG_AS_CFI_SIGNAL_FRAME, which is always defined.
grepping for CONFIG_AS_CFI_SIGNAL_FRAME, I see another use in arch/arc/kernel/unwind.c. This change will cause inclusion of additional code there, whereas for binutils produced within the past ten years, there was not.
Quoted 37 lines
Signed-off-by Masahiro Yamada <[email protected]>---
arch/x86/Makefile | 6 ++---- arch/x86/include/asm/dwarf2.h | 5 ----- 2 files changed, 2 insertions(+), 9 deletions(-)arch/x86/Makefile +2
-4@@ -177,8 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -# is .cfi_signal_frame supported too? -cfi-sigframe := $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1) cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1) # does binutils support specific instructions?@@ -190,8 +188,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi-sigframe) $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)arch/x86/include/asm/dwarf2.h +0
-0
arch/x86/include/asm/dwarf2.h line 23
Quoted 6 lines
arch/x86/include/asm/dwarf2.h +0
-2@@ -20,12 +20,7 @@#define CFI_RESTORE_STATE .cfi_restore_state#define CFI_UNDEFINED .cfi_undefined#define CFI_ESCAPE .cfi_escape - -#ifdef CONFIG_AS_CFI_SIGNAL_FRAME #define CFI_SIGNAL_FRAME .cfi_signal_frame
Has no uses in the kernel.
Quoted 10 lines
arch/x86/include/asm/dwarf2.h +0
-4-#else -#define CFI_SIGNAL_FRAME -#endif #if defined(CONFIG_AS_CFI_SECTIONS )#ifndef BUILD_VDSO --2.17.1
--
Signature · 2 lines
Thanks, ~Nick Desaulniers
PATCH 4/7 x86: remove always-defined CONFIG_AS_CFI_SECTIONS
In reply to Masahiro YamadaCONFIG_AS_CFI_SECTIONS was introduced by commit 9e565292270a ("x86:
Use .cfi_sections for assembly code").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_CFI_SECTIONS, which is always defined.
---
arch/x86/Makefile | 6 ++---- arch/x86/include/asm/dwarf2.h | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-)
arch/x86/Makefile +2 -4
@@ -177,8 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1) - # does binutils support specific instructions? asinstr += $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1) avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)
@@ -188,8 +186,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
arch/x86/include/asm/dwarf2.h +0 -2
@@ -22,7 +22,6 @@#define CFI_ESCAPE .cfi_escape#define CFI_SIGNAL_FRAME .cfi_signal_frame -#if defined(CONFIG_AS_CFI_SECTIONS )#ifndef BUILD_VDSO /* * Emit CFI data in .debug_frame sections, not .eh_frame sections.
@@ -39,6 +38,5 @@*/ .cfi_sections .eh_frame, .debug_frame#endif -#endif #endif /* _ASM_X86_DWARF2_H */
Signature · 1 line
2.17.1
Re: [PATCH 4/7] x86: remove always-defined CONFIG_AS_CFI_SECTIONS
Quoted 7 lines · Masahiro Yamada
CONFIG_AS_CFI_SECTIONSwas introduced by commit9e565292270a("x86:
Use .cfi_sections for assembly code").We raise the minimal supported binutils version from time to time. The last bump was commit
1fb12b35e5ff("kbuild: Raise the minimum required binutils version to 2.21").
Looks like 2.21 was released in 2010, binutils gained support for cfi_sections in 2009. There's been some bug fixes to its support over the years, but we can always add more specific checks later if necessary.
Quoted 63 lines
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove
CONFIG_AS_CFI_SECTIONS, which is always defined.Signed-off-by Masahiro Yamada <[email protected]>---
arch/x86/Makefile | 6 ++---- arch/x86/include/asm/dwarf2.h | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-)arch/x86/Makefile +2
-4@@ -177,8 +177,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -cfi-sections := $(call as-instr,.cfi_sections .debug_frame,-DCONFIG_AS_CFI_SECTIONS=1) - # does binutils support specific instructions? asinstr += $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1) avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1)@@ -188,8 +186,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(cfi-sections) $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)arch/x86/include/asm/dwarf2.h +0
-3@@ -22,7 +22,6 @@#define CFI_ESCAPE .cfi_escape#define CFI_SIGNAL_FRAME .cfi_signal_frame -#if defined(CONFIG_AS_CFI_SECTIONS )#ifndef BUILD_VDSO /* * Emit CFI data in .debug_frame sections, not .eh_frame sections. @@ -39,6 +38,5 @@*/ .cfi_sections .eh_frame, .debug_frame#endif -#endif #endif /* _ASM_X86_DWARF2_H */ --2.17.1
--
You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200323020844.17064-5-masahiroy%40kernel.org.
Signature · 2 lines
Thanks, ~Nick Desaulniers
PATCH 5/7 x86: remove always-defined CONFIG_AS_SSSE3
In reply to Masahiro YamadaCONFIG_AS_SSSE3 was introduced by commit 75aaf4c3e6a4 ("x86/raid6:
correctly check for assembler capabilities").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_SSSE3, which is always defined.
---
arch/x86/Makefile | 5 ++--- arch/x86/crypto/blake2s-core.S | 2 -- lib/raid6/algos.c | 2 -- lib/raid6/recov_ssse3.c | 6 ------ lib/raid6/test/Makefile | 3 --- 5 files changed, 2 insertions(+), 16 deletions(-)
arch/x86/Makefile +2 -3
@@ -178,7 +178,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) endif # does binutils support specific instructions? -asinstr += $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1) avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1) avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1) avx512_instr :=$(call as-instr,vpmovm2b %k1$(comma)%zmm5,-DCONFIG_AS_AVX512=1)
@@ -186,8 +185,8 @@ sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI= sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(asinstr) $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
arch/x86/crypto/blake2s-core.S +0 -2
@@ -46,7 +46,6 @@ SIGMA2: #endif /* CONFIG_AS_AVX512 */ .text -#ifdef CONFIG_AS_SSSE3 SYM_FUNC_START(blake2s_compress_ssse3) testq %rdx,%rdx je .Lendofloop
@@ -174,7 +173,6 @@ SYM_FUNC_START(blake2s_compress_ssse3) .Lendofloop: ret SYM_FUNC_END(blake2s_compress_ssse3) -#endif /* CONFIG_AS_SSSE3 */ #ifdef CONFIG_AS_AVX512 SYM_FUNC_START(blake2s_compress_avx512)
lib/raid6/algos.c +0 -2
@@ -103,9 +103,7 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {#ifdef CONFIG_AS_AVX2 &raid6_recov_avx2, #endif -#ifdef CONFIG_AS_SSSE3 &raid6_recov_ssse3, -#endif #ifdef CONFIG_S390 &raid6_recov_s390xc, #endif
lib/raid6/recov_ssse3.c +0 -6
@@ -3,8 +3,6 @@* Copyright (C) 2012 Intel Corporation */ -#ifdef CONFIG_AS_SSSE3 -#include <linux/raid/pq.h> #include "x86.h"
@@ -328,7 +326,3 @@ const struct raid6_recov_calls raid6_recov_ssse3 = {#endif .priority = 1, }; - -#else -#warning "your version of binutils lacks SSSE3 support" -#endif
lib/raid6/test/Makefile +0 -3
@@ -34,9 +34,6 @@ endif ifeq ($(IS_X86),yes) OBJS += mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o avx512.o recov_avx512.o - CFLAGS += $(shell echo "pshufb %xmm0, %xmm0" | \ - gcc -c -x assembler - >&/dev/null && \ - rm ./-.o && echo -DCONFIG_AS_SSSE3=1) CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1" | \ gcc -c -x assembler - >&/dev/null && \ rm ./-.o && echo -DCONFIG_AS_AVX2=1)
Signature · 1 line
2.17.1
kbuild test robot
build botRe: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3
I love your patch! Yet something to improve:
Hi Masahiro,
I love your patch! Yet something to improve:
[auto build test ERROR on crypto/master]
[also build test ERROR on v5.6-rc7 next-20200323]
[cannot apply to cryptodev/master tip/x86/core]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/x86-remove-always-defined-CONFIG_AS_-options/20200323-102633 base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git master config: arm-randconfig-a001-20200323 (attached as .config) compiler: arm-linux-gnueabi-gcc (GCC) 9.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag
All errors (new ones prefixed by >>):
>> arm-linux-gnueabi-ld: lib/raid6/algos.o:(.rodata+0x14): undefined reference to `raid6_recov_ssse3'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
kbuild test robot
build botRe: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3
In reply to Masahiro YamadaI love your patch! Yet something to improve:
Hi Masahiro,
I love your patch! Yet something to improve:
[auto build test ERROR on crypto/master]
[also build test ERROR on v5.6-rc7 next-20200323]
[cannot apply to cryptodev/master tip/x86/core]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Masahiro-Yamada/x86-remove-always-defined-CONFIG_AS_-options/20200323-102633 base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git master config: s390-debug_defconfig (attached as .config) compiler: s390-linux-gcc (GCC) 9.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=s390
If you fix the issue, kindly add following tag
All errors (new ones prefixed by >>):
>> s390-linux-ld: lib/raid6/algos.o:(.data.rel.ro+0x30): undefined reference to `raid6_recov_ssse3'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
Re: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3
In reply to Masahiro YamadaQuoted 5 lines · Masahiro Yamada
lib/raid6/algos.c +0
-0
lib/raid6/algos.c const struct raid6_recov_calls *const raid6_recov_algos[] = { · line 109
Quoted 9 lines
lib/raid6/algos.c +0
-2@@ -103,9 +103,7 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {#ifdef CONFIG_AS_AVX2 &raid6_recov_avx2, #endif -#ifdef CONFIG_AS_SSSE3 &raid6_recov_ssse3, -#endif #ifdef CONFIG_S390 &raid6_recov_s390xc, #endif
algos.c is compiled on all platforms, so you'll need to ifdef that x86 section where SSSE3 is no longer guarding it. The pattern in the rest of the file, if you want to follow it, is "#if defined(__x86_64__) && !defined(__arch_um__)". That seems ugly and like there are better ways, but in the interest of uniformity and a lack of desire to rewrite all the raid6 code, I went with that in this cleanup:
Re: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3
Quoted 24 lines · Jason A. Donenfeld
Quoted 5 lines · Masahiro Yamada
lib/raid6/algos.c +0
-0lib/raid6/algos.c const struct raid6_recov_calls *const raid6_recov_algos[] = { · line 109
Quoted 9 lines
lib/raid6/algos.c +0
-2@@ -103,9 +103,7 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {#ifdef CONFIG_AS_AVX2 &raid6_recov_avx2, #endif -#ifdef CONFIG_AS_SSSE3 &raid6_recov_ssse3, -#endif #ifdef CONFIG_S390 &raid6_recov_s390xc, #endif
algos.cis compiled on all platforms, so you'll need to ifdef that x86 section where SSSE3 is no longer guarding it. The pattern in the rest of the file, if you want to follow it, is "#ifdefined(__x86_64__)&& !defined(__arch_um__)". That seems ugly and like there are better ways, but in the interest of uniformity and a lack of desire to rewrite all the raid6 code, I went with that in this cleanup:
Quoted 1 line
Thanks for the pointer,
but I think guarding with CONFIG_X86 makes more sense.
raid6_recov_ssse3 is defined in lib/raid6/recov_ssse3.c, which is guarded by like this:
raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o avx512.o recov_avx512.o
Indeed,
#if defined(__x86_64__) && !defined(__arch_um__)
is ugly.
I wonder why the code was written like that.
I rather want to check a single CONFIG option.
Please see the attached patch.
Quoted 4 lines
--
You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/CAHmME9p3LAnrUMmcGPEUFqY5vOASe8MVk4%3DpzqFRj3E9C-bM%2BQ%40mail.gmail.com.
Signature · 2 lines
Best Regards Masahiro Yamada
From 5b32698b09c156479e16f554d1ad027149a6ed05 Mon Sep 17 00:00:00 2001
From: Masahiro Yamada <[email protected]>
Date: Tue, 24 Mar 2020 05:25:20 +0900
Subject: [PATCH] x86: replace arch macros from compiler with
CONFIG_X86_{32,64}
If the intention is to check i386/x86_64 excluding UML, checking CONFIG_X86_{32,64} is simpler.
--- kernel/signal.c | 2 +- lib/raid6/algos.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
kernel/signal.c +1 -1
@@ -1246,7 +1246,7 @@ static void print_fatal_signal(int signr)struct pt_regs *regs =signal_pt_regs ();pr_info ("potentially unexpected fatal signal %d.\n" , signr); -#if defined(__i386__) && !defined(__arch_um__) +#ifdef CONFIG_X86_32 pr_info ("code at %08lx: " , regs->ip); {int i;
lib/raid6/algos.c +2 -2
@@ -29,7 +29,7 @@ struct raid6_calls raid6_call;EXPORT_SYMBOL_GPL (raid6_call); const struct raid6_calls * const raid6_algos[] = { -#if defined(__i386__) && !defined(__arch_um__) +#ifdef CONFIG_X86_32 #ifdef CONFIG_AS_AVX512 &raid6_avx512x2, &raid6_avx512x1,
@@ -45,7 +45,7 @@ const struct raid6_calls * const raid6_algos[] = { &raid6_mmxx2, &raid6_mmxx1,#endif -#if defined(__x86_64__) && !defined(__arch_um__) +#ifdef CONFIG_X86_64 #ifdef CONFIG_AS_AVX512 &raid6_avx512x4, &raid6_avx512x2,
Signature · 1 line
2.17.1
Re: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3
Quoted 43 lines · Masahiro Yamada
Quoted 24 lines · Jason A. Donenfeld
Quoted 5 lines · Masahiro Yamada
lib/raid6/algos.c +0
-0lib/raid6/algos.c const struct raid6_recov_calls *const raid6_recov_algos[] = { · line 109
Quoted 9 lines
lib/raid6/algos.c +0
-2@@ -103,9 +103,7 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {#ifdef CONFIG_AS_AVX2 &raid6_recov_avx2, #endif -#ifdef CONFIG_AS_SSSE3 &raid6_recov_ssse3, -#endif #ifdef CONFIG_S390 &raid6_recov_s390xc, #endif
algos.cis compiled on all platforms, so you'll need to ifdef that x86 section where SSSE3 is no longer guarding it. The pattern in the rest of the file, if you want to follow it, is "#ifdefined(__x86_64__)&& !defined(__arch_um__)". That seems ugly and like there are better ways, but in the interest of uniformity and a lack of desire to rewrite all the raid6 code, I went with that in this cleanup:Quoted 1 line
Thanks for the pointer,
but I think guarding withCONFIG_X86makes more sense.
raid6_recov_ssse3is defined inlib/raid6/recov_ssse3.c, which is guarded by like this:raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o avx512.o recov_avx512.o
Indeed,
#if
defined(__x86_64__)&& !defined(__arch_um__)
Quoted 7 lines
is ugly.
I wonder why the code was written like that.
I rather want to check a single CONFIG option.
Please see the attached patch.
Seems better indeed. Looks like you've cleaned up multiple cases.
Now if you could only tell me what is wrong with my series... "Your series does not work correctly. I will comment why later." I've been at the edge of my seat, Fermat's last theorem style. :)
By the way, it looks like 5.7 will be raising the minimum binutils to 2.23: https://lore.kernel.org/lkml/[email protected]/ In light of this, I'll place another patch on top of my branch handling that transition.
Jason
Re: [PATCH 5/7] x86: remove always-defined CONFIG_AS_SSSE3
Quoted 4 lines · Jason A. Donenfeld
By the way, it looks like 5.7 will be raising the minimum binutils to 2.23: https://lore.kernel.org/lkml/[email protected]/ In light of this, I'll place another patch on top of my branch handling that transition.
That now lives at the top of the usual branch:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
PATCH 6/7 x86: remove always-defined CONFIG_AS_AVX
In reply to Masahiro YamadaCONFIG_AS_AVX was introduced by commit ea4d26ae24e5 ("raid5: add AVX optimized RAID5 checksumming").
We raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
I confirmed the code in $(call as-instr,...) can be assembled by the binutils 2.21 assembler and also by LLVM integrated assembler.
Remove CONFIG_AS_AVX, which is always defined.
---
arch/x86/Makefile | 5 ++- arch/x86/crypto/Makefile | 32 +++++++------------ arch/x86/crypto/aesni-intel_avx-x86_64.S | 3 -- arch/x86/crypto/aesni-intel_glue.c | 14 +------- arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 8 ----- arch/x86/crypto/poly1305_glue.c | 6 ++-- arch/x86/crypto/sha1_ssse3_asm.S | 4 --- arch/x86/crypto/sha1_ssse3_glue.c | 9 +----- arch/x86/crypto/sha256-avx-asm.S | 3 -- arch/x86/crypto/sha256_ssse3_glue.c | 8 +---- arch/x86/crypto/sha512-avx-asm.S | 2 -- arch/x86/crypto/sha512_ssse3_glue.c | 7 +--- arch/x86/include/asm/xor_avx.h | 9 ------ 13 files changed, 21 insertions(+), 89 deletions(-)
arch/x86/Makefile +2 -3
@@ -178,15 +178,14 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) endif # does binutils support specific instructions? -avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1) avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1) avx512_instr :=$(call as-instr,vpmovm2b %k1$(comma)%zmm5,-DCONFIG_AS_AVX512=1) sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI=1) sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) -KBUILD_AFLAGS += $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) -KBUILD_CFLAGS += $(avx_instr) $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_AFLAGS += $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) +KBUILD_CFLAGS += $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr) KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
arch/x86/crypto/Makefile +12 -20
@@ -5,7 +5,6 @@ OBJECT_FILES_NON_STANDARD := y -avx_supported := $(call as-instr,vpxor %xmm0$(comma)%xmm0$(comma)%xmm0,yes,no) avx2_supported := $(call as-instr,vpgatherdd %ymm0$(comma)(%eax$(comma)%ymm1\ $(comma)4)$(comma)%ymm2,yes,no) avx512_supported :=$(call as-instr,vpmovm2b %k1$(comma)%zmm5,yes,no)
@@ -47,15 +46,12 @@ ifeq ($(adx_supported),yes) endif # These modules require assembler to support AVX. -ifeq ($(avx_supported),yes) - obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += \ - camellia-aesni-avx-x86_64.o - obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o - obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o - obj-$(CONFIG_CRYPTO_TWOFISH_AVX_X86_64) += twofish-avx-x86_64.o - obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o - obj-$(CONFIG_CRYPTO_BLAKE2S_X86) += blake2s-x86_64.o -endif +obj-$(CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64) += camellia-aesni-avx-x86_64.o +obj-$(CONFIG_CRYPTO_CAST5_AVX_X86_64) += cast5-avx-x86_64.o +obj-$(CONFIG_CRYPTO_CAST6_AVX_X86_64) += cast6-avx-x86_64.o +obj-$(CONFIG_CRYPTO_TWOFISH_AVX_X86_64) += twofish-avx-x86_64.o +obj-$(CONFIG_CRYPTO_SERPENT_AVX_X86_64) += serpent-avx-x86_64.o +obj-$(CONFIG_CRYPTO_BLAKE2S_X86) += blake2s-x86_64.o # These modules require assembler to support AVX2. ifeq ($(avx2_supported),yes)
@@ -83,16 +79,12 @@ ifneq ($(CONFIG_CRYPTO_POLY1305_X86_64),) targets += poly1305-x86_64-cryptogams.S endif -ifeq ($(avx_supported),yes) - camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o \ - camellia_aesni_avx_glue.o - cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o - cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o - twofish-avx-x86_64-y := twofish-avx-x86_64-asm_64.o \ - twofish_avx_glue.o - serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o \ - serpent_avx_glue.o -endif +camellia-aesni-avx-x86_64-y := camellia-aesni-avx-asm_64.o \ + camellia_aesni_avx_glue.o +cast5-avx-x86_64-y := cast5-avx-x86_64-asm_64.o cast5_avx_glue.o +cast6-avx-x86_64-y := cast6-avx-x86_64-asm_64.o cast6_avx_glue.o +twofish-avx-x86_64-y := twofish-avx-x86_64-asm_64.o twofish_avx_glue.o +serpent-avx-x86_64-y := serpent-avx-x86_64-asm_64.o serpent_avx_glue.o ifeq ($(avx2_supported),yes) camellia-aesni-avx2-y := camellia-aesni-avx2-asm_64.o camellia_aesni_avx2_glue.o
arch/x86/crypto/aesni-intel_avx-x86_64.S +0 -3
@@ -886,7 +886,6 @@ _less_than_8_bytes_left_\@: _partial_block_done_\@: .endm # PARTIAL_BLOCK -#ifdef CONFIG_AS_AVX ############################################################################### # GHASH_MUL MACRO to implement: Data*HashKey mod (128,127,126,121,0) # Input: A and B (128-bits each, bit-reflected)
@@ -1869,8 +1868,6 @@ key_256_finalize: ret SYM_FUNC_END(aesni_gcm_finalize_avx_gen2) -#endif /* CONFIG_AS_AVX */ - #ifdef CONFIG_AS_AVX2 ############################################################################### # GHASH_MUL MACRO to implement: Data*HashKey mod (128,127,126,121,0)
arch/x86/crypto/aesni-intel_glue.c +1 -13
@@ -185,7 +185,6 @@ static const struct aesni_gcm_tfm_s aesni_gcm_tfm_sse = { .finalize = &aesni_gcm_finalize, }; -#ifdef CONFIG_AS_AVX asmlinkage void aes_ctr_enc_128_avx_by8(const u8 *in, u8 *iv,void *keys,u8 *out,unsigned int num_bytes); asmlinkage void aes_ctr_enc_192_avx_by8(const u8 *in, u8 *iv,
@@ -234,8 +233,6 @@ static const struct aesni_gcm_tfm_s aesni_gcm_tfm_avx_gen2 = { .finalize = &aesni_gcm_finalize_avx_gen2, }; -#endif -#ifdef CONFIG_AS_AVX2 /* * asmlinkage void aesni_gcm_init_avx_gen4()
@@ -476,7 +473,6 @@ static void ctr_crypt_final(struct crypto_aes_ctx *ctx,crypto_inc (ctrblk,AES_BLOCK_SIZE ); } -#ifdef CONFIG_AS_AVX static void aesni_ctr_enc_avx_tfm (struct crypto_aes_ctx *ctx,u8 *out,const u8 *in,unsigned int len,u8 *iv) {
@@ -493,7 +489,6 @@ static void aesni_ctr_enc_avx_tfm(struct crypto_aes_ctx *ctx, u8 *out,else aes_ctr_enc_256_avx_by8 (in, iv, (void *)ctx, out, len); } -#endif static int ctr_crypt (struct skcipher_request *req) {
@@ -715,10 +710,8 @@ static int gcmaes_crypt_by_sg(bool enc, struct aead_request *req,if (left <AVX_GEN4_OPTSIZE && gcm_tfm == &aesni_gcm_tfm_avx_gen4) gcm_tfm = &aesni_gcm_tfm_avx_gen2;#endif -#ifdef CONFIG_AS_AVX if (left <AVX_GEN2_OPTSIZE && gcm_tfm == &aesni_gcm_tfm_avx_gen2) gcm_tfm = &aesni_gcm_tfm_sse; -#endif /* Linearize assoc, if not already linear */ if (req->src->length >= assoclen && req->src->length &&
@@ -1082,24 +1075,19 @@ static int __init aesni_init(void) aesni_gcm_tfm = &aesni_gcm_tfm_avx_gen4; } else#endif -#ifdef CONFIG_AS_AVX if (boot_cpu_has (X86_FEATURE_AVX )) {pr_info ("AVX version of gcm_enc/dec engaged.\n" ); aesni_gcm_tfm = &aesni_gcm_tfm_avx_gen2; - } else -#endif - { + }else {pr_info ("SSE version of gcm_enc/dec engaged.\n" ); aesni_gcm_tfm = &aesni_gcm_tfm_sse; } aesni_ctr_enc_tfm = aesni_ctr_enc; -#ifdef CONFIG_AS_AVX if (boot_cpu_has (X86_FEATURE_AVX )) {/* optimize performance of ctr mode encryption transform */ aesni_ctr_enc_tfm = aesni_ctr_enc_avx_tfm;pr_info ("AES CTR mode by8 optimization enabled\n" ); } -#endif #endif err =crypto_register_alg (&aesni_cipher_alg);
arch/x86/crypto/poly1305-x86_64-cryptogams.pl +0 -8
@@ -404,10 +404,6 @@ ___ &end_function("poly1305_emit_x86_64"); if ($avx) { -if($kernel) { - $code .= "#ifdef CONFIG_AS_AVX\n"; -} - ######################################################################## # Layout of opaque area is following. #
@@ -1516,10 +1512,6 @@ $code.=<<___; ___ &end_function("poly1305_emit_avx"); -if ($kernel) { - $code .= "#endif\n"; -} - if ($avx>1) { if ($kernel) {
arch/x86/crypto/poly1305_glue.c +3 -3
@@ -94,7 +94,7 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len,BUILD_BUG_ON (PAGE_SIZE <POLY1305_BLOCK_SIZE ||PAGE_SIZE %POLY1305_BLOCK_SIZE ); -if (!IS_ENABLED (CONFIG_AS_AVX ) || !static_branch_likely (&poly1305_use_avx) || +if (!static_branch_likely (&poly1305_use_avx) || (len < (POLY1305_BLOCK_SIZE *18 ) && !state->is_base2_26) || !crypto_simd_usable ()) {convert_to_base2_64 (ctx);
@@ -123,7 +123,7 @@ static void poly1305_simd_blocks(void *ctx, const u8 *inp, size_t len,static void poly1305_simd_emit (void *ctx,u8 mac[POLY1305_DIGEST_SIZE ],const u32 nonce[4 ]) { -if (!IS_ENABLED (CONFIG_AS_AVX ) || !static_branch_likely (&poly1305_use_avx)) +if (!static_branch_likely (&poly1305_use_avx))poly1305_emit_x86_64 (ctx, mac, nonce);else poly1305_emit_avx (ctx, mac, nonce);
@@ -261,7 +261,7 @@ static struct shash_alg alg = {static int __init poly1305_simd_mod_init (void ) { -if (IS_ENABLED (CONFIG_AS_AVX ) &&boot_cpu_has (X86_FEATURE_AVX ) && +if (boot_cpu_has (X86_FEATURE_AVX ) &&cpu_has_xfeatures (XFEATURE_MASK_SSE |XFEATURE_MASK_YMM ,NULL ))static_branch_enable (&poly1305_use_avx); if (IS_ENABLED(CONFIG_AS_AVX2) && boot_cpu_has(X86_FEATURE_AVX) &&
arch/x86/crypto/sha1_ssse3_asm.S +0 -4
@@ -467,8 +467,6 @@ W_PRECALC_SSSE3 */ SHA1_VECTOR_ASM sha1_transform_ssse3 -#ifdef CONFIG_AS_AVX - .macro W_PRECALC_AVX .purgem W_PRECALC_00_15
@@ -553,5 +551,3 @@ W_PRECALC_AVX * const u8 *data, int blocks); */ SHA1_VECTOR_ASM sha1_transform_avx - -#endif
arch/x86/crypto/sha1_ssse3_glue.c +1 -8
@@ -114,7 +114,6 @@ static void unregister_sha1_ssse3(void)crypto_unregister_shash (&sha1_ssse3_alg); } -#ifdef CONFIG_AS_AVX asmlinkage void sha1_transform_avx(struct sha1_state *state,const u8 *data,int blocks);
@@ -175,13 +174,7 @@ static void unregister_sha1_avx(void)crypto_unregister_shash (&sha1_avx_alg); } -#else /* CONFIG_AS_AVX */ -static inline int register_sha1_avx (void ) {return 0 ; } -static inline void unregister_sha1_avx (void ) { } -#endif /* CONFIG_AS_AVX */ - - -#if defined(CONFIG_AS_AVX2 ) && (CONFIG_AS_AVX ) +#if defined(CONFIG_AS_AVX2 )#define SHA1_AVX2_BLOCK_OPTSIZE 4/* optimal 4*64 bytes of SHA1 blocks */ asmlinkage void sha1_transform_avx2(struct sha1_state *state,
arch/x86/crypto/sha256-avx-asm.S +0 -3
@@ -47,7 +47,6 @@ # This code schedules 1 block at a time, with 4 lanes per block ######################################################################## -#ifdef CONFIG_AS_AVX #include <linux/linkage.h> ## assume buffers not aligned
@@ -498,5 +497,3 @@ _SHUF_00BA: # shuffle xDxC -> DC00 _SHUF_DC00: .octa 0x0b0a090803020100FFFFFFFFFFFFFFFF - -#endif
arch/x86/crypto/sha256_ssse3_glue.c +1 -7
@@ -144,7 +144,6 @@ static void unregister_sha256_ssse3(void) ARRAY_SIZE(sha256_ssse3_algs)); } -#ifdef CONFIG_AS_AVX asmlinkage void sha256_transform_avx(struct sha256_state *state,const u8 *data,int blocks);
@@ -221,12 +220,7 @@ static void unregister_sha256_avx(void) ARRAY_SIZE(sha256_avx_algs)); } -#else -static inline int register_sha256_avx (void ) {return 0 ; } -static inline void unregister_sha256_avx (void ) { } -#endif - -#if defined(CONFIG_AS_AVX2 ) && defined(CONFIG_AS_AVX ) +#if defined(CONFIG_AS_AVX2 ) asmlinkage void sha256_transform_rorx(struct sha256_state *state,const u8 *data,int blocks);
arch/x86/crypto/sha512-avx-asm.S +0 -2
@@ -47,7 +47,6 @@ # ######################################################################## -#ifdef CONFIG_AS_AVX #include <linux/linkage.h> .text
@@ -424,4 +423,3 @@ K512: .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817 -#endif
arch/x86/crypto/sha512_ssse3_glue.c +1 -6
@@ -142,7 +142,6 @@ static void unregister_sha512_ssse3(void) ARRAY_SIZE(sha512_ssse3_algs)); } -#ifdef CONFIG_AS_AVX asmlinkage void sha512_transform_avx(struct sha512_state *state,const u8 *data,int blocks);static bool avx_usable (void )
@@ -218,12 +217,8 @@ static void unregister_sha512_avx(void)crypto_unregister_shashes (sha512_avx_algs,ARRAY_SIZE (sha512_avx_algs)); } -#else -static inline int register_sha512_avx (void ) {return 0 ; } -static inline void unregister_sha512_avx (void ) { } -#endif -#if defined(CONFIG_AS_AVX2 ) && defined(CONFIG_AS_AVX ) +#if defined(CONFIG_AS_AVX2 ) asmlinkage void sha512_transform_rorx(struct sha512_state *state,const u8 *data,int blocks);
arch/x86/include/asm/xor_avx.h +0 -9
@@ -11,8 +11,6 @@* Based on Ingo Molnar and Zach Brown's respective MMX and SSE routines */ -#ifdef CONFIG_AS_AVX -#include <linux/compiler.h> #include <asm/fpu/api.h>
@@ -170,11 +168,4 @@ do { \#define AVX_SELECT (FASTEST ) \ (boot_cpu_has(X86_FEATURE_AVX) && boot_cpu_has(X86_FEATURE_OSXSAVE) ? &xor_block_avx : FASTEST) -#else - -#define AVX_XOR_SPEED {} - -#define AVX_SELECT (FASTEST ) (FASTEST) - -#endif #endif
Signature · 1 line
2.17.1
PATCH 7/7 x86: add comments about the binutils version to support code in as-instr
In reply to Masahiro YamadaWe raise the minimal supported binutils version from time to time. The last bump was commit 1fb12b35e5ff ("kbuild: Raise the minimum required binutils version to 2.21").
We need to keep these as-instr checks because binutils 2.21 does not support them.
I hope this will be a good hint which one can be dropped when we bump the minimal binutils version next time.
As for the Clang/LLVM builds, we require very new LLVM version, so the LLVM integrated assembler supports all of them.
---
arch/x86/Makefile | 5 +++++ 1 file changed, 5 insertions(+)
arch/x86/Makefile +5 -0
@@ -178,10 +178,15 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) endif # does binutils support specific instructions? +# binutils >= 2.22 avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1) +# binutils >= 2.25 avx512_instr :=$(call as-instr,vpmovm2b %k1$(comma)%zmm5,-DCONFIG_AS_AVX512=1) +# binutils >= 2.24 sha1_ni_instr :=$(call as-instr,sha1msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA1_NI=1) +# binutils >= 2.24 sha256_ni_instr :=$(call as-instr,sha256msg1 %xmm0$(comma)%xmm1,-DCONFIG_AS_SHA256_NI=1) +# binutils >= 2.23 adx_instr := $(call as-instr,adox %r10$(comma)%r10,-DCONFIG_AS_ADX=1) KBUILD_AFLAGS += $(avx2_instr) $(avx512_instr) $(sha1_ni_instr) $(sha256_ni_instr) $(adx_instr)
Signature · 1 line
2.17.1
Hey Masahrio,
Thanks for this series. I'll rebase my recent RFC on top of these changes, which makes the work I was doing slightly easier, as there are now fewer flags to deal with.
Jason
Hi again,
I've consolidated your patches and rebased mine on top, and incorporated your useful binutils comments. The result lives here:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
I can submit all of those to the list, if you want, or maybe you can just pull them out of there, include them in your v2, and put them in your tree for 5.7? However you want is fine with me.
Jason
Hi Jason,
Quoted 11 lines · Jason A. Donenfeld
Hi again,
I've consolidated your patches and rebased mine on top, and incorporated your useful binutils comments. The result lives here:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
I can submit all of those to the list, if you want, or maybe you can just pull them out of there, include them in your v2, and put them in your tree for 5.7? However you want is fine with me.
Your series does not work correctly.
I will comment why later.
Signature · 2 lines
Best Regards Masahiro Yamada
Quoted 12 lines · Masahiro Yamada
Hi Jason,
Quoted 8 lines · Jason A. Donenfeld
Hi again,
I've consolidated your patches and rebased mine on top, and incorporated your useful binutils comments. The result lives here:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
Quoted 8 lines
Quoted 3 lines
I can submit all of those to the list, if you want, or maybe you can just pull them out of there, include them in your v2, and put them in your tree for 5.7? However you want is fine with me.
Your series does not work correctly.
I will comment why later.
Bummer, okay. Looking forward to learning what's up. Also, if some parts of it are useful (like the resorting and organizing of arch/x86/crypto/Makefile), feel free to cannibalize it, keeping what's useful and discarding what's not.
Jason
Quoted 19 lines · Jason A. Donenfeld
Quoted 17 lines · Masahiro Yamada
Hi Jason,
Quoted 11 lines · Jason A. Donenfeld
Hi again,
I've consolidated your patches and rebased mine on top, and incorporated your useful binutils comments. The result lives here:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
I can submit all of those to the list, if you want, or maybe you can just pull them out of there, include them in your v2, and put them in your tree for 5.7? However you want is fine with me.
Quoted 9 lines
Quoted 3 lines
Your series does not work correctly.
I will comment why later.
Bummer, okay. Looking forward to learning what's up. Also, if some parts of it are useful (like the resorting and organizing of
arch/x86/crypto/Makefile), feel free to cannibalize it, keeping what's useful and discarding what's not.
Hi Jason,
I have your patches on my radar.
I have not checked your Kconfig changes are really working, especially I looked at [2] and comment on this.
I would have expected your arch/x86/Kconfig.assembler file as arch/x86/crypto/Kconfig (source include needs to be adapted in arch/x86/Kconfig).
What about a commit subject like "x86: crypto: Probe assembler options via Kconfig instead of makefile"?
Not sure if the commit message needs some massage?
Maybe this is all irrelevant when Masahiro has commented.
Thanks.
Regards,
- Sedat -
[1] https://git.kernel.org/pub/scm/linux/kernel/git/zx2c4/linux.git/log/?h=jd/kconfig-assembler-support
[2] https://git.kernel.org/pub/scm/linux/kernel/git/zx2c4/linux.git/commit/?h=jd/kconfig-assembler-support&id=ac483ff6fb4c785cd0b10d9756b71696829cd117
Quoted 7 lines · Sedat Dilek
Hi Jason,
I have not checked yourKconfigchanges are really working, especially I looked at [2] and comment on this.I would have expected your
arch/x86/Kconfig.assemblerfile asarch/x86/crypto/Kconfig(source include needs to be adapted inarch/x86/Kconfig).
CONFIG_AS_* is required for more than just the crypto.
Quoted 2 lines
What about a commit subject like "x86: crypto: Probe assembler options via
Kconfiginstead of makefile"?
Thanks. Will fix silly verbiage and update branch.
Jason
Quoted 6 lines · Jason A. Donenfeld
Quoted 3 lines
I would have expected your
arch/x86/Kconfig.assemblerfile asarch/x86/crypto/Kconfig(source include needs to be adapted inarch/x86/Kconfig).CONFIG_AS_* is required for more than just the crypto.
OK. I was not aware of this.
Quoted 5 lines
Quoted 2 lines
What about a commit subject like "x86: crypto: Probe assembler options via
Kconfiginstead of makefile"?Thanks. Will fix silly verbiage and update branch.
Just looked to what I see new in [0].
Would you mind to add the patch
"Documentation/changes: Raise minimum supported binutils version to 2.23"
from [1] to your series, please?
For the meantime and clarification - you can drop it later (with adding Link-tag to [1]) when it landed in tip Git [2] where I am not seeing it.
Thanks for taking care to you an Masah*e*ro :-).
- Sedat -
[0] https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
[1] https://lore.kernel.org/lkml/[email protected]/
[2] https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/
Hi Jason,
Quoted 19 lines · Jason A. Donenfeld
Quoted 17 lines · Masahiro Yamada
Hi Jason,
Quoted 11 lines · Jason A. Donenfeld
Hi again,
I've consolidated your patches and rebased mine on top, and incorporated your useful binutils comments. The result lives here:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
I can submit all of those to the list, if you want, or maybe you can just pull them out of there, include them in your v2, and put them in your tree for 5.7? However you want is fine with me.
Quoted 9 lines
Quoted 3 lines
Your series does not work correctly.
I will comment why later.
Bummer, okay. Looking forward to learning what's up. Also, if some parts of it are useful (like the resorting and organizing of
arch/x86/crypto/Makefile), feel free to cannibalize it, keeping what's useful and discarding what's not.
The answer is mostly in my previous reply to Linus:
https://lkml.org/lkml/2020/3/13/27
I think this problem would happen for CONFIG_AS_CFI and CONFIG_AS_ADX since the register in instruction code is machine-bit dependent.
The former is OK wince we are planning to remove it.
We need to handle -m64 for the latter. Otherwise, a problem like commit 3a7c733165a4799fa1 would happen.
So, I think we should merge this
https://lore.kernel.org/patchwork/patch/1214332/
then, fix-up CONFIG_AS_ADX on top of it.
(Or, if we do not need to rush,
we can delete CONFIG_AS_ADX entirely after we bump the binutils version to 2.23)
Thanks.
Signature · 2 lines
Best Regards Masahiro Yamada
Quoted 51 lines · Masahiro Yamada
Hi Jason,
Quoted 19 lines · Jason A. Donenfeld
Quoted 17 lines · Masahiro Yamada
Hi Jason,
Quoted 11 lines · Jason A. Donenfeld
Hi again,
I've consolidated your patches and rebased mine on top, and incorporated your useful binutils comments. The result lives here:
https://git.zx2c4.com/linux-dev/log/?h=jd/kconfig-assembler-support
I can submit all of those to the list, if you want, or maybe you can just pull them out of there, include them in your v2, and put them in your tree for 5.7? However you want is fine with me.
Quoted 9 lines
Quoted 3 lines
Your series does not work correctly.
I will comment why later.
Bummer, okay. Looking forward to learning what's up. Also, if some parts of it are useful (like the resorting and organizing of
arch/x86/crypto/Makefile), feel free to cannibalize it, keeping what's useful and discarding what's not.The answer is mostly in my previous reply to Linus:
https://lkml.org/lkml/2020/3/13/27I think this problem would happen for
CONFIG_AS_CFIandCONFIG_AS_ADXsince the register in instruction code is machine-bit dependent.The former is OK wince we are planning to remove it.
We need to handle -m64 for the latter. Otherwise, a problem like commit
3a7c733165a4799fa1would happen.
Quoted 7 lines
So, I think we should merge this
https://lore.kernel.org/patchwork/patch/1214332/
then, fix-upCONFIG_AS_ADXon top of it.(Or, if we do not need to rush,
we can deleteCONFIG_AS_ADXentirely after we bump the binutils version to 2.23)
Oh, gotcha. The easiest thing to do for that case would actually be passing 32-bit registers to adox, which are valid. I'll fix that up in my tree.
And then indeed it looks like the binutils bump is coming anyway for 5.7.
Your flags patch looks fine and potentially useful for other things down the line though. I suppose you had in mind something like:
def_bool $(as-instr,...,-m64) if 64BITdef_bool $(as-instr,...,-m32) if !64BIT
Anyway, I'll fix up the ADX code to be biarch like the AVX test code.
Jason
Quoted 6 lines · Masahiro Yamada
arch/x86/Makefiletests instruction code by $(call as-instr, ...)Some of them are very old.
For example, the check forCONFIG_AS_CFIdates back to 2006.
Quoted 7 lines
We raise GCC versions from time to time, and we clean old code away. The same policy applied to binutils.
The current minimal supported version of binutils is 2.21
This is new enough to recognize the instruction in most of as-instr calls.
I'm quite happy to see this series; a few weekends ago I was playing around with adding dwarf-5 support to the Linux kernel, and was looking at these noticing there was quite a bit of cruft. Unfortunately, I got detoured filing bugs against GNU as for dwarf-5 bugs, but the developers were very responsive and fixed them all. I should go find and dust off that patchset. In the meantime, I'll try to help review these patches. Thank you for sending them.
Quoted 40 lines
Masahiro Yamada (7):
x86: remove unneededdefined(__ASSEMBLY__)check fromasm/dwarf2.h
x86: remove always-definedCONFIG_AS_CFI
x86: remove always-definedCONFIG_AS_CFI_SIGNAL_FRAME
x86: remove always-definedCONFIG_AS_CFI_SECTIONS
x86: remove always-definedCONFIG_AS_SSSE3
x86: remove always-definedCONFIG_AS_AVX
x86: add comments about the binutils version to support code in
as-instrarch/x86/Makefile | 21 +++------ arch/x86/crypto/Makefile | 32 ++++++-------- arch/x86/crypto/aesni-intel_avx-x86_64.S | 3 -- arch/x86/crypto/aesni-intel_glue.c | 14 +----- arch/x86/crypto/blake2s-core.S | 2 - arch/x86/crypto/poly1305-x86_64-cryptogams.pl | 8 ---- arch/x86/crypto/poly1305_glue.c | 6 +-- arch/x86/crypto/sha1_ssse3_asm.S | 4 -- arch/x86/crypto/sha1_ssse3_glue.c | 9 +--- arch/x86/crypto/sha256-avx-asm.S | 3 -- arch/x86/crypto/sha256_ssse3_glue.c | 8 +--- arch/x86/crypto/sha512-avx-asm.S | 2 - arch/x86/crypto/sha512_ssse3_glue.c | 7 +-- arch/x86/include/asm/dwarf2.h | 43 ------------------- arch/x86/include/asm/xor_avx.h | 9 ---- lib/raid6/algos.c | 2 - lib/raid6/recov_ssse3.c | 6 --- lib/raid6/test/Makefile | 3 -- 18 files changed, 26 insertions(+), 156 deletions(-)--
2.17.1--
You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200323020844.17064-1-masahiroy%40kernel.org.
Signature · 2 lines
Thanks, ~Nick Desaulniers