Only do logging when built with make DEBUG=1

This commit is contained in:
Maschell 2022-01-21 18:49:29 +01:00
parent 1f14ff54a6
commit fb32aec5b7
4 changed files with 44 additions and 5 deletions

View File

@ -47,6 +47,11 @@ CXXFLAGS := -std=c++20 -g -Wall -O2 -ffunction-sections -DESPRESSO -mcpu=750 -me
ASFLAGS := -mregnames ASFLAGS := -mregnames
LDFLAGS := -nostartfiles -Wl,--gc-sections,--allow-multiple-definition LDFLAGS := -nostartfiles -Wl,--gc-sections,--allow-multiple-definition
ifeq ($(DEBUG),1)
CXXFLAGS += -DDEBUG -g
CCFLAGS += -DDEBUG -g
endif
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
Q := @ Q := @
MAKEFLAGS += --no-print-directory MAKEFLAGS += --no-print-directory

View File

@ -1,6 +1,7 @@
/* coreinit */ /* coreinit */
IMPORT_BEGIN(coreinit); IMPORT_BEGIN(coreinit);
IMPORT(OSReport);
IMPORT(OSScreenInit); IMPORT(OSScreenInit);
IMPORT(OSScreenGetBufferSizeEx); IMPORT(OSScreenGetBufferSizeEx);
IMPORT(OSScreenSetBufferEx); IMPORT(OSScreenSetBufferEx);

View File

@ -32,6 +32,8 @@
#include <whb/log.h> #include <whb/log.h>
#include <whb/log_udp.h> #include <whb/log_udp.h>
#include <whb/log_cafe.h>
#include <whb/log_module.h>
#include <utils/StringTools.h> #include <utils/StringTools.h>
#include "kernel.h" #include "kernel.h"
@ -39,6 +41,7 @@
#include "utils/logger.h" #include "utils/logger.h"
#include <malloc.h> #include <malloc.h>
#include <coreinit/memexpheap.h> #include <coreinit/memexpheap.h>
#include <coreinit/debug.h>
bool doRelocation(const std::vector<RelocationData> &relocData, relocation_trampolin_entry_t *tramp_data, uint32_t tramp_length); bool doRelocation(const std::vector<RelocationData> &relocData, relocation_trampolin_entry_t *tramp_data, uint32_t tramp_length);
@ -68,6 +71,11 @@ bool CheckRunning() {
extern "C" void __init_wut(); extern "C" void __init_wut();
extern "C" void __fini_wut(); extern "C" void __fini_wut();
#ifdef DEBUG
bool module_log = false;
bool udp_log = false;
bool cafe_log = false;
#endif // DEBUG
extern "C" int _start(int argc, char **argv) { extern "C" int _start(int argc, char **argv) {
doKernelSetup(); doKernelSetup();
InitFunctionPointers(); InitFunctionPointers();
@ -75,15 +83,27 @@ extern "C" int _start(int argc, char **argv) {
__init_wut(); __init_wut();
WHBLogUdpInit();
// Save last entry on mem2 heap to detect leaked memory // Save last entry on mem2 heap to detect leaked memory
MEMHeapHandle mem2_heap_handle = MEMGetBaseHeapHandle(MEM_BASE_HEAP_MEM2); MEMHeapHandle mem2_heap_handle = MEMGetBaseHeapHandle(MEM_BASE_HEAP_MEM2);
auto heap = (MEMExpHeap *) mem2_heap_handle; auto heap = (MEMExpHeap *) mem2_heap_handle;
MEMExpHeapBlock *memory_start = heap->usedList.tail; MEMExpHeapBlock *memory_start = heap->usedList.tail;
#ifdef DEBUG
if (!(module_log = WHBLogModuleInit())) {
cafe_log = WHBLogCafeInit();
udp_log = WHBLogUdpInit();
}
#endif // DEBUG
DEBUG_FUNCTION_LINE("Hello from CustomRPXloader");
uint32_t entrypoint = do_start(argc, argv); uint32_t entrypoint = do_start(argc, argv);
#ifdef DEBUG
if (module_log) { WHBLogModuleDeinit(); }
if (udp_log) { WHBLogUdpDeinit(); }
if (cafe_log) { WHBLogCafeDeinit(); }
#endif // DEBUG
// free leaked memory // free leaked memory
if (memory_start) { if (memory_start) {
int leak_count = 0; int leak_count = 0;
@ -95,11 +115,9 @@ extern "C" int _start(int argc, char **argv) {
free(&memory_end[1]); free(&memory_end[1]);
leak_count++; leak_count++;
} }
DEBUG_FUNCTION_LINE("Freed %d leaked memory blocks", leak_count); OSReport("Freed %d leaked memory blocks\n", leak_count);
} }
WHBLogUdpDeinit();
__fini_wut(); __fini_wut();
if (entrypoint > 0) { if (entrypoint > 0) {

View File

@ -7,6 +7,8 @@
extern "C" { extern "C" {
#endif #endif
#ifdef DEBUG
#define __FILENAME_X__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) #define __FILENAME_X__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)
#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILENAME_X__) #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILENAME_X__)
@ -14,6 +16,19 @@ extern "C" {
WHBLogPrintf("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \ WHBLogPrintf("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \
} while (0) } while (0)
#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...)do { \
WHBLogWritef("[%23s]%30s@L%04d: " FMT "",__FILENAME__,__FUNCTION__, __LINE__, ## ARGS); \
} while (0)
#else
#define DEBUG_FUNCTION_LINE(FMT, ARGS...) while (0)
#define DEBUG_FUNCTION_LINE_WRITE(FMT, ARGS...) while (0)
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif