Skip to content
This repository has been archived by the owner on Aug 23, 2022. It is now read-only.

Commit

Permalink
Run unit tests after build
Browse files Browse the repository at this point in the history
  • Loading branch information
artemdinaburg committed Jan 31, 2015
1 parent a0eda1f commit 3b7760a
Show file tree
Hide file tree
Showing 10 changed files with 145 additions and 28 deletions.
39 changes: 33 additions & 6 deletions mc-sema/CMakeLists.txt
Expand Up @@ -85,13 +85,40 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/../llvm-3.5/include)

add_subdirectory(cfgToLLVM)
add_subdirectory(peToCFG)

find_package(Pin)
if(PIN_FOUND)
add_subdirectory(validator)
endif(PIN_FOUND)

add_subdirectory(bitcode_from_cfg)
add_subdirectory(binary_common)
add_subdirectory(bin_descend)


find_package(Pin)
if(NOT PIN_FOUND AND NOT WIN32)

if(UNIX)
set(PIN_DOWNLOAD_URL http://software.intel.com/sites/landingpage/pintool/downloads/pin-2.14-67254-gcc.4.4.7-linux.tar.gz)
set(PIN_DOWNLOAD_HASH 4499cfed383f362a0c74560a3ee66a5f117bea95f40067224ddf3c2606c77006)
endif(UNIX)

if(APPLE)
set(PIN_DOWNLOAD_URL http://software.intel.com/sites/landingpage/pintool/downloads/pin-2.14-67254-clang.5.1-mac.tar.gz)
set(PIN_DOWNLOAD_HASH b715d995bac010fd04c5c33c8efdcd6e2e42db8568a42071cd9a90d9a989e337)
endif(APPLE)

ExternalProject_add(Pin
URL ${PIN_DOWNLOAD_URL}
URL_HASH SHA256=${PIN_DOWNLOAD_HASH}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
SOURCE_DIR pin
INSTALL_COMMAND ""
)

set(PIN_PATH ${CMAKE_CURRENT_BINARY_DIR}/pin)
set(PIN_EXECUTABLE ${CMAKE_CURRENT_BINARY_DIR}/pin/pin)

add_subdirectory(validator)

endif(NOT PIN_FOUND AND NOT WIN32)

if(WIN32 AND PIN_FOUND)
add_subdirectory(validator)
endif(WIN32 AND PIN_FOUND)
2 changes: 1 addition & 1 deletion mc-sema/validator/CMakeLists.txt
@@ -1,3 +1,3 @@
add_subdirectory(valTool)
add_subdirectory(testSemantics)
add_subdirectory(valTest)
add_subdirectory(testSemantics)
10 changes: 8 additions & 2 deletions mc-sema/validator/testSemantics/CMakeLists.txt
@@ -1,5 +1,4 @@
find_package(Nasm REQUIRED)

include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include
${CMAKE_CURRENT_SOURCE_DIR}/../../peToCFG
${CMAKE_CURRENT_SOURCE_DIR}/../../cfgToLLVM
Expand Down Expand Up @@ -33,8 +32,15 @@ IF(UNIX)
target_link_libraries(testSemantics ${DL_LIB})
endif(UNIX)

add_dependencies(testSemantics peToCFG bitreader asmparser bitwriter instrumentation scalaropts ipo pin_validator gtest)
add_dependencies(testSemantics peToCFG bitreader asmparser bitwriter instrumentation scalaropts ipo pin_validator gtest tests.out)

IF(APPLE)
SET_TARGET_PROPERTIES(testSemantics PROPERTIES LINK_FLAGS "-pagezero_size 1000")
endif(APPLE)

if(UNIX)
add_custom_target(run_testSemantics ALL
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/../valTest && ../testSemantics/testSemantics || echo # this echo shouldn't be here. It lets the build continue
DEPENDS testSemantics testSemantics.auto.cpp
)
endif(UNIX)
2 changes: 1 addition & 1 deletion mc-sema/validator/testSemantics/testSemantics.template
Expand Up @@ -746,7 +746,7 @@ Function *ModuleTest::getFunctionForBuffer(string nm, uint8_t *b, size_t l) {
curBlock,
testFn,
testF,
NativeModulePtr());
NativeModulePtr());

if (t == TranslateError || t == TranslateErrorUnsupported) {
broken = true;
Expand Down
38 changes: 25 additions & 13 deletions mc-sema/validator/valTest/CMakeLists.txt
Expand Up @@ -28,26 +28,38 @@ add_custom_target(test_a.auto.obj ALL

)
else(WIN32)
add_custom_target(test_a.auto.obj ALL
COMMAND ${NASM_EXECUTABLE}
-f elf32
-o "${CMAKE_CURRENT_BINARY_DIR}/test_a.auto.obj"
"${CMAKE_CURRENT_SOURCE_DIR}/test_a.auto.asm"
DEPENDS test_a.auto.asm
COMMENT Assembling autogenerated semantics tests

)
if(APPLE)
add_custom_target(test_a.auto.obj ALL
COMMAND ${NASM_EXECUTABLE}
-f macho32
-o "${CMAKE_CURRENT_BINARY_DIR}/test_a.auto.obj"
"${CMAKE_CURRENT_SOURCE_DIR}/test_a.auto.asm"
DEPENDS test_a.auto.asm
COMMENT Assembling autogenerated semantics tests

)
else(APPLE)
add_custom_target(test_a.auto.obj ALL
COMMAND ${NASM_EXECUTABLE}
-f elf32
-o "${CMAKE_CURRENT_BINARY_DIR}/test_a.auto.obj"
"${CMAKE_CURRENT_SOURCE_DIR}/test_a.auto.asm"
DEPENDS test_a.auto.asm
COMMENT Assembling autogenerated semantics tests

)
endif(APPLE)
endif(WIN32)

add_dependencies(test_a.auto.obj test_a.auto.asm)
add_dependencies(test_a.auto.obj test_a.auto.asm Pin)

add_executable(valTest test.c "${CMAKE_CURRENT_BINARY_DIR}/test_a.auto.obj")
if(NOT WIN32)
set_target_properties(valTest PROPERTIES COMPILE_FLAGS "-m32")
set_target_properties(valTest PROPERTIES LINK_FLAGS "-m32")
endif(NOT WIN32)

add_dependencies(valTest test_a.auto.obj)
add_dependencies(valTest test_a.auto.obj Pin)

get_target_property(VALTEST_EXECUTABLE valTest LOCATION)
get_filename_component(VALTEST_PATH ${VALTEST_EXECUTABLE} PATH)
Expand All @@ -61,13 +73,13 @@ add_custom_target(tests.out ALL
)
else(WIN32)
add_custom_target(tests.out ALL
${PIN_EXECUTABLE} "-injection" "child" -t "${CMAKE_CURRENT_SOURCE_DIR}/../valTool/obj-ia32/val.so" -- "${VALTEST_EXECUTABLE}"
${PIN_EXECUTABLE} "-injection" "child" -t "${CMAKE_CURRENT_SOURCE_DIR}/../valTool/val.so" -- "${VALTEST_EXECUTABLE}"
WORKING_DIRECTORY "${VALTEST_PATH}"
COMMENT Running PIN to generate ground truth for semantics tests
DEPENDS valTest
)
endif(WIN32)

IF(APPLE)
SET_TARGET_PROPERTIES(valTest PROPERTIES LINK_FLAGS "-pagezero_size 1000")
SET_TARGET_PROPERTIES(valTest PROPERTIES LINK_FLAGS "-pagezero_size 1000 -arch i386")
endif(APPLE)
2 changes: 2 additions & 0 deletions mc-sema/validator/valTool/CMakeLists.txt
Expand Up @@ -7,3 +7,5 @@ add_custom_target(pin_validate ALL
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT Building PIN tool for Win32...
)

add_dependencies(pin_validate Pin)
25 changes: 25 additions & 0 deletions mc-sema/validator/valTool/Makefile.linux
@@ -0,0 +1,25 @@

CC ?= gcc
CXX ?= g++

CXXFLAGS:=-std=c++11 -m32 -DTARGET_IA32 -DHOST_IA32 -DTARGET_LINUX -fPIC
INCLUDE:=-I$(PIN_HOME)/source/include/pin -I$(PIN_HOME)/source/include/pin/gen -I$(PIN_HOME)/extras/components/include -I$(PIN_HOME)/extras/xed2-ia32/include

LDFLAGS:=-m32 -shared -Wl,--hash-style=sysv -Wl,-Bsymbolic -lpin -lxed -ldwarf -lelf -ldl
LPATHS:=-L$(PIN_HOME)/ia32/lib/ -L$(PIN_HOME)/ia32/lib-ext -L$(PIN_HOME)/extras/xed2-ia32/lib

SRC=$(wildcard *.cpp)
OBJS=$(patsubst %.cpp,%.o,$(SRC))

TARGET=val.so

all: $(SRC) $(OBJS) $(TARGET)

$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) -shared -m32 $(LPATHS) $(LDFLAGS)

%.o: %.cpp Makefile.linux
$(CXX) $(CXXFLAGS) $(INCLUDE) -c $< -o $@

clean:
rm $(TARGET) $(OBJS)
25 changes: 25 additions & 0 deletions mc-sema/validator/valTool/Makefile.osx
@@ -0,0 +1,25 @@

CC ?= clang
CXX ?= clang++

CXXFLAGS:=-std=c++11 -DTARGET_IA32 -DHOST_IA32 -DTARGET_MAC -fPIC -arch i386 -stdlib=libstdc++
INCLUDE:=-I$(PIN_HOME)/source/include/pin -I$(PIN_HOME)/source/include/pin/gen -I$(PIN_HOME)/extras/components/include -I$(PIN_HOME)/extras/xed2-ia32/include

LDFLAGS:=-stdlib=libstdc++ -shared -lpin -lxed -ldl
LPATHS:=-L$(PIN_HOME)/ia32/lib/ -L$(PIN_HOME)/ia32/lib-ext -L$(PIN_HOME)/extras/xed2-ia32/lib -L$(PIN_HOME)/ia32/runtime/glibc

SRC=$(wildcard *.cpp)
OBJS=$(patsubst %.cpp,%.o,$(SRC))

TARGET=val.so

all: $(SRC) $(OBJS) $(TARGET)

$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) -shared -m32 $(LPATHS) $(LDFLAGS)

%.o: %.cpp Makefile.osx
$(CXX) $(CXXFLAGS) $(INCLUDE) -c $< -o $@

clean:
rm $(TARGET) $(OBJS)
15 changes: 14 additions & 1 deletion mc-sema/validator/valTool/val.cpp
Expand Up @@ -38,7 +38,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <cassert>
#include <limits>
#include <cstring>
#include <cstdint>
#if !defined(__APPLE__)
#include <cstdint>
#endif

using namespace std;

Expand Down Expand Up @@ -290,6 +292,17 @@ string dumpRegisterState(const CONTEXT *ctx) {

res += "ST"+decstr(i)+":"+ss.str() + "\n";
}

for(unsigned i = 0;
i < ARRAYSIZE(fpu_regs.XMM);
i++) {
stringstream ss;
for(unsigned j = 0; j < sizeof(fpu_regs.XMM[0]); j++) {
ss << std::setw(2) << std::setfill('0') << std::hex << (unsigned)fpu_regs.XMM[i].pad[j] << " ";
}

res += "XMM"+decstr(i)+":"+ss.str() + "\n";
}

//dump EFLAGS seperately
ADDRINT efVal = PIN_GetContextReg(ctx, REG_EFLAGS);
Expand Down
15 changes: 11 additions & 4 deletions mc-sema/validator/valTool/valTool.cmake
Expand Up @@ -7,8 +7,15 @@ execute_process(
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
else(WIN32)
execute_process(
COMMAND make -f makefile
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
if(APPLE)
execute_process(
COMMAND make -f Makefile.osx
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
else(APPLE)
execute_process(
COMMAND make -f Makefile.linux
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
endif(APPLE)
endif(WIN32)

0 comments on commit 3b7760a

Please sign in to comment.