From e1bd84d7f3b3ffd25cf91a2d3d0790edde014ced Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sun, 18 Nov 2018 04:18:42 +0100 Subject: [PATCH 1/4] CMake: set PDB output directory, don't set default build type --- CMakeLists.txt | 8 +++++++- src/CMakeLists.txt | 6 ++---- src/Cedar/CMakeLists.txt | 6 ++++++ src/Mayaqua/CMakeLists.txt | 14 ++++++++++---- src/PenCore/CMakeLists.txt | 1 + src/hamcorebuilder/CMakeLists.txt | 7 +++++++ src/vpnbridge/CMakeLists.txt | 7 +++++++ src/vpnclient/CMakeLists.txt | 7 +++++++ src/vpncmd/CMakeLists.txt | 7 +++++++ src/vpncmgr/CMakeLists.txt | 1 + src/vpnserver/CMakeLists.txt | 7 +++++++ src/vpnsmgr/CMakeLists.txt | 1 + src/vpntest/CMakeLists.txt | 7 +++++++ 13 files changed, 70 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c6f5b7c..519d2a0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,13 @@ project(SoftEtherVPN LANGUAGES C ) -set(default_build_type "Release") +# We define a dedicated variable because CMAKE_BUILD_TYPE can have different +# configurations than "Debug" and "Release", such as "RelWithDebInfo". +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(BUILD_TYPE "Debug") +else() + set(BUILD_TYPE "Release") +endif() # Check that submodules are present only if source was downloaded with git if(EXISTS "${SoftEtherVPN_SOURCE_DIR}/.git" AND NOT EXISTS "${SoftEtherVPN_SOURCE_DIR}/src/Mayaqua/3rdparty/cpu_features/CMakeLists.txt") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 763bc2f4..f63de397 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,11 +16,9 @@ if(UNIX) endmacro(install_wrapper_script) endif() -if(CMAKE_BUILD_TYPE STREQUAL "Debug") +if(BUILD_TYPE STREQUAL "Debug") add_definitions(-D_DEBUG -DDEBUG) -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Release") +else() add_definitions(-DNDEBUG -DVPN_SPEED) endif() diff --git a/src/Cedar/CMakeLists.txt b/src/Cedar/CMakeLists.txt index 186f0662..c89b1d1a 100644 --- a/src/Cedar/CMakeLists.txt +++ b/src/Cedar/CMakeLists.txt @@ -20,6 +20,12 @@ set_target_properties(cedar ) if(WIN32) + set_target_properties(cedar + PROPERTIES + COMPILE_PDB_NAME "cedar" + COMPILE_PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) + target_include_directories(cedar PRIVATE winpcap) endif() diff --git a/src/Mayaqua/CMakeLists.txt b/src/Mayaqua/CMakeLists.txt index cd5df0a9..2c6f84a7 100644 --- a/src/Mayaqua/CMakeLists.txt +++ b/src/Mayaqua/CMakeLists.txt @@ -17,6 +17,12 @@ set_target_properties(mayaqua ) if(WIN32) + set_target_properties(mayaqua + PROPERTIES + COMPILE_PDB_NAME "mayaqua" + COMPILE_PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) + add_subdirectory(3rdparty/zlib) target_include_directories(mayaqua PRIVATE win32_inc) @@ -25,22 +31,22 @@ if(WIN32) if(${COMPILER_ARCHITECTURE} STREQUAL "x64") find_library(LIB_SSL NAMES libssl ssleay32 - HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/x64_${CMAKE_BUILD_TYPE}" + HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/x64_${BUILD_TYPE}" ) find_library(LIB_CRYPTO NAMES libcrypto libeay32 - HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/x64_${CMAKE_BUILD_TYPE}" + HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/x64_${BUILD_TYPE}" ) else() find_library(LIB_SSL NAMES libssl ssleay32 - HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/Win32_${CMAKE_BUILD_TYPE}" + HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/Win32_${BUILD_TYPE}" ) find_library(LIB_CRYPTO NAMES libcrypto libeay32 - HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/Win32_${CMAKE_BUILD_TYPE}" + HINTS "${CMAKE_SOURCE_DIR}/src/BuildFiles/Library/vs2017/Win32_${BUILD_TYPE}" ) endif() diff --git a/src/PenCore/CMakeLists.txt b/src/PenCore/CMakeLists.txt index 0e77093d..eb579b47 100644 --- a/src/PenCore/CMakeLists.txt +++ b/src/PenCore/CMakeLists.txt @@ -9,6 +9,7 @@ set_target_properties(PenCore ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/bin/hamcore" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/bin/hamcore" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/bin/hamcore" + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) target_link_libraries(PenCore cedar mayaqua) diff --git a/src/hamcorebuilder/CMakeLists.txt b/src/hamcorebuilder/CMakeLists.txt index a4fb02d5..7a25e5c8 100644 --- a/src/hamcorebuilder/CMakeLists.txt +++ b/src/hamcorebuilder/CMakeLists.txt @@ -7,4 +7,11 @@ set_target_properties(hamcorebuilder RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/tmp" ) +if(WIN32) + set_target_properties(hamcorebuilder + PROPERTIES + PDB_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/tmp" + ) +endif() + target_link_libraries(hamcorebuilder cedar mayaqua) diff --git a/src/vpnbridge/CMakeLists.txt b/src/vpnbridge/CMakeLists.txt index d5e47bd7..b57f4d83 100644 --- a/src/vpnbridge/CMakeLists.txt +++ b/src/vpnbridge/CMakeLists.txt @@ -13,6 +13,13 @@ set_target_properties(vpnbridge RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) +if(WIN32) + set_target_properties(vpnbridge + PROPERTIES + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) +endif() + target_link_libraries(vpnbridge cedar mayaqua) if(UNIX) diff --git a/src/vpnclient/CMakeLists.txt b/src/vpnclient/CMakeLists.txt index 0634b357..abf82ad2 100644 --- a/src/vpnclient/CMakeLists.txt +++ b/src/vpnclient/CMakeLists.txt @@ -13,6 +13,13 @@ set_target_properties(vpnclient RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) +if(WIN32) + set_target_properties(vpnclient + PROPERTIES + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) +endif() + target_link_libraries(vpnclient cedar mayaqua) if(UNIX) diff --git a/src/vpncmd/CMakeLists.txt b/src/vpncmd/CMakeLists.txt index a4da4e31..8087f09a 100644 --- a/src/vpncmd/CMakeLists.txt +++ b/src/vpncmd/CMakeLists.txt @@ -13,6 +13,13 @@ set_target_properties(vpncmd RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) +if(WIN32) + set_target_properties(vpncmd + PROPERTIES + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) +endif() + target_link_libraries(vpncmd cedar mayaqua) if(UNIX) diff --git a/src/vpncmgr/CMakeLists.txt b/src/vpncmgr/CMakeLists.txt index a3ee5bc4..9d4aa7be 100644 --- a/src/vpncmgr/CMakeLists.txt +++ b/src/vpncmgr/CMakeLists.txt @@ -17,6 +17,7 @@ set_target_properties(vpncmgr ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" LIBRARY_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) target_link_libraries(vpncmgr cedar mayaqua) diff --git a/src/vpnserver/CMakeLists.txt b/src/vpnserver/CMakeLists.txt index 87f8b0a1..81c4eb6c 100644 --- a/src/vpnserver/CMakeLists.txt +++ b/src/vpnserver/CMakeLists.txt @@ -13,6 +13,13 @@ set_target_properties(vpnserver RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) +if(WIN32) + set_target_properties(vpnserver + PROPERTIES + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) +endif() + target_link_libraries(vpnserver cedar mayaqua) if(UNIX) diff --git a/src/vpnsmgr/CMakeLists.txt b/src/vpnsmgr/CMakeLists.txt index 626633cd..8e79bd0e 100644 --- a/src/vpnsmgr/CMakeLists.txt +++ b/src/vpnsmgr/CMakeLists.txt @@ -17,6 +17,7 @@ set_target_properties(vpnsmgr ARCHIVE_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" LIBRARY_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) target_link_libraries(vpnsmgr cedar mayaqua) diff --git a/src/vpntest/CMakeLists.txt b/src/vpntest/CMakeLists.txt index ed30de26..9e3dde20 100644 --- a/src/vpntest/CMakeLists.txt +++ b/src/vpntest/CMakeLists.txt @@ -17,4 +17,11 @@ set_target_properties(vpntest RUNTIME_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" ) +if(WIN32) + set_target_properties(vpntest + PROPERTIES + PDB_OUTPUT_DIRECTORY "${BUILD_DIRECTORY}" + ) +endif() + target_link_libraries(vpntest cedar mayaqua) From 4e7d946214cd8ecc8fb72cbce0de110bd0001a67 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sat, 17 Nov 2018 20:56:19 +0000 Subject: [PATCH 2/4] configure: set build type to "RelWithDebInfo" --- configure | 2 +- configure.cmd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index d43691a0..9e16fb09 100755 --- a/configure +++ b/configure @@ -45,7 +45,7 @@ fi echo "" -(cd tmp && cmake ${CMAKE_FLAGS} .. || exit 1) +(cd tmp && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ${CMAKE_FLAGS} .. || exit 1) echo "" diff --git a/configure.cmd b/configure.cmd index 7a9c1eb0..f2e9fd5e 100644 --- a/configure.cmd +++ b/configure.cmd @@ -23,7 +23,7 @@ if not exist "tmp" ( cd tmp -cmake -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" .. +cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -G "NMake Makefiles" .. if %errorlevel% == 0 ( echo. From c48de5924a3156c301acb1f8d81566bd5d61d845 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sun, 18 Nov 2018 02:57:14 +0100 Subject: [PATCH 3/4] Mayaqua: ability to toggle memory tracking at runtime, various logic improvements --- src/Mayaqua/Mayaqua.c | 34 ++++++++++++++----------- src/Mayaqua/Mayaqua.h | 52 ++++++++++++++++---------------------- src/Mayaqua/Memory.c | 57 ++++-------------------------------------- src/Mayaqua/Table.c | 10 -------- src/Mayaqua/Tracking.c | 48 ++++++----------------------------- src/Mayaqua/Tracking.h | 4 --- 6 files changed, 53 insertions(+), 152 deletions(-) diff --git a/src/Mayaqua/Mayaqua.c b/src/Mayaqua/Mayaqua.c index cd8708cb..5cb04c31 100644 --- a/src/Mayaqua/Mayaqua.c +++ b/src/Mayaqua/Mayaqua.c @@ -552,8 +552,11 @@ void InitMayaqua(bool memcheck, bool debug, int argc, char **argv) // Initialize the Kernel status InitKernelStatus(); - // Initialize the tracking - InitTracking(); + if (IsTrackingEnabled()) + { + // Initialize the tracking + InitTracking(); + } // Initialization of thread pool InitThreading(); @@ -696,22 +699,23 @@ void FreeMayaqua() // Release of thread pool FreeThreading(); -#ifndef VPN_SPEED - // Show the kernel status - if (g_debug) + if (IsTrackingEnabled()) { - PrintKernelStatus(); - } + // Show the kernel status + if (g_debug) + { + PrintKernelStatus(); + } - // Display the debug information - if (g_memcheck) - { - PrintDebugInformation(); - } -#endif // VPN_SPEED + // Display the debug information + if (g_memcheck) + { + PrintDebugInformation(); + } - // Release the tracking - FreeTracking(); + // Release the tracking + FreeTracking(); + } // Release of the kernel status FreeKernelStatus(); diff --git a/src/Mayaqua/Mayaqua.h b/src/Mayaqua/Mayaqua.h index c4ba1db7..ede43f1e 100644 --- a/src/Mayaqua/Mayaqua.h +++ b/src/Mayaqua/Mayaqua.h @@ -125,10 +125,8 @@ // Macro for the release flag #ifdef VPN_SPEED -#define DONT_USE_KERNEL_STATUS // Do not update the kernel status #define WIN32_USE_HEAP_API_FOR_MEMORY // Use the heap API to allocate memory #define WIN32_NO_DEBUG_HELP_DLL // Do not call the DLL for debugging -#define DONT_CHECK_HEAP // Do not check the status of the heap #define DONT_ALLOW_RUN_ON_DEBUGGER // Do not allow running on the debugger #endif // VPN_SPEED @@ -412,43 +410,35 @@ extern BOOL kernel_status_inited; #define KS_GETMAX64(id) (kernel_status_max[id]) #define KS_GETMAX(id) ((UINT)KS_GETMAX64(id)) -#ifdef DONT_USE_KERNEL_STATUS -// Disable operations of the kernel status -#define KS_INC(id) -#define KS_DEC(id) -#define KS_ADD(id, n) -#define KS_SUB(id, n) -#else // DONT_USE_KERNEL_STATUS -// Enable operations of the kernel status -#define KS_INC(id) \ -if (kernel_status_inited) { \ - KS_LOCK(id); \ - kernel_status[id]++; \ +// Operations of the kernel status +#define KS_INC(id) \ +if (IsTrackingEnabled()) { \ + KS_LOCK(id); \ + kernel_status[id]++; \ kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]); \ - KS_UNLOCK(id); \ + KS_UNLOCK(id); \ } -#define KS_DEC(id) \ -if (kernel_status_inited) { \ - KS_LOCK(id); \ - kernel_status[id]--; \ +#define KS_DEC(id) \ +if (IsTrackingEnabled()) { \ + KS_LOCK(id); \ + kernel_status[id]--; \ kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]); \ - KS_UNLOCK(id); \ + KS_UNLOCK(id); \ } -#define KS_ADD(id, n) \ -if (kernel_status_inited) { \ - KS_LOCK(id); \ - kernel_status[id] += n; \ +#define KS_ADD(id, n) \ +if (IsTrackingEnabled()) { \ + KS_LOCK(id); \ + kernel_status[id] += n; \ kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]); \ - KS_UNLOCK(id); \ + KS_UNLOCK(id); \ } -#define KS_SUB(id, n) \ -if (kernel_status_inited) { \ - KS_LOCK(id); \ - kernel_status[id] -= n; \ +#define KS_SUB(id, n) \ +if (IsTrackingEnabled()) { \ + KS_LOCK(id); \ + kernel_status[id] -= n; \ kernel_status_max[id] = MAX(kernel_status_max[id], kernel_status[id]); \ - KS_UNLOCK(id); \ + KS_UNLOCK(id); \ } -#endif // DONT_USE_KERNEL_STATUS // Kernel status // String related diff --git a/src/Mayaqua/Memory.c b/src/Mayaqua/Memory.c index a82d8962..e09da625 100644 --- a/src/Mayaqua/Memory.c +++ b/src/Mayaqua/Memory.c @@ -972,10 +972,6 @@ SK *NewSkEx(bool no_compact) s->p = Malloc(sizeof(void *) * s->num_reserved); s->no_compact = no_compact; -#ifndef DONT_USE_KERNEL_STATUS -// TrackNewObj(POINTER_TO_UINT64(s), "SK", 0); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_NEWSK_COUNT); @@ -1011,10 +1007,6 @@ void CleanupSk(SK *s) DeleteLock(s->lock); Free(s); -#ifndef DONT_USE_KERNEL_STATUS -// TrackDeleteObj(POINTER_TO_UINT64(s)); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_FREESK_COUNT); } @@ -1278,10 +1270,6 @@ void CleanupQueue(QUEUE *q) DeleteLock(q->lock); Free(q); -#ifndef DONT_USE_KERNEL_STATUS -// TrackDeleteObj(POINTER_TO_UINT64(q)); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_FREEQUEUE_COUNT); } @@ -1297,10 +1285,6 @@ QUEUE *NewQueue() q->num_item = 0; q->fifo = NewFifo(); -#ifndef DONT_USE_KERNEL_STATUS -// TrackNewObj(POINTER_TO_UINT64(q), "QUEUE", 0); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_NEWQUEUE_COUNT); @@ -1316,10 +1300,6 @@ QUEUE *NewQueueFast() q->num_item = 0; q->fifo = NewFifoFast(); -#ifndef DONT_USE_KERNEL_STATUS -// TrackNewObj(POINTER_TO_UINT64(q), "QUEUE", 0); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_NEWQUEUE_COUNT); @@ -1783,10 +1763,6 @@ void CleanupList(LIST *o) // KS KS_INC(KS_FREELIST_COUNT); - -#ifndef DONT_USE_KERNEL_STATUS -// TrackDeleteObj(POINTER_TO_UINT64(o)); -#endif // DONT_USE_KERNEL_STATUS } // Check whether the specified number is already in the list @@ -2145,10 +2121,6 @@ LIST *NewListEx2(COMPARE *cmp, bool fast, bool fast_malloc) o->cmp = cmp; o->sorted = true; -#ifndef DONT_USE_KERNEL_STATUS -// TrackNewObj(POINTER_TO_UINT64(o), "LIST", 0); -#endif //DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_NEWLIST_COUNT); @@ -2422,10 +2394,6 @@ void CleanupFifo(FIFO *f) Free(f->p); Free(f); -#ifndef DONT_USE_KERNEL_STATUS -// TrackDeleteObj(POINTER_TO_UINT64(f)); -#endif //DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_FREEFIFO_COUNT); } @@ -2472,10 +2440,6 @@ FIFO *NewFifoEx2(bool fast, bool fixed) f->p = Malloc(FIFO_INIT_MEM_SIZE); f->fixed = false; -#ifndef DONT_USE_KERNEL_STATUS -// TrackNewObj(POINTER_TO_UINT64(f), "FIFO", 0); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_NEWFIFO_COUNT); @@ -2793,10 +2757,6 @@ BUF *NewBuf() b->Current = 0; b->SizeReserved = INIT_BUF_SIZE; -#ifndef DONT_USE_KERNEL_STATUS -// TrackNewObj(POINTER_TO_UINT64(b), "BUF", 0); -#endif // DONT_USE_KERNEL_STATUS - // KS KS_INC(KS_NEWBUF_COUNT); KS_INC(KS_CURRENT_BUF_COUNT); @@ -3241,10 +3201,6 @@ void FreeBuf(BUF *b) // KS KS_INC(KS_FREEBUF_COUNT); KS_DEC(KS_CURRENT_BUF_COUNT); - -#ifndef DONT_USE_KERNEL_STATUS -// TrackDeleteObj(POINTER_TO_UINT64(b)); -#endif // DONT_USE_KERNEL_STATUS } // Compare BUFs whether two are identical @@ -3802,7 +3758,11 @@ void Free(void *addr) // Check the memtag void CheckMemTag(MEMTAG *tag) { -#ifndef DONT_CHECK_HEAP + if (IsTrackingEnabled() == false) + { + return; + } + // Validate arguments if (tag == NULL) { @@ -3815,7 +3775,6 @@ void CheckMemTag(MEMTAG *tag) AbortExitEx("CheckMemTag: tag->Magic != MEMTAG_MAGIC"); return; } -#endif // DONT_CHECK_HEAP } // ZeroMalloc @@ -3859,9 +3818,7 @@ void *InternalMalloc(UINT size) OSSleep(MEMORY_SLEEP_TIME); } -#ifndef DONT_USE_KERNEL_STATUS TrackNewObj(POINTER_TO_UINT64(addr), "MEM", size); -#endif //DONT_USE_KERNEL_STATUS return addr; } @@ -3879,9 +3836,7 @@ void InternalFree(void *addr) KS_DEC(KS_CURRENT_MEM_COUNT); KS_INC(KS_FREE_COUNT); -#ifndef DONT_USE_KERNEL_STATUS TrackDeleteObj(POINTER_TO_UINT64(addr)); -#endif // DONT_USE_KERNEL_STATUS // Memory release OSMemoryFree(addr); @@ -3914,9 +3869,7 @@ void *InternalReAlloc(void *addr, UINT size) OSSleep(MEMORY_SLEEP_TIME); } -#ifndef DONT_USE_KERNEL_STATUS TrackChangeObjSize(POINTER_TO_UINT64(addr), size, POINTER_TO_UINT64(new_addr)); -#endif // DONT_USE_KERNEL_STATUS return new_addr; } diff --git a/src/Mayaqua/Table.c b/src/Mayaqua/Table.c index 2ac8e97a..6270ac3a 100644 --- a/src/Mayaqua/Table.c +++ b/src/Mayaqua/Table.c @@ -1071,8 +1071,6 @@ void FreeTable() return; } - TrackingDisable(); - num = LIST_NUM(TableList); tables = ToArray(TableList); for (i = 0;i < num;i++) @@ -1088,8 +1086,6 @@ void FreeTable() Free(tables); Zero(old_table_name, sizeof(old_table_name)); - - TrackingEnable(); } // Read a string table from the buffer @@ -1479,8 +1475,6 @@ bool LoadTableW(wchar_t *filename) Zero(replace_name, sizeof(replace_name)); - TrackingDisable(); - b = ReadDump("@table_name.txt"); if (b != NULL) { @@ -1500,9 +1494,5 @@ bool LoadTableW(wchar_t *filename) ret = LoadTableMain(filename); - TrackingEnable(); - return ret; } - - diff --git a/src/Mayaqua/Tracking.c b/src/Mayaqua/Tracking.c index ae0bd1f6..c846f6ec 100644 --- a/src/Mayaqua/Tracking.c +++ b/src/Mayaqua/Tracking.c @@ -127,27 +127,14 @@ static LOCK *obj_lock; static LOCK *obj_id_lock; static UINT obj_id; static LOCK *cs_lock; -static bool disable_tracking = false; static TRACKING_LIST **hashlist; static bool do_not_get_callstack; -// Enable the tracking -void TrackingEnable() -{ - disable_tracking = false; -} - -// Disable the tracking -void TrackingDisable() -{ - disable_tracking = true; -} - // Get whether the tracking is enabled bool IsTrackingEnabled() { - return !disable_tracking; + return (IsDebug() || IsMemCheck()) && kernel_status_inited; } // Memory debug menu @@ -482,14 +469,9 @@ void TrackNewObj(UINT64 addr, char *name, UINT size) return; } - if (IsMemCheck() == false) - { - // Don't track in the release mode - return; - } - - if (disable_tracking) + if ((IsTrackingEnabled() && IsMemCheck()) == false) { + // Don't track in detail if the memory check option is not specified return; } @@ -528,14 +510,9 @@ void TrackDeleteObj(UINT64 addr) return; } - if (IsMemCheck() == false) - { - // Don't track in the release mode - return; - } - - if (disable_tracking) + if ((IsTrackingEnabled() && IsMemCheck()) == false) { + // Don't track in detail if the memory check option is not specified return; } @@ -545,11 +522,7 @@ void TrackDeleteObj(UINT64 addr) if (o == NULL) { UnlockTrackingList(); - - if (IsDebug()) - { - printf("TrackDeleteObj: 0x%x is not Object!!\n", (void *)addr); - } + Debug("TrackDeleteObj(): 0x%x not found in tracking list!\n", addr); return; } DeleteTrackingList(o, true); @@ -567,14 +540,9 @@ void TrackChangeObjSize(UINT64 addr, UINT size, UINT64 new_addr) return; } - if (IsMemCheck() == false) - { - // Don't track in the release mode - return; - } - - if (disable_tracking) + if ((IsTrackingEnabled() && IsMemCheck()) == false) { + // Don't track in detail if the memory check option is not specified return; } diff --git a/src/Mayaqua/Tracking.h b/src/Mayaqua/Tracking.h index 8706c9fe..d66c84e4 100644 --- a/src/Mayaqua/Tracking.h +++ b/src/Mayaqua/Tracking.h @@ -188,10 +188,6 @@ void PrintObjectList(TRACKING_OBJECT *o); void PrintObjectInfo(TRACKING_OBJECT *o); void DebugPrintObjectInfo(UINT id); -void TrackingEnable(); -void TrackingDisable(); bool IsTrackingEnabled(); #endif // TRACKING_H - - From 52f4e5fb48cee4a8729c8c77997cd4c7f6157b68 Mon Sep 17 00:00:00 2001 From: Davide Beatrici Date: Sun, 18 Nov 2018 04:06:19 +0100 Subject: [PATCH 4/4] AppVeyor: provide PDB files in a ZIP archive --- .appveyor.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 55d580e8..eb098757 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -24,9 +24,16 @@ for: build_script: - src\BuildAll.cmd - exit %errorlevel% + after_build: + - 7z a "%APPVEYOR_BUILD_FOLDER%\src\bin\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x86_%CONFIGURATION%_PDBs.zip" "%APPVEYOR_BUILD_FOLDER%\src\DebugFiles\pdb\Win32_Release\*.pdb" + - 7z a "%APPVEYOR_BUILD_FOLDER%\src\bin\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%_PDBs.zip" "%APPVEYOR_BUILD_FOLDER%\src\DebugFiles\pdb\x64_Release\*.pdb" artifacts: - path: output\pkg\*\* - name: Windows + name: Release + - path: src\bin\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x86_%CONFIGURATION%_PDBs.zip + name: PDBs (x86) + - path: src\bin\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%_PDBs.zip + name: PDBs (x64) - matrix: only: @@ -40,9 +47,12 @@ for: after_build: - 7z a "%APPVEYOR_BUILD_FOLDER%\build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%.zip" "%APPVEYOR_BUILD_FOLDER%\build\*.exe" - 7z a "%APPVEYOR_BUILD_FOLDER%\build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%.zip" "%APPVEYOR_BUILD_FOLDER%\build\hamcore.se2" + - 7z a "%APPVEYOR_BUILD_FOLDER%\build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%_PDBs.zip" "%APPVEYOR_BUILD_FOLDER%\build\*.pdb" artifacts: - path: build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%.zip - name: Windows + name: Release + - path: build\%APPVEYOR_PROJECT_NAME%_%APPVEYOR_BUILD_VERSION%_Windows_x64_%CONFIGURATION%_PDBs.zip + name: PDBs - matrix: only: