GumBacktracer * gum_backtracer_make_default (void) { #if defined (G_OS_WIN32) return gum_dbghelp_backtracer_new (); #elif defined (HAVE_DARWIN) && defined (HAVE_OBJC) return gum_ns_backtracer_new (); #elif defined (HAVE_GLIBC) return gum_gnu_backtracer_new (); #elif defined (HAVE_I386) && !defined(__clang__) return gum_x86_backtracer_new (); #elif defined (HAVE_ARM) return gum_arm_backtracer_new (); #else return NULL; #endif }
GumBacktracer * gum_backtracer_make_accurate (void) { #if defined (G_OS_WIN32) GumDbgHelpImpl * dbghelp; dbghelp = gum_dbghelp_impl_obtain (); if (dbghelp == NULL) return NULL; return gum_dbghelp_backtracer_new (dbghelp); #elif defined (HAVE_DARWIN) return gum_darwin_backtracer_new (); #elif defined (HAVE_LIBUNWIND) return gum_unw_backtracer_new (); #else return NULL; #endif }