mirror of
https://github.com/termux/termux-packages.git
synced 2025-02-22 15:47:26 +00:00
50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
--- a/libmcount/wrap.c 2022-04-15 17:55:05.279817913 +0000
|
|
+++ b/libmcount/wrap.c 2022-04-15 19:45:32.879129081 +0000
|
|
@@ -273,7 +272,12 @@
|
|
|
|
void mcount_hook_functions(void)
|
|
{
|
|
+#if !defined __ANDROID__ || __ANDROID_API__ >= 33
|
|
real_backtrace = dlsym(RTLD_NEXT, "backtrace");
|
|
+#else
|
|
+ void *libandroid_execinfo = dlopen("libandroid-execinfo.so", RTLD_NOW);
|
|
+ real_backtrace = dlsym(libandroid_execinfo, "backtrace");
|
|
+#endif
|
|
real_cxa_throw = dlsym(RTLD_NEXT, "__cxa_throw");
|
|
real_cxa_rethrow = dlsym(RTLD_NEXT, "__cxa_rethrow");
|
|
real_cxa_begin_catch = dlsym(RTLD_NEXT, "__cxa_begin_catch");
|
|
@@ -281,8 +285,14 @@
|
|
real_dlopen = dlsym(RTLD_NEXT, "dlopen");
|
|
real_pthread_exit = dlsym(RTLD_NEXT, "pthread_exit");
|
|
real_unwind_resume = dlsym(RTLD_NEXT, "_Unwind_Resume");
|
|
+#if !defined __ANDROID__ || __ANDROID_API__ >= 28
|
|
real_posix_spawn = dlsym(RTLD_NEXT, "posix_spawn");
|
|
real_posix_spawnp = dlsym(RTLD_NEXT, "posix_spawnp");
|
|
+#else
|
|
+ void *libandroid_spawn = dlopen("libandroid-spawn.so", RTLD_NOW);
|
|
+ real_posix_spawn = dlsym(libandroid_spawn, "posix_spawn");
|
|
+ real_posix_spawnp = dlsym(libandroid_spawn, "posix_spawnp");
|
|
+#endif
|
|
real_execve = dlsym(RTLD_NEXT, "execve");
|
|
real_execvpe = dlsym(RTLD_NEXT, "execvpe");
|
|
real_fexecve = dlsym(RTLD_NEXT, "fexecve");
|
|
@@ -338,7 +320,8 @@
|
|
real_cxa_rethrow();
|
|
}
|
|
|
|
-__visible_default void _Unwind_Resume(void *exception)
|
|
+void __real__Unwind_Resume(void *exception);
|
|
+__visible_default void __wrap__Unwind_Resume(void *exception)
|
|
{
|
|
struct mcount_thread_data *mtdp;
|
|
|
|
@@ -360,7 +343,7 @@
|
|
mcount_rstack_restore(mtdp);
|
|
}
|
|
|
|
- real_unwind_resume(exception);
|
|
+ __real__Unwind_Resume(exception);
|
|
}
|
|
|
|
__visible_default void * __cxa_begin_catch(void *exception)
|