From 8b2b03482f8beca6db58af5dd85eafa7031b2925 Mon Sep 17 00:00:00 2001 From: Till Straumann Date: Thu, 28 Aug 2014 10:47:59 -0700 Subject: [PATCH] - consistent naming: 'StackTrace' everywhere. --- src/libCom/osi/Makefile | 12 +++--- src/libCom/osi/RULES | 2 +- src/libCom/osi/epicsStackTrace.h | 40 +++++++++++++++++++ src/libCom/osi/epicsStacktrace.h | 26 ------------ ...cinfoStacktrace.c => execinfoStackTrace.c} | 25 ++++++++++-- .../{osdStacktrace.c => osdStackTrace.c} | 2 +- .../{osdStacktrace.c => osdStackTrace.c} | 2 +- src/libCom/osi/os/default/osdAssert.c | 4 +- .../{osdStacktrace.c => osdStackTrace.c} | 10 ++++- 9 files changed, 80 insertions(+), 43 deletions(-) create mode 100644 src/libCom/osi/epicsStackTrace.h delete mode 100644 src/libCom/osi/epicsStacktrace.h rename src/libCom/osi/{execinfoStacktrace.c => execinfoStackTrace.c} (95%) rename src/libCom/osi/os/Darwin/{osdStacktrace.c => osdStackTrace.c} (92%) rename src/libCom/osi/os/Linux/{osdStacktrace.c => osdStackTrace.c} (92%) rename src/libCom/osi/os/default/{osdStacktrace.c => osdStackTrace.c} (66%) diff --git a/src/libCom/osi/Makefile b/src/libCom/osi/Makefile index 86cd3fc35..38fdf71c0 100644 --- a/src/libCom/osi/Makefile +++ b/src/libCom/osi/Makefile @@ -56,7 +56,7 @@ INC += epicsStdio.h INC += epicsStdioRedirect.h INC += epicsTempFile.h INC += epicsGetopt.h -INC += epicsStacktrace.h +INC += epicsStackTrace.h INC += devLib.h INC += devLibVME.h @@ -142,10 +142,10 @@ Com_SRCS_WIN32 += setThreadName.cpp #Com_SRCS_WIN32 += dllmain.cpp Com_SRCS_WIN32 += forceBadAllocException.cpp -#Stacktrace support -Com_SRCS += osdStacktrace.c -Com_SRCS_Linux += execinfoStacktrace.c -Com_SRCS_Darwin += execinfoStacktrace.c -#we could use execinfoStacktrace.c on freebsd, too, but AFAIK +#Stack trace support +Com_SRCS += osdStackTrace.c +Com_SRCS_Linux += execinfoStackTrace.c +Com_SRCS_Darwin += execinfoStackTrace.c +#we could use execinfoStackTrace.c on freebsd, too, but AFAIK #you need libexecinfo.a and execinfo.h. I don't know if that #is routinely available so we don't use it for now. diff --git a/src/libCom/osi/RULES b/src/libCom/osi/RULES index 642a5f506..e55cb0eed 100644 --- a/src/libCom/osi/RULES +++ b/src/libCom/osi/RULES @@ -16,4 +16,4 @@ osdSock$(DEP): $(COMMON_DIR)/epicsVersion.h execinfoConfig.h: touch $@ -execinfoStacktrace$(OBJ): execinfoConfig.h +execinfoStackTrace$(OBJ): execinfoConfig.h diff --git a/src/libCom/osi/epicsStackTrace.h b/src/libCom/osi/epicsStackTrace.h new file mode 100644 index 000000000..5aec62806 --- /dev/null +++ b/src/libCom/osi/epicsStackTrace.h @@ -0,0 +1,40 @@ +/* + * Copyright: Stanford University / SLAC National Laboratory. + * + * EPICS BASE is distributed subject to a Software License Agreement found + * in file LICENSE that is included with this distribution. + * + * Author: Till Straumann , 2011, 2014 + */ + +#ifndef INC_epicsStackTrace_H +#define INC_epicsStackTrace_H + +#include "shareLib.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dump a stack trace to the errlog */ +epicsShareFunc void epicsStackTrace(void); + +/* Inquire about functionality implemented on your system */ + +/* StackTrace is able to lookup local symbols */ +#define EPICS_STACKTRACE_LCL_SYMBOLS (1<<0) + +/* StackTrace is able to lookup global symbols */ +#define EPICS_STACKTRACE_GBL_SYMBOLS (1<<1) + +/* StackTrace provides numerical addresses */ +#define EPICS_STACKTRACE_ADDRESSES (1<<2) + +/* returns ORed bitset of supported features */ +epicsShareFunc int epicsStackTraceGetFeatures(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/libCom/osi/epicsStacktrace.h b/src/libCom/osi/epicsStacktrace.h deleted file mode 100644 index 44c7098ab..000000000 --- a/src/libCom/osi/epicsStacktrace.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright: Stanford University / SLAC National Laboratory. - * - * EPICS BASE is distributed subject to a Software License Agreement found - * in file LICENSE that is included with this distribution. - * - * Author: Till Straumann , 2011 - */ - -#ifndef INC_epicsStacktrace_H -#define INC_epicsStacktrace_H - -#include "shareLib.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Dump a stacktrace to the errlog */ -epicsShareFunc void epicsStackTrace(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/libCom/osi/execinfoStacktrace.c b/src/libCom/osi/execinfoStackTrace.c similarity index 95% rename from src/libCom/osi/execinfoStacktrace.c rename to src/libCom/osi/execinfoStackTrace.c index 3d36511f2..3839815a9 100644 --- a/src/libCom/osi/execinfoStacktrace.c +++ b/src/libCom/osi/execinfoStackTrace.c @@ -4,10 +4,10 @@ * EPICS BASE is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. * - * Author: Till Straumann , 2011 + * Author: Till Straumann , 2011, 2014 */ -#include "epicsStacktrace.h" +#include "epicsStackTrace.h" #include "epicsThread.h" #include "epicsMutex.h" #include @@ -560,7 +560,7 @@ uint8_t c; } #endif -epicsShareFunc void epicsStacktrace(void) +epicsShareFunc void epicsStackTrace(void) { void **buf; #ifndef USE_ELF @@ -569,7 +569,7 @@ char **bts; int i,n; if ( ! (buf = malloc(sizeof(*buf) * MAXDEPTH)) ) { - errlogPrintf("epicsStacktrace(): not enough memory for backtrace\n"); + errlogPrintf("epicsStackTrace(): not enough memory for backtrace\n"); return; } @@ -602,3 +602,20 @@ int i,n; free(buf); } + + +epicsShareFunc int epicsStackTraceGetFeatures(void) +{ +#ifdef USE_ELF + return EPICS_STACKTRACE_LCL_SYMBOLS + | EPICS_STACKTRACE_GBL_SYMBOLS + | EPICS_STACKTRACE_ADDRESSES; +#elif defined(__linux__) || defined(linux) + return EPICS_STACKTRACE_GBL_SYMBOLS + EPICS_STACKTRACE_ADDRESSES; +#else + return EPICS_STACKTRACE_LCL_SYMBOLS + | EPICS_STACKTRACE_GBL_SYMBOLS + | EPICS_STACKTRACE_ADDRESSES; +#endif +} diff --git a/src/libCom/osi/os/Darwin/osdStacktrace.c b/src/libCom/osi/os/Darwin/osdStackTrace.c similarity index 92% rename from src/libCom/osi/os/Darwin/osdStacktrace.c rename to src/libCom/osi/os/Darwin/osdStackTrace.c index c7b26c59c..3f25a0591 100644 --- a/src/libCom/osi/os/Darwin/osdStacktrace.c +++ b/src/libCom/osi/os/Darwin/osdStackTrace.c @@ -11,7 +11,7 @@ * * The presence of this file prevents the build * system from using the no-op implementation of - * epicsStacktrace() in default/osdStacktrace.c. + * epicsStackTrace() in default/osdStackTrace.c. * * This OS uses a generic implementation which * may be used by various OSes. The source file diff --git a/src/libCom/osi/os/Linux/osdStacktrace.c b/src/libCom/osi/os/Linux/osdStackTrace.c similarity index 92% rename from src/libCom/osi/os/Linux/osdStacktrace.c rename to src/libCom/osi/os/Linux/osdStackTrace.c index c7b26c59c..3f25a0591 100644 --- a/src/libCom/osi/os/Linux/osdStacktrace.c +++ b/src/libCom/osi/os/Linux/osdStackTrace.c @@ -11,7 +11,7 @@ * * The presence of this file prevents the build * system from using the no-op implementation of - * epicsStacktrace() in default/osdStacktrace.c. + * epicsStackTrace() in default/osdStackTrace.c. * * This OS uses a generic implementation which * may be used by various OSes. The source file diff --git a/src/libCom/osi/os/default/osdAssert.c b/src/libCom/osi/os/default/osdAssert.c index 3ec9c6442..26f94a14f 100644 --- a/src/libCom/osi/os/default/osdAssert.c +++ b/src/libCom/osi/os/default/osdAssert.c @@ -20,7 +20,7 @@ #include "epicsThread.h" #include "epicsTime.h" #include "cantProceed.h" -#include "epicsStacktrace.h" +#include "epicsStackTrace.h" void epicsAssert (const char *pFile, const unsigned line, @@ -35,7 +35,7 @@ void epicsAssert (const char *pFile, const unsigned line, errlogPrintf("\n" "I'll try to dump a stack trace:\n"); - epicsStacktrace(); + epicsStackTrace(); errlogPrintf("\n"); errlogPrintf("EPICS Release %s.\n", epicsReleaseVersion); diff --git a/src/libCom/osi/os/default/osdStacktrace.c b/src/libCom/osi/os/default/osdStackTrace.c similarity index 66% rename from src/libCom/osi/os/default/osdStacktrace.c rename to src/libCom/osi/os/default/osdStackTrace.c index 3cb60c75d..e10a24736 100644 --- a/src/libCom/osi/os/default/osdStacktrace.c +++ b/src/libCom/osi/os/default/osdStackTrace.c @@ -7,8 +7,14 @@ * Author: Till Straumann , 2011 */ -#include "epicsStacktrace.h" +#include "epicsStackTrace.h" -epicsShareFunc void epicsStacktrace(void) +epicsShareFunc void epicsStackTrace(void) { } + +epicsShareFunc int epicsStackTraceGetFeatures(void) +{ + return 0; +} +