diff --git a/CMakeLists.txt b/CMakeLists.txt index 10d6a6c..5ea45cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,5 @@ cmake_minimum_required(VERSION 2.8.12) +cmake_policy(SET CMP0054 NEW) include(GenerateExportHeader) project(Zydis) @@ -12,28 +13,25 @@ option(BUILD_EXAMPLES "Build examples" TRUE) option(BUILD_TOOLS "Build tools") if (NOT CONFIGURED_ONCE) - if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR - "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR + "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") set(compiler_specific "-std=c99 -pedantic -Wextra -Werror") elseif (MSVC) set(compiler_specific "/WX /W4 /D_CRT_SECURE_NO_WARNINGS /TC") endif () - - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${compiler_specific} ${compiler_specific_cxx}" - CACHE STRING "Flags used by the compiler during all build types." FORCE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${compiler_specific}" CACHE STRING "Flags used by the compiler during all build types." FORCE) endif () # CMake always orders MSVC to build with a shared CRT. Hack CMake variables in order # to generate with a statically linked CRT when we build as a static library. -if (MSVC AND NOT FORCE_SHARED_CRT) +if (("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") AND NOT FORCE_SHARED_CRT) foreach(flag_var - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) if(${flag_var} MATCHES "/MD") string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MD") + endif () endforeach(flag_var) endif () @@ -66,7 +64,7 @@ if (BUILD_SHARED_LIBS AND WIN32) endif () add_library("Zydis" ${headers} ${sources}) -set_target_properties("Zydis" PROPERTIES COMPILE_DEFINITIONS "Zydis_EXPORTS") +set_target_properties("Zydis" PROPERTIES COMPILE_DEFINITIONS "ZYDIS_EXPORTS") generate_export_header( "Zydis" BASE_NAME "ZYDIS" diff --git a/README.md b/README.md index 11cbddc..0414325 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,11 @@ Fast and lightweight x86/x86-64 disassembler library. - ADX, BMI1, BMI2, FMA, FMA4 - .. - Optimized for high performance -- Very small overhead compared to other common disassembler libraries +- No dynamic memory allocation + - Perfect for kernel-mode drivers and embedded devices +- Very small file-size overhead compared to other common disassembler libraries +- Language bindings + - C++, Delphi, Python, .. - Complete doxygen documentation ## Quick Example ## diff --git a/include/Zydis/Decoder.h b/include/Zydis/Decoder.h index 41d4444..57c60bb 100644 --- a/include/Zydis/Decoder.h +++ b/include/Zydis/Decoder.h @@ -104,7 +104,7 @@ typedef struct ZydisInstructionDecoder_ * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderInitInstructionDecoder(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderInitInstructionDecoder(ZydisInstructionDecoder* decoder, ZydisDisassemblerMode disassemblerMode, ZydisCustomInput* input); /** @@ -117,7 +117,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderInitInstructionDecoder(ZydisInstructionD * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderInitInstructionDecoderEx(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderInitInstructionDecoderEx(ZydisInstructionDecoder* decoder, ZydisDisassemblerMode disassemblerMode, ZydisCustomInput* input, ZydisDecoderFlags flags); /** @@ -129,7 +129,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderInitInstructionDecoderEx(ZydisInstructio * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetDisassemblerMode(const ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderGetDisassemblerMode(const ZydisInstructionDecoder* decoder, ZydisDisassemblerMode* disassemblerMode); /** @@ -140,7 +140,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetDisassemblerMode(const ZydisInstructi * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetDisassemblerMode(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderSetDisassemblerMode(ZydisInstructionDecoder* decoder, ZydisDisassemblerMode disassemblerMode); /** @@ -152,7 +152,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetDisassemblerMode(ZydisInstructionDeco * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetDecoderInput(const ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderGetDecoderInput(const ZydisInstructionDecoder* decoder, ZydisCustomInput** input); /** @@ -163,7 +163,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetDecoderInput(const ZydisInstructionDe * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetDecoderInput(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderSetDecoderInput(ZydisInstructionDecoder* decoder, ZydisCustomInput* input); /** @@ -174,7 +174,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetDecoderInput(ZydisInstructionDecoder* * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetDecoderFlags(const ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderGetDecoderFlags(const ZydisInstructionDecoder* decoder, ZydisDecoderFlags* flags); /** @@ -185,7 +185,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetDecoderFlags(const ZydisInstructionDe * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetDecoderFlags(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderSetDecoderFlags(ZydisInstructionDecoder* decoder, ZydisDecoderFlags flags); /** @@ -198,7 +198,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetDecoderFlags(ZydisInstructionDecoder* * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetInstructionPointer( +ZYDIS_EXPORT ZydisStatus ZydisDecoderGetInstructionPointer( const ZydisInstructionDecoder* decoder, uint64_t* instructionPointer); /** @@ -209,7 +209,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderGetInstructionPointer( * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetInstructionPointer(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderSetInstructionPointer(ZydisInstructionDecoder* decoder, uint64_t instructionPointer); /** @@ -221,7 +221,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderSetInstructionPointer(ZydisInstructionDe * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisDecoderDecodeNextInstruction(ZydisInstructionDecoder* decoder, +ZYDIS_EXPORT ZydisStatus ZydisDecoderDecodeNextInstruction(ZydisInstructionDecoder* decoder, ZydisInstructionInfo* info); /* ============================================================================================== */ diff --git a/include/Zydis/Defines.h b/include/Zydis/Defines.h index 8d0303f..0d7edb2 100644 --- a/include/Zydis/Defines.h +++ b/include/Zydis/Defines.h @@ -27,6 +27,8 @@ #ifndef ZYDIS_DEFINES_H #define ZYDIS_DEFINES_H +#include + /* ============================================================================================== */ /* Compiler detection */ /* ============================================================================================== */ @@ -110,20 +112,6 @@ # define ZYDIS_INLINE static inline #endif -/* ============================================================================================== */ -/* Dynamic linkage macros */ -/* ============================================================================================== */ - -#if defined(ZYDIS_MSVC) && defined(ZYDIS_DYNAMIC) -# ifdef ZYDIS_EXPORTS -# define ZYDIS_DLLEXTERN __declspec(dllexport) -# else -# define ZYDIS_DLLEXTERN __declspec(dllimport) -# endif -#else -# define ZYDIS_DLLEXTERN -#endif - /* ============================================================================================== */ /* Debugging macros */ /* ============================================================================================== */ diff --git a/include/Zydis/Formatter.h b/include/Zydis/Formatter.h index 6e9c2ff..314ba3b 100644 --- a/include/Zydis/Formatter.h +++ b/include/Zydis/Formatter.h @@ -192,7 +192,7 @@ typedef struct ZydisInstructionFormatter_ * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterInitInstructionFormatter( +ZYDIS_EXPORT ZydisStatus ZydisFormatterInitInstructionFormatter( ZydisInstructionFormatter* formatter, ZydisFormatterStyle style); /** @@ -204,7 +204,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterInitInstructionFormatter( * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterInitInstructionFormatterEx( +ZYDIS_EXPORT ZydisStatus ZydisFormatterInitInstructionFormatterEx( ZydisInstructionFormatter* formatter, ZydisFormatterStyle style, ZydisFormatterFlags flags); /** @@ -216,7 +216,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterInitInstructionFormatterEx( * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterGetSymbolResolver( +ZYDIS_EXPORT ZydisStatus ZydisFormatterGetSymbolResolver( const ZydisInstructionFormatter* formatter, ZydisCustomSymbolResolver** symbolResolver); /** @@ -227,7 +227,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterGetSymbolResolver( * * @return The ZydisStatus. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterSetSymbolResolver( +ZYDIS_EXPORT ZydisStatus ZydisFormatterSetSymbolResolver( ZydisInstructionFormatter* formatter, ZydisCustomSymbolResolver* symbolResolver); /** @@ -240,7 +240,7 @@ ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterSetSymbolResolver( * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisFormatterFormatInstruction( +ZYDIS_EXPORT ZydisStatus ZydisFormatterFormatInstruction( ZydisInstructionFormatter* formatter, const ZydisInstructionInfo* info, char* buffer, size_t bufferLen); diff --git a/include/Zydis/Input.h b/include/Zydis/Input.h index 43b2f66..27d66b5 100644 --- a/include/Zydis/Input.h +++ b/include/Zydis/Input.h @@ -116,7 +116,7 @@ typedef struct ZydisMemoryInput_ * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisInputInitMemoryInput(ZydisMemoryInput* input, const void* buffer, +ZYDIS_EXPORT ZydisStatus ZydisInputInitMemoryInput(ZydisMemoryInput* input, const void* buffer, uint64_t length); /* ---------------------------------------------------------------------------------------------- */ @@ -159,7 +159,7 @@ typedef struct ZydisFileInput_ * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisInputInitFileInput(ZydisFileInput* input, FILE* file); +ZYDIS_EXPORT ZydisStatus ZydisInputInitFileInput(ZydisFileInput* input, FILE* file); /* ---------------------------------------------------------------------------------------------- */ diff --git a/include/Zydis/Mnemonic.h b/include/Zydis/Mnemonic.h index 8260b81..a03cc4d 100644 --- a/include/Zydis/Mnemonic.h +++ b/include/Zydis/Mnemonic.h @@ -63,7 +63,7 @@ enum ZydisInstructionMnemonics * * @return The instruction mnemonic string or @c NULL, if an invalid mnemonic was passed. */ -ZYDIS_DLLEXTERN const char* ZydisMnemonicGetString(ZydisInstructionMnemonic mnemonic); +ZYDIS_EXPORT const char* ZydisMnemonicGetString(ZydisInstructionMnemonic mnemonic); /** * @brief Replaces the string representation of the given mnemonic with a new value. @@ -73,7 +73,7 @@ ZYDIS_DLLEXTERN const char* ZydisMnemonicGetString(ZydisInstructionMnemonic mnem * * @return A zydis status code. */ -ZYDIS_DLLEXTERN ZydisStatus ZydisMnemonicReplaceString(ZydisInstructionMnemonic mnemonic, +ZYDIS_EXPORT ZydisStatus ZydisMnemonicReplaceString(ZydisInstructionMnemonic mnemonic, const char* mnemonicString); /* ============================================================================================== */ diff --git a/include/Zydis/Register.h b/include/Zydis/Register.h index 52e63d3..93c93dd 100644 --- a/include/Zydis/Register.h +++ b/include/Zydis/Register.h @@ -194,7 +194,7 @@ enum ZydisRegisterSizes * * @return The register specified by the @c registerClass and the @c id. */ -ZYDIS_DLLEXTERN ZydisRegister ZydisRegisterGetById(ZydisRegisterClass registerClass, uint8_t id); +ZYDIS_EXPORT ZydisRegister ZydisRegisterGetById(ZydisRegisterClass registerClass, uint8_t id); /** * @brief Returns the specified register string. @@ -203,7 +203,7 @@ ZYDIS_DLLEXTERN ZydisRegister ZydisRegisterGetById(ZydisRegisterClass registerCl * * @return The register string or @c NULL, if an invalid register was passed. */ -ZYDIS_DLLEXTERN const char* ZydisRegisterGetString(ZydisRegister reg); +ZYDIS_EXPORT const char* ZydisRegisterGetString(ZydisRegister reg); /** * @brief Returns the register-class of the specified register. @@ -212,7 +212,7 @@ ZYDIS_DLLEXTERN const char* ZydisRegisterGetString(ZydisRegister reg); * * @return The register-class of the specified register. */ -ZYDIS_DLLEXTERN ZydisRegisterClass ZydisRegisterGetClass(ZydisRegister reg); +ZYDIS_EXPORT ZydisRegisterClass ZydisRegisterGetClass(ZydisRegister reg); /** * @brief Returns the size of the specified register. @@ -221,7 +221,7 @@ ZYDIS_DLLEXTERN ZydisRegisterClass ZydisRegisterGetClass(ZydisRegister reg); * * @return The size of the specified register. */ -ZYDIS_DLLEXTERN ZydisRegisterSize ZydisRegisterGetSize(ZydisRegister reg); +ZYDIS_EXPORT ZydisRegisterSize ZydisRegisterGetSize(ZydisRegister reg); /** * @brief Checks if the specified register is a general purpose register. @@ -230,7 +230,7 @@ ZYDIS_DLLEXTERN ZydisRegisterSize ZydisRegisterGetSize(ZydisRegister reg); * * @return True, if the specified register is a general purpose register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsGPR(ZydisRegister reg); /** * @brief Checks if the specified register is a 8-bit general purpose register. @@ -239,7 +239,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR(ZydisRegister reg); * * @return True, if the specified register is a 8-bit general purpose register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR8(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsGPR8(ZydisRegister reg); /** * @brief Checks if the specified register is a 16-bit general purpose register. @@ -248,7 +248,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR8(ZydisRegister reg); * * @return True, if the specified register is a 16-bit general purpose register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR16(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsGPR16(ZydisRegister reg); /** * @brief Checks if the specified register is a 32-bit general purpose register. @@ -257,7 +257,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR16(ZydisRegister reg); * * @return True, if the specified register is a 32-bit general purpose register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR32(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsGPR32(ZydisRegister reg); /** * @brief Checks if the specified register is a 64-bit general purpose register. @@ -266,7 +266,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR32(ZydisRegister reg); * * @return True, if the specified register is a 64-bit general purpose register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR64(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsGPR64(ZydisRegister reg); /** * @brief Checks if the specified register is a legacy floating-point register. @@ -275,7 +275,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsGPR64(ZydisRegister reg); * * @return True, if the specified register is a legacy floating-point register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsFPRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsFPRegister(ZydisRegister reg); /** * @brief Checks if the specified register is a multi-media register. @@ -284,7 +284,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsFPRegister(ZydisRegister reg); * * @return True, if the specified register is a multi-media register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsMMRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsMMRegister(ZydisRegister reg); /** * @brief Checks if the specified register is a vector register. @@ -293,7 +293,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsMMRegister(ZydisRegister reg); * * @return True, if the specified register is a vector register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsVR(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsVR(ZydisRegister reg); /** * @brief Checks if the specified register is a 128-bit vector register. @@ -302,7 +302,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsVR(ZydisRegister reg); * * @return True, if the specified register is a 128-bit vector register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsVR128(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsVR128(ZydisRegister reg); /** * @brief Checks if the specified register is a 256-bit vector register. @@ -311,7 +311,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsVR128(ZydisRegister reg); * * @return True, if the specified register is a 256-bit vector register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsVR256(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsVR256(ZydisRegister reg); /** * @brief Checks if the specified register is a 512-bit vector register. @@ -320,7 +320,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsVR256(ZydisRegister reg); * * @return True, if the specified register is a 512-bit vector register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsVR512(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsVR512(ZydisRegister reg); /** * @brief Checks if the specified register is a flags register. @@ -329,7 +329,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsVR512(ZydisRegister reg); * * @return True, if the specified register is a flags register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsFlagsRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsFlagsRegister(ZydisRegister reg); /** * @brief Checks if the specified register is an instruction-pointer register. @@ -338,7 +338,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsFlagsRegister(ZydisRegister reg); * * @return True, if the specified register is a instruction-pointer register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsIPRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsIPRegister(ZydisRegister reg); /** * @brief Checks if the specified register is a segment register. @@ -347,7 +347,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsIPRegister(ZydisRegister reg); * * @return True, if the specified register is a segment register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsSegmentRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsSegmentRegister(ZydisRegister reg); /** * @brief Checks if the specified register is a control register. @@ -356,7 +356,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsSegmentRegister(ZydisRegister reg); * * @return True, if the specified register is a control register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsCR(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsCR(ZydisRegister reg); /** * @brief Checks if the specified register is a debug register. @@ -365,7 +365,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsCR(ZydisRegister reg); * * @return True, if the specified register is a debug register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsDR(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsDR(ZydisRegister reg); /** * @brief Checks if the specified register is a mask register. @@ -374,7 +374,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsDR(ZydisRegister reg); * * @return True, if the specified register is a mask register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsMaskRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsMaskRegister(ZydisRegister reg); /** * @brief Checks if the specified register is a bound register. @@ -383,7 +383,7 @@ ZYDIS_DLLEXTERN bool ZydisRegisterIsMaskRegister(ZydisRegister reg); * * @return True, if the specified register is a bound register. */ -ZYDIS_DLLEXTERN bool ZydisRegisterIsBoundsRegister(ZydisRegister reg); +ZYDIS_EXPORT bool ZydisRegisterIsBoundsRegister(ZydisRegister reg); /* ============================================================================================== */ diff --git a/include/Zydis/SymbolResolver.h b/include/Zydis/SymbolResolver.h index 666774a..68bcca3 100644 --- a/include/Zydis/SymbolResolver.h +++ b/include/Zydis/SymbolResolver.h @@ -48,6 +48,7 @@ extern "C" { * * This function should return the name of the symbol found at the given @c address and an * optional @c offset. + * If no symbol was found at the given @c address, the return value should be @c NULL. */ typedef const char* (*ZydisResolverResolveSymbolFunc)(void* context, const ZydisInstructionInfo* info, const ZydisOperandInfo* operand, uint64_t address, diff --git a/include/Zydis/Utils.h b/include/Zydis/Utils.h index 38c8319..29a14b2 100644 --- a/include/Zydis/Utils.h +++ b/include/Zydis/Utils.h @@ -53,7 +53,7 @@ extern "C" { * * @return A zydis status code */ -ZYDIS_DLLEXTERN ZydisStatus ZydisUtilsCalcAbsoluteTargetAddress(const ZydisInstructionInfo* info, +ZYDIS_EXPORT ZydisStatus ZydisUtilsCalcAbsoluteTargetAddress(const ZydisInstructionInfo* info, const ZydisOperandInfo* operand, uint64_t* address); /* ---------------------------------------------------------------------------------------------- */ diff --git a/include/Zydis/Zydis.h b/include/Zydis/Zydis.h index 1760ef8..62da695 100644 --- a/include/Zydis/Zydis.h +++ b/include/Zydis/Zydis.h @@ -99,7 +99,7 @@ extern "C" { * Use the macros provided in this file to extract the major, minor, patch and build part from the * returned version value. */ -ZYDIS_DLLEXTERN uint64_t ZydisGetVersion(); +ZYDIS_EXPORT uint64_t ZydisGetVersion(); /* ============================================================================================== */