You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
217 lines
9.0 KiB
217 lines
9.0 KiB
##############################################################
|
|
#
|
|
# 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 := omit_source_location
|
|
|
|
# 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 the static analysis tools which will be run during the the tests. They should not
|
|
# be defined in TEST_TOOL_ROOTS. If a test with the same name exists, it should be defined in
|
|
# TEST_ROOTS.
|
|
# Note: Static analysis tools are in fact executables linked with the Pin Static Analysis Library.
|
|
# This library provides a subset of the Pin APIs which allows the tool to perform static analysis
|
|
# of an application or dll. Pin itself is not used when this tool runs.
|
|
SA_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 += backtrace app_backtrace backtrace_from_dll pin_backtrace_on_assert
|
|
TEST_ROOTS += debug_dwarf4_jit debug_jit debug_dwarf4_probe debug_probe
|
|
TOOL_ROOTS += debugtest
|
|
APP_ROOTS += app_backtrace_app
|
|
DLL_ROOTS += backtrace_dll
|
|
endif
|
|
|
|
ifeq ($(TARGET_OS),mac)
|
|
TEST_TOOL_ROOTS += backtrace app_backtrace backtrace_from_dll pin_backtrace_on_assert
|
|
APP_ROOTS += app_backtrace_app
|
|
DLL_ROOTS += backtrace_dll
|
|
endif
|
|
|
|
###### Handle exceptions here ######
|
|
|
|
ifeq ($(TARGET_OS),linux)
|
|
DWARF4_NOT_SUPPORTED := $(shell $(TOOLS_ROOT)/Utils/testGccVersion $(CXXPATH) 4.5)
|
|
ifeq ($(DWARF4_NOT_SUPPORTED),1)
|
|
TEST_ROOTS := $(filter-out debug_dwarf4_jit debug_dwarf4_probe, $(TEST_ROOTS))
|
|
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)
|
|
|
|
# See mantis 4654
|
|
ifeq ($(TARGET_OS),linux)
|
|
ifeq ($(DIST_NAME_FEDORA),1)
|
|
ifeq ($(DIST_VER_GE_28),1)
|
|
SANITY_SUBSET := $(filter-out app_backtrace, $(SANITY_SUBSET))
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
##############################################################
|
|
#
|
|
# 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: <testname>.test
|
|
|
|
debug_jit.test: $(OBJDIR)debugtest$(PINTOOL_SUFFIX) $(HELLO_APP)
|
|
$(PIN) -t $(OBJDIR)debugtest$(PINTOOL_SUFFIX) \
|
|
-- $(HELLO_APP) > $(OBJDIR)debug_jit_test.out 2>&1
|
|
$(QGREP) "passed" $(OBJDIR)debug_jit_test.out
|
|
$(RM) $(OBJDIR)debug_jit_test.out
|
|
|
|
debug_probe.test: $(OBJDIR)debugtest$(PINTOOL_SUFFIX) $(HELLO_APP)
|
|
$(PIN) -probe -t $(OBJDIR)debugtest$(PINTOOL_SUFFIX) \
|
|
-- $(HELLO_APP) > $(OBJDIR)debug_probe_test.out 2>&1
|
|
$(QGREP) "passed" $(OBJDIR)debug_probe_test.out
|
|
$(RM) $(OBJDIR)debug_probe_test.out
|
|
|
|
debug_dwarf4_jit.test: $(OBJDIR)debugtest$(PINTOOL_SUFFIX) $(HELLO_APP_DWARF4)
|
|
$(PIN) -t $(OBJDIR)debugtest$(PINTOOL_SUFFIX) \
|
|
-- $(HELLO_APP_DWARF4) > $(OBJDIR)debug_dwarf4_jit_test.out 2>&1
|
|
$(QGREP) "passed" $(OBJDIR)debug_dwarf4_jit_test.out
|
|
$(RM) $(OBJDIR)debug_dwarf4_jit_test.out
|
|
|
|
debug_dwarf4_probe.test: $(OBJDIR)debugtest$(PINTOOL_SUFFIX) $(HELLO_APP_DWARF4)
|
|
$(PIN) -probe -t $(OBJDIR)debugtest$(PINTOOL_SUFFIX) \
|
|
-- $(HELLO_APP_DWARF4) > $(OBJDIR)debug_dwarf4_probe_test.out 2>&1
|
|
$(QGREP) "passed" $(OBJDIR)debug_dwarf4_probe_test.out
|
|
$(RM) $(OBJDIR)debug_dwarf4_probe_test.out
|
|
|
|
omit_source_location.test: $(OBJDIR)omit_source_location$(PINTOOL_SUFFIX) $(HELLO_APP)
|
|
$(PIN) -t $(OBJDIR)omit_source_location$(PINTOOL_SUFFIX) -e 0 \
|
|
-- $(HELLO_APP) > $(OBJDIR)omit_source_location.out 2>&1
|
|
! ( $(PIN) -t $(OBJDIR)omit_source_location$(PINTOOL_SUFFIX) -e 1 \
|
|
-- $(HELLO_APP) > $(OBJDIR)omit_source_location.out 2>&1 )
|
|
! ( $(QGREP) omit_source_location.cpp $(OBJDIR)omit_source_location.out )
|
|
$(QGREP) "<Unknown source location>" $(OBJDIR)omit_source_location.out
|
|
! ( $(PIN) -t $(OBJDIR)omit_source_location$(PINTOOL_SUFFIX) -e 2 \
|
|
-- $(HELLO_APP) > $(OBJDIR)omit_source_location.out 2>&1 )
|
|
! ( $(QGREP) omit_source_location.cpp $(OBJDIR)omit_source_location.out )
|
|
$(QGREP) "<Unknown source location>" $(OBJDIR)omit_source_location.out
|
|
$(RM) $(OBJDIR)omit_source_location.out
|
|
|
|
backtrace.test: $(OBJDIR)backtrace$(PINTOOL_SUFFIX) $(HELLO_APP)
|
|
$(PIN) -t $(OBJDIR)backtrace$(PINTOOL_SUFFIX) \
|
|
-- $(HELLO_APP) > $(OBJDIR)backtrace.out 2>&1
|
|
$(PYCOMPARE) -p backtrace.reference -c $(OBJDIR)backtrace.out
|
|
|
|
app_backtrace.test: $(OBJDIR)app_backtrace$(PINTOOL_SUFFIX) $(OBJDIR)app_backtrace_app$(EXE_SUFFIX)
|
|
$(PIN) -t $(OBJDIR)app_backtrace$(PINTOOL_SUFFIX) \
|
|
-- $(OBJDIR)app_backtrace_app$(EXE_SUFFIX) > $(OBJDIR)app_backtrace.out 2>&1
|
|
$(PYCOMPARE) -p app_backtrace.reference -c $(OBJDIR)app_backtrace.out
|
|
$(RM) -f $(OBJDIR)app_backtrace.out
|
|
|
|
backtrace_from_dll.test: $(OBJDIR)backtrace_from_dll$(PINTOOL_SUFFIX) $(HELLO_APP)
|
|
$(PIN) -t $(OBJDIR)backtrace_from_dll$(PINTOOL_SUFFIX) \
|
|
-- $(HELLO_APP) > $(OBJDIR)backtrace_from_dll.out 2>&1
|
|
$(PYCOMPARE) -p backtrace_from_dll.reference -c $(OBJDIR)backtrace_from_dll.out
|
|
|
|
pin_backtrace_on_assert.test: $(OBJDIR)pin_backtrace_on_assert$(PINTOOL_SUFFIX) $(TESTAPP)
|
|
! ( $(PIN) -t $(OBJDIR)pin_backtrace_on_assert$(PINTOOL_SUFFIX) \
|
|
-- $(TESTAPP) makefile $(OBJDIR)pin_backtrace_on_assert.makefile.copy > $(OBJDIR)pin_backtrace_on_assert.out 2>&1 )
|
|
$(PYCOMPARE) -p pin_backtrace_on_assert.reference -c $(OBJDIR)pin_backtrace_on_assert.out
|
|
$(RM) -f $(OBJDIR)pin_backtrace_on_assert.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.
|
|
|
|
###### Special tools' build rules ######
|
|
|
|
ifeq ($(TARGET_OS),linux)
|
|
VERSION_SCRIPT_PATTERN := -Wl,--version-script=%
|
|
endif
|
|
ifeq ($(TARGET_OS),mac)
|
|
VERSION_SCRIPT_PATTERN := -Wl,-exported_symbols_list,%
|
|
endif
|
|
|
|
# Export all symbols of this tool to the dynamic symbol table in order to get accurate backtrace.
|
|
$(OBJDIR)backtrace$(PINTOOL_SUFFIX): $(OBJDIR)backtrace$(OBJ_SUFFIX)
|
|
$(LINKER) $(EXPORT_ALL) $(COMP_EXE)$@ $< $(filter-out $(VERSION_SCRIPT_PATTERN),$(TOOL_LDFLAGS_NOOPT)) $(TOOL_LPATHS) $(TOOL_LIBS)
|
|
|
|
$(OBJDIR)backtrace_from_dll$(PINTOOL_SUFFIX): $(OBJDIR)backtrace_from_dll$(OBJ_SUFFIX) $(OBJDIR)$(DLL_PREFIX)backtrace_dll$(DLL_SUFFIX)
|
|
$(LINKER) $(TOOL_LDFLAGS_NOOPT) $(LINK_EXE)$@ $^ $(TOOL_LPATHS) $(TOOL_LIBS)
|
|
|
|
$(OBJDIR)pin_backtrace_on_assert$(PINTOOL_SUFFIX): $(OBJDIR)pin_backtrace_on_assert$(OBJ_SUFFIX) $(CONTROLLERLIB)
|
|
$(LINKER) $(EXPORT_ALL) $(COMP_EXE)$@ $< $(filter-out $(VERSION_SCRIPT_PATTERN),$(TOOL_LDFLAGS_NOOPT)) $(TOOL_LPATHS) $(TOOL_LIBS)
|
|
|
|
###### Special objects' build rules ######
|
|
|
|
ifeq ($(OS_TYPE),win)
|
|
OMIT_SOURCE_LOCATION := /DOMIT_SOURCE_LOCATION
|
|
else
|
|
OMIT_SOURCE_LOCATION := -DOMIT_SOURCE_LOCATION
|
|
endif
|
|
|
|
$(OBJDIR)backtrace$(OBJ_SUFFIX): backtrace.cpp
|
|
$(CXX) $(TOOL_CXXFLAGS_NOOPT) $(COMP_OBJ)$@ $<
|
|
|
|
$(OBJDIR)omit_source_location$(OBJ_SUFFIX): omit_source_location.cpp
|
|
$(CXX) $(OMIT_SOURCE_LOCATION) $(TOOL_CXXFLAGS) $(COMP_OBJ)$@ $<
|
|
|
|
$(OBJDIR)app_backtrace_app$(EXE_SUFFIX): app_backtrace_app.cpp
|
|
$(APP_CXX) $(APP_CXXFLAGS_NOOPT) $(DBG_INFO_CXX_ALWAYS) $(COMP_EXE)$@ $< $(APP_LDFLAGS_NOOPT) $(APP_LIBS) \
|
|
$(CXX_LPATHS) $(CXX_LIBS) $(DBG_INFO_LD_ALWAYS)
|
|
|
|
$(OBJDIR)backtrace_from_dll$(OBJ_SUFFIX): backtrace_from_dll.cpp
|
|
$(CXX) $(TOOL_CXXFLAGS_NOOPT) $(COMP_OBJ)$@ $<
|
|
|
|
$(OBJDIR)backtrace_dll$(OBJ_SUFFIX): backtrace_dll.cpp
|
|
$(CXX) $(TOOL_CXXFLAGS_NOOPT) $(COMP_OBJ)$@ $<
|
|
|
|
$(OBJDIR)pin_backtrace_on_assert$(OBJ_SUFFIX): pin_backtrace_on_assert.cpp
|
|
$(CXX) $(TOOL_CXXFLAGS_NOOPT) $(COMP_OBJ)$@ $<
|
|
|
|
###### Special dlls' build rules ######
|
|
|
|
$(OBJDIR)$(DLL_PREFIX)backtrace_dll$(DLL_SUFFIX): $(OBJDIR)backtrace_dll$(OBJ_SUFFIX)
|
|
$(LINKER) $(EXPORT_ALL) $(filter-out $(VERSION_SCRIPT_PATTERN),$(TOOL_LDFLAGS_NOOPT)) $(LINK_EXE)$@ $^ $(TOOL_LPATHS) $(filter-out -lpin$(LIBPIN_SUFFIX),$(TOOL_LIBS))
|