summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Green <evgreen@chromium.org>2021-07-28 10:10:40 -0700
committerCommit Bot <commit-bot@chromium.org>2021-08-02 15:43:22 +0000
commit1821e9423af84c7a126a4a15303c6492dd44e94b (patch)
treeb878e1e54b7497cbd74e57ebbef4c50dcc4ee975
parentfbdb8051c96eb0ec7f533ef091d4b49a8c98d5b3 (diff)
downloadchrome-ec-1821e9423af84c7a126a4a15303c6492dd44e94b.tar.gz
make: Compile host tests in 32-bit mode
Compile the host tests in 32-bit mode instead of 64-bit mode as it's more likely to match the actual environments our ECs run on. For instance, in 32-bit mode the tests might actually have a prayer of finding a torn read or write bug, whereas in 64-bit mode 64-bit integers are always operated on atomically. BUG=b:179062230 BRANCH=none TEST=make -j runhosttests BOARD=host on x86_64 and i686 Signed-off-by: Evan Green <evgreen@chromium.org> Change-Id: I02517066337ec08c311c1f7daae5d3de84b1f4c2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3059231 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
-rw-r--r--Makefile.rules2
-rw-r--r--Makefile.toolchain4
-rw-r--r--core/host/build.mk4
3 files changed, 7 insertions, 3 deletions
diff --git a/Makefile.rules b/Makefile.rules
index 8cd04edf38..0cdd724c9d 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -64,7 +64,7 @@ export STATIC_VERSION
# a ccache issue.
# commands to build all targets
-cmd_libec = $(LD) -r $^ -o $@.1.o ${silent_err} && \
+cmd_libec = $(LD) -r $(LD_R_FLAGS) $^ -o $@.1.o ${silent_err} && \
$(OBJCOPY) --localize-hidden $@.1.o $@.2.o ${silent_err} && \
$(AR) scr $@ $@.2.o ${silent_err}
cmd_lds = $(CPP) -P -C -MMD -MF $@.d -MT $@ $(CPPFLAGS) $< -o $@
diff --git a/Makefile.toolchain b/Makefile.toolchain
index e39a1c3016..fe7c9be5b9 100644
--- a/Makefile.toolchain
+++ b/Makefile.toolchain
@@ -95,11 +95,13 @@ BUILD_CPPFLAGS=$(CFLAGS_DEFINE) -Icore/host $(CFLAGS_INCLUDE) $(CFLAGS_TEST) \
HOST_CPPFLAGS=$(CFLAGS_DEFINE) $(CFLAGS_INCLUDE) $(CFLAGS_TEST) \
$(EXTRA_CFLAGS) $(CFLAGS_COVERAGE) $(CFLAGS_HOSTTEST) $(LATE_CFLAGS_DEFINE) \
-DSECTION_IS_$(BLD)=$(EMPTY) -DSECTION=$(BLD) $(CPPFLAGS_$(BLD))
+LD_R_FLAGS=
ifneq ($(BOARD),host)
CPPFLAGS+=-ffreestanding -fno-builtin -nostdinc -nostdlib
CPPFLAGS+=-Ibuiltin/
else
CPPFLAGS+=-Og
+LD_R_FLAGS=-m elf_i386
endif
CPPFLAGS+= -DCHROMIUM_EC=$(EMPTY)
CFLAGS=$(CPPFLAGS) $(CFLAGS_CPU) $(CFLAGS_DEBUG) $(COMMON_WARN) $(CFLAGS_y)
@@ -147,7 +149,7 @@ LDFLAGS=-nostdlib -g -Wl,-X -Wl,--gc-sections -Wl,--build-id=none \
BUILD_LDFLAGS=$(LIBFTDIUSB_LDLIBS)
HOST_LDFLAGS=$(LIBFTDIUSB_LDLIBS)
HOST_TEST_LDFLAGS=-Wl,-T core/host/host_exe.lds -lrt -pthread -rdynamic -lm\
- -fuse-ld=bfd \
+ -fuse-ld=bfd -m32 \
$(if $(TEST_COVERAGE), --coverage,) \
$(if $(TEST_ASAN), -fsanitize=address) \
$(if $(TEST_MSAN), -fsanitize=memory) \
diff --git a/core/host/build.mk b/core/host/build.mk
index 503aa5538a..8aaa01eaa2 100644
--- a/core/host/build.mk
+++ b/core/host/build.mk
@@ -6,6 +6,8 @@
# emulator specific files build
#
-CFLAGS_CPU=-fno-builtin
+# Build host board in 32-bit mode for a better chance of catching things like
+# 64-bit write tearing.
+CFLAGS_CPU=-fno-builtin -m32
core-y=main.o task.o timer.o panic.o disabled.o stack_trace.o