Adds new struct_verifier ctest to cmake

Currently only testing 32bit syscall struct definitions
This commit is contained in:
Ryan Houdek committed 2021-03-15 15:24:49 -07:00
1 parent e0c5840f2c
commit aacb0f6891
2 files changed
+76 -9

No files matched your search

+11 -9
View File
@@ -46,8 +46,8 @@ class AliasType:
@dataclass
class StructDefinition(TypeDefinition):
Size: int
Aliases: list[AliasType]
Members: list[TypeDefinition]
Aliases: list
Members: list
ExpectFEXMatch: bool
def __init__(self, Name, Size):
@@ -60,8 +60,8 @@ class StructDefinition(TypeDefinition):
@dataclass
class UnionDefinition(TypeDefinition):
Size: int
Aliases: list[AliasType]
Members: list[TypeDefinition]
Aliases: list
Members: list
ExpectFEXMatch: bool
def __init__(self, Name, Size):
@@ -86,12 +86,12 @@ class FieldDefinition(TypeDefinition):
class ArchDB:
Parsed: bool
ArchName: str
NamespaceScope: list[str]
NamespaceScope: list
CurrentNamespace: str
TU: TranslationUnit
Structs: dict[StructDefinition]
Unions: dict[UnionDefinition]
FieldDecls: list[FieldDefinition]
Structs: dict
Unions: dict
FieldDecls: list
def __init__(self, ArchName):
self.Parsed = True
self.ArchName = ArchName
@@ -103,7 +103,7 @@ class ArchDB:
self.FieldDecls = []
class DBList:
DBs: list[ArchDB]
DBs: list
def __init__(self, DB32, DB64, DBAArch64, DBWin32, DBWin64):
self.DBs = [DB32, DB64, DBAArch64, DBWin32, DBWin64]
@@ -551,6 +551,8 @@ def main():
args_x86_64 = [
"-I/usr/include/x86_64-linux-gnu",
"-I/usr/x86_64-linux-gnu/include/c++/10/x86_64-linux-gnu/",
"-I/usr/x86_64-linux-gnu/include/",
"-O2",
"--target=x86_64-linux-unknown",
]
+65
View File
@@ -55,3 +55,68 @@ add_library(LinuxEmulation STATIC
target_link_libraries(LinuxEmulation FEXCore pthread numa)
target_include_directories(LinuxEmulation PRIVATE ${CMAKE_BINARY_DIR}/generated)
set(HEADERS_TO_VERIFY
x32/Types.h x86_32 # This needs to match structs to 32bit structs
)
list(LENGTH HEADERS_TO_VERIFY ARG_COUNT)
math(EXPR ARG_COUNT "${ARG_COUNT}-1")
set (ARGS
"-x" "c++"
"-std=c++20")
# Global include directories
get_directory_property (INC_DIRS INCLUDE_DIRECTORIES)
list(TRANSFORM INC_DIRS PREPEND "-I")
list(APPEND ARGS ${INC_DIRS})
# FEXCore directories
get_target_property(INC_DIRS FEXCore INTERFACE_INCLUDE_DIRECTORIES)
list(TRANSFORM INC_DIRS PREPEND "-I")
list(APPEND ARGS ${INC_DIRS})
foreach(Index RANGE 0 ${ARG_COUNT} 2)
math(EXPR TEST_TYPE_INDEX "${Index}+1")
list(GET HEADERS_TO_VERIFY ${Index} HEADER)
list(GET HEADERS_TO_VERIFY ${TEST_TYPE_INDEX} TEST_TYPE)
file(RELATIVE_PATH REL_HEADER ${CMAKE_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}")
set(TEST_NAME "${TEST_DESC}/Test_verify_${HEADER}")
set(TEST_NAME_ARCH "${TEST_DESC}/Test_verify_arch_${HEADER}")
add_test(
NAME ${TEST_NAME}_x86_64
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "x86_64" "${REL_HEADER}" ${ARGS})
add_test(
NAME ${TEST_NAME}_aarch64
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "aarch64" "${REL_HEADER}" ${ARGS})
add_test(
NAME ${TEST_NAME_ARCH}_x86_64
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "x86_64" "-c2" "${TEST_TYPE}" "${REL_HEADER}" ${ARGS})
add_test(
NAME ${TEST_NAME_ARCH}_aarch64
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "aarch64" "-c2" "${TEST_TYPE}" "${REL_HEADER}" ${ARGS})
set_property(TEST ${TEST_NAME}_x86_64 APPEND PROPERTY DEPENDS "${HEADER}")
set_property(TEST ${TEST_NAME}_aarch64 APPEND PROPERTY DEPENDS "${HEADER}")
set_property(TEST ${TEST_NAME_ARCH}_x86_64 APPEND PROPERTY DEPENDS "${HEADER}")
set_property(TEST ${TEST_NAME_ARCH}_aarch64 APPEND PROPERTY DEPENDS "${HEADER}")
endforeach()
execute_process(COMMAND "nproc" OUTPUT_VARIABLE CORES)
string(STRIP ${CORES} CORES)
add_custom_target(
struct_verifier
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
USES_TERMINAL
COMMAND "ctest" "--timeout" "302" "-j${CORES}" "-R" "Test_verify*")