mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Cleanup. (#353)
This commit is contained in:
committed by
GitHub
parent
69e6c9b597
commit
5dc415ee2e
@@ -735,21 +735,21 @@ namespace bx
|
|||||||
|
|
||||||
if (NULL != m_imageHlpDll)
|
if (NULL != m_imageHlpDll)
|
||||||
{
|
{
|
||||||
m_symInitialize = dlsym<SymInitializeFn >(m_imageHlpDll, "SymInitialize");
|
auto symInitialize = dlsym<SymInitializeFn >(m_imageHlpDll, "SymInitialize");
|
||||||
m_symCleanup = dlsym<SymCleanupFn >(m_imageHlpDll, "SymCleanup");
|
auto symSetOptions = dlsym<SymSetOptionsFn >(m_imageHlpDll, "SymSetOptions");
|
||||||
m_symFromAddr = dlsym<SymFromAddrFn >(m_imageHlpDll, "SymFromAddr");
|
auto symCleanup = dlsym<SymCleanupFn >(m_imageHlpDll, "SymCleanup");
|
||||||
m_symSetOptions = dlsym<SymSetOptionsFn >(m_imageHlpDll, "SymSetOptions");
|
auto symFromAddr = dlsym<SymFromAddrFn >(m_imageHlpDll, "SymFromAddr");
|
||||||
m_symGetLineFromAddr = dlsym<SymGetLineFromAddrFn>(m_imageHlpDll, BX_ARCH_32BIT ? "SymGetLineFromAddr" : "SymGetLineFromAddr64");
|
auto symGetLineFromAddr = dlsym<SymGetLineFromAddrFn>(m_imageHlpDll, BX_ARCH_32BIT ? "SymGetLineFromAddr" : "SymGetLineFromAddr64");
|
||||||
|
|
||||||
if (true
|
if (true
|
||||||
&& NULL != m_symInitialize
|
&& NULL != symInitialize
|
||||||
&& NULL != m_symCleanup
|
&& NULL != symSetOptions
|
||||||
&& NULL != m_symFromAddr
|
&& NULL != symCleanup
|
||||||
&& NULL != m_symSetOptions
|
&& NULL != symFromAddr
|
||||||
&& NULL != m_symGetLineFromAddr
|
&& NULL != symGetLineFromAddr
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
m_symSetOptions(kSymOptUndName | kSymOptDeferredLoads | kSymOptLoadLines);
|
symSetOptions(kSymOptUndName | kSymOptDeferredLoads | kSymOptLoadLines);
|
||||||
|
|
||||||
char symCache[1024] = "SRV*";
|
char symCache[1024] = "SRV*";
|
||||||
uint32_t len = BX_COUNTOF(symCache) - 4;
|
uint32_t len = BX_COUNTOF(symCache) - 4;
|
||||||
@@ -763,11 +763,23 @@ namespace bx
|
|||||||
symCache[0] = '\0';
|
symCache[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_symInitialize(kCurrentProcess, symCache, true) )
|
if (symInitialize(kCurrentProcess, symCache, true) )
|
||||||
{
|
{
|
||||||
|
m_symCleanup = symCleanup;
|
||||||
|
m_symFromAddr = symFromAddr;
|
||||||
|
m_symGetLineFromAddr = symGetLineFromAddr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BX_TRACE("Failed to initialize debug symbols!");
|
||||||
cleanup();
|
cleanup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
BX_TRACE("Failed to obtain debug symbols functions!");
|
||||||
|
cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -812,28 +824,26 @@ namespace bx
|
|||||||
|
|
||||||
void cleanup()
|
void cleanup()
|
||||||
{
|
{
|
||||||
if(NULL != m_symCleanup)
|
if (NULL != m_imageHlpDll)
|
||||||
{
|
{
|
||||||
m_symCleanup(kCurrentProcess);
|
if (NULL != m_symCleanup)
|
||||||
|
{
|
||||||
|
m_symCleanup(kCurrentProcess);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_symCleanup = NULL;
|
||||||
|
m_symFromAddr = NULL;
|
||||||
|
m_symGetLineFromAddr = NULL;
|
||||||
|
|
||||||
|
dlclose(m_imageHlpDll);
|
||||||
|
m_imageHlpDll = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_symInitialize = NULL;
|
|
||||||
m_symCleanup = NULL;
|
|
||||||
m_symFromAddr = NULL;
|
|
||||||
m_symSetOptions = NULL;
|
|
||||||
m_symGetLineFromAddr = NULL;
|
|
||||||
|
|
||||||
dlclose(m_imageHlpDll);
|
|
||||||
|
|
||||||
m_imageHlpDll = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void* m_imageHlpDll = NULL;
|
void* m_imageHlpDll = NULL;
|
||||||
|
|
||||||
SymInitializeFn m_symInitialize = NULL;
|
|
||||||
SymCleanupFn m_symCleanup = NULL;
|
SymCleanupFn m_symCleanup = NULL;
|
||||||
SymFromAddrFn m_symFromAddr = NULL;
|
SymFromAddrFn m_symFromAddr = NULL;
|
||||||
SymSetOptionsFn m_symSetOptions = NULL;
|
|
||||||
SymGetLineFromAddrFn m_symGetLineFromAddr = NULL;
|
SymGetLineFromAddrFn m_symGetLineFromAddr = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user