AC_CHECK_FUNCS(getpriority)
AC_CHECK_FUNCS(setpriority)
AC_CHECK_FUNCS(dl_iterate_phdr)
+ AC_CHECK_FUNCS(dladdr)
AC_CHECK_FUNCS(sysconf)
AC_CHECK_FUNCS(sched_setaffinity)
EXIT_LOG (logbuffer);
}
-#ifdef HOST_WIN32
+#include "mono/io-layer/atomic.h"
+//#ifdef HOST_WIN32
#define cmp_exchange InterlockedCompareExchangePointer
-#else
+/*#else
static void*
cmp_exchange (volatile void **dest, void *exch, void *comp)
{
return old;
}
#endif
+*/
static void
mono_sample_hit (MonoProfiler *profiler, unsigned char *ip, void *context)
return 0;
}
-static void
+static int
load_binaries (MonoProfiler *prof)
{
dl_iterate_phdr (elf_dl_callback, prof);
+ return 1;
}
#else
-static void
+static int
load_binaries (MonoProfiler *prof)
{
+ return 0;
}
#endif
static const char*
symbol_for (uintptr_t code)
{
+#ifdef HAVE_DLADDR
void *ip = (void*)code;
Dl_info di;
if (dladdr (ip, &di)) {
}
*/
}
+#endif
return NULL;
}
const char* last_symbol;
uintptr_t addr, page_end;
- load_binaries (prof);
- return;
+ if (load_binaries (prof))
+ return;
for (i = 0; i < size_code_pages; ++i) {
const char* sym;
if (!code_pages [i] || code_pages [i] & 1)