diff --git a/src/libCom/osi/Makefile b/src/libCom/osi/Makefile index 781497a1a..13d625f8d 100644 --- a/src/libCom/osi/Makefile +++ b/src/libCom/osi/Makefile @@ -144,5 +144,5 @@ Com_SRCS_WIN32 += forceBadAllocException.cpp #Stack trace support Com_SRCS += epicsStackTrace.c -Com_SRCS += osdBackTrace.c -Com_SRCS += osdFindAddr.c +Com_SRCS += osdBackTrace.cpp +Com_SRCS += osdFindAddr.cpp diff --git a/src/libCom/osi/os/Darwin/osdBackTrace.c b/src/libCom/osi/os/Darwin/osdBackTrace.cpp similarity index 88% rename from src/libCom/osi/os/Darwin/osdBackTrace.c rename to src/libCom/osi/os/Darwin/osdBackTrace.cpp index 19be7fb8d..4595fee3a 100644 --- a/src/libCom/osi/os/Darwin/osdBackTrace.c +++ b/src/libCom/osi/os/Darwin/osdBackTrace.cpp @@ -7,4 +7,4 @@ * Author: Till Straumann , 2011, 2014 */ -#include "osdExecinfoBackTrace.c" +#include "osdExecinfoBackTrace.cpp" diff --git a/src/libCom/osi/os/Darwin/osdFindAddr.c b/src/libCom/osi/os/Darwin/osdFindAddr.cpp similarity index 100% rename from src/libCom/osi/os/Darwin/osdFindAddr.c rename to src/libCom/osi/os/Darwin/osdFindAddr.cpp diff --git a/src/libCom/osi/os/Linux/osdBackTrace.c b/src/libCom/osi/os/Linux/osdBackTrace.cpp similarity index 88% rename from src/libCom/osi/os/Linux/osdBackTrace.c rename to src/libCom/osi/os/Linux/osdBackTrace.cpp index 19be7fb8d..4595fee3a 100644 --- a/src/libCom/osi/os/Linux/osdBackTrace.c +++ b/src/libCom/osi/os/Linux/osdBackTrace.cpp @@ -7,4 +7,4 @@ * Author: Till Straumann , 2011, 2014 */ -#include "osdExecinfoBackTrace.c" +#include "osdExecinfoBackTrace.cpp" diff --git a/src/libCom/osi/os/Linux/osdFindAddr.c b/src/libCom/osi/os/Linux/osdFindAddr.cpp similarity index 90% rename from src/libCom/osi/os/Linux/osdFindAddr.c rename to src/libCom/osi/os/Linux/osdFindAddr.cpp index 84d17d96f..1f5d2e32e 100644 --- a/src/libCom/osi/os/Linux/osdFindAddr.c +++ b/src/libCom/osi/os/Linux/osdFindAddr.cpp @@ -7,4 +7,4 @@ * Author: Till Straumann , 2011, 2014 */ -#include "osdElfFindAddr.c" +#include "osdElfFindAddr.cpp" diff --git a/src/libCom/osi/os/WIN32/osdBackTrace.c b/src/libCom/osi/os/WIN32/osdBackTrace.cpp similarity index 100% rename from src/libCom/osi/os/WIN32/osdBackTrace.c rename to src/libCom/osi/os/WIN32/osdBackTrace.cpp diff --git a/src/libCom/osi/os/default/osdBackTrace.c b/src/libCom/osi/os/default/osdBackTrace.cpp similarity index 100% rename from src/libCom/osi/os/default/osdBackTrace.c rename to src/libCom/osi/os/default/osdBackTrace.cpp diff --git a/src/libCom/osi/os/default/osdFindAddr.c b/src/libCom/osi/os/default/osdFindAddr.cpp similarity index 100% rename from src/libCom/osi/os/default/osdFindAddr.c rename to src/libCom/osi/os/default/osdFindAddr.cpp diff --git a/src/libCom/osi/os/posix/osdElfFindAddr.c b/src/libCom/osi/os/posix/osdElfFindAddr.cpp similarity index 97% rename from src/libCom/osi/os/posix/osdElfFindAddr.c rename to src/libCom/osi/os/posix/osdElfFindAddr.cpp index 45f7400df..518b55a51 100644 --- a/src/libCom/osi/os/posix/osdElfFindAddr.c +++ b/src/libCom/osi/os/posix/osdElfFindAddr.cpp @@ -8,7 +8,9 @@ */ /* Make sure dladdr() is visible on linux/solaris */ +#ifndef _GNU_SOURCE #define _GNU_SOURCE +#endif /* get dladdr under solaris */ #ifndef __EXTENSIONS__ #define __EXTENSIONS__ @@ -96,7 +98,7 @@ typedef struct ESyms_ { MMap symMap; MMap strMap; size_t nsyms; - uint8_t class; + uint8_t eclss; } *ESyms; /* LOCKING NOTE: if the ELF symbol facility is ever expanded to be truly used @@ -140,11 +142,11 @@ freeMap(MMap m) /* Helper to read exactly 'sz' bytes into 'buf' * RETURNS: # chars read or negative value on error. */ -static size_t -do_read(int fd, void *buf, size_t sz) +static ssize_t +do_read(int fd, void *buf, ssize_t sz) { -size_t got; -char *ptr=buf; +ssize_t got; +char *ptr=(char*)buf; while ( sz > 0 ) { if ( (got=read(fd,ptr,sz)) <= 0 ) { return got; @@ -179,7 +181,7 @@ size_t pgsz = sysconf(_SC_PAGESIZE); goto bail; } - if ( ! (rval = malloc(sizeof(*rval))) ) { + if ( ! (rval = (MMap) malloc(sizeof(*rval))) ) { errlogPrintf("elfRead - getscn() -- no memory for section map\n"); goto bail; } @@ -219,7 +221,7 @@ freeMapMalloc(MMap m) static MMap getscn_read(int fd, uint8_t c, Shdr *shdr_p) { -size_t n; +ssize_t n; MMap rval = 0; if ( 0 == (n=FLD(c,(*shdr_p),sh_size)) ) { @@ -227,7 +229,7 @@ MMap rval = 0; goto bail; } - if ( ! (rval = malloc(sizeof(*rval))) ) { + if ( ! (rval = (MMap) malloc(sizeof(*rval))) ) { errlogPrintf("elfRead - getscn() -- no memory for section map\n"); goto bail; } @@ -293,15 +295,16 @@ elfSymsRelease(ESyms es) static ESyms elfRead(const char *fname, uintptr_t fbase) { -int i,n; +int i; Ehdr ehdr; Shdr shdr; uint8_t c; ESyms es; -ssize_t idx; +ssize_t idx,n; const char *cp; +struct stat stat_b; - if ( !(es = malloc(sizeof(*es))) ) { + if ( !(es = (ESyms) malloc(sizeof(*es))) ) { /* no memory -- give up */ return 0; } @@ -333,7 +336,7 @@ const char *cp; goto bail; } - switch ( (es->class = c = ehdr.e32.e_ident[EI_CLASS]) ) { + switch ( (es->eclss = c = ehdr.e32.e_ident[EI_CLASS]) ) { default: errlogPrintf("bad ELF class\n"); goto bail; @@ -508,7 +511,7 @@ epicsFindAddr(void *addr, epicsSymbol *sym_p) Dl_info inf; ESyms es,nes = 0; uintptr_t minoff,off; -int i; +size_t i; Sym sym; Sym nearest; const char *strtab; @@ -573,7 +576,7 @@ size_t idx; minoff = (uintptr_t)-1LL; if ( es->nsyms ) { - c = es->class; + c = es->eclss; sym.raw = (char*)es->symMap->addr + es->symMap->off; strtab = (char*)es->strMap->addr + es->strMap->off; diff --git a/src/libCom/osi/os/posix/osdExecinfoBackTrace.c b/src/libCom/osi/os/posix/osdExecinfoBackTrace.cpp similarity index 100% rename from src/libCom/osi/os/posix/osdExecinfoBackTrace.c rename to src/libCom/osi/os/posix/osdExecinfoBackTrace.cpp diff --git a/src/libCom/osi/os/solaris/osdBackTrace.c b/src/libCom/osi/os/solaris/osdBackTrace.cpp similarity index 100% rename from src/libCom/osi/os/solaris/osdBackTrace.c rename to src/libCom/osi/os/solaris/osdBackTrace.cpp diff --git a/src/libCom/osi/os/solaris/osdFindAddr.c b/src/libCom/osi/os/solaris/osdFindAddr.cpp similarity index 90% rename from src/libCom/osi/os/solaris/osdFindAddr.c rename to src/libCom/osi/os/solaris/osdFindAddr.cpp index 84d17d96f..1f5d2e32e 100644 --- a/src/libCom/osi/os/solaris/osdFindAddr.c +++ b/src/libCom/osi/os/solaris/osdFindAddr.cpp @@ -7,4 +7,4 @@ * Author: Till Straumann , 2011, 2014 */ -#include "osdElfFindAddr.c" +#include "osdElfFindAddr.cpp"