diff options
Diffstat (limited to 'gprofng/libcollector/libcol_util.c')
-rw-r--r-- | gprofng/libcollector/libcol_util.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gprofng/libcollector/libcol_util.c b/gprofng/libcollector/libcol_util.c index c709b3c5ed1..d682aa0ab29 100644 --- a/gprofng/libcollector/libcol_util.c +++ b/gprofng/libcollector/libcol_util.c @@ -1116,9 +1116,9 @@ __collector_util_init () /* internal calls for mapping in libcollector call mmap64 */ ptr = dlsym (libc, "mmap64"); if (ptr) - __collector_util_funcs.mmap64 = (void*(*)(void *, size_t, int, int, int, off_t))ptr; + __collector_util_funcs.mmap64_ = (void*(*)(void *, size_t, int, int, int, off_t))ptr; else - __collector_util_funcs.mmap64 = __collector_util_funcs.mmap; + __collector_util_funcs.mmap64_ = __collector_util_funcs.mmap; ptr = dlsym (libc, "munmap"); if (ptr) @@ -1214,16 +1214,16 @@ __collector_util_init () #if ARCH(Intel) && WSIZE(32) ptr = dlvsym (libc, "pwrite64", "GLIBC_2.2"); // it is in /lib/libpthread.so.0 if (ptr) - __collector_util_funcs.pwrite64 = (ssize_t (*)())ptr; + __collector_util_funcs.pwrite64_ = (ssize_t (*)())ptr; else { Tprintf (DBG_LT0, "libcol_util: WARNING: dlvsym for %s@%s failed. Using dlsym() instead.", "pwrite64", "GLIBC_2.2"); #endif /* ARCH(Intel) && WSIZE(32) */ ptr = dlsym (libc, "pwrite64"); if (ptr) - __collector_util_funcs.pwrite64 = (ssize_t (*)())ptr; + __collector_util_funcs.pwrite64_ = (ssize_t (*)())ptr; else - __collector_util_funcs.pwrite64 = __collector_util_funcs.pwrite; + __collector_util_funcs.pwrite64_ = __collector_util_funcs.pwrite; #if ARCH(Intel) && WSIZE(32) } #endif /* ARCH(Intel) && WSIZE(32) */ @@ -1319,6 +1319,15 @@ __collector_util_init () __collector_util_funcs.getcpuid = __collector_getcpuid; __collector_util_funcs.memset = collector_memset; + ptr = dlsym (libc, "getcontext"); + if (ptr) + __collector_util_funcs.getcontext = (int(*)())ptr; + else + { + CALL_UTIL (fprintf)(stderr, "collector_util_init COL_ERROR_UTIL_INIT getcontext: %s\n", dlerror ()); + err = COL_ERROR_UTIL_INIT; + } + ptr = dlsym (libc, "malloc"); if (ptr) __collector_util_funcs.malloc = (void *(*)(size_t))ptr; |