- added windows versions of osdBackTrace.c, osdFindAddr.c; the latter

does not implement addr->symbol conversion yet.
This commit is contained in:
Till Straumann
2014-09-08 22:31:11 -07:00
parent 8931954d28
commit 8477dec61f
2 changed files with 55 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
/*
* 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 <strauman@slac.stanford.edu>, 2011
*/
#include <Windows.h>
#include <stdio.h>
#define epicsExportSharedSymbols
#include "epicsStackTracePvt.h"
int epicsBackTrace(void **buf, int buf_sz)
{
/* Docs say that (for some windows versions) the sum of
* skipped + captured frames must be less than 63
*/
if ( buf_sz >= 63 )
buf_sz = 62;
return CaptureStackBackTrace(0, buf_sz, buf, 0);
}

View File

@@ -0,0 +1,31 @@
/*
* 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 <strauman@slac.stanford.edu>, 2011
*/
#define epicsExportSharedSymbols
#include "epicsStackTracePvt.h"
#include "epicsStackTrace.h"
int epicsFindAddr(void *addr, epicsSymbol *sym_p)
{
return -1;
}
int epicsStackTraceGetFeatures(void)
{
void *test[10];
/* If frame-pointer optimization is on then CaptureStackBackTrace
* does not work. Make sure all EPICS is built with -Oy-
*/
if ( 0 == epicsBackTrace(test, sizeof(test)/sizeof(test[0])) )
return 0;
/* address->symbol conversion not implemented (yet) */
return EPICS_STACKTRACE_ADDRESSES;
}