Skip to content

Commit 0ee695a

Browse files
nathanchancepalmer-dabbelt
authored andcommitted
kbuild: Add -Wa,--fatal-warnings to as-instr invocation
Certain assembler instruction tests may only induce warnings from the assembler on an unsupported instruction or option, which causes as-instr to succeed when it was expected to fail. Some tests workaround this limitation by additionally testing that invalid input fails as expected. However, this is fragile if the assembler is changed to accept the invalid input, as it will cause the instruction/option to be unavailable like it was unsupported even when it is. Use '-Wa,--fatal-warnings' in the as-instr macro to turn these warnings into hard errors, which avoids this fragility and makes tests more robust and well formed. Cc: [email protected] Suggested-by: Eric Biggers <[email protected]> Signed-off-by: Nathan Chancellor <[email protected]> Tested-by: Eric Biggers <[email protected]> Tested-by: Andy Chiu <[email protected]> Reviewed-by: Andy Chiu <[email protected]> Tested-by: Conor Dooley <[email protected]> Reviewed-by: Conor Dooley <[email protected]> Acked-by: Masahiro Yamada <[email protected]> Link: https://lore.kernel.org/r/20240125-fix-riscv-option-arch-llvm-18-v1-1-390ac9cc3cd0@kernel.org Signed-off-by: Palmer Dabbelt <[email protected]>
1 parent 6613476 commit 0ee695a

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

scripts/Kconfig.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ ld-option = $(success,$(LD) -v $(1))
3333

3434
# $(as-instr,<instr>)
3535
# Return y if the assembler supports <instr>, n otherwise
36-
as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -c -x assembler-with-cpp -o /dev/null -)
36+
as-instr = $(success,printf "%b\n" "$(1)" | $(CC) $(CLANG_FLAGS) -Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o /dev/null -)
3737

3838
# check if $(CC) and $(LD) exist
3939
$(error-if,$(failure,command -v $(CC)),C compiler '$(CC)' not found)

scripts/Makefile.compiler

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ as-option = $(call try-run,\
3838
# Usage: aflags-y += $(call as-instr,instr,option1,option2)
3939

4040
as-instr = $(call try-run,\
41-
printf "%b\n" "$(1)" | $(CC) -Werror $(CLANG_FLAGS) $(KBUILD_AFLAGS) -c -x assembler-with-cpp -o "$$TMP" -,$(2),$(3))
41+
printf "%b\n" "$(1)" | $(CC) -Werror $(CLANG_FLAGS) $(KBUILD_AFLAGS) -Wa$(comma)--fatal-warnings -c -x assembler-with-cpp -o "$$TMP" -,$(2),$(3))
4242

4343
# __cc-option
4444
# Usage: MY_CFLAGS += $(call __cc-option,$(CC),$(MY_CFLAGS),-march=winchip-c6,-march=i586)

0 commit comments

Comments
 (0)