-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfix-libjava.patch
More file actions
41 lines (40 loc) · 1.62 KB
/
fix-libjava.patch
File metadata and controls
41 lines (40 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
diff -uNr mobile-ec285598849a27f681ea6269342cf03cf382eb56/src/java.base/share/native/libjli/java.c mobile-ec285598849a27f681ea6269342cf03cf382eb56.mod/src/java.base/share/native/libjli/java.c
--- src/java.base/share/native/libjli/java.c 2021-07-06 14:29:24.000000000 +0300
+++ mobile-ec285598849a27f681ea6269342cf03cf382eb56.mod/src/java.base/share/native/libjli/java.c 2021-07-30 15:23:39.352949077 +0300
@@ -54,6 +54,28 @@
#include "java.h"
#include "jni.h"
+#include <stdbool.h>
+#include <dlfcn.h>
+static void android_disable_tags();
+static void android_disable_tags() {
+ void *lib_handle = dlopen("libc.so", RTLD_LAZY);
+ if (lib_handle) {
+ if (android_get_device_api_level() >= 31) {
+ int (*mallopt_func)(int, int) = dlsym(lib_handle, "mallopt");
+ if (mallopt_func) {
+ mallopt_func(-204, 0);
+ }
+ return;
+ }
+ /* android_get_device_api_level() < 31 */
+ bool (*android_mallopt)(int opcode, void* arg, size_t arg_size) = dlsym(lib_handle, "android_mallopt");
+ if (android_mallopt) {
+ int android_malloc_tag_level = 0;
+ android_mallopt(8, &android_malloc_tag_level, sizeof(android_malloc_tag_level));
+ }
+ dlclose(lib_handle);
+ }
+}
/*
* A NOTE TO DEVELOPERS: For performance reasons it is important that
* the program image remain relatively small until after SelectVersion
@@ -251,7 +273,7 @@
_program_name = pname;
_is_java_args = javaargs;
_wc_enabled = cpwildcard;
-
+ android_disable_tags();
InitLauncher(javaw);
DumpState();
if (JLI_IsTraceLauncher()) {