summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Garber <jgarber1@ualberta.ca>2019-10-02 13:35:08 -0600
committerPatrick Georgi <pgeorgi@google.com>2020-02-03 16:46:00 +0000
commit84c7d2dfeac2b1b4f7c0449744c58c3f80a8607d (patch)
tree4d70b71497e1135b300c45f2e3dc244b0735acc9
parent4519277ca2e11ed728754efbe13e1a444c479da3 (diff)
downloadcoreboot-84c7d2dfeac2b1b4f7c0449744c58c3f80a8607d.tar.xz
xcompile: Disable null pointer optimizations
According to the C standard, accessing the NULL pointer (memory at address zero) is undefined behaviour, and so GCC is allowed to optimize it out. Of course, accessing this memory location is sometimes necessary, so this optimization can be disabled using -fno-delete-null-pointer-checks. This is already done in coreboot, but adding it to xcompile will also disable it for all the payloads. For example, coreinfo compiled with LTO libpayload crashes when this flag isn't set, presumably because the compiler is optimizing something out that it shouldn't. Change-Id: I4492277f02418ade3fe7a75304e8e0611f49ef36 Signed-off-by: Jacob Garber <jgarber1@ualberta.ca> Reviewed-on: https://review.coreboot.org/c/coreboot/+/38289 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--Makefile.inc1
-rwxr-xr-xutil/xcompile/xcompile2
2 files changed, 1 insertions, 2 deletions
diff --git a/Makefile.inc b/Makefile.inc
index e9c5054e8a..4ca173b866 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -414,7 +414,6 @@ CFLAGS_common += -Wstrict-aliasing -Wshadow -Wdate-time -Wtype-limits -Wvla
CFLAGS_common += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
CFLAGS_common += -ffunction-sections -fdata-sections -fno-pie
ifeq ($(CONFIG_COMPILER_GCC),y)
-CFLAGS_common += -fno-delete-null-pointer-checks
# Don't add these GCC specific flags when running scan-build
ifeq ($(CCC_ANALYZER_OUTPUT_FORMAT),)
CFLAGS_common += -Wno-packed-not-aligned
diff --git a/util/xcompile/xcompile b/util/xcompile/xcompile
index 8335c347fb..a116407b8b 100755
--- a/util/xcompile/xcompile
+++ b/util/xcompile/xcompile
@@ -221,7 +221,7 @@ SUBARCH_SUPPORTED+=${TSUPP-${TARCH}}
GCC_CC_${TARCH}:=${GCC}
GCC_CFLAGS_${TARCH}:=${CFLAGS_GCC}
# Generally available for GCC's cc1:
-GCC_CFLAGS_${TARCH}+=-Wlogical-op
+GCC_CFLAGS_${TARCH}+=-fno-delete-null-pointer-checks -Wlogical-op
GCC_ADAFLAGS_${TARCH}:=${CFLAGS_GCC}
GCC_COMPILER_RT_${TARCH}:=${CC_RT_GCC}
GCC_COMPILER_RT_FLAGS_${TARCH}:=${CC_RT_EXTRA_GCC}