############################################################## # # This file includes all the test targets as well as all the # non-default build rules and test recipes. # ############################################################## ############################################################## # # Test targets # ############################################################## ###### Place all generic definitions here ###### # This defines tests which run tools of the same name. This is simply for convenience to avoid # defining the test name twice (once in TOOL_ROOTS and again in TEST_ROOTS). # Tests defined here should not be defined in TOOL_ROOTS and TEST_ROOTS. TEST_TOOL_ROOTS := # This defines the tests to be run that were not already defined in TEST_TOOL_ROOTS. TEST_ROOTS := # This defines the tools which will be run during the the tests, and were not already defined in # TEST_TOOL_ROOTS. TOOL_ROOTS := # This defines all the applications that will be run during the tests. APP_ROOTS := # This defines any additional object files that need to be compiled. OBJECT_ROOTS := # This defines any additional dlls (shared objects), other than the pintools, that need to be compiled. DLL_ROOTS := # This defines any static libraries (archives), that need to be built. LIB_ROOTS := ###### Place OS-specific definitions here ###### ifeq ($(TARGET_OS),linux) TEST_TOOL_ROOTS += plt_syms unmap_relro APP_ROOTS += plt_syms_app unmap_relro_app ifeq ($(TARGET),intel64) APP_ROOTS += vsyscall_area_app TOOL_ROOTS += vsyscall_area_tool TEST_TOOL_ROOTS += check_low_high_image TEST_ROOTS += linux32_personality vsyscall_area endif endif ###### Handle exceptions here ###### # see mantis 4822 ifeq ($(TARGET_OS),linux) ifeq ($(DIST_NAME_UBUNTU),1) DIST_VER_GE_1910 := $(shell $(TOOLS_ROOT)/Utils/testLinuxDistVersion ge 19.10) ifeq ($(DIST_VER_GE_1910),1) TEST_TOOL_ROOTS := $(filter-out plt_syms, $(TEST_TOOL_ROOTS)) APP_ROOTS := $(filter-out plt_syms_app, $(APP_ROOTS)) endif endif endif ###### Define the sanity subset ###### # This defines the list of tests that should run in sanity. It should include all the tests listed in # TEST_TOOL_ROOTS and TEST_ROOTS excluding only unstable tests. SANITY_SUBSET := $(TEST_TOOL_ROOTS) $(TEST_ROOTS) ############################################################## # # Test recipes # ############################################################## # This section contains recipes for tests other than the default. # See makefile.default.rules for the default test rules. # All tests in this section should adhere to the naming convention: .test linux32_personality.test: $(TESTAPP) $(SETARCH) linux32 $(PIN) -- $(TESTAPP) makefile $(OBJDIR)makefile.linux32_personality.copy $(RM) $(OBJDIR)makefile.linux32_personality.copy plt_syms.test: $(OBJDIR)plt_syms_app$(EXE_SUFFIX) $(OBJDIR)plt_syms$(PINTOOL_SUFFIX) $(PIN) -t $(OBJDIR)plt_syms$(PINTOOL_SUFFIX) -- $(OBJDIR)plt_syms_app$(EXE_SUFFIX) > $(OBJDIR)plt_syms.out 2>&1 $(QGREP) "Inserted probe call before write@plt" $(OBJDIR)plt_syms.out $(QGREP) "calling write@plt" $(OBJDIR)plt_syms.out $(RM) $(OBJDIR)plt_syms.out unmap_relro.test: $(OBJDIR)unmap_relro$(PINTOOL_SUFFIX) $(OBJDIR)unmap_relro_app$(EXE_SUFFIX) $(PIN) -t $(OBJDIR)unmap_relro$(PINTOOL_SUFFIX) -- $(OBJDIR)unmap_relro_app$(EXE_SUFFIX) > $(OBJDIR)unmap_relro.out 2>&1 $(QGREP) 'Moving \[' $(OBJDIR)unmap_relro.out $(QGREP) "Test passed successfully" $(OBJDIR)unmap_relro.out $(RM) $(OBJDIR)unmap_relro.out check_low_high_image.test: $(OBJDIR)check_low_high_image$(PINTOOL_SUFFIX) $(TESTAPP) $(PIN) -t $< -- $(TESTAPP) makefile $(OBJDIR)makefile.check_low_high_image.copy > $(OBJDIR)check_low_high_image.out 2>&1 $(BASHTEST) `$(CGREP) "ERROR" $(OBJDIR)check_low_high_image.out` -eq "0" $(RM) $(OBJDIR)check_low_high_image.out $(OBJDIR)makefile.check_low_high_image.copy # Application branch into vsyscall area (using call instruction). Checks that if Pin runs that branch natively (kernel >= 5.3) # then that vsyscall area is not being instrumented. vsyscall_area.test: $(OBJDIR)vsyscall_area_tool$(PINTOOL_SUFFIX) $(OBJDIR)vsyscall_area_app$(EXE_SUFFIX) $(PIN) -t $(OBJDIR)vsyscall_area_tool$(PINTOOL_SUFFIX) -o $(OBJDIR)vsyscall_area_tool.log \ -- $(OBJDIR)vsyscall_area_app$(EXE_SUFFIX) > $(OBJDIR)vsyscall_area.out $(RM) $(OBJDIR)vsyscall_area_tool.log $(OBJDIR)vsyscall_area.out ############################################################## # # Build rules # ############################################################## # This section contains the build rules for all binaries that have special build rules. # See makefile.default.rules for the default build rules. $(OBJDIR)unmap_relro_app$(EXE_SUFFIX): unmap_relro_app.cpp $(APP_CXX) $(APP_CXXFLAGS_NOOPT) $(COMP_EXE)$@ $< $(APP_LDFLAGS_NOOPT) -Wl,-z,relro $(APP_LIBS)