mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	selftests: enable O and KBUILD_OUTPUT
Enable O and KBUILD_OUTPUT for kselftest. User could compile kselftest to another directory by passing O or KBUILD_OUTPUT. And O is high priority than KBUILD_OUTPUT. Signed-off-by: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
This commit is contained in:
		
							parent
							
								
									80d443e887
								
							
						
					
					
						commit
						a8ba798bc8
					
				
					 18 changed files with 122 additions and 75 deletions
				
			
		| 
						 | 
					@ -49,29 +49,44 @@ override LDFLAGS =
 | 
				
			||||||
override MAKEFLAGS =
 | 
					override MAKEFLAGS =
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUILD := $(O)
 | 
				
			||||||
 | 
					ifndef BUILD
 | 
				
			||||||
 | 
					  BUILD := $(KBUILD_OUTPUT)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					ifndef BUILD
 | 
				
			||||||
 | 
					  BUILD := $(shell pwd)
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export BUILD
 | 
				
			||||||
all:
 | 
					all:
 | 
				
			||||||
	for TARGET in $(TARGETS); do \
 | 
						for TARGET in $(TARGETS); do		\
 | 
				
			||||||
		make -C $$TARGET; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							mkdir $$BUILD_TARGET  -p;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run_tests: all
 | 
					run_tests: all
 | 
				
			||||||
	for TARGET in $(TARGETS); do \
 | 
						for TARGET in $(TARGETS); do \
 | 
				
			||||||
		make -C $$TARGET run_tests; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hotplug:
 | 
					hotplug:
 | 
				
			||||||
	for TARGET in $(TARGETS_HOTPLUG); do \
 | 
						for TARGET in $(TARGETS_HOTPLUG); do \
 | 
				
			||||||
		make -C $$TARGET; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run_hotplug: hotplug
 | 
					run_hotplug: hotplug
 | 
				
			||||||
	for TARGET in $(TARGETS_HOTPLUG); do \
 | 
						for TARGET in $(TARGETS_HOTPLUG); do \
 | 
				
			||||||
		make -C $$TARGET run_full_test; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean_hotplug:
 | 
					clean_hotplug:
 | 
				
			||||||
	for TARGET in $(TARGETS_HOTPLUG); do \
 | 
						for TARGET in $(TARGETS_HOTPLUG); do \
 | 
				
			||||||
		make -C $$TARGET clean; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run_pstore_crash:
 | 
					run_pstore_crash:
 | 
				
			||||||
| 
						 | 
					@ -86,7 +101,8 @@ ifdef INSTALL_PATH
 | 
				
			||||||
	@# Ask all targets to install their files
 | 
						@# Ask all targets to install their files
 | 
				
			||||||
	mkdir -p $(INSTALL_PATH)
 | 
						mkdir -p $(INSTALL_PATH)
 | 
				
			||||||
	for TARGET in $(TARGETS); do \
 | 
						for TARGET in $(TARGETS); do \
 | 
				
			||||||
		make -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@# Ask all targets to emit their test scripts
 | 
						@# Ask all targets to emit their test scripts
 | 
				
			||||||
| 
						 | 
					@ -95,10 +111,11 @@ ifdef INSTALL_PATH
 | 
				
			||||||
	echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)
 | 
						echo "ROOT=\$$PWD" >> $(ALL_SCRIPT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for TARGET in $(TARGETS); do \
 | 
						for TARGET in $(TARGETS); do \
 | 
				
			||||||
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
		echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
 | 
							echo "echo ; echo Running tests in $$TARGET" >> $(ALL_SCRIPT); \
 | 
				
			||||||
		echo "echo ========================================" >> $(ALL_SCRIPT); \
 | 
							echo "echo ========================================" >> $(ALL_SCRIPT); \
 | 
				
			||||||
		echo "cd $$TARGET" >> $(ALL_SCRIPT); \
 | 
							echo "cd $$TARGET" >> $(ALL_SCRIPT); \
 | 
				
			||||||
		make -s --no-print-directory -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
 | 
							make -s --no-print-directory OUTPUT=$$BUILD_TARGET -C $$TARGET emit_tests >> $(ALL_SCRIPT); \
 | 
				
			||||||
		echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
 | 
							echo "cd \$$ROOT" >> $(ALL_SCRIPT); \
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,7 +126,8 @@ endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	for TARGET in $(TARGETS); do \
 | 
						for TARGET in $(TARGETS); do \
 | 
				
			||||||
		make -C $$TARGET clean; \
 | 
							BUILD_TARGET=$$BUILD/$$TARGET;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: install
 | 
					.PHONY: install
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,18 +5,19 @@ TEST_GEN_FILES := execveat.symlink execveat.denatured script subdir
 | 
				
			||||||
# Makefile is a run-time dependency, since it's accessed by the execveat test
 | 
					# Makefile is a run-time dependency, since it's accessed by the execveat test
 | 
				
			||||||
TEST_FILES := Makefile
 | 
					TEST_FILES := Makefile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXTRA_CLEAN := subdir.moved execveat.moved xxxxx*
 | 
					EXTRA_CLEAN := $(OUTPUT)/subdir.moved $(OUTPUT)/execveat.moved $(OUTPUT)/xxxxx*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../lib.mk
 | 
					include ../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
subdir:
 | 
					$(OUTPUT)/subdir:
 | 
				
			||||||
	mkdir -p $@
 | 
						mkdir -p $@
 | 
				
			||||||
script:
 | 
					$(OUTPUT)/script:
 | 
				
			||||||
	echo '#!/bin/sh' > $@
 | 
						echo '#!/bin/sh' > $@
 | 
				
			||||||
	echo 'exit $$*' >> $@
 | 
						echo 'exit $$*' >> $@
 | 
				
			||||||
	chmod +x $@
 | 
						chmod +x $@
 | 
				
			||||||
execveat.symlink: execveat
 | 
					$(OUTPUT)/execveat.symlink: $(OUTPUT)/execveat
 | 
				
			||||||
	ln -s -f $< $@
 | 
						cd $(OUTPUT) && ln -s -f $(shell basename $<) $(shell basename $@)
 | 
				
			||||||
execveat.denatured: execveat
 | 
					$(OUTPUT)/execveat.denatured: $(OUTPUT)/execveat
 | 
				
			||||||
	cp $< $@
 | 
						cp $< $@
 | 
				
			||||||
	chmod -x $@
 | 
						chmod -x $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,6 @@ all:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEST_PROGS := ftracetest
 | 
					TEST_PROGS := ftracetest
 | 
				
			||||||
TEST_FILES := test.d
 | 
					TEST_FILES := test.d
 | 
				
			||||||
EXTRA_CLEAN := logs/*
 | 
					EXTRA_CLEAN := $(OUTPUT)/logs/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../lib.mk
 | 
					include ../lib.mk
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,13 +3,18 @@ SUBDIRS := functional
 | 
				
			||||||
TEST_PROGS := run.sh
 | 
					TEST_PROGS := run.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: all clean
 | 
					.PHONY: all clean
 | 
				
			||||||
all:
 | 
					 | 
				
			||||||
	for DIR in $(SUBDIRS); do $(MAKE) -C $$DIR $@ ; done
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../lib.mk
 | 
					include ../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					all:
 | 
				
			||||||
 | 
						for DIR in $(SUBDIRS); do		\
 | 
				
			||||||
 | 
							BUILD_TARGET=$$OUTPUT/$$DIR;	\
 | 
				
			||||||
 | 
							mkdir $$BUILD_TARGET  -p;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$DIR $@;\
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override define RUN_TESTS
 | 
					override define RUN_TESTS
 | 
				
			||||||
	./run.sh
 | 
						@if [ `dirname $(OUTPUT)` = $(PWD) ]; then ./run.sh; fi
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override define INSTALL_RULE
 | 
					override define INSTALL_RULE
 | 
				
			||||||
| 
						 | 
					@ -17,7 +22,9 @@ override define INSTALL_RULE
 | 
				
			||||||
	install -t $(INSTALL_PATH) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES)
 | 
						install -t $(INSTALL_PATH) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@for SUBDIR in $(SUBDIRS); do \
 | 
						@for SUBDIR in $(SUBDIRS); do \
 | 
				
			||||||
		$(MAKE) -C $$SUBDIR INSTALL_PATH=$(INSTALL_PATH)/$$SUBDIR install; \
 | 
							BUILD_TARGET=$$OUTPUT/$$SUBDIR;	\
 | 
				
			||||||
 | 
							mkdir $$BUILD_TARGET  -p;	\
 | 
				
			||||||
 | 
							$(MAKE) OUTPUT=$$BUILD_TARGET -C $$SUBDIR INSTALL_PATH=$(INSTALL_PATH)/$$SUBDIR install; \
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,4 +33,8 @@ override define EMIT_TESTS
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	for DIR in $(SUBDIRS); do $(MAKE) -C $$DIR $@ ; done
 | 
						for DIR in $(SUBDIRS); do		\
 | 
				
			||||||
 | 
							BUILD_TARGET=$$OUTPUT/$$DIR;	\
 | 
				
			||||||
 | 
							mkdir $$BUILD_TARGET  -p;	\
 | 
				
			||||||
 | 
							make OUTPUT=$$BUILD_TARGET -C $$DIR $@;\
 | 
				
			||||||
 | 
						done
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ CFLAGS += -I../../../../usr/include/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEST_GEN_PROGS := kcmp_test
 | 
					TEST_GEN_PROGS := kcmp_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXTRA_CLEAN := kcmp-test-file
 | 
					EXTRA_CLEAN := $(OUTPUT)/kcmp-test-file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../lib.mk
 | 
					include ../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,8 @@ CC := $(CROSS_COMPILE)gcc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define RUN_TESTS
 | 
					define RUN_TESTS
 | 
				
			||||||
	@for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
 | 
						@for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
 | 
				
			||||||
		(./$$TEST && echo "selftests: $$TEST [PASS]") || echo "selftests: $$TEST [FAIL]"; \
 | 
							BASENAME_TEST=`basename $$TEST`;	\
 | 
				
			||||||
 | 
							cd `dirname $$TEST`; (./$$BASENAME_TEST && echo "selftests: $$BASENAME_TEST [PASS]") || echo "selftests:  $$BASENAME_TEST [FAIL]"; cd -;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,19 +34,29 @@ endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define EMIT_TESTS
 | 
					define EMIT_TESTS
 | 
				
			||||||
	@for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
 | 
						@for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \
 | 
				
			||||||
		echo "(./$$TEST && echo \"selftests: $$TEST [PASS]\") || echo \"selftests: $$TEST [FAIL]\""; \
 | 
							BASENAME_TEST=`basename $$TEST`;	\
 | 
				
			||||||
 | 
							echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
emit_tests:
 | 
					emit_tests:
 | 
				
			||||||
	$(EMIT_TESTS)
 | 
						$(EMIT_TESTS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS))
 | 
				
			||||||
 | 
					TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
 | 
					all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	$(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
 | 
						$(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
%: %.c
 | 
					$(OUTPUT)/%:%.c
 | 
				
			||||||
	$(CC) $(CFLAGS) $(LDFLAGS) $(LDLIBS) -o $@ $^
 | 
						$(CC) $(CFLAGS) $(LDFLAGS) $(LDLIBS) $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(OUTPUT)/%.o:%.S
 | 
				
			||||||
 | 
						$(CC) $(ASFLAGS) -c $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(OUTPUT)/%:%.S
 | 
				
			||||||
 | 
						$(CC) $(ASFLAGS) $< -o $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: run_tests all clean install emit_tests
 | 
					.PHONY: run_tests all clean install emit_tests
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,32 +34,35 @@ endif
 | 
				
			||||||
all: $(SUB_DIRS)
 | 
					all: $(SUB_DIRS)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(SUB_DIRS):
 | 
					$(SUB_DIRS):
 | 
				
			||||||
	$(MAKE) -k -C $@ all
 | 
						BUILD_TARGET=$$OUTPUT/$@; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $@ all
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../lib.mk
 | 
					include ../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override define RUN_TESTS
 | 
					override define RUN_TESTS
 | 
				
			||||||
	@for TARGET in $(SUB_DIRS); do \
 | 
						@for TARGET in $(SUB_DIRS); do \
 | 
				
			||||||
		$(MAKE) -C $$TARGET run_tests; \
 | 
							BUILD_TARGET=$$OUTPUT/$$TARGET;	\
 | 
				
			||||||
 | 
							$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override define INSTALL_RULE
 | 
					override define INSTALL_RULE
 | 
				
			||||||
	@for TARGET in $(SUB_DIRS); do \
 | 
						@for TARGET in $(SUB_DIRS); do \
 | 
				
			||||||
		$(MAKE) -C $$TARGET install; \
 | 
							BUILD_TARGET=$$OUTPUT/$$TARGET;	\
 | 
				
			||||||
 | 
							$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
override define EMIT_TESTS
 | 
					override define EMIT_TESTS
 | 
				
			||||||
	@for TARGET in $(SUB_DIRS); do \
 | 
						@for TARGET in $(SUB_DIRS); do \
 | 
				
			||||||
		$(MAKE) -s -C $$TARGET emit_tests; \
 | 
							BUILD_TARGET=$$OUTPUT/$$TARGET;	\
 | 
				
			||||||
 | 
							$(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests;\
 | 
				
			||||||
	done;
 | 
						done;
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	@for TARGET in $(SUB_DIRS); do \
 | 
						@for TARGET in $(SUB_DIRS); do \
 | 
				
			||||||
		$(MAKE) -C $$TARGET clean; \
 | 
							BUILD_TARGET=$$OUTPUT/$$TARGET;	\
 | 
				
			||||||
	done;
 | 
							$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ done;
 | 
				
			||||||
	rm -f tags
 | 
						rm -f tags
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tags:
 | 
					tags:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,6 @@ $(TEST_GEN_PROGS): ../harness.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../../lib.mk
 | 
					include ../../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
context_switch: ../utils.c
 | 
					$(OUTPUT)/context_switch: ../utils.c
 | 
				
			||||||
context_switch: CFLAGS += -maltivec -mvsx -mabi=altivec
 | 
					$(OUTPUT)/context_switch: CFLAGS += -maltivec -mvsx -mabi=altivec
 | 
				
			||||||
context_switch: LDLIBS += -lpthread
 | 
					$(OUTPUT)/context_switch: LDLIBS += -lpthread
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,9 +12,9 @@ EXTRA_SOURCES := validate.c ../harness.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../../lib.mk
 | 
					include ../../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
copyuser_64:     CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_base
 | 
					$(OUTPUT)/copyuser_64:     CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_base
 | 
				
			||||||
copyuser_power7: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_power7
 | 
					$(OUTPUT)/copyuser_power7: CPPFLAGS += -D COPY_LOOP=test___copy_tofrom_user_power7
 | 
				
			||||||
memcpy_64:       CPPFLAGS += -D COPY_LOOP=test_memcpy
 | 
					$(OUTPUT)/memcpy_64:       CPPFLAGS += -D COPY_LOOP=test_memcpy
 | 
				
			||||||
memcpy_power7:   CPPFLAGS += -D COPY_LOOP=test_memcpy_power7
 | 
					$(OUTPUT)/memcpy_power7:   CPPFLAGS += -D COPY_LOOP=test_memcpy_power7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(TEST_GEN_PROGS): $(EXTRA_SOURCES)
 | 
					$(TEST_GEN_PROGS): $(EXTRA_SOURCES)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,6 @@ TEST_GEN_PROGS := dscr_default_test dscr_explicit_test dscr_user_test	\
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../../lib.mk
 | 
					include ../../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dscr_default_test: LDLIBS += -lpthread
 | 
					$(OUTPUT)/dscr_default_test: LDLIBS += -lpthread
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(TEST_GEN_PROGS): ../harness.c
 | 
					$(TEST_GEN_PROGS): ../harness.c
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,13 +5,13 @@ include ../../lib.mk
 | 
				
			||||||
$(TEST_GEN_PROGS): ../harness.c
 | 
					$(TEST_GEN_PROGS): ../harness.c
 | 
				
			||||||
$(TEST_GEN_PROGS): CFLAGS += -O2 -g -pthread -m64 -maltivec
 | 
					$(TEST_GEN_PROGS): CFLAGS += -O2 -g -pthread -m64 -maltivec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fpu_syscall: fpu_asm.S
 | 
					$(OUTPUT)/pu_syscall: fpu_asm.S
 | 
				
			||||||
fpu_preempt: fpu_asm.S
 | 
					$(OUTPUT)/pu_preempt: fpu_asm.S
 | 
				
			||||||
fpu_signal:  fpu_asm.S
 | 
					$(OUTPUT)/pu_signal:  fpu_asm.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vmx_syscall: vmx_asm.S
 | 
					$(OUTPUT)/mx_syscall: vmx_asm.S
 | 
				
			||||||
vmx_preempt: vmx_asm.S
 | 
					$(OUTPUT)/mx_preempt: vmx_asm.S
 | 
				
			||||||
vmx_signal: vmx_asm.S
 | 
					$(OUTPUT)/mx_signal: vmx_asm.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vsx_preempt: CFLAGS += -mvsx
 | 
					vsx_preempt: CFLAGS += -mvsx
 | 
				
			||||||
vsx_preempt: vsx_asm.S
 | 
					vsx_preempt: vsx_asm.S
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,8 +8,8 @@ include ../../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(TEST_GEN_PROGS): ../harness.c
 | 
					$(TEST_GEN_PROGS): ../harness.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
prot_sao: ../utils.c
 | 
					$(OUTPUT)/prot_sao: ../utils.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tempfile:
 | 
					$(OUTPUT)/tempfile:
 | 
				
			||||||
	dd if=/dev/zero of=tempfile bs=64k count=1
 | 
						dd if=/dev/zero of=$@ bs=64k count=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,34 +11,34 @@ all: $(TEST_GEN_PROGS) ebb
 | 
				
			||||||
$(TEST_GEN_PROGS): $(EXTRA_SOURCES)
 | 
					$(TEST_GEN_PROGS): $(EXTRA_SOURCES)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# loop.S can only be built 64-bit
 | 
					# loop.S can only be built 64-bit
 | 
				
			||||||
count_instructions: loop.S count_instructions.c $(EXTRA_SOURCES)
 | 
					$(OUTPUT)/count_instructions: loop.S count_instructions.c $(EXTRA_SOURCES)
 | 
				
			||||||
	$(CC) $(CFLAGS) -m64 -o $@ $^
 | 
						$(CC) $(CFLAGS) -m64 -o $@ $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
per_event_excludes: ../utils.c
 | 
					$(OUTPUT)/per_event_excludes: ../utils.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_RUN_TESTS := $(RUN_TESTS)
 | 
					DEFAULT_RUN_TESTS := $(RUN_TESTS)
 | 
				
			||||||
override define RUN_TESTS
 | 
					override define RUN_TESTS
 | 
				
			||||||
	$(DEFAULT_RUN_TESTS)
 | 
						$(DEFAULT_RUN_TESTS)
 | 
				
			||||||
	$(MAKE) -C ebb run_tests
 | 
						TARGET=ebb; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_EMIT_TESTS := $(EMIT_TESTS)
 | 
					DEFAULT_EMIT_TESTS := $(EMIT_TESTS)
 | 
				
			||||||
override define EMIT_TESTS
 | 
					override define EMIT_TESTS
 | 
				
			||||||
	$(DEFAULT_EMIT_TESTS)
 | 
						$(DEFAULT_EMIT_TESTS)
 | 
				
			||||||
	$(MAKE) -s -C ebb emit_tests
 | 
						TARGET=ebb; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_INSTALL_RULE := $(INSTALL_RULE)
 | 
					DEFAULT_INSTALL_RULE := $(INSTALL_RULE)
 | 
				
			||||||
override define INSTALL_RULE
 | 
					override define INSTALL_RULE
 | 
				
			||||||
	$(DEFAULT_INSTALL_RULE)
 | 
						$(DEFAULT_INSTALL_RULE)
 | 
				
			||||||
	$(MAKE) -C ebb install
 | 
						TARGET=ebb; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET: -C $$TARGET install
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	$(RM) $(TEST_PROGS) loop.o
 | 
						$(RM) $(TEST_GEN_PROGS) $(OUTPUT)/loop.o
 | 
				
			||||||
	$(MAKE) -C ebb clean
 | 
						TARGET=ebb; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET: -C $$TARGET clean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ebb:
 | 
					ebb:
 | 
				
			||||||
	$(MAKE) -k -C $@ all
 | 
						TARGET=$@; BUILD_TARGET=$$OUTPUT/$$TARGET; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $$TARGET all
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: all run_tests clean ebb
 | 
					.PHONY: all run_tests clean ebb
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,6 @@ include ../../../lib.mk
 | 
				
			||||||
$(TEST_GEN_PROGS): ../../harness.c ../../utils.c ../event.c ../lib.c \
 | 
					$(TEST_GEN_PROGS): ../../harness.c ../../utils.c ../event.c ../lib.c \
 | 
				
			||||||
	       ebb.c ebb_handler.S trace.c busy_loop.S
 | 
						       ebb.c ebb_handler.S trace.c busy_loop.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
instruction_count_test: ../loop.S
 | 
					$(OUTPUT)/instruction_count_test: ../loop.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lost_exception_test: ../lib.c
 | 
					$(OUTPUT)/lost_exception_test: ../lib.c
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,14 +2,14 @@ TEST_GEN_PROGS := switch_endian_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ASFLAGS += -O2 -Wall -g -nostdlib -m64
 | 
					ASFLAGS += -O2 -Wall -g -nostdlib -m64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXTRA_CLEAN = *.o check-reversed.S
 | 
					EXTRA_CLEAN = $(OUTPUT)/*.o $(OUTPUT)/check-reversed.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../../lib.mk
 | 
					include ../../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
switch_endian_test: check-reversed.S
 | 
					$(OUTPUT)/switch_endian_test: $(OUTPUT)/check-reversed.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check-reversed.o: check.o
 | 
					$(OUTPUT)/check-reversed.o: $(OUTPUT)/check.o
 | 
				
			||||||
	$(CROSS_COMPILE)objcopy -j .text --reverse-bytes=4 -O binary $< $@
 | 
						$(CROSS_COMPILE)objcopy -j .text --reverse-bytes=4 -O binary $< $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check-reversed.S: check-reversed.o
 | 
					$(OUTPUT)/check-reversed.S: $(OUTPUT)/check-reversed.o
 | 
				
			||||||
	hexdump -v -e '/1 ".byte 0x%02X\n"' $< > $@
 | 
						hexdump -v -e '/1 ".byte 0x%02X\n"' $< > $@
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,9 +10,9 @@ $(TEST_GEN_PROGS): ../harness.c ../utils.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CFLAGS += -mhtm
 | 
					CFLAGS += -mhtm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tm-syscall: tm-syscall-asm.S
 | 
					$(OUTPUT)/tm-syscall: tm-syscall-asm.S
 | 
				
			||||||
tm-syscall: CFLAGS += -I../../../../../usr/include
 | 
					$(OUTPUT)/tm-syscall: CFLAGS += -I../../../../../usr/include
 | 
				
			||||||
tm-tmspr: CFLAGS += -pthread
 | 
					$(OUTPUT)/tm-tmspr: CFLAGS += -pthread
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(SIGNAL_CONTEXT_CHK_TESTS): tm-signal.S
 | 
					$(SIGNAL_CONTEXT_CHK_TESTS): tm-signal.S
 | 
				
			||||||
$(SIGNAL_CONTEXT_CHK_TESTS): CFLAGS += -mhtm -m64 -mvsx
 | 
					$(SIGNAL_CONTEXT_CHK_TESTS): CFLAGS += -mhtm -m64 -mvsx
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,8 +17,8 @@ TEST_PROGS := run_vmtests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include ../lib.mk
 | 
					include ../lib.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
userfaultfd: LDLIBS += -lpthread ../../../../usr/include/linux/kernel.h
 | 
					$(OUTPUT)/userfaultfd: LDLIBS += -lpthread ../../../../usr/include/linux/kernel.h
 | 
				
			||||||
mlock-random-test: LDLIBS += -lcap
 | 
					$(OUTPUT)/mlock-random-test: LDLIBS += -lcap
 | 
				
			||||||
 | 
					
 | 
				
			||||||
../../../../usr/include/linux/kernel.h:
 | 
					../../../../usr/include/linux/kernel.h:
 | 
				
			||||||
	make -C ../../../.. headers_install
 | 
						make -C ../../../.. headers_install
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +17,9 @@ TARGETS_C_64BIT_ALL := $(TARGETS_C_BOTHBITS) $(TARGETS_C_64BIT_ONLY)
 | 
				
			||||||
BINARIES_32 := $(TARGETS_C_32BIT_ALL:%=%_32)
 | 
					BINARIES_32 := $(TARGETS_C_32BIT_ALL:%=%_32)
 | 
				
			||||||
BINARIES_64 := $(TARGETS_C_64BIT_ALL:%=%_64)
 | 
					BINARIES_64 := $(TARGETS_C_64BIT_ALL:%=%_64)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BINARIES_32 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_32))
 | 
				
			||||||
 | 
					BINARIES_64 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_64))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
 | 
					CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
 | 
				
			||||||
 | 
					
 | 
				
			||||||
UNAME_M := $(shell uname -m)
 | 
					UNAME_M := $(shell uname -m)
 | 
				
			||||||
| 
						 | 
					@ -40,10 +43,10 @@ all_64: $(BINARIES_64)
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	$(RM) $(BINARIES_32) $(BINARIES_64)
 | 
						$(RM) $(BINARIES_32) $(BINARIES_64)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(TARGETS_C_32BIT_ALL:%=%_32): %_32: %.c
 | 
					$(BINARIES_32): $(OUTPUT)/%_32: %.c
 | 
				
			||||||
	$(CC) -m32 -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $^ -lrt -ldl -lm
 | 
						$(CC) -m32 -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $^ -lrt -ldl -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$(TARGETS_C_64BIT_ALL:%=%_64): %_64: %.c
 | 
					$(BINARIES_64): $(OUTPUT)/%_64: %.c
 | 
				
			||||||
	$(CC) -m64 -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $^ -lrt -ldl
 | 
						$(CC) -m64 -o $@ $(CFLAGS) $(EXTRA_CFLAGS) $^ -lrt -ldl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# x86_64 users should be encouraged to install 32-bit libraries
 | 
					# x86_64 users should be encouraged to install 32-bit libraries
 | 
				
			||||||
| 
						 | 
					@ -65,12 +68,12 @@ warn_32bit_failure:
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Some tests have additional dependencies.
 | 
					# Some tests have additional dependencies.
 | 
				
			||||||
sysret_ss_attrs_64: thunks.S
 | 
					$(OUTPUT)/sysret_ss_attrs_64: thunks.S
 | 
				
			||||||
ptrace_syscall_32: raw_syscall_helper_32.S
 | 
					$(OUTPUT)/ptrace_syscall_32: raw_syscall_helper_32.S
 | 
				
			||||||
test_syscall_vdso_32: thunks_32.S
 | 
					$(OUTPUT)/test_syscall_vdso_32: thunks_32.S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# check_initial_reg_state is special: it needs a custom entry, and it
 | 
					# check_initial_reg_state is special: it needs a custom entry, and it
 | 
				
			||||||
# needs to be static so that its interpreter doesn't destroy its initial
 | 
					# needs to be static so that its interpreter doesn't destroy its initial
 | 
				
			||||||
# state.
 | 
					# state.
 | 
				
			||||||
check_initial_reg_state_32: CFLAGS += -Wl,-ereal_start -static
 | 
					$(OUTPUT)/check_initial_reg_state_32: CFLAGS += -Wl,-ereal_start -static
 | 
				
			||||||
check_initial_reg_state_64: CFLAGS += -Wl,-ereal_start -static
 | 
					$(OUTPUT)/check_initial_reg_state_64: CFLAGS += -Wl,-ereal_start -static
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue