0163ce3179
Made argument "inline" not positional, this has two benefits. First is that we adhere to how QEMU passes args generally, by taking the last value of an argument and drop the others. And the second is that this sets up a framework for potentially adding new args easily. Signed-off-by: Mahmoud Mandour <ma.mandourr@gmail.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20210730135817.17816-11-ma.mandourr@gmail.com> [AJB: fix check-tcg tests calling arg=inline] Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
77 lines
2.5 KiB
Makefile
77 lines
2.5 KiB
Makefile
# i386 cross compile notes
|
|
|
|
I386_SRC=$(SRC_PATH)/tests/tcg/i386
|
|
|
|
# Set search path for all sources
|
|
VPATH += $(I386_SRC)
|
|
|
|
I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c))
|
|
ALL_X86_TESTS=$(I386_SRCS:.c=)
|
|
SKIP_I386_TESTS=test-i386-ssse3
|
|
X86_64_TESTS:=$(filter test-i386-ssse3, $(ALL_X86_TESTS))
|
|
|
|
test-i386-sse-exceptions: CFLAGS += -msse4.1 -mfpmath=sse
|
|
run-test-i386-sse-exceptions: QEMU_OPTS += -cpu max
|
|
run-plugin-test-i386-sse-exceptions-%: QEMU_OPTS += -cpu max
|
|
|
|
test-i386-pcmpistri: CFLAGS += -msse4.2
|
|
run-test-i386-pcmpistri: QEMU_OPTS += -cpu max
|
|
run-plugin-test-i386-pcmpistri-%: QEMU_OPTS += -cpu max
|
|
|
|
run-test-i386-bmi2: QEMU_OPTS += -cpu max
|
|
run-plugin-test-i386-bmi2-%: QEMU_OPTS += -cpu max
|
|
|
|
#
|
|
# hello-i386 is a barebones app
|
|
#
|
|
hello-i386: CFLAGS+=-ffreestanding
|
|
hello-i386: LDFLAGS+=-nostdlib
|
|
|
|
# test-386 includes a couple of additional objects that need to be
|
|
# linked together, we also need a no-pie capable compiler due to the
|
|
# non-pic calls into 16-bit mode
|
|
ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_I386_NOPIE),)
|
|
test-i386: CFLAGS += -fno-pie
|
|
|
|
test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S test-i386.h test-i386-shift.h test-i386-muldiv.h
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ \
|
|
$(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm
|
|
else
|
|
test-i386:
|
|
$(call skip-test, "BUILD of $@", "missing -no-pie compiler support")
|
|
run-test-i386:
|
|
$(call skip-test, "RUN of test-i386", "not built")
|
|
run-plugin-test-i386-with-%:
|
|
$(call skip-test, "RUN of test-i386 ($*)", "not built")
|
|
endif
|
|
|
|
ifeq ($(SPEED), slow)
|
|
|
|
test-i386-fprem.ref: test-i386-fprem
|
|
$(call quiet-command, ./$< > $@,"GENREF","generating $@")
|
|
|
|
run-test-i386-fprem: TIMEOUT=60
|
|
run-test-i386-fprem: test-i386-fprem test-i386-fprem.ref
|
|
$(call run-test,test-i386-fprem, $(QEMU) $<,"$< on $(TARGET_NAME)")
|
|
$(call diff-out,test-i386-fprem, test-i386-fprem.ref)
|
|
else
|
|
SKIP_I386_TESTS+=test-i386-fprem
|
|
endif
|
|
|
|
# non-inline runs will trigger the duplicate instruction heuristics in libinsn.so
|
|
run-plugin-%-with-libinsn.so:
|
|
$(call run-test, $@, $(QEMU) $(QEMU_OPTS) \
|
|
-plugin ../../plugin/libinsn.so$(COMMA)inline=on \
|
|
-d plugin -D $*-with-libinsn.so.pout $*, \
|
|
"$* (inline) on $(TARGET_NAME)")
|
|
|
|
run-plugin-signals-with-libinsn.so:
|
|
$(call skip-test, $<, "BROKEN awaiting sigframe clean-ups and vdso support")
|
|
|
|
# Update TESTS
|
|
I386_TESTS:=$(filter-out $(SKIP_I386_TESTS), $(ALL_X86_TESTS))
|
|
TESTS=$(MULTIARCH_TESTS) $(I386_TESTS)
|
|
|
|
# On i386 and x86_64 Linux only supports 4k pages (large pages are a different hack)
|
|
EXTRA_RUNS+=run-test-mmap-4096
|