From db408920ca40417bb1826b82738aefeed06b4814 Mon Sep 17 00:00:00 2001 From: Christian Fetzer Date: Wed, 29 Nov 2017 20:50:04 +0100 Subject: [PATCH] Fix undefined symbols when compiling libretro core as debug build When building with `cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_LIBRETRO=1` the resulting lib has undefined symbols that cause issues when loading the core in GDB. Functionality is being ifdefed out with the defines MINIMAL_CORE and DISABLE_THREADING, but some symbols are still used in a few places. $ ldd -r mgba_libretro.so undefined symbol: GBAVideoProxyRendererCreate (./mgba_libretro.so) undefined symbol: GBAVideoProxyRendererUnshim (./mgba_libretro.so) undefined symbol: GBAVideoProxyRendererShim (./mgba_libretro.so) undefined symbol: GBVideoProxyRendererCreate (./mgba_libretro.so) undefined symbol: GBVideoProxyRendererUnshim (./mgba_libretro.so) undefined symbol: GBVideoProxyRendererShim (./mgba_libretro.so) undefined symbol: mVideoLogContextInitialState (./mgba_libretro.so) undefined symbol: mVideoLoggerAddChannel (./mgba_libretro.so) undefined symbol: mVideoLoggerAttachChannel (./mgba_libretro.so) undefined symbol: mVideoLoggerRendererCreate (./mgba_libretro.so) undefined symbol: mCoreThreadMarkCrashed (./mgba_libretro.so) --- src/core/thread.c | 2 ++ src/gb/core.c | 2 ++ src/gba/core.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/core/thread.c b/src/core/thread.c index 15dafe185..c08a1ab7e 100644 --- a/src/core/thread.c +++ b/src/core/thread.c @@ -625,7 +625,9 @@ static void _mCoreLog(struct mLogger* logger, int category, enum mLogLevel level printf("\n"); struct mCoreThread* thread = mCoreThreadGet(); if (thread && level == mLOG_FATAL) { +#ifndef DISABLE_THREADING mCoreThreadMarkCrashed(thread); +#endif } } diff --git a/src/gb/core.c b/src/gb/core.c index c7e801be9..753a93bde 100644 --- a/src/gb/core.c +++ b/src/gb/core.c @@ -812,6 +812,7 @@ static void _GBCoreEnableAudioChannel(struct mCore* core, size_t id, bool enable } } +#ifndef MINIMAL_CORE static void _GBCoreStartVideoLog(struct mCore* core, struct mVideoLogContext* context) { struct GBCore* gbcore = (struct GBCore*) core; struct GB* gb = core->board; @@ -834,6 +835,7 @@ static void _GBCoreEndVideoLog(struct mCore* core) { free(gbcore->proxyRenderer.logger); gbcore->proxyRenderer.logger = NULL; } +#endif struct mCore* GBCoreCreate(void) { struct GBCore* gbcore = malloc(sizeof(*gbcore)); diff --git a/src/gba/core.c b/src/gba/core.c index aa7cdaeea..16c1d1040 100644 --- a/src/gba/core.c +++ b/src/gba/core.c @@ -825,6 +825,7 @@ static void _GBACoreEnableAudioChannel(struct mCore* core, size_t id, bool enabl } } +#ifndef MINIMAL_CORE static void _GBACoreStartVideoLog(struct mCore* core, struct mVideoLogContext* context) { struct GBACore* gbacore = (struct GBACore*) core; struct GBA* gba = core->board; @@ -851,6 +852,7 @@ static void _GBACoreEndVideoLog(struct mCore* core) { free(gbacore->proxyRenderer.logger); gbacore->proxyRenderer.logger = NULL; } +#endif struct mCore* GBACoreCreate(void) { struct GBACore* gbacore = malloc(sizeof(*gbacore));