Unconditionally compile romstage with -Wa,--divide

The option --divide is required by our assembler to ensure that
'/' is not parsed as a comment sign but as a division, because
some of the cache as ram code is using divisions.

The --divide parameter has been part of the GNU as since binutils 2.17.
Hence, compile romstage (which contains cache as ram init) with
-Wa,--divide unconditionally instead of probing for it and adding it to
all compiler invocations (because that is causing random trouble with
clang when compiling the SMM code and calling gcc with --divide instead of
-Wa,--divide)

Change-Id: Ideefb2a243dc1d657ba415a99c1f8ab1d93800e0
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-on: http://review.coreboot.org/10817
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Stefan Reinauer 2015-07-07 00:32:47 +02:00
parent faa76f5548
commit 4c8fa2aad2
2 changed files with 3 additions and 8 deletions

View File

@ -247,6 +247,9 @@ $(objgenerated)/crt0.S: $$(crt0s)
# Compiling crt0 with -g seems to trigger https://sourceware.org/bugzilla/show_bug.cgi?id=6428 # Compiling crt0 with -g seems to trigger https://sourceware.org/bugzilla/show_bug.cgi?id=6428
romstage-S-ccopts += -I. -g0 romstage-S-ccopts += -I. -g0
# Some cache as ram code is doing divisions
romstage-S-ccopts +=-Wa,--divide
endif # CONFIG_ARCH_ROMSTAGE_X86_32 / CONFIG_ARCH_ROMSTAGE_X86_64 endif # CONFIG_ARCH_ROMSTAGE_X86_32 / CONFIG_ARCH_ROMSTAGE_X86_64
############################################################################### ###############################################################################

View File

@ -143,10 +143,6 @@ detect_special_flags() {
case "$architecture" in case "$architecture" in
x86) x86)
testcc "$GCC" "$CFLAGS_GCC -Wa,--divide" &&
CFLAGS_GCC="$CFLAGS_GCC -Wa,--divide"
testcc "$CLANG" "$CFLAGS_CLANG -Wa,--divide" &&
CFLAGS_CLANG="$CFLAGS_CLANG -Wa,--divide"
# Always build for i686 -- no sse/mmx instructions since SMM # Always build for i686 -- no sse/mmx instructions since SMM
# modules are compiled using these flags. Note that this # modules are compiled using these flags. Note that this
# doesn't prevent a project using xcompile to explicitly # doesn't prevent a project using xcompile to explicitly
@ -154,10 +150,6 @@ detect_special_flags() {
CFLAGS_GCC="$CFLAGS_GCC -march=i686" CFLAGS_GCC="$CFLAGS_GCC -march=i686"
;; ;;
x64) x64)
testcc "$GCC" "$CFLAGS_GCC -Wa,--divide" &&
CFLAGS_GCC="$CFLAGS_GCC -Wa,--divide"
testcc "$CLANG" "$CFLAGS_CLANG -Wa,--divide" &&
CFLAGS_CLANG="$CFLAGS_CLANG -Wa,--divide"
;; ;;
mipsel) mipsel)
testcc "$GCC" "$CFLAGS_GCC -mno-abicalls -fno-pic" && \ testcc "$GCC" "$CFLAGS_GCC -mno-abicalls -fno-pic" && \