Merge changes Ieb75b1d1,Id1c83c8b,I8cb3de94
* changes:
mkbootfs: Add support for a dev node list file
mkbootfs: Add support for dev nodes
mkbootfs: Use getopt_long
diff --git a/code_coverage/Android.bp b/code_coverage/Android.bp
index 2cb1617..d18e7a8 100644
--- a/code_coverage/Android.bp
+++ b/code_coverage/Android.bp
@@ -24,6 +24,14 @@
},
},
},
+ riscv64: {
+ src: "empty_policy/code_coverage.riscv64.policy",
+ product_variables: {
+ native_coverage: {
+ src: "seccomp_policy/code_coverage.riscv64.policy",
+ },
+ },
+ },
x86: {
src: "empty_policy/code_coverage.x86.policy",
product_variables: {
@@ -67,6 +75,10 @@
},
},
},
+ riscv64: {
+ // riscv64 doesn't have a secondary architecture.
+ enabled: false,
+ },
x86: {
src: "empty_policy/code_coverage.x86_64.policy",
product_variables: {
diff --git a/code_coverage/empty_policy/code_coverage.riscv64.policy b/code_coverage/empty_policy/code_coverage.riscv64.policy
new file mode 100644
index 0000000..9456932
--- /dev/null
+++ b/code_coverage/empty_policy/code_coverage.riscv64.policy
@@ -0,0 +1,2 @@
+# empty unless code_coverage is enabled.
+# code_coverage.riscv64.policy
diff --git a/code_coverage/seccomp_policy/code_coverage.riscv64.policy b/code_coverage/seccomp_policy/code_coverage.riscv64.policy
new file mode 100644
index 0000000..fdb4d1e
--- /dev/null
+++ b/code_coverage/seccomp_policy/code_coverage.riscv64.policy
@@ -0,0 +1,15 @@
+close: 1
+fchmod: 1
+mkdirat: 1
+msync: 1
+munmap: 1
+openat: 1
+write: 1
+fcntl: 1
+fstat: 1
+ftruncate: 1
+geteuid: 1
+lseek: 1
+mmap: 1
+rt_sigreturn: 1
+prctl: 1
diff --git a/debuggerd/Android.bp b/debuggerd/Android.bp
index 1c89472..15b5813 100644
--- a/debuggerd/Android.bp
+++ b/debuggerd/Android.bp
@@ -426,8 +426,8 @@
local_include_dirs: ["include"],
}
-cc_binary {
- name: "tombstoned",
+cc_defaults {
+ name: "tombstoned_defaults",
srcs: [
"util.cpp",
"tombstoned/intercept_manager.cpp",
@@ -446,10 +446,20 @@
"libevent",
"liblog",
],
+}
+cc_binary {
+ name: "tombstoned",
+ defaults: ["tombstoned_defaults"],
init_rc: ["tombstoned/tombstoned.rc"],
}
+cc_binary {
+ name: "tombstoned.microdroid",
+ defaults: ["tombstoned_defaults"],
+ init_rc: ["tombstoned/tombstoned.microdroid.rc"],
+}
+
prebuilt_etc {
name: "crash_dump.policy",
sub_dir: "seccomp_policy",
@@ -457,25 +467,36 @@
arch: {
arm: {
src: "seccomp_policy/crash_dump.arm.policy",
+ required: [
+ "crash_dump.policy_other",
+ ],
},
arm64: {
src: "seccomp_policy/crash_dump.arm64.policy",
+ required: [
+ "crash_dump.policy_other",
+ ],
+ },
+ riscv64: {
+ src: "seccomp_policy/crash_dump.riscv64.policy",
},
x86: {
src: "seccomp_policy/crash_dump.x86.policy",
+ required: [
+ "crash_dump.policy_other",
+ ],
},
x86_64: {
src: "seccomp_policy/crash_dump.x86_64.policy",
+ required: [
+ "crash_dump.policy_other",
+ ],
},
},
- required: [
- "crash_dump.policy_other",
- ],
}
-// NB -- this installs "the other" architecture. (puts 32 bit config in on 64 bit device)
-// or at least that is the intention so that we get both of them populated
+// This installs the "other" architecture (so 32-bit on 64-bit device).
prebuilt_etc {
name: "crash_dump.policy_other",
sub_dir: "seccomp_policy",
diff --git a/debuggerd/crash_dump.cpp b/debuggerd/crash_dump.cpp
index e3ea455..2a769c7 100644
--- a/debuggerd/crash_dump.cpp
+++ b/debuggerd/crash_dump.cpp
@@ -23,7 +23,6 @@
#include <sys/types.h>
#include <sys/un.h>
#include <sys/wait.h>
-#include <syscall.h>
#include <unistd.h>
#include <limits>
diff --git a/debuggerd/crasher/Android.bp b/debuggerd/crasher/Android.bp
index 799163e..fe1689c 100644
--- a/debuggerd/crasher/Android.bp
+++ b/debuggerd/crasher/Android.bp
@@ -15,18 +15,18 @@
"-fstack-protector-all",
"-Wno-date-time",
],
+ tidy: false, // crasher.cpp tests many memory access errors
srcs: ["crasher.cpp"],
arch: {
arm: {
srcs: ["arm/crashglue.S"],
-
- neon: {
- asflags: ["-DHAS_VFP_D32"],
- },
},
arm64: {
srcs: ["arm64/crashglue.S"],
},
+ riscv64: {
+ srcs: ["riscv64/crashglue.S"],
+ },
x86: {
srcs: ["x86/crashglue.S"],
},
diff --git a/debuggerd/crasher/arm/crashglue.S b/debuggerd/crasher/arm/crashglue.S
index 4fbfd6e..8649056 100644
--- a/debuggerd/crasher/arm/crashglue.S
+++ b/debuggerd/crasher/arm/crashglue.S
@@ -32,7 +32,6 @@
fconstd d13, #13
fconstd d14, #14
fconstd d15, #15
-#if defined(HAS_VFP_D32)
fconstd d16, #16
fconstd d17, #17
fconstd d18, #18
@@ -49,7 +48,6 @@
fconstd d29, #29
fconstd d30, #30
fconstd d31, #31
-#endif
mov lr, #0
ldr lr, [lr]
diff --git a/debuggerd/crasher/crasher.cpp b/debuggerd/crasher/crasher.cpp
index 55490b5..4eb7382 100644
--- a/debuggerd/crasher/crasher.cpp
+++ b/debuggerd/crasher/crasher.cpp
@@ -303,6 +303,8 @@
__asm__ volatile(".word 0xe7f0def0\n");
#elif defined(__i386__) || defined(__x86_64__)
__asm__ volatile("ud2\n");
+#elif defined(__riscv)
+ __asm__ volatile("unimp\n");
#else
#error
#endif
diff --git a/debuggerd/crasher/riscv64/crashglue.S b/debuggerd/crasher/riscv64/crashglue.S
new file mode 100644
index 0000000..47dd93b
--- /dev/null
+++ b/debuggerd/crasher/riscv64/crashglue.S
@@ -0,0 +1,45 @@
+
+ .globl crash1
+ .globl crashnostack
+
+crash1:
+ li x0,0xdead0000+0
+ li x1,0xdead0000+1
+ li x2,0xdead0000+2
+ li x3,0xdead0000+3
+ li x4,0xdead0000+4
+ li x5,0xdead0000+5
+ li x6,0xdead0000+6
+ li x7,0xdead0000+7
+ li x8,0xdead0000+8
+ li x9,0xdead0000+9
+ li x10,0xdead0000+10
+ li x11,0xdead0000+11
+ li x12,0xdead0000+12
+ li x13,0xdead0000+13
+ li x14,0xdead0000+14
+ li x15,0xdead0000+15
+ li x16,0xdead0000+16
+ li x17,0xdead0000+17
+ li x18,0xdead0000+18
+ li x19,0xdead0000+19
+ li x20,0xdead0000+20
+ li x21,0xdead0000+21
+ li x22,0xdead0000+22
+ li x23,0xdead0000+23
+ li x24,0xdead0000+24
+ li x25,0xdead0000+25
+ li x26,0xdead0000+26
+ li x27,0xdead0000+27
+ li x28,0xdead0000+28
+ # don't trash the stack otherwise the signal handler won't run
+ #li $29,0xdead0000+29
+ li x30,0xdead0000+30
+ li x31,0xdead0000+31
+
+ j .
+
+
+crashnostack:
+ li sp, 0
+ j .
diff --git a/debuggerd/debuggerd_test.cpp b/debuggerd/debuggerd_test.cpp
index aca476f..9c1b136 100644
--- a/debuggerd/debuggerd_test.cpp
+++ b/debuggerd/debuggerd_test.cpp
@@ -406,10 +406,10 @@
result, R"(signal 11 \(SIGSEGV\), code 1 \(SEGV_MAPERR\), fault addr 0x[01]00000000000dead)");
}
-// Marked as weak to prevent the compiler from removing the malloc in the caller. In theory, the
-// compiler could still clobber the argument register before trapping, but that's unlikely.
-__attribute__((weak)) void CrasherTest::Trap(void* ptr ATTRIBUTE_UNUSED) {
- __builtin_trap();
+void CrasherTest::Trap(void* ptr) {
+ void (*volatile f)(void*) = nullptr;
+ __asm__ __volatile__("" : : "r"(f) : "memory");
+ f(ptr);
}
TEST_F(CrasherTest, heap_addr_in_register) {
@@ -445,6 +445,8 @@
ASSERT_MATCH(result, "memory near x0 \\(\\[anon:");
#elif defined(__arm__)
ASSERT_MATCH(result, "memory near r0 \\(\\[anon:");
+#elif defined(__riscv)
+ ASSERT_MATCH(result, "memory near a0 \\(\\[anon:");
#elif defined(__x86_64__)
ASSERT_MATCH(result, "memory near rdi \\(\\[anon:");
#else
@@ -828,7 +830,7 @@
StartIntercept(&output_fd);
FinishCrasher();
- AssertDeath(SIGTRAP);
+ AssertDeath(SIGSEGV);
FinishIntercept(&intercept_result);
ASSERT_EQ(1, intercept_result) << "tombstoned reported failure";
diff --git a/debuggerd/handler/debuggerd_handler.cpp b/debuggerd/handler/debuggerd_handler.cpp
index c64de0e..37dbe86 100644
--- a/debuggerd/handler/debuggerd_handler.cpp
+++ b/debuggerd/handler/debuggerd_handler.cpp
@@ -187,27 +187,29 @@
* mutex is being held, so we don't want to use any libc functions that
* could allocate memory or hold a lock.
*/
-static void log_signal_summary(const siginfo_t* info) {
+static void log_signal_summary(const siginfo_t* si) {
char main_thread_name[MAX_TASK_NAME_LEN + 1];
if (!get_main_thread_name(main_thread_name, sizeof(main_thread_name))) {
strncpy(main_thread_name, "<unknown>", sizeof(main_thread_name));
}
- if (info->si_signo == BIONIC_SIGNAL_DEBUGGER) {
+ if (si->si_signo == BIONIC_SIGNAL_DEBUGGER) {
async_safe_format_log(ANDROID_LOG_INFO, "libc", "Requested dump for pid %d (%s)", __getpid(),
main_thread_name);
return;
}
- // Many signals don't have an address or sender.
- char addr_desc[32] = ""; // ", fault addr 0x1234"
- if (signal_has_si_addr(info)) {
- async_safe_format_buffer(addr_desc, sizeof(addr_desc), ", fault addr %p", info->si_addr);
- }
+ // Many signals don't have a sender or extra detail, but some do...
pid_t self_pid = __getpid();
char sender_desc[32] = {}; // " from pid 1234, uid 666"
- if (signal_has_sender(info, self_pid)) {
- get_signal_sender(sender_desc, sizeof(sender_desc), info);
+ if (signal_has_sender(si, self_pid)) {
+ get_signal_sender(sender_desc, sizeof(sender_desc), si);
+ }
+ char extra_desc[32] = {}; // ", fault addr 0x1234" or ", syscall 1234"
+ if (si->si_signo == SIGSYS && si->si_code == SYS_SECCOMP) {
+ async_safe_format_buffer(extra_desc, sizeof(extra_desc), ", syscall %d", si->si_syscall);
+ } else if (signal_has_si_addr(si)) {
+ async_safe_format_buffer(extra_desc, sizeof(extra_desc), ", fault addr %p", si->si_addr);
}
char thread_name[MAX_TASK_NAME_LEN + 1]; // one more for termination
@@ -221,8 +223,8 @@
async_safe_format_log(ANDROID_LOG_FATAL, "libc",
"Fatal signal %d (%s), code %d (%s%s)%s in tid %d (%s), pid %d (%s)",
- info->si_signo, get_signame(info), info->si_code, get_sigcode(info),
- sender_desc, addr_desc, __gettid(), thread_name, self_pid, main_thread_name);
+ si->si_signo, get_signame(si), si->si_code, get_sigcode(si), sender_desc,
+ extra_desc, __gettid(), thread_name, self_pid, main_thread_name);
}
/*
@@ -371,12 +373,29 @@
{.iov_base = thread_info->ucontext, .iov_len = sizeof(ucontext_t)},
};
+ constexpr size_t kHeaderSize = sizeof(version) + sizeof(siginfo_t) + sizeof(ucontext_t);
+
if (thread_info->process_info.fdsan_table) {
// Dynamic executables always use version 4. There is no need to increment the version number if
// the format changes, because the sender (linker) and receiver (crash_dump) are version locked.
version = 4;
expected = sizeof(CrashInfoHeader) + sizeof(CrashInfoDataDynamic);
+ static_assert(sizeof(CrashInfoHeader) + sizeof(CrashInfoDataDynamic) ==
+ kHeaderSize + sizeof(thread_info->process_info),
+ "Wire protocol structs do not match the data sent.");
+#define ASSERT_SAME_OFFSET(MEMBER1, MEMBER2) \
+ static_assert(sizeof(CrashInfoHeader) + offsetof(CrashInfoDataDynamic, MEMBER1) == \
+ kHeaderSize + offsetof(debugger_process_info, MEMBER2), \
+ "Wire protocol offset does not match data sent: " #MEMBER1);
+ ASSERT_SAME_OFFSET(fdsan_table_address, fdsan_table);
+ ASSERT_SAME_OFFSET(gwp_asan_state, gwp_asan_state);
+ ASSERT_SAME_OFFSET(gwp_asan_metadata, gwp_asan_metadata);
+ ASSERT_SAME_OFFSET(scudo_stack_depot, scudo_stack_depot);
+ ASSERT_SAME_OFFSET(scudo_region_info, scudo_region_info);
+ ASSERT_SAME_OFFSET(scudo_ring_buffer, scudo_ring_buffer);
+#undef ASSERT_SAME_OFFSET
+
iovs[3] = {.iov_base = &thread_info->process_info,
.iov_len = sizeof(thread_info->process_info)};
} else {
@@ -384,6 +403,10 @@
version = 1;
expected = sizeof(CrashInfoHeader) + sizeof(CrashInfoDataStatic);
+ static_assert(
+ sizeof(CrashInfoHeader) + sizeof(CrashInfoDataStatic) == kHeaderSize + sizeof(uintptr_t),
+ "Wire protocol structs do not match the data sent.");
+
iovs[3] = {.iov_base = &thread_info->process_info.abort_msg, .iov_len = sizeof(uintptr_t)};
}
errno = 0;
diff --git a/debuggerd/libdebuggerd/tombstone.cpp b/debuggerd/libdebuggerd/tombstone.cpp
index e5b4d74..375ed8a 100644
--- a/debuggerd/libdebuggerd/tombstone.cpp
+++ b/debuggerd/libdebuggerd/tombstone.cpp
@@ -77,9 +77,9 @@
.registers = std::move(regs), .uid = uid, .tid = target_tid,
.thread_name = std::move(thread_name), .pid = pid, .command_line = std::move(command_line),
.selinux_label = std::move(selinux_label), .siginfo = siginfo,
-#if defined(__aarch64__)
// Only supported on aarch64 for now.
- .tagged_addr_ctrl = prctl(PR_GET_TAGGED_ADDR_CTRL, 0, 0, 0, 0),
+#if defined(__aarch64__)
+ .tagged_addr_ctrl = prctl(PR_GET_TAGGED_ADDR_CTRL, 0, 0, 0, 0),
.pac_enabled_keys = prctl(PR_PAC_GET_ENABLED_KEYS, 0, 0, 0, 0),
#endif
};
@@ -88,7 +88,6 @@
if (target_tid == tid) {
return;
}
- async_safe_format_log(ANDROID_LOG_ERROR, LOG_TAG, "Adding thread %d", tid);
threads[tid] = ThreadInfo{
.uid = thread.uid,
.tid = tid,
diff --git a/debuggerd/libdebuggerd/tombstone_proto.cpp b/debuggerd/libdebuggerd/tombstone_proto.cpp
index 159ebc8..9a565de 100644
--- a/debuggerd/libdebuggerd/tombstone_proto.cpp
+++ b/debuggerd/libdebuggerd/tombstone_proto.cpp
@@ -82,6 +82,8 @@
return Architecture::X86;
#elif defined(__x86_64__)
return Architecture::X86_64;
+#elif defined(__riscv) && (__riscv_xlen == 64)
+ return Architecture::RISCV64;
#else
#error Unknown architecture!
#endif
diff --git a/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp b/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp
index 0265641..28154a7 100644
--- a/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp
+++ b/debuggerd/libdebuggerd/tombstone_proto_to_text.cpp
@@ -47,6 +47,8 @@
return "arm";
case Architecture::ARM64:
return "arm64";
+ case Architecture::RISCV64:
+ return "riscv64";
case Architecture::X86:
return "x86";
case Architecture::X86_64:
@@ -62,6 +64,8 @@
return 4;
case Architecture::ARM64:
return 8;
+ case Architecture::RISCV64:
+ return 8;
case Architecture::X86:
return 4;
case Architecture::X86_64:
@@ -119,6 +123,10 @@
special_registers = {"ip", "lr", "sp", "pc", "pst"};
break;
+ case Architecture::RISCV64:
+ special_registers = {"ra", "sp", "pc"};
+ break;
+
case Architecture::X86:
special_registers = {"ebp", "esp", "eip"};
break;
diff --git a/debuggerd/proto/tombstone.proto b/debuggerd/proto/tombstone.proto
index f0d3d3f..49865a2 100644
--- a/debuggerd/proto/tombstone.proto
+++ b/debuggerd/proto/tombstone.proto
@@ -48,8 +48,9 @@
ARM64 = 1;
X86 = 2;
X86_64 = 3;
+ RISCV64 = 4;
- reserved 4 to 999;
+ reserved 5 to 999;
}
message Signal {
diff --git a/debuggerd/seccomp_policy/crash_dump.riscv64.policy b/debuggerd/seccomp_policy/crash_dump.riscv64.policy
new file mode 100644
index 0000000..21887ab
--- /dev/null
+++ b/debuggerd/seccomp_policy/crash_dump.riscv64.policy
@@ -0,0 +1,37 @@
+read: 1
+write: 1
+exit: 1
+rt_sigreturn: 1
+exit_group: 1
+clock_gettime: 1
+gettimeofday: 1
+futex: 1
+getrandom: 1
+getpid: 1
+gettid: 1
+ppoll: 1
+pipe2: 1
+openat: 1
+dup: 1
+close: 1
+lseek: 1
+getdents64: 1
+faccessat: 1
+recvmsg: 1
+recvfrom: 1
+process_vm_readv: 1
+tgkill: 1
+rt_sigprocmask: 1
+rt_sigaction: 1
+rt_tgsigqueueinfo: 1
+prctl: arg0 == PR_GET_NO_NEW_PRIVS || arg0 == 0x53564d41 || arg0 == PR_PAC_RESET_KEYS
+madvise: 1
+mprotect: arg2 in 0x1|0x2
+munmap: 1
+getuid: 1
+fstat: 1
+mmap: arg2 in 0x1|0x2
+geteuid: 1
+getgid: 1
+getegid: 1
+getgroups: 1
diff --git a/debuggerd/seccomp_policy/generate.sh b/debuggerd/seccomp_policy/generate.sh
index 8c58b05..c467d9e 100755
--- a/debuggerd/seccomp_policy/generate.sh
+++ b/debuggerd/seccomp_policy/generate.sh
@@ -6,5 +6,6 @@
CPP='cpp -undef -E -P crash_dump.policy.def'
$CPP -D__arm__ -o crash_dump.arm.policy
$CPP -D__aarch64__ -D__LP64__ -o crash_dump.arm64.policy
+$CPP -D__riscv -D__LP64__ -o crash_dump.riscv64.policy
$CPP -D__i386__ -o crash_dump.x86.policy
$CPP -D__x86_64__ -D__LP64__ -o crash_dump.x86_64.policy
diff --git a/debuggerd/test_permissive_mte/Android.bp b/debuggerd/test_permissive_mte/Android.bp
index 1c09240..d3f7520 100644
--- a/debuggerd/test_permissive_mte/Android.bp
+++ b/debuggerd/test_permissive_mte/Android.bp
@@ -18,6 +18,7 @@
cc_binary {
name: "mte_crash",
+ tidy: false,
srcs: ["mte_crash.cpp"],
sanitize: {
memtag_heap: true,
diff --git a/debuggerd/tombstoned/tombstoned.microdroid.rc b/debuggerd/tombstoned/tombstoned.microdroid.rc
new file mode 100644
index 0000000..7f5c542
--- /dev/null
+++ b/debuggerd/tombstoned/tombstoned.microdroid.rc
@@ -0,0 +1,7 @@
+service tombstoned /system/bin/tombstoned.microdroid
+ user tombstoned
+ group system
+
+ socket tombstoned_crash seqpacket 0666 system system
+ socket tombstoned_intercept seqpacket 0666 system system
+ socket tombstoned_java_trace seqpacket 0666 system system
diff --git a/fastboot/Android.bp b/fastboot/Android.bp
index eed49fa..765174b 100644
--- a/fastboot/Android.bp
+++ b/fastboot/Android.bp
@@ -168,6 +168,7 @@
"android.hardware.boot-V1-ndk",
"libboot_control_client",
"android.hardware.fastboot@1.1",
+ "android.hardware.fastboot-V1-ndk",
"android.hardware.health@2.0",
"android.hardware.health-V1-ndk",
"libasyncio",
@@ -192,6 +193,7 @@
"libc++fs",
"libhealthhalutils",
"libhealthshim",
+ "libfastbootshim",
"libsnapshot_cow",
"liblz4",
"libsnapshot_nobinder",
diff --git a/fastboot/constants.h b/fastboot/constants.h
index f6fc74e..ad169d1 100644
--- a/fastboot/constants.h
+++ b/fastboot/constants.h
@@ -64,6 +64,7 @@
#define FB_VAR_SLOT_UNBOOTABLE "slot-unbootable"
#define FB_VAR_IS_LOGICAL "is-logical"
#define FB_VAR_IS_USERSPACE "is-userspace"
+#define FB_VAR_IS_FORCE_DEBUGGABLE "is-force-debuggable"
#define FB_VAR_HW_REVISION "hw-revision"
#define FB_VAR_VARIANT "variant"
#define FB_VAR_OFF_MODE_CHARGE_STATE "off-mode-charge"
diff --git a/fastboot/device/commands.cpp b/fastboot/device/commands.cpp
index 3799d1f..e929f42 100644
--- a/fastboot/device/commands.cpp
+++ b/fastboot/device/commands.cpp
@@ -57,8 +57,6 @@
using android::fs_mgr::MetadataBuilder;
using android::hal::CommandResult;
using ::android::hardware::hidl_string;
-using ::android::hardware::fastboot::V1_0::Result;
-using ::android::hardware::fastboot::V1_0::Status;
using android::snapshot::SnapshotManager;
using MergeStatus = android::hal::BootControlClient::MergeStatus;
@@ -133,6 +131,7 @@
{FB_VAR_PARTITION_TYPE, {GetPartitionType, GetAllPartitionArgsWithSlot}},
{FB_VAR_IS_LOGICAL, {GetPartitionIsLogical, GetAllPartitionArgsWithSlot}},
{FB_VAR_IS_USERSPACE, {GetIsUserspace, nullptr}},
+ {FB_VAR_IS_FORCE_DEBUGGABLE, {GetIsForceDebuggable, nullptr}},
{FB_VAR_OFF_MODE_CHARGE_STATE, {GetOffModeChargeState, nullptr}},
{FB_VAR_BATTERY_VOLTAGE, {GetBatteryVoltage, nullptr}},
{FB_VAR_BATTERY_SOC_OK, {GetBatterySoCOk, nullptr}},
@@ -203,20 +202,21 @@
return false;
}
- Result ret;
- auto ret_val = fastboot_hal->doOemSpecificErase([&](Result result) { ret = result; });
- if (!ret_val.isOk()) {
- return false;
- }
- if (ret.status == Status::NOT_SUPPORTED) {
- return false;
- } else if (ret.status != Status::SUCCESS) {
- device->WriteStatus(FastbootResult::FAIL, ret.message);
- } else {
+ auto status = fastboot_hal->doOemSpecificErase();
+ if (status.isOk()) {
device->WriteStatus(FastbootResult::OKAY, "Erasing succeeded");
+ return true;
}
-
- return true;
+ switch (status.getExceptionCode()) {
+ case EX_UNSUPPORTED_OPERATION:
+ return false;
+ case EX_SERVICE_SPECIFIC:
+ device->WriteStatus(FastbootResult::FAIL, status.getDescription());
+ return false;
+ default:
+ LOG(ERROR) << "Erase operation failed" << status.getDescription();
+ return false;
+ }
}
bool EraseHandler(FastbootDevice* device, const std::vector<std::string>& args) {
@@ -266,18 +266,16 @@
if (args[0] == "oem postwipedata userdata") {
return device->WriteStatus(FastbootResult::FAIL, "Unable to do oem postwipedata userdata");
}
-
- Result ret;
- auto ret_val = fastboot_hal->doOemCommand(args[0], [&](Result result) { ret = result; });
- if (!ret_val.isOk()) {
- return device->WriteStatus(FastbootResult::FAIL, "Unable to do OEM command");
- }
- if (ret.status != Status::SUCCESS) {
- return device->WriteStatus(FastbootResult::FAIL, ret.message);
+ std::string message;
+ auto status = fastboot_hal->doOemCommand(args[0], &message);
+ if (!status.isOk()) {
+ LOG(ERROR) << "Unable to do OEM command " << args[0].c_str() << status.getDescription();
+ return device->WriteStatus(FastbootResult::FAIL,
+ "Unable to do OEM command " + status.getDescription());
}
- device->WriteInfo(ret.message);
- return device->WriteStatus(FastbootResult::OKAY, ret.message);
+ device->WriteInfo(message);
+ return device->WriteStatus(FastbootResult::OKAY, message);
}
bool DownloadHandler(FastbootDevice* device, const std::vector<std::string>& args) {
diff --git a/fastboot/device/fastboot_device.cpp b/fastboot/device/fastboot_device.cpp
index 4932e5c..5afeb4f 100644
--- a/fastboot/device/fastboot_device.cpp
+++ b/fastboot/device/fastboot_device.cpp
@@ -25,6 +25,7 @@
#include <android/binder_manager.h>
#include <android/hardware/boot/1.0/IBootControl.h>
#include <android/hardware/fastboot/1.1/IFastboot.h>
+#include <fastbootshim.h>
#include <fs_mgr.h>
#include <fs_mgr/roots.h>
#include <health-shim/shim.h>
@@ -64,6 +65,27 @@
return nullptr;
}
+std::shared_ptr<aidl::android::hardware::fastboot::IFastboot> get_fastboot_service() {
+ using aidl::android::hardware::fastboot::IFastboot;
+ using HidlFastboot = android::hardware::fastboot::V1_1::IFastboot;
+ using aidl::android::hardware::fastboot::FastbootShim;
+ auto service_name = IFastboot::descriptor + "/default"s;
+ ndk::SpAIBinder binder(AServiceManager_getService(service_name.c_str()));
+ std::shared_ptr<IFastboot> fastboot = IFastboot::fromBinder(binder);
+ if (fastboot != nullptr) {
+ LOG(INFO) << "Using AIDL fastboot service";
+ return fastboot;
+ }
+ LOG(INFO) << "Unable to get AIDL fastboot service, trying HIDL...";
+ android::sp<HidlFastboot> hidl_fastboot = HidlFastboot::getService();
+ if (hidl_fastboot != nullptr) {
+ LOG(INFO) << "Found and now using fastboot HIDL implementation";
+ return ndk::SharedRefBase::make<FastbootShim>(hidl_fastboot);
+ }
+ LOG(WARNING) << "No fastboot implementation is found.";
+ return nullptr;
+}
+
FastbootDevice::FastbootDevice()
: kCommandMap({
{FB_CMD_SET_ACTIVE, SetActiveHandler},
@@ -87,7 +109,7 @@
}),
boot_control_hal_(BootControlClient::WaitForService()),
health_hal_(get_health_service()),
- fastboot_hal_(IFastboot::getService()),
+ fastboot_hal_(get_fastboot_service()),
active_slot_("") {
if (android::base::GetProperty("fastbootd.protocol", "usb") == "tcp") {
transport_ = std::make_unique<ClientTcpTransport>();
diff --git a/fastboot/device/fastboot_device.h b/fastboot/device/fastboot_device.h
index 9df8fa5..fcaf249 100644
--- a/fastboot/device/fastboot_device.h
+++ b/fastboot/device/fastboot_device.h
@@ -23,8 +23,8 @@
#include <vector>
#include <BootControlClient.h>
+#include <aidl/android/hardware/fastboot/IFastboot.h>
#include <aidl/android/hardware/health/IHealth.h>
-#include <android/hardware/fastboot/1.1/IFastboot.h>
#include "commands.h"
#include "transport.h"
@@ -52,7 +52,7 @@
Transport* get_transport() { return transport_.get(); }
BootControlClient* boot_control_hal() const { return boot_control_hal_.get(); }
BootControlClient* boot1_1() const;
- android::sp<android::hardware::fastboot::V1_1::IFastboot> fastboot_hal() {
+ std::shared_ptr<aidl::android::hardware::fastboot::IFastboot> fastboot_hal() {
return fastboot_hal_;
}
std::shared_ptr<aidl::android::hardware::health::IHealth> health_hal() { return health_hal_; }
@@ -65,7 +65,7 @@
std::unique_ptr<Transport> transport_;
std::unique_ptr<BootControlClient> boot_control_hal_;
std::shared_ptr<aidl::android::hardware::health::IHealth> health_hal_;
- android::sp<android::hardware::fastboot::V1_1::IFastboot> fastboot_hal_;
+ std::shared_ptr<aidl::android::hardware::fastboot::IFastboot> fastboot_hal_;
std::vector<char> download_data_;
std::string active_slot_;
};
diff --git a/fastboot/device/variables.cpp b/fastboot/device/variables.cpp
index b6eb2cd..d2a7947 100644
--- a/fastboot/device/variables.cpp
+++ b/fastboot/device/variables.cpp
@@ -41,9 +41,7 @@
#endif
using MergeStatus = android::hal::BootControlClient::MergeStatus;
-using ::android::hardware::fastboot::V1_0::FileSystemType;
-using ::android::hardware::fastboot::V1_0::Result;
-using ::android::hardware::fastboot::V1_0::Status;
+using aidl::android::hardware::fastboot::FileSystemType;
using namespace android::fs_mgr;
using namespace std::string_literals;
@@ -104,17 +102,16 @@
*message = "Fastboot HAL not found";
return false;
}
+ std::string device_variant = "";
+ auto status = fastboot_hal->getVariant(&device_variant);
- Result ret;
- auto ret_val = fastboot_hal->getVariant([&](std::string device_variant, Result result) {
- *message = device_variant;
- ret = result;
- });
- if (!ret_val.isOk() || ret.status != Status::SUCCESS) {
+ if (!status.isOk()) {
*message = "Unable to get device variant";
+ LOG(ERROR) << message->c_str() << status.getDescription();
return false;
}
+ *message = device_variant;
return true;
}
@@ -147,17 +144,14 @@
return false;
}
- Result ret;
- auto ret_val = fastboot_hal->getBatteryVoltageFlashingThreshold(
- [&](int32_t voltage_threshold, Result result) {
- *message = battery_voltage >= voltage_threshold ? "yes" : "no";
- ret = result;
- });
-
- if (!ret_val.isOk() || ret.status != Status::SUCCESS) {
+ auto voltage_threshold = 0;
+ auto status = fastboot_hal->getBatteryVoltageFlashingThreshold(&voltage_threshold);
+ if (!status.isOk()) {
*message = "Unable to get battery voltage flashing threshold";
+ LOG(ERROR) << message->c_str() << status.getDescription();
return false;
}
+ *message = battery_voltage >= voltage_threshold ? "yes" : "no";
return true;
}
@@ -169,18 +163,14 @@
*message = "Fastboot HAL not found";
return false;
}
-
- Result ret;
- auto ret_val =
- fastboot_hal->getOffModeChargeState([&](bool off_mode_charging_state, Result result) {
- *message = off_mode_charging_state ? "1" : "0";
- ret = result;
- });
- if (!ret_val.isOk() || (ret.status != Status::SUCCESS)) {
+ bool off_mode_charging_state = false;
+ auto status = fastboot_hal->getOffModeChargeState(&off_mode_charging_state);
+ if (!status.isOk()) {
*message = "Unable to get off mode charge state";
+ LOG(ERROR) << message->c_str() << status.getDescription();
return false;
}
-
+ *message = off_mode_charging_state ? "1" : "0";
return true;
}
@@ -337,14 +327,11 @@
}
FileSystemType type;
- Result ret;
- auto ret_val =
- fastboot_hal->getPartitionType(args[0], [&](FileSystemType fs_type, Result result) {
- type = fs_type;
- ret = result;
- });
- if (!ret_val.isOk() || (ret.status != Status::SUCCESS)) {
+ auto status = fastboot_hal->getPartitionType(args[0], &type);
+
+ if (!status.isOk()) {
*message = "Unable to retrieve partition type";
+ LOG(ERROR) << message->c_str() << status.getDescription();
} else {
switch (type) {
case FileSystemType::RAW:
@@ -392,6 +379,12 @@
return true;
}
+bool GetIsForceDebuggable(FastbootDevice* /* device */, const std::vector<std::string>& /* args */,
+ std::string* message) {
+ *message = android::base::GetBoolProperty("ro.force.debuggable", false) ? "yes" : "no";
+ return true;
+}
+
std::vector<std::vector<std::string>> GetAllPartitionArgsWithSlot(FastbootDevice* device) {
std::vector<std::vector<std::string>> args;
auto partitions = ListPartitions(device);
diff --git a/fastboot/device/variables.h b/fastboot/device/variables.h
index aa4d9fc..3b2d484 100644
--- a/fastboot/device/variables.h
+++ b/fastboot/device/variables.h
@@ -54,6 +54,8 @@
std::string* message);
bool GetIsUserspace(FastbootDevice* device, const std::vector<std::string>& args,
std::string* message);
+bool GetIsForceDebuggable(FastbootDevice* device, const std::vector<std::string>& args,
+ std::string* message);
bool GetHardwareRevision(FastbootDevice* device, const std::vector<std::string>& args,
std::string* message);
bool GetVariant(FastbootDevice* device, const std::vector<std::string>& args, std::string* message);
diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp
index 46190f2..f1b82e9 100644
--- a/fastboot/fastboot.cpp
+++ b/fastboot/fastboot.cpp
@@ -129,23 +129,23 @@
};
struct Image {
- const char* nickname;
- const char* img_name;
- const char* sig_name;
- const char* part_name;
+ std::string nickname;
+ std::string img_name;
+ std::string sig_name;
+ std::string part_name;
bool optional_if_no_image;
ImageType type;
- bool IsSecondary() const { return nickname == nullptr; }
+ bool IsSecondary() const { return nickname.empty(); }
};
-static Image images[] = {
+static std::vector<Image> images = {
// clang-format off
{ "boot", "boot.img", "boot.sig", "boot", false, ImageType::BootCritical },
{ "init_boot",
"init_boot.img", "init_boot.sig",
"init_boot",
true, ImageType::BootCritical },
- { nullptr, "boot_other.img", "boot.sig", "boot", true, ImageType::Normal },
+ { "", "boot_other.img", "boot.sig", "boot", true, ImageType::Normal },
{ "cache", "cache.img", "cache.sig", "cache", true, ImageType::Extra },
{ "dtbo", "dtbo.img", "dtbo.sig", "dtbo", true, ImageType::BootCritical },
{ "dts", "dt.img", "dt.sig", "dts", true, ImageType::BootCritical },
@@ -164,7 +164,7 @@
"system_ext.img", "system_ext.sig",
"system_ext",
true, ImageType::Normal },
- { nullptr, "system_other.img", "system.sig", "system", true, ImageType::Normal },
+ { "", "system_other.img", "system.sig", "system", true, ImageType::Normal },
{ "userdata", "userdata.img", "userdata.sig", "userdata", true, ImageType::Extra },
{ "vbmeta", "vbmeta.img", "vbmeta.sig", "vbmeta", true, ImageType::BootCritical },
{ "vbmeta_system",
@@ -191,7 +191,7 @@
"vendor_kernel_boot.sig",
"vendor_kernel_boot",
true, ImageType::BootCritical },
- { nullptr, "vendor_other.img", "vendor.sig", "vendor", true, ImageType::Normal },
+ { "", "vendor_other.img", "vendor.sig", "vendor", true, ImageType::Normal },
// clang-format on
};
@@ -212,8 +212,8 @@
}
static std::string find_item(const std::string& item) {
- for (size_t i = 0; i < arraysize(images); ++i) {
- if (images[i].nickname && item == images[i].nickname) {
+ for (size_t i = 0; i < images.size(); ++i) {
+ if (!images[i].nickname.empty() && item == images[i].nickname) {
return find_item_given_name(images[i].img_name);
}
}
@@ -274,7 +274,8 @@
// require matching serial number or device path if requested
// at the command line with the -s option.
if (local_serial && (strcmp(local_serial, info->serial_number) != 0 &&
- strcmp(local_serial, info->device_path) != 0)) return -1;
+ strcmp(local_serial, info->device_path) != 0))
+ return -1;
return 0;
}
@@ -532,15 +533,15 @@
std::vector<char> dtb_data;
if (!g_dtb_path.empty()) {
if (g_boot_img_hdr.header_version != 2) {
- die("Argument dtb not supported for boot image header version %d\n",
- g_boot_img_hdr.header_version);
+ die("Argument dtb not supported for boot image header version %d\n",
+ g_boot_img_hdr.header_version);
}
if (!ReadFileToVector(g_dtb_path, &dtb_data)) {
die("cannot load '%s': %s", g_dtb_path.c_str(), strerror(errno));
}
}
- fprintf(stderr,"creating boot image...\n");
+ fprintf(stderr, "creating boot image...\n");
std::vector<char> out;
mkbootimg(kernel_data, ramdisk_data, second_stage_data, dtb_data, g_base_addr, g_boot_img_hdr,
@@ -562,15 +563,15 @@
}
if (zip_entry.uncompressed_length > std::numeric_limits<size_t>::max()) {
- die("entry '%s' is too large: %" PRIu64, entry_name.c_str(), zip_entry.uncompressed_length);
+ die("entry '%s' is too large: %" PRIu64, entry_name.c_str(), zip_entry.uncompressed_length);
}
out->resize(zip_entry.uncompressed_length);
fprintf(stderr, "extracting %s (%zu MB) to RAM...\n", entry_name.c_str(),
out->size() / 1024 / 1024);
- int error = ExtractToMemory(zip, &zip_entry, reinterpret_cast<uint8_t*>(out->data()),
- out->size());
+ int error =
+ ExtractToMemory(zip, &zip_entry, reinterpret_cast<uint8_t*>(out->data()), out->size());
if (error != 0) die("failed to extract '%s': %s", entry_name.c_str(), ErrorCodeString(error));
return true;
@@ -618,8 +619,8 @@
std::string path_template(make_temporary_template());
int fd = mkstemp(&path_template[0]);
if (fd == -1) {
- die("failed to create temporary file for %s with template %s: %s\n",
- path_template.c_str(), what, strerror(errno));
+ die("failed to create temporary file for %s with template %s: %s\n", path_template.c_str(),
+ what, strerror(errno));
}
unlink(path_template.c_str());
return fd;
@@ -673,16 +674,15 @@
std::string var_value;
if (fb->GetVar(var, &var_value) != fastboot::SUCCESS) {
fprintf(stderr, "FAILED\n\n");
- fprintf(stderr, "Could not getvar for '%s' (%s)\n\n", var.c_str(),
- fb->Error().c_str());
+ fprintf(stderr, "Could not getvar for '%s' (%s)\n\n", var.c_str(), fb->Error().c_str());
return false;
}
bool match = false;
for (const auto& option : options) {
- if (option == var_value || (option.back() == '*' &&
- !var_value.compare(0, option.length() - 1, option, 0,
- option.length() - 1))) {
+ if (option == var_value ||
+ (option.back() == '*' &&
+ !var_value.compare(0, option.length() - 1, option, 0, option.length() - 1))) {
match = true;
break;
}
@@ -757,8 +757,8 @@
die("device doesn't have required partition %s!", partition_name.c_str());
}
bool known_partition = false;
- for (size_t i = 0; i < arraysize(images); ++i) {
- if (images[i].nickname && images[i].nickname == partition_name) {
+ for (size_t i = 0; i < images.size(); ++i) {
+ if (!images[i].nickname.empty() && images[i].nickname == partition_name) {
images[i].optional_if_no_image = false;
known_partition = true;
}
@@ -796,9 +796,9 @@
bool met = CheckRequirement(cur_product, name, product, invert, options);
if (!met) {
if (!force_flash) {
- die("requirements not met!");
+ die("requirements not met!");
} else {
- fprintf(stderr, "requirements not met! but proceeding due to --force\n");
+ fprintf(stderr, "requirements not met! but proceeding due to --force\n");
}
}
}
@@ -822,7 +822,6 @@
DisplayVarOrError("Baseband Version.....", "version-baseband");
DisplayVarOrError("Serial Number........", "serialno");
fprintf(stderr, "--------------------------------------------\n");
-
}
static struct sparse_file** load_sparse_files(int fd, int64_t max_size) {
@@ -830,13 +829,14 @@
if (!s) die("cannot sparse read file");
if (max_size <= 0 || max_size > std::numeric_limits<uint32_t>::max()) {
- die("invalid max size %" PRId64, max_size);
+ die("invalid max size %" PRId64, max_size);
}
int files = sparse_file_resparse(s, max_size, nullptr, 0);
if (files < 0) die("Failed to resparse");
- sparse_file** out_s = reinterpret_cast<sparse_file**>(calloc(sizeof(struct sparse_file *), files + 1));
+ sparse_file** out_s =
+ reinterpret_cast<sparse_file**>(calloc(sizeof(struct sparse_file*), files + 1));
if (!out_s) die("Failed to allocate sparse file array");
files = sparse_file_resparse(s, max_size, out_s, files);
@@ -1078,8 +1078,7 @@
lseek(buf->fd.get(), 0, SEEK_SET);
}
-static void flash_buf(const std::string& partition, struct fastboot_buffer *buf)
-{
+static void flash_buf(const std::string& partition, struct fastboot_buffer* buf) {
sparse_file** s;
if (partition == "boot" || partition == "boot_a" || partition == "boot_b" ||
@@ -1097,7 +1096,7 @@
rewrite_vbmeta_buffer(buf, false /* vbmeta_in_boot */);
} else if (!has_vbmeta_partition() &&
(partition == "boot" || partition == "boot_a" || partition == "boot_b")) {
- rewrite_vbmeta_buffer(buf, true /* vbmeta_in_boot */ );
+ rewrite_vbmeta_buffer(buf, true /* vbmeta_in_boot */);
}
}
@@ -1143,14 +1142,14 @@
}
static bool supports_AB() {
- return get_slot_count() >= 2;
+ return get_slot_count() >= 2;
}
// Given a current slot, this returns what the 'other' slot is.
static std::string get_other_slot(const std::string& current_slot, int count) {
if (count == 0) return "";
- char next = (current_slot[0] - 'a' + 1)%count + 'a';
+ char next = (current_slot[0] - 'a' + 1) % count + 'a';
return std::string(1, next);
}
@@ -1185,17 +1184,17 @@
if (count == 0) die("Device does not support slots");
if (slot == "other") {
- std::string other = get_other_slot( count);
+ std::string other = get_other_slot(count);
if (other == "") {
- die("No known slots");
+ die("No known slots");
}
return other;
}
- if (slot.size() == 1 && (slot[0]-'a' >= 0 && slot[0]-'a' < count)) return slot;
+ if (slot.size() == 1 && (slot[0] - 'a' >= 0 && slot[0] - 'a' < count)) return slot;
fprintf(stderr, "Slot %s does not exist. supported slots are:\n", slot.c_str());
- for (int i=0; i<count; i++) {
+ for (int i = 0; i < count; i++) {
fprintf(stderr, "%c\n", (char)(i + 'a'));
}
@@ -1203,7 +1202,7 @@
}
static std::string verify_slot(const std::string& slot) {
- return verify_slot(slot, true);
+ return verify_slot(slot, true);
}
static void do_for_partition(const std::string& part, const std::string& slot,
@@ -1243,7 +1242,8 @@
* partition does not support slots.
*/
static void do_for_partitions(const std::string& part, const std::string& slot,
- const std::function<void(const std::string&)>& func, bool force_slot) {
+ const std::function<void(const std::string&)>& func,
+ bool force_slot) {
std::string has_slot;
// |part| can be vendor_boot:default. Query has-slot on the first token only.
auto part_tokens = android::base::Split(part, ":");
@@ -1254,7 +1254,7 @@
slot.c_str());
}
if (has_slot == "yes") {
- for (int i=0; i < get_slot_count(); i++) {
+ for (int i = 0; i < get_slot_count(); i++) {
do_for_partition(part, std::string(1, (char)(i + 'a')), func, force_slot);
}
} else {
@@ -1403,7 +1403,7 @@
class ImageSource {
public:
- virtual ~ImageSource() {};
+ virtual ~ImageSource(){};
virtual bool ReadFile(const std::string& name, std::vector<char>* out) const = 0;
virtual unique_fd OpenFile(const std::string& name) const = 0;
};
@@ -1435,13 +1435,11 @@
FlashAllTool::FlashAllTool(const ImageSource& source, const std::string& slot_override,
bool skip_secondary, bool wipe, bool force_flash)
- : source_(source),
- slot_override_(slot_override),
- skip_secondary_(skip_secondary),
- wipe_(wipe),
- force_flash_(force_flash)
-{
-}
+ : source_(source),
+ slot_override_(slot_override),
+ skip_secondary_(skip_secondary),
+ wipe_(wipe),
+ force_flash_(force_flash) {}
void FlashAllTool::Flash() {
DumpInfo();
@@ -1508,7 +1506,7 @@
}
void FlashAllTool::CollectImages() {
- for (size_t i = 0; i < arraysize(images); ++i) {
+ for (size_t i = 0; i < images.size(); ++i) {
std::string slot = slot_override_;
if (images[i].IsSecondary()) {
if (skip_secondary_) {
@@ -1532,7 +1530,7 @@
if (image->optional_if_no_image) {
continue;
}
- die("could not load '%s': %s", image->img_name, strerror(errno));
+ die("could not load '%s': %s", image->img_name.c_str(), strerror(errno));
}
FlashImage(*image, slot, &buf);
}
@@ -1734,8 +1732,7 @@
fprintf(stderr, "File system type %s not supported.\n", partition_type.c_str());
return;
}
- die("Formatting is not supported for file system with type '%s'.",
- partition_type.c_str());
+ die("Formatting is not supported for file system with type '%s'.", partition_type.c_str());
}
int64_t size;
@@ -1892,32 +1889,30 @@
g_boot_img_hdr.page_size = 2048;
g_boot_img_hdr.dtb_addr = 0x01100000;
- const struct option longopts[] = {
- {"base", required_argument, 0, 0},
- {"cmdline", required_argument, 0, 0},
- {"disable-verification", no_argument, 0, 0},
- {"disable-verity", no_argument, 0, 0},
- {"force", no_argument, 0, 0},
- {"fs-options", required_argument, 0, 0},
- {"header-version", required_argument, 0, 0},
- {"help", no_argument, 0, 'h'},
- {"kernel-offset", required_argument, 0, 0},
- {"os-patch-level", required_argument, 0, 0},
- {"os-version", required_argument, 0, 0},
- {"page-size", required_argument, 0, 0},
- {"ramdisk-offset", required_argument, 0, 0},
- {"set-active", optional_argument, 0, 'a'},
- {"skip-reboot", no_argument, 0, 0},
- {"skip-secondary", no_argument, 0, 0},
- {"slot", required_argument, 0, 0},
- {"tags-offset", required_argument, 0, 0},
- {"dtb", required_argument, 0, 0},
- {"dtb-offset", required_argument, 0, 0},
- {"unbuffered", no_argument, 0, 0},
- {"verbose", no_argument, 0, 'v'},
- {"version", no_argument, 0, 0},
- {0, 0, 0, 0}
- };
+ const struct option longopts[] = {{"base", required_argument, 0, 0},
+ {"cmdline", required_argument, 0, 0},
+ {"disable-verification", no_argument, 0, 0},
+ {"disable-verity", no_argument, 0, 0},
+ {"force", no_argument, 0, 0},
+ {"fs-options", required_argument, 0, 0},
+ {"header-version", required_argument, 0, 0},
+ {"help", no_argument, 0, 'h'},
+ {"kernel-offset", required_argument, 0, 0},
+ {"os-patch-level", required_argument, 0, 0},
+ {"os-version", required_argument, 0, 0},
+ {"page-size", required_argument, 0, 0},
+ {"ramdisk-offset", required_argument, 0, 0},
+ {"set-active", optional_argument, 0, 'a'},
+ {"skip-reboot", no_argument, 0, 0},
+ {"skip-secondary", no_argument, 0, 0},
+ {"slot", required_argument, 0, 0},
+ {"tags-offset", required_argument, 0, 0},
+ {"dtb", required_argument, 0, 0},
+ {"dtb-offset", required_argument, 0, 0},
+ {"unbuffered", no_argument, 0, 0},
+ {"verbose", no_argument, 0, 'v'},
+ {"version", no_argument, 0, 0},
+ {0, 0, 0, 0}};
serial = getenv("ANDROID_SERIAL");
@@ -1966,7 +1961,8 @@
setvbuf(stdout, nullptr, _IONBF, 0);
setvbuf(stderr, nullptr, _IONBF, 0);
} else if (name == "version") {
- fprintf(stdout, "fastboot version %s-%s\n", PLATFORM_TOOLS_VERSION, android::build::GetBuildNumber().c_str());
+ fprintf(stdout, "fastboot version %s-%s\n", PLATFORM_TOOLS_VERSION,
+ android::build::GetBuildNumber().c_str());
fprintf(stdout, "Installed as %s\n", android::base::GetExecutablePath().c_str());
return 0;
} else {
@@ -2024,9 +2020,9 @@
return 1;
}
fastboot::DriverCallbacks driver_callbacks = {
- .prolog = Status,
- .epilog = Epilog,
- .info = InfoMessage,
+ .prolog = Status,
+ .epilog = Epilog,
+ .info = InfoMessage,
};
fastboot::FastBootDriver fastboot_driver(transport, driver_callbacks, false);
fb = &fastboot_driver;
@@ -2063,7 +2059,8 @@
std::string partition = next_arg(&args);
auto erase = [&](const std::string& partition) {
std::string partition_type;
- if (fb->GetVar("partition-type:" + partition, &partition_type) == fastboot::SUCCESS &&
+ if (fb->GetVar("partition-type:" + partition, &partition_type) ==
+ fastboot::SUCCESS &&
fs_get_generator(partition_type) != nullptr) {
fprintf(stderr, "******** Did you mean to fastboot format this %s partition?\n",
partition_type.c_str());
@@ -2118,7 +2115,6 @@
} else {
syntax_error("unknown reboot target %s", what.c_str());
}
-
}
if (!args.empty()) syntax_error("junk after reboot command");
} else if (command == FB_CMD_REBOOT_BOOTLOADER) {
@@ -2149,7 +2145,7 @@
}
if (fname.empty()) die("cannot determine image filename for '%s'", pname.c_str());
- auto flash = [&](const std::string &partition) {
+ auto flash = [&](const std::string& partition) {
if (should_flash_in_userspace(partition) && !is_userspace_fastboot() &&
!force_flash) {
die("The partition you are trying to flash is dynamic, and "
@@ -2178,7 +2174,8 @@
do_for_partitions(partition, slot_override, flashraw, true);
} else if (command == "flashall") {
if (slot_override == "all") {
- fprintf(stderr, "Warning: slot set to 'all'. Secondary slots will not be flashed.\n");
+ fprintf(stderr,
+ "Warning: slot set to 'all'. Secondary slots will not be flashed.\n");
do_flashall(slot_override, true, wants_wipe, force_flash);
} else {
do_flashall(slot_override, skip_secondary, wants_wipe, force_flash);
@@ -2187,7 +2184,8 @@
} else if (command == "update") {
bool slot_all = (slot_override == "all");
if (slot_all) {
- fprintf(stderr, "Warning: slot set to 'all'. Secondary slots will not be flashed.\n");
+ fprintf(stderr,
+ "Warning: slot set to 'all'. Secondary slots will not be flashed.\n");
}
std::string filename = "update.zip";
if (!args.empty()) {
@@ -2214,10 +2212,9 @@
} else if (command == "flashing") {
if (args.empty()) {
syntax_error("missing 'flashing' command");
- } else if (args.size() == 1 && (args[0] == "unlock" || args[0] == "lock" ||
- args[0] == "unlock_critical" ||
- args[0] == "lock_critical" ||
- args[0] == "get_unlock_ability")) {
+ } else if (args.size() == 1 &&
+ (args[0] == "unlock" || args[0] == "lock" || args[0] == "unlock_critical" ||
+ args[0] == "lock_critical" || args[0] == "get_unlock_ability")) {
do_oem_command("flashing", &args);
} else {
syntax_error("unknown 'flashing' command %s", args[0].c_str());
@@ -2272,7 +2269,7 @@
if (force_flash) {
CancelSnapshotIfNeeded();
}
- std::vector<std::string> partitions = { "userdata", "cache", "metadata" };
+ std::vector<std::string> partitions = {"userdata", "cache", "metadata"};
for (const auto& partition : partitions) {
std::string partition_type;
if (fb->GetVar("partition-type:" + partition, &partition_type) != fastboot::SUCCESS) {
@@ -2334,8 +2331,7 @@
unsigned fsOptions = 0;
std::vector<std::string> options = android::base::Split(arg, ",");
- if (options.size() < 1)
- syntax_error("bad options: %s", arg);
+ if (options.size() < 1) syntax_error("bad options: %s", arg);
for (size_t i = 0; i < options.size(); ++i) {
if (options[i] == "casefold")
diff --git a/fastboot/socket_test.cpp b/fastboot/socket_test.cpp
index 373abc3..74ff377 100644
--- a/fastboot/socket_test.cpp
+++ b/fastboot/socket_test.cpp
@@ -293,23 +293,23 @@
}
TEST(SocketMockTest, TestSendFailure) {
- SocketMock* mock = new SocketMock;
+ std::unique_ptr<SocketMock> mock(new SocketMock);
mock->ExpectSendFailure("foo");
- EXPECT_FALSE(SendString(mock, "foo"));
+ EXPECT_FALSE(SendString(mock.get(), "foo"));
- EXPECT_NONFATAL_FAILURE(SendString(mock, "foo"), "no message was expected");
+ EXPECT_NONFATAL_FAILURE(SendString(mock.get(), "foo"), "no message was expected");
mock->ExpectSend("foo");
- EXPECT_NONFATAL_FAILURE(SendString(mock, "bar"), "expected foo, but got bar");
- EXPECT_TRUE(SendString(mock, "foo"));
+ EXPECT_NONFATAL_FAILURE(SendString(mock.get(), "bar"), "expected foo, but got bar");
+ EXPECT_TRUE(SendString(mock.get(), "foo"));
mock->AddReceive("foo");
- EXPECT_NONFATAL_FAILURE(SendString(mock, "foo"), "called out-of-order");
- EXPECT_TRUE(ReceiveString(mock, "foo"));
+ EXPECT_NONFATAL_FAILURE(SendString(mock.get(), "foo"), "called out-of-order");
+ EXPECT_TRUE(ReceiveString(mock.get(), "foo"));
mock->ExpectSend("foo");
- EXPECT_NONFATAL_FAILURE(delete mock, "1 event(s) were not handled");
+ EXPECT_NONFATAL_FAILURE(mock.reset(), "1 event(s) were not handled");
}
TEST(SocketMockTest, TestReceiveSuccess) {
@@ -331,33 +331,33 @@
}
TEST(SocketMockTest, TestReceiveFailure) {
- SocketMock* mock = new SocketMock;
+ std::unique_ptr<SocketMock> mock(new SocketMock);
mock->AddReceiveFailure();
- EXPECT_FALSE(ReceiveString(mock, "foo"));
+ EXPECT_FALSE(ReceiveString(mock.get(), "foo"));
EXPECT_FALSE(mock->ReceiveTimedOut());
mock->AddReceiveTimeout();
- EXPECT_FALSE(ReceiveString(mock, "foo"));
+ EXPECT_FALSE(ReceiveString(mock.get(), "foo"));
EXPECT_TRUE(mock->ReceiveTimedOut());
mock->AddReceive("foo");
mock->AddReceiveFailure();
- EXPECT_FALSE(ReceiveString(mock, "foobar"));
+ EXPECT_FALSE(ReceiveString(mock.get(), "foobar"));
- EXPECT_NONFATAL_FAILURE(ReceiveString(mock, "foo"), "no message was ready");
+ EXPECT_NONFATAL_FAILURE(ReceiveString(mock.get(), "foo"), "no message was ready");
mock->ExpectSend("foo");
- EXPECT_NONFATAL_FAILURE(ReceiveString(mock, "foo"), "called out-of-order");
- EXPECT_TRUE(SendString(mock, "foo"));
+ EXPECT_NONFATAL_FAILURE(ReceiveString(mock.get(), "foo"), "called out-of-order");
+ EXPECT_TRUE(SendString(mock.get(), "foo"));
char c;
mock->AddReceive("foo");
EXPECT_NONFATAL_FAILURE(mock->Receive(&c, 1, 0), "not enough bytes (1) for foo");
- EXPECT_TRUE(ReceiveString(mock, "foo"));
+ EXPECT_TRUE(ReceiveString(mock.get(), "foo"));
mock->AddReceive("foo");
- EXPECT_NONFATAL_FAILURE(delete mock, "1 event(s) were not handled");
+ EXPECT_NONFATAL_FAILURE(mock.reset(), "1 event(s) were not handled");
}
TEST(SocketMockTest, TestAcceptSuccess) {
@@ -372,14 +372,14 @@
}
TEST(SocketMockTest, TestAcceptFailure) {
- SocketMock* mock = new SocketMock;
+ std::unique_ptr<SocketMock> mock(new SocketMock);
EXPECT_NONFATAL_FAILURE(mock->Accept(), "no socket was ready");
mock->ExpectSend("foo");
EXPECT_NONFATAL_FAILURE(mock->Accept(), "called out-of-order");
- EXPECT_TRUE(SendString(mock, "foo"));
+ EXPECT_TRUE(SendString(mock.get(), "foo"));
mock->AddAccept(nullptr);
- EXPECT_NONFATAL_FAILURE(delete mock, "1 event(s) were not handled");
+ EXPECT_NONFATAL_FAILURE(mock.reset(), "1 event(s) were not handled");
}
diff --git a/fs_mgr/Android.bp b/fs_mgr/Android.bp
index bebf19e..dd61272 100644
--- a/fs_mgr/Android.bp
+++ b/fs_mgr/Android.bp
@@ -251,41 +251,8 @@
},
symlinks: [
"clean_scratch_files",
- ],
-}
-
-cc_binary {
- name: "set-verity-state",
- srcs: ["set-verity-state.cpp"],
- shared_libs: [
- "libbase",
- "libbinder",
- "libcrypto",
- "libcrypto_utils",
- "libfs_mgr_binder",
- "libutils",
- ],
- static_libs: [
- "libavb_user",
- ],
- header_libs: [
- "libcutils_headers",
- ],
-
- cflags: ["-Werror"],
- cppflags: [
- "-DALLOW_DISABLE_VERITY=0",
- ],
- product_variables: {
- debuggable: {
- cppflags: [
- "-UALLOW_DISABLE_VERITY",
- "-DALLOW_DISABLE_VERITY=1",
- ],
- },
- },
- symlinks: [
- "enable-verity",
"disable-verity",
+ "enable-verity",
+ "set-verity-state",
],
}
diff --git a/fs_mgr/OWNERS b/fs_mgr/OWNERS
index 6f1059b..bd46489 100644
--- a/fs_mgr/OWNERS
+++ b/fs_mgr/OWNERS
@@ -1,4 +1,4 @@
-# Bug component: 30545
+# Bug component: 325626
bowgotsai@google.com
dvander@google.com
elsk@google.com
diff --git a/fs_mgr/fs_mgr.cpp b/fs_mgr/fs_mgr.cpp
index 27137a2..1c1ab48 100644
--- a/fs_mgr/fs_mgr.cpp
+++ b/fs_mgr/fs_mgr.cpp
@@ -2191,36 +2191,22 @@
std::vector<std::string> tokens = android::base::Split(target.data, " \t\r\n");
if (tokens[0] != "0" && tokens[0] != "1") {
LOG(WARNING) << "Unrecognized device mapper version in " << target.data;
- return {};
}
// Hashtree algorithm & root digest are the 8th & 9th token in the output.
- return HashtreeInfo{.algorithm = android::base::Trim(tokens[7]),
- .root_digest = android::base::Trim(tokens[8])};
+ return HashtreeInfo{
+ .algorithm = android::base::Trim(tokens[7]),
+ .root_digest = android::base::Trim(tokens[8]),
+ .check_at_most_once = target.data.find("check_at_most_once") != std::string::npos};
}
return {};
}
bool fs_mgr_verity_is_check_at_most_once(const android::fs_mgr::FstabEntry& entry) {
- if (!entry.fs_mgr_flags.avb) {
- return false;
- }
-
- DeviceMapper& dm = DeviceMapper::Instance();
- std::string device = GetVerityDeviceName(entry);
-
- std::vector<DeviceMapper::TargetInfo> table;
- if (dm.GetState(device) == DmDeviceState::INVALID || !dm.GetTableInfo(device, &table)) {
- return false;
- }
- for (const auto& target : table) {
- if (strcmp(target.spec.target_type, "verity") == 0 &&
- target.data.find("check_at_most_once") != std::string::npos) {
- return true;
- }
- }
- return false;
+ auto hashtree_info = fs_mgr_get_hashtree_info(entry);
+ if (!hashtree_info) return false;
+ return hashtree_info->check_at_most_once;
}
std::string fs_mgr_get_super_partition_name(int slot) {
diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp
index 76ef9e4..36bd75d 100644
--- a/fs_mgr/fs_mgr_fstab.cpp
+++ b/fs_mgr/fs_mgr_fstab.cpp
@@ -488,13 +488,21 @@
return boot_devices;
}
-template <typename Pred>
-std::vector<FstabEntry*> GetEntriesByPred(Fstab* fstab, const Pred& pred) {
+// Helper class that maps Fstab* -> FstabEntry; const Fstab* -> const FstabEntry.
+template <typename FstabPtr>
+struct FstabPtrEntry {
+ using is_const_fstab = std::is_const<std::remove_pointer_t<FstabPtr>>;
+ using type = std::conditional_t<is_const_fstab::value, const FstabEntry, FstabEntry>;
+};
+
+template <typename FstabPtr, typename FstabPtrEntryType = typename FstabPtrEntry<FstabPtr>::type,
+ typename Pred>
+std::vector<FstabPtrEntryType*> GetEntriesByPred(FstabPtr fstab, const Pred& pred) {
if (fstab == nullptr) {
return {};
}
- std::vector<FstabEntry*> entries;
- for (auto&& entry : *fstab) {
+ std::vector<FstabPtrEntryType*> entries;
+ for (FstabPtrEntryType& entry : *fstab) {
if (pred(entry)) {
entries.push_back(&entry);
}
@@ -754,10 +762,11 @@
}
#ifdef NO_SKIP_MOUNT
-bool SkipMountingPartitions(Fstab*, bool) {
- return true;
-}
+static constexpr bool kNoSkipMount = true;
#else
+static constexpr bool kNoSkipMount = false;
+#endif
+
// For GSI to skip mounting /product and /system_ext, until there are well-defined interfaces
// between them and /system. Otherwise, the GSI flashed on /system might not be able to work with
// device-specific /product and /system_ext. skip_mount.cfg belongs to system_ext partition because
@@ -765,17 +774,24 @@
// /system/system_ext because GSI is a single system.img that includes the contents of system_ext
// partition and product partition under /system/system_ext and /system/product, respectively.
bool SkipMountingPartitions(Fstab* fstab, bool verbose) {
- static constexpr char kSkipMountConfig[] = "/system/system_ext/etc/init/config/skip_mount.cfg";
-
- std::string skip_config;
- auto save_errno = errno;
- if (!ReadFileToString(kSkipMountConfig, &skip_config)) {
- errno = save_errno; // missing file is expected
+ if (kNoSkipMount) {
return true;
}
+ static constexpr char kSkipMountConfig[] = "/system/system_ext/etc/init/config/skip_mount.cfg";
+
+ std::string skip_mount_config;
+ auto save_errno = errno;
+ if (!ReadFileToString(kSkipMountConfig, &skip_mount_config)) {
+ errno = save_errno; // missing file is expected
+ return true;
+ }
+ return SkipMountWithConfig(skip_mount_config, fstab, verbose);
+}
+
+bool SkipMountWithConfig(const std::string& skip_mount_config, Fstab* fstab, bool verbose) {
std::vector<std::string> skip_mount_patterns;
- for (const auto& line : Split(skip_config, "\n")) {
+ for (const auto& line : Split(skip_mount_config, "\n")) {
if (line.empty() || StartsWith(line, "#")) {
continue;
}
@@ -801,7 +817,6 @@
fstab->erase(remove_from, fstab->end());
return true;
}
-#endif
// Loads the fstab file and combines with fstab entries passed in from device tree.
bool ReadDefaultFstab(Fstab* fstab) {
@@ -828,25 +843,27 @@
return !fstab->empty();
}
-FstabEntry* GetEntryForMountPoint(Fstab* fstab, const std::string& path) {
- if (fstab == nullptr) {
- return nullptr;
- }
-
- for (auto& entry : *fstab) {
- if (entry.mount_point == path) {
- return &entry;
- }
- }
-
- return nullptr;
-}
-
std::vector<FstabEntry*> GetEntriesForMountPoint(Fstab* fstab, const std::string& path) {
return GetEntriesByPred(fstab,
[&path](const FstabEntry& entry) { return entry.mount_point == path; });
}
+std::vector<const FstabEntry*> GetEntriesForMountPoint(const Fstab* fstab,
+ const std::string& path) {
+ return GetEntriesByPred(fstab,
+ [&path](const FstabEntry& entry) { return entry.mount_point == path; });
+}
+
+FstabEntry* GetEntryForMountPoint(Fstab* fstab, const std::string& path) {
+ std::vector<FstabEntry*> entries = GetEntriesForMountPoint(fstab, path);
+ return entries.empty() ? nullptr : entries.front();
+}
+
+const FstabEntry* GetEntryForMountPoint(const Fstab* fstab, const std::string& path) {
+ std::vector<const FstabEntry*> entries = GetEntriesForMountPoint(fstab, path);
+ return entries.empty() ? nullptr : entries.front();
+}
+
std::set<std::string> GetBootDevices() {
// First check bootconfig, then kernel commandline, then the device tree
std::string dt_file_name = get_android_dt_dir() + "/boot_devices";
diff --git a/fs_mgr/fs_mgr_overlayfs.cpp b/fs_mgr/fs_mgr_overlayfs.cpp
index 6213aeb..6349c20 100644
--- a/fs_mgr/fs_mgr_overlayfs.cpp
+++ b/fs_mgr/fs_mgr_overlayfs.cpp
@@ -68,6 +68,9 @@
namespace {
+constexpr char kDataScratchSizeMbProp[] = "fs_mgr.overlayfs.data_scratch_size_mb";
+constexpr char kPreferCacheBackingStorageProp[] = "fs_mgr.overlayfs.prefer_cache_backing_storage";
+
bool fs_mgr_access(const std::string& path) {
return access(path.c_str(), F_OK) == 0;
}
@@ -99,6 +102,10 @@
const auto kScratchMountPoint = "/mnt/scratch"s;
const auto kCacheMountPoint = "/cache"s;
+bool IsABDevice() {
+ return !android::base::GetProperty("ro.boot.slot_suffix", "").empty();
+}
+
std::vector<const std::string> OverlayMountPoints() {
// Never fallback to legacy cache mount point if within a DSU system,
// because running a DSU system implies the device supports dynamic
@@ -106,6 +113,14 @@
if (fs_mgr_is_dsu_running()) {
return {kScratchMountPoint};
}
+
+ // For non-A/B devices prefer cache backing storage if
+ // kPreferCacheBackingStorageProp property set.
+ if (!IsABDevice() && android::base::GetBoolProperty(kPreferCacheBackingStorageProp, false) &&
+ android::base::GetIntProperty("ro.vendor.api_level", -1) < __ANDROID_API_T__) {
+ return {kCacheMountPoint, kScratchMountPoint};
+ }
+
return {kScratchMountPoint, kCacheMountPoint};
}
@@ -200,6 +215,24 @@
return (info.feat_ro_compat & EXT4_FEATURE_RO_COMPAT_SHARED_BLOCKS) != 0;
}
+#define F2FS_SUPER_OFFSET 1024
+#define F2FS_FEATURE_OFFSET 2180
+#define F2FS_FEATURE_RO 0x4000
+bool fs_mgr_is_read_only_f2fs(const std::string& dev) {
+ if (!fs_mgr_is_f2fs(dev)) return false;
+
+ android::base::unique_fd fd(open(dev.c_str(), O_RDONLY | O_CLOEXEC));
+ if (fd < 0) return false;
+
+ __le32 feat;
+ if ((TEMP_FAILURE_RETRY(lseek64(fd, F2FS_SUPER_OFFSET + F2FS_FEATURE_OFFSET, SEEK_SET)) < 0) ||
+ (TEMP_FAILURE_RETRY(read(fd, &feat, sizeof(feat))) < 0)) {
+ return false;
+ }
+
+ return (feat & cpu_to_le32(F2FS_FEATURE_RO)) != 0;
+}
+
bool fs_mgr_overlayfs_enabled(FstabEntry* entry) {
// readonly filesystem, can not be mount -o remount,rw
// for squashfs, erofs or if free space is (near) zero making such a remount
@@ -214,6 +247,11 @@
return true;
}
+ // f2fs read-only mode doesn't support remount,rw
+ if (fs_mgr_is_read_only_f2fs(entry->blk_device)) {
+ return true;
+ }
+
// check if ext4 de-dupe
auto has_shared_blocks = fs_mgr_has_shared_blocks(entry->mount_point, entry->blk_device);
if (!has_shared_blocks && (entry->mount_point == "/system")) {
@@ -293,8 +331,14 @@
return major > 5 || (major == 5 && minor >= 15);
}
+const std::string fs_mgr_mount_point(const std::string& mount_point) {
+ if ("/"s != mount_point) return mount_point;
+ return "/system";
+}
+
// default options for mount_point, returns empty string for none available.
-std::string fs_mgr_get_overlayfs_options(const std::string& mount_point) {
+std::string fs_mgr_get_overlayfs_options(const FstabEntry& entry) {
+ const auto mount_point = fs_mgr_mount_point(entry.mount_point);
auto candidate = fs_mgr_get_overlayfs_candidate(mount_point);
if (candidate.empty()) return "";
auto ret = kLowerdirOption + mount_point + "," + kUpperdirOption + candidate + kUpperName +
@@ -305,14 +349,14 @@
if (KernelSupportsUserXattrs()) {
ret += ",userxattr";
}
+ for (const auto& flag : android::base::Split(entry.fs_options, ",")) {
+ if (android::base::StartsWith(flag, "context=")) {
+ ret += "," + flag;
+ }
+ }
return ret;
}
-const std::string fs_mgr_mount_point(const std::string& mount_point) {
- if ("/"s != mount_point) return mount_point;
- return "/system";
-}
-
constexpr char kOverlayfsFileContext[] = "u:object_r:overlayfs_file:s0";
class AutoSetFsCreateCon final {
@@ -437,6 +481,28 @@
return true;
}
+OverlayfsTeardownResult TeardownDataScratch(IImageManager* images,
+ const std::string& partition_name, bool was_mounted) {
+ if (!images) {
+ return OverlayfsTeardownResult::Error;
+ }
+ if (!images->DisableImage(partition_name)) {
+ return OverlayfsTeardownResult::Error;
+ }
+ if (was_mounted) {
+ // If overlayfs was mounted, don't bother trying to unmap since
+ // it'll fail and create error spam.
+ return OverlayfsTeardownResult::Busy;
+ }
+ if (!images->UnmapImageIfExists(partition_name)) {
+ return OverlayfsTeardownResult::Busy;
+ }
+ if (!images->DeleteBackingImage(partition_name)) {
+ return OverlayfsTeardownResult::Busy;
+ }
+ return OverlayfsTeardownResult::Ok;
+}
+
OverlayfsTeardownResult fs_mgr_overlayfs_teardown_scratch(const std::string& overlay,
bool* change) {
// umount and delete kScratchMountPoint storage if we have logical partitions
@@ -459,24 +525,9 @@
auto images = IImageManager::Open("remount", 10s);
if (images && images->BackingImageExists(partition_name)) {
- if (!images->DisableImage(partition_name)) {
- return OverlayfsTeardownResult::Error;
- }
- if (was_mounted) {
- // If overlayfs was mounted, don't bother trying to unmap since
- // it'll fail and create error spam.
- return OverlayfsTeardownResult::Busy;
- }
- if (!images->UnmapImageIfExists(partition_name)) {
- return OverlayfsTeardownResult::Busy;
- }
- if (!images->DeleteBackingImage(partition_name)) {
- return OverlayfsTeardownResult::Busy;
- }
-
// No need to check super partition, if we knew we had a scratch device
// in /data.
- return OverlayfsTeardownResult::Ok;
+ return TeardownDataScratch(images.get(), partition_name, was_mounted);
}
auto slot_number = fs_mgr_overlayfs_slot_number();
@@ -664,8 +715,9 @@
return info;
}
-bool fs_mgr_overlayfs_mount(const std::string& mount_point) {
- auto options = fs_mgr_get_overlayfs_options(mount_point);
+bool fs_mgr_overlayfs_mount(const FstabEntry& entry) {
+ const auto mount_point = fs_mgr_mount_point(entry.mount_point);
+ const auto options = fs_mgr_get_overlayfs_options(entry);
if (options.empty()) return false;
auto retval = true;
@@ -1061,7 +1113,10 @@
return false;
}
if (!images->BackingImageExists(partition_name)) {
- uint64_t size = GetIdealDataScratchSize();
+ auto size = android::base::GetUintProperty<uint64_t>(kDataScratchSizeMbProp, 0) * 1_MiB;
+ if (!size) {
+ size = GetIdealDataScratchSize();
+ }
if (!size) {
size = 2_GiB;
}
@@ -1075,12 +1130,14 @@
}
if (!images->MapImageDevice(partition_name, 10s, scratch_device)) {
LERROR << "could not map scratch image";
+ // If we cannot use this image, then remove it.
+ TeardownDataScratch(images.get(), partition_name, false /* was_mounted */);
return false;
}
return true;
}
-static bool CanUseSuperPartition(const Fstab& fstab, bool* is_virtual_ab) {
+static bool CanUseSuperPartition(const Fstab& fstab) {
auto slot_number = fs_mgr_overlayfs_slot_number();
auto super_device = fs_mgr_overlayfs_super_device(slot_number);
if (!fs_mgr_rw_access(super_device) || !fs_mgr_overlayfs_has_logical(fstab)) {
@@ -1090,7 +1147,6 @@
if (!metadata) {
return false;
}
- *is_virtual_ab = !!(metadata->header.flags & LP_HEADER_FLAG_VIRTUAL_AB_DEVICE);
return true;
}
@@ -1103,12 +1159,16 @@
return *partition_exists;
}
- bool is_virtual_ab = false;
- if (CanUseSuperPartition(fstab, &is_virtual_ab)) {
- bool can_use_data = false;
- if (is_virtual_ab && FilesystemHasReliablePinning("/data", &can_use_data) && can_use_data) {
- return CreateScratchOnData(scratch_device, partition_exists);
+ // Try ImageManager on /data first.
+ bool can_use_data = false;
+ if (FilesystemHasReliablePinning("/data", &can_use_data) && can_use_data) {
+ if (CreateScratchOnData(scratch_device, partition_exists)) {
+ return true;
}
+ LOG(WARNING) << "Failed to allocate scratch on /data, fallback to use free space on super";
+ }
+ // If that fails, see if we can land on super.
+ if (CanUseSuperPartition(fstab)) {
return CreateDynamicScratch(scratch_device, partition_exists);
}
return false;
@@ -1292,12 +1352,13 @@
scratch_can_be_mounted = false;
TryMountScratch();
}
- ret &= fs_mgr_overlayfs_mount(mount_point);
+ ret &= fs_mgr_overlayfs_mount(entry);
}
return ret;
}
-bool fs_mgr_overlayfs_setup(const char* mount_point, bool* want_reboot, bool just_disabled_verity) {
+bool fs_mgr_overlayfs_setup(const Fstab& fstab, const char* mount_point, bool* want_reboot,
+ bool just_disabled_verity) {
if (!OverlayfsSetupAllowed(/*verbose=*/true)) {
return false;
}
@@ -1307,12 +1368,6 @@
return false;
}
- Fstab fstab;
- if (!ReadDefaultFstab(&fstab)) {
- LOG(ERROR) << "Could not read fstab";
- return false;
- }
-
auto candidates = fs_mgr_overlayfs_candidate_list(fstab);
for (auto it = candidates.begin(); it != candidates.end();) {
if (mount_point &&
diff --git a/fs_mgr/fs_mgr_priv_overlayfs.h b/fs_mgr/fs_mgr_priv_overlayfs.h
index 45b954d..2033701 100644
--- a/fs_mgr/fs_mgr_priv_overlayfs.h
+++ b/fs_mgr/fs_mgr_priv_overlayfs.h
@@ -29,8 +29,8 @@
//
// If |want_reboot| is non-null, and a reboot is needed to apply overlays, then
// it will be true on return. The caller is responsible for initializing it.
-bool fs_mgr_overlayfs_setup(const char* mount_point = nullptr, bool* want_reboot = nullptr,
- bool just_disabled_verity = true);
+bool fs_mgr_overlayfs_setup(const android::fs_mgr::Fstab& fstab, const char* mount_point = nullptr,
+ bool* want_reboot = nullptr, bool just_disabled_verity = true);
enum class OverlayfsTeardownResult {
Ok,
diff --git a/fs_mgr/fs_mgr_remount.cpp b/fs_mgr/fs_mgr_remount.cpp
index 2edaaad..5fddf86 100644
--- a/fs_mgr/fs_mgr_remount.cpp
+++ b/fs_mgr/fs_mgr_remount.cpp
@@ -22,6 +22,7 @@
#include <sys/vfs.h>
#include <unistd.h>
+#include <iostream>
#include <string>
#include <thread>
#include <utility>
@@ -33,6 +34,7 @@
#include <android-base/strings.h>
#include <android/os/IVold.h>
#include <binder/IServiceManager.h>
+#include <binder/ProcessState.h>
#include <bootloader_message/bootloader_message.h>
#include <cutils/android_reboot.h>
#include <fs_mgr_overlayfs.h>
@@ -50,17 +52,34 @@
namespace {
void usage() {
- LOG(INFO) << getprogname()
- << " [-h] [-R] [-T fstab_file] [partition]...\n"
- "\t-h --help\tthis help\n"
- "\t-R --reboot\tdisable verity & reboot to facilitate remount\n"
- "\t-T --fstab\tcustom fstab file location\n"
- "\tpartition\tspecific partition(s) (empty does all)\n"
- "\n"
- "Remount specified partition(s) read-write, by name or mount point.\n"
- "-R notwithstanding, verity must be disabled on partition(s).\n"
- "-R within a DSU guest system reboots into the DSU instead of the host system,\n"
- "this command would enable DSU (one-shot) if not already enabled.";
+ const std::string progname = getprogname();
+ if (progname == "disable-verity" || progname == "enable-verity" ||
+ progname == "set-verity-state") {
+ std::cout << "Usage: disable-verity\n"
+ << " enable-verity\n"
+ << " set-verity-state [0|1]\n"
+ << R"(
+Options:
+ -h --help this help
+ -R --reboot automatic reboot if needed for new settings to take effect
+ -v --verbose be noisy)"
+ << std::endl;
+ } else {
+ std::cout << "Usage: " << progname << " [-h] [-R] [-T fstab_file] [partition]...\n"
+ << R"(
+Options:
+ -h --help this help
+ -R --reboot disable verity & reboot to facilitate remount
+ -v --verbose be noisy
+ -T --fstab custom fstab file location
+ partition specific partition(s) (empty does all)
+
+Remount specified partition(s) read-write, by name or mount point.
+-R notwithstanding, verity must be disabled on partition(s).
+-R within a DSU guest system reboots into the DSU instead of the host system,
+this command would enable DSU (one-shot) if not already enabled.)"
+ << std::endl;
+ }
}
const std::string system_mount_point(const android::fs_mgr::FstabEntry& entry) {
@@ -79,23 +98,32 @@
return &(*it);
}
-auto verbose = false;
+class MyLogger {
+ public:
+ explicit MyLogger(bool verbose) : verbose_(verbose) {}
-void MyLogger(android::base::LogId id, android::base::LogSeverity severity, const char* tag,
- const char* file, unsigned int line, const char* message) {
- if (verbose || severity == android::base::ERROR || message[0] != '[') {
- fprintf(stderr, "%s\n", message);
+ void operator()(android::base::LogId id, android::base::LogSeverity severity, const char* tag,
+ const char* file, unsigned int line, const char* message) {
+ // By default, print ERROR logs and logs of this program (does not start with '[')
+ // Print [libfs_mgr] INFO logs only if -v is given.
+ if (verbose_ || severity >= android::base::ERROR || message[0] != '[') {
+ fprintf(stderr, "%s\n", message);
+ }
+ logd_(id, severity, tag, file, line, message);
}
- static auto logd = android::base::LogdLogger();
- logd(id, severity, tag, file, line, message);
-}
-[[noreturn]] void reboot() {
+ private:
+ android::base::LogdLogger logd_;
+ bool verbose_;
+};
+
+[[noreturn]] void reboot(const std::string& name) {
LOG(INFO) << "Rebooting device for new settings to take effect";
::sync();
- android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,remount");
+ android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot," + name);
::sleep(60);
- ::exit(0); // SUCCESS
+ LOG(ERROR) << "Failed to reboot";
+ ::exit(1);
}
static android::sp<android::os::IVold> GetVold() {
@@ -111,21 +139,6 @@
}
}
-} // namespace
-
-enum RemountStatus {
- REMOUNT_SUCCESS = 0,
- UNKNOWN_PARTITION = 5,
- INVALID_PARTITION,
- VERITY_PARTITION,
- BAD_OVERLAY,
- NO_MOUNTS,
- REMOUNT_FAILED,
- BINDER_ERROR,
- CHECKPOINTING,
- GSID_ERROR,
-};
-
static bool ReadFstab(const char* fstab_file, android::fs_mgr::Fstab* fstab) {
if (fstab_file) {
return android::fs_mgr::ReadFstabFromFile(fstab_file, fstab);
@@ -146,10 +159,10 @@
return true;
}
-static RemountStatus VerifyCheckpointing() {
+bool VerifyCheckpointing() {
if (!android::base::GetBoolProperty("ro.virtual_ab.enabled", false) &&
!android::base::GetBoolProperty("ro.virtual_ab.retrofit", false)) {
- return REMOUNT_SUCCESS;
+ return true;
}
// Virtual A/B devices can use /data as backing storage; make sure we're
@@ -158,13 +171,13 @@
bool checkpointing = false;
if (!vold->isCheckpointing(&checkpointing).isOk()) {
LOG(ERROR) << "Could not determine checkpointing status.";
- return BINDER_ERROR;
+ return false;
}
if (checkpointing) {
LOG(ERROR) << "Cannot use remount when a checkpoint is in progress.";
- return CHECKPOINTING;
+ return false;
}
- return REMOUNT_SUCCESS;
+ return true;
}
static bool IsRemountable(Fstab& candidates, const FstabEntry& entry) {
@@ -221,8 +234,7 @@
return partitions;
}
-static RemountStatus GetRemountList(const Fstab& fstab, const std::vector<std::string>& argv,
- Fstab* partitions) {
+bool GetRemountList(const Fstab& fstab, const std::vector<std::string>& argv, Fstab* partitions) {
auto candidates = fs_mgr_overlayfs_candidate_list(fstab);
for (const auto& arg : argv) {
@@ -234,7 +246,7 @@
auto it = FindPartition(fstab, partition);
if (it == fstab.end()) {
LOG(ERROR) << "Unknown partition " << arg;
- return UNKNOWN_PARTITION;
+ return false;
}
const FstabEntry* entry = &*it;
@@ -249,7 +261,7 @@
if (!fs_mgr_overlayfs_already_mounted(entry->mount_point) &&
!IsRemountable(candidates, *entry)) {
LOG(ERROR) << "Invalid partition " << arg;
- return INVALID_PARTITION;
+ return false;
}
if (GetEntryForMountPoint(partitions, entry->mount_point) != nullptr) {
continue;
@@ -257,7 +269,7 @@
partitions->emplace_back(*entry);
}
- return REMOUNT_SUCCESS;
+ return true;
}
struct RemountCheckResult {
@@ -268,43 +280,18 @@
bool remounted_anything = false;
};
-static RemountStatus CheckVerity(const FstabEntry& entry, RemountCheckResult* result) {
- if (!fs_mgr_is_verity_enabled(entry)) {
- return REMOUNT_SUCCESS;
- }
-
- std::unique_ptr<AvbOps, decltype(&::avb_ops_user_free)> ops(avb_ops_user_new(),
- &::avb_ops_user_free);
- if (!ops) {
- return VERITY_PARTITION;
- }
- if (!avb_user_verity_set(ops.get(), fs_mgr_get_slot_suffix().c_str(), false)) {
- return VERITY_PARTITION;
- }
- result->disabled_verity = true;
- result->reboot_later = true;
- return REMOUNT_SUCCESS;
-}
-
-static RemountStatus CheckVerityAndOverlayfs(Fstab* partitions, RemountCheckResult* result) {
- RemountStatus status = REMOUNT_SUCCESS;
+bool CheckOverlayfs(Fstab* partitions, RemountCheckResult* result) {
+ bool ok = true;
for (auto it = partitions->begin(); it != partitions->end();) {
auto& entry = *it;
const auto& mount_point = entry.mount_point;
- if (auto rv = CheckVerity(entry, result); rv != REMOUNT_SUCCESS) {
- LOG(ERROR) << "Skipping verified partition " << mount_point << " for remount";
- status = rv;
- it = partitions->erase(it);
- continue;
- }
-
if (fs_mgr_wants_overlayfs(&entry)) {
bool want_reboot = false;
bool force = result->disabled_verity;
- if (!fs_mgr_overlayfs_setup(mount_point.c_str(), &want_reboot, force)) {
+ if (!fs_mgr_overlayfs_setup(*partitions, mount_point.c_str(), &want_reboot, force)) {
LOG(ERROR) << "Overlayfs setup for " << mount_point << " failed, skipping";
- status = BAD_OVERLAY;
+ ok = false;
it = partitions->erase(it);
continue;
}
@@ -316,45 +303,48 @@
}
it++;
}
- return status;
+ return ok;
}
-static RemountStatus EnableDsuIfNeeded() {
+bool EnableDsuIfNeeded() {
auto gsid = android::gsi::GetGsiService();
if (!gsid) {
- return REMOUNT_SUCCESS;
+ return true;
}
auto dsu_running = false;
if (auto status = gsid->isGsiRunning(&dsu_running); !status.isOk()) {
LOG(ERROR) << "Failed to get DSU running state: " << status;
- return BINDER_ERROR;
+ return false;
}
auto dsu_enabled = false;
if (auto status = gsid->isGsiEnabled(&dsu_enabled); !status.isOk()) {
LOG(ERROR) << "Failed to get DSU enabled state: " << status;
- return BINDER_ERROR;
+ return false;
}
if (dsu_running && !dsu_enabled) {
std::string dsu_slot;
if (auto status = gsid->getActiveDsuSlot(&dsu_slot); !status.isOk()) {
LOG(ERROR) << "Failed to get active DSU slot: " << status;
- return BINDER_ERROR;
+ return false;
}
LOG(INFO) << "DSU is running but disabled, enable DSU so that we stay within the "
"DSU guest system after reboot";
int error = 0;
- if (auto status = gsid->enableGsi(/* oneShot = */ true, dsu_slot, &error);
- !status.isOk() || error != android::gsi::IGsiService::INSTALL_OK) {
- LOG(ERROR) << "Failed to enable DSU: " << status << ", error code: " << error;
- return !status.isOk() ? BINDER_ERROR : GSID_ERROR;
+ if (auto status = gsid->enableGsi(/* oneShot = */ true, dsu_slot, &error); !status.isOk()) {
+ LOG(ERROR) << "Failed to enable DSU: " << status;
+ return false;
+ }
+ if (error != android::gsi::IGsiService::INSTALL_OK) {
+ LOG(ERROR) << "Failed to enable DSU, error code: " << error;
+ return false;
}
LOG(INFO) << "Successfully enabled DSU (one-shot mode)";
}
- return REMOUNT_SUCCESS;
+ return true;
}
-static RemountStatus RemountPartition(Fstab& fstab, Fstab& mounts, FstabEntry& entry) {
+bool RemountPartition(Fstab& fstab, Fstab& mounts, FstabEntry& entry) {
// unlock the r/o key for the mount point device
if (entry.fs_mgr_flags.logical) {
fs_mgr_update_logical_partition(&entry);
@@ -381,7 +371,7 @@
}
if (!found) {
PLOG(INFO) << "skip unmounted partition dev:" << blk_device << " mnt:" << mount_point;
- return REMOUNT_SUCCESS;
+ return true;
}
if (blk_device == "/dev/root") {
auto from_fstab = GetEntryForMountPoint(&fstab, mount_point);
@@ -396,41 +386,133 @@
}
// Now remount!
- if (::mount(blk_device.c_str(), mount_point.c_str(), entry.fs_type.c_str(), MS_REMOUNT,
- nullptr) == 0) {
- return REMOUNT_SUCCESS;
- }
- if ((errno == EINVAL) && (mount_point != entry.mount_point)) {
- mount_point = entry.mount_point;
- if (::mount(blk_device.c_str(), mount_point.c_str(), entry.fs_type.c_str(), MS_REMOUNT,
+ for (const auto& mnt_point : {mount_point, entry.mount_point}) {
+ if (::mount(blk_device.c_str(), mnt_point.c_str(), entry.fs_type.c_str(), MS_REMOUNT,
nullptr) == 0) {
- return REMOUNT_SUCCESS;
+ LOG(INFO) << "Remounted " << mnt_point << " as RW";
+ return true;
+ }
+ if (errno != EINVAL || mount_point == entry.mount_point) {
+ break;
}
}
PLOG(ERROR) << "failed to remount partition dev:" << blk_device << " mnt:" << mount_point;
- return REMOUNT_FAILED;
+ return false;
}
-static int do_remount(Fstab& fstab, const std::vector<std::string>& partition_args,
- RemountCheckResult* check_result) {
+struct SetVerityStateResult {
+ bool success = false;
+ bool want_reboot = false;
+};
+
+SetVerityStateResult SetVerityState(bool enable_verity) {
+ const auto ab_suffix = android::base::GetProperty("ro.boot.slot_suffix", "");
+ std::unique_ptr<AvbOps, decltype(&avb_ops_user_free)> ops(avb_ops_user_new(),
+ &avb_ops_user_free);
+ if (!ops) {
+ LOG(ERROR) << "Error getting AVB ops";
+ return {};
+ }
+ if (!avb_user_verity_set(ops.get(), ab_suffix.c_str(), enable_verity)) {
+ LOG(ERROR) << "Error setting verity state";
+ return {};
+ }
+ bool verification_enabled = false;
+ if (!avb_user_verification_get(ops.get(), ab_suffix.c_str(), &verification_enabled)) {
+ LOG(ERROR) << "Error getting verification state";
+ return {};
+ }
+ if (!verification_enabled) {
+ LOG(WARNING) << "AVB verification is disabled, "
+ << (enable_verity ? "enabling" : "disabling")
+ << " verity state may have no effect";
+ return {.success = true, .want_reboot = false};
+ }
+ const auto verity_mode = android::base::GetProperty("ro.boot.veritymode", "");
+ const bool was_enabled = (verity_mode != "disabled");
+ if ((was_enabled && enable_verity) || (!was_enabled && !enable_verity)) {
+ LOG(INFO) << "Verity is already " << (enable_verity ? "enabled" : "disabled");
+ return {.success = true, .want_reboot = false};
+ }
+ LOG(INFO) << "Successfully " << (enable_verity ? "enabled" : "disabled") << " verity";
+ return {.success = true, .want_reboot = true};
+}
+
+bool SetupOrTeardownOverlayfs(bool enable) {
+ bool want_reboot = false;
+ if (enable) {
+ Fstab fstab;
+ if (!ReadDefaultFstab(&fstab)) {
+ LOG(ERROR) << "Could not read fstab.";
+ return want_reboot;
+ }
+ if (!fs_mgr_overlayfs_setup(fstab, nullptr, &want_reboot)) {
+ LOG(ERROR) << "Overlayfs setup failed.";
+ return want_reboot;
+ }
+ if (want_reboot) {
+ printf("enabling overlayfs\n");
+ }
+ } else {
+ auto rv = fs_mgr_overlayfs_teardown(nullptr, &want_reboot);
+ if (rv == OverlayfsTeardownResult::Error) {
+ LOG(ERROR) << "Overlayfs teardown failed.";
+ return want_reboot;
+ }
+ if (rv == OverlayfsTeardownResult::Busy) {
+ LOG(ERROR) << "Overlayfs is still active until reboot.";
+ return true;
+ }
+ if (want_reboot) {
+ printf("disabling overlayfs\n");
+ }
+ }
+ return want_reboot;
+}
+
+bool do_remount(Fstab& fstab, const std::vector<std::string>& partition_args,
+ RemountCheckResult* check_result) {
Fstab partitions;
if (partition_args.empty()) {
partitions = GetAllRemountablePartitions(fstab);
} else {
- if (auto rv = GetRemountList(fstab, partition_args, &partitions); rv != REMOUNT_SUCCESS) {
- return rv;
+ if (!GetRemountList(fstab, partition_args, &partitions)) {
+ return false;
}
}
- // Check verity and optionally setup overlayfs backing.
- auto retval = CheckVerityAndOverlayfs(&partitions, check_result);
+ // Disable verity.
+ auto verity_result = SetVerityState(false /* enable_verity */);
+
+ // Treat error as fatal and suggest reboot only if verity is enabled.
+ // TODO(b/260041315): We check the device mapper for any "<partition>-verity" device present
+ // instead of checking ro.boot.veritymode because emulator has incorrect property value.
+ bool must_disable_verity = false;
+ for (const auto& partition : partitions) {
+ if (fs_mgr_is_verity_enabled(partition)) {
+ must_disable_verity = true;
+ break;
+ }
+ }
+ if (must_disable_verity) {
+ if (!verity_result.success) {
+ return false;
+ }
+ if (verity_result.want_reboot) {
+ check_result->reboot_later = true;
+ check_result->disabled_verity = true;
+ }
+ }
+
+ // Optionally setup overlayfs backing.
+ bool ok = CheckOverlayfs(&partitions, check_result);
if (partitions.empty() || check_result->disabled_verity) {
if (partitions.empty()) {
LOG(WARNING) << "No remountable partitions were found.";
}
- return retval;
+ return ok;
}
// Mount overlayfs.
@@ -443,51 +525,35 @@
android::fs_mgr::Fstab mounts;
if (!android::fs_mgr::ReadFstabFromFile("/proc/mounts", &mounts) || mounts.empty()) {
PLOG(ERROR) << "Failed to read /proc/mounts";
- return NO_MOUNTS;
+ return false;
}
// Remount selected partitions.
for (auto& entry : partitions) {
- if (auto rv = RemountPartition(fstab, mounts, entry); rv != REMOUNT_SUCCESS) {
- retval = rv;
- } else {
+ if (RemountPartition(fstab, mounts, entry)) {
check_result->remounted_anything = true;
+ } else {
+ ok = false;
}
}
- return retval;
+ return ok;
}
+} // namespace
+
int main(int argc, char* argv[]) {
// Do not use MyLogger() when running as clean_scratch_files, as stdout/stderr of daemon process
// are discarded.
if (argc > 0 && android::base::Basename(argv[0]) == "clean_scratch_files"s) {
android::fs_mgr::CleanupOldScratchFiles();
- return 0;
+ return EXIT_SUCCESS;
}
- android::base::InitLogging(argv, MyLogger);
-
- // Make sure we are root.
- if (::getuid() != 0) {
- LOG(ERROR) << "Not running as root. Try \"adb root\" first.";
- return 1;
- }
-
- // If somehow this executable is delivered on a "user" build, it can
- // not function, so providing a clear message to the caller rather than
- // letting if fall through and provide a lot of confusing failure messages.
- if (!ALLOW_ADBD_DISABLE_VERITY || !android::base::GetBoolProperty("ro.debuggable", false)) {
- LOG(ERROR) << "Device must be userdebug build";
- return 1;
- }
-
- if (android::base::GetProperty("ro.boot.vbmeta.device_state", "") == "locked") {
- LOG(ERROR) << "Device must be bootloader unlocked";
- return 1;
- }
+ android::base::InitLogging(argv, MyLogger(false /* verbose */));
const char* fstab_file = nullptr;
- auto auto_reboot = false;
+ bool auto_reboot = false;
+ bool verbose = false;
std::vector<std::string> partition_args;
struct option longopts[] = {
@@ -501,15 +567,15 @@
switch (opt) {
case 'h':
usage();
- return 0;
+ return EXIT_SUCCESS;
case 'R':
auto_reboot = true;
break;
case 'T':
if (fstab_file) {
- LOG(ERROR) << "Cannot supply two fstabs: -T " << fstab_file << " -T" << optarg;
+ LOG(ERROR) << "Cannot supply two fstabs: -T " << fstab_file << " -T " << optarg;
usage();
- return 1;
+ return EXIT_FAILURE;
}
fstab_file = optarg;
break;
@@ -517,30 +583,92 @@
verbose = true;
break;
default:
- LOG(ERROR) << "Bad Argument -" << char(opt);
+ LOG(ERROR) << "Bad argument -" << char(opt);
usage();
- return 1;
+ return EXIT_FAILURE;
}
}
- for (; argc > optind; ++optind) {
- partition_args.emplace_back(argv[optind]);
+ if (verbose) {
+ android::base::SetLogger(MyLogger(verbose));
+ }
+
+ bool remount = false;
+ bool enable_verity = false;
+ const std::string progname = getprogname();
+ if (progname == "enable-verity") {
+ enable_verity = true;
+ } else if (progname == "disable-verity") {
+ enable_verity = false;
+ } else if (progname == "set-verity-state") {
+ if (optind < argc && (argv[optind] == "1"s || argv[optind] == "0"s)) {
+ enable_verity = (argv[optind] == "1"s);
+ } else {
+ usage();
+ return EXIT_FAILURE;
+ }
+ } else {
+ remount = true;
+ for (; optind < argc; ++optind) {
+ partition_args.emplace_back(argv[optind]);
+ }
+ }
+
+ // Make sure we are root.
+ if (::getuid() != 0) {
+ LOG(ERROR) << "Not running as root. Try \"adb root\" first.";
+ return EXIT_FAILURE;
+ }
+
+ // If somehow this executable is delivered on a "user" build, it can
+ // not function, so providing a clear message to the caller rather than
+ // letting if fall through and provide a lot of confusing failure messages.
+ if (!ALLOW_ADBD_DISABLE_VERITY || !android::base::GetBoolProperty("ro.debuggable", false)) {
+ LOG(ERROR) << "Device must be userdebug build";
+ return EXIT_FAILURE;
+ }
+
+ if (android::base::GetProperty("ro.boot.verifiedbootstate", "") != "orange") {
+ LOG(ERROR) << "Device must be bootloader unlocked";
+ return EXIT_FAILURE;
+ }
+
+ // Start a threadpool to service waitForService() callbacks as
+ // fs_mgr_overlayfs_* might call waitForService() to get the image service.
+ android::ProcessState::self()->startThreadPool();
+
+ if (!remount) {
+ auto ret = SetVerityState(enable_verity);
+
+ // Disable any overlayfs unconditionally if we want verity enabled.
+ // Enable overlayfs only if verity is successfully disabled or is already disabled.
+ if (enable_verity || ret.success) {
+ ret.want_reboot |= SetupOrTeardownOverlayfs(!enable_verity);
+ }
+
+ if (ret.want_reboot) {
+ if (auto_reboot) {
+ reboot(progname);
+ }
+ std::cout << "Reboot the device for new settings to take effect" << std::endl;
+ }
+ return ret.success ? EXIT_SUCCESS : EXIT_FAILURE;
}
// Make sure checkpointing is disabled if necessary.
- if (auto rv = VerifyCheckpointing(); rv != REMOUNT_SUCCESS) {
- return rv;
+ if (!VerifyCheckpointing()) {
+ return EXIT_FAILURE;
}
// Read the selected fstab.
Fstab fstab;
if (!ReadFstab(fstab_file, &fstab) || fstab.empty()) {
PLOG(ERROR) << "Failed to read fstab";
- return 1;
+ return EXIT_FAILURE;
}
RemountCheckResult check_result;
- int result = do_remount(fstab, partition_args, &check_result);
+ bool remount_success = do_remount(fstab, partition_args, &check_result);
if (check_result.disabled_verity && check_result.setup_overlayfs) {
LOG(INFO) << "Verity disabled; overlayfs enabled.";
@@ -549,27 +677,26 @@
} else if (check_result.setup_overlayfs) {
LOG(INFO) << "Overlayfs enabled.";
}
-
+ if (remount_success && check_result.remounted_anything) {
+ LOG(INFO) << "Remount succeeded";
+ } else if (!remount_success) {
+ LOG(ERROR) << "Remount failed";
+ }
if (check_result.reboot_later) {
if (auto_reboot) {
// If (1) remount requires a reboot to take effect, (2) system is currently
// running a DSU guest and (3) DSU is disabled, then enable DSU so that the
// next reboot would not take us back to the host system but stay within
// the guest system.
- if (auto rv = EnableDsuIfNeeded(); rv != REMOUNT_SUCCESS) {
+ if (!EnableDsuIfNeeded()) {
LOG(ERROR) << "Unable to automatically enable DSU";
- return rv;
+ return EXIT_FAILURE;
}
- reboot();
+ reboot("remount");
} else {
LOG(INFO) << "Now reboot your device for settings to take effect";
}
- return REMOUNT_SUCCESS;
+ return EXIT_SUCCESS;
}
- if (result == REMOUNT_SUCCESS) {
- printf("remount succeeded\n");
- } else {
- printf("remount failed\n");
- }
- return result;
+ return remount_success ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/fs_mgr/fuzz/fs_mgr_fstab_fuzzer.cpp b/fs_mgr/fuzz/fs_mgr_fstab_fuzzer.cpp
index 6a8a191..b5fdad4 100644
--- a/fs_mgr/fuzz/fs_mgr_fstab_fuzzer.cpp
+++ b/fs_mgr/fuzz/fs_mgr_fstab_fuzzer.cpp
@@ -14,13 +14,27 @@
// limitations under the License.
//
-#include <cstdio>
+#include <string>
+#include <vector>
#include <fstab/fstab.h>
+#include <fuzzer/FuzzedDataProvider.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
- std::string make_fstab_str(reinterpret_cast<const char*>(data), size);
+ FuzzedDataProvider fdp(data, size);
+
+ std::string make_fstab_str = fdp.ConsumeRandomLengthString();
+ std::string dsu_slot = fdp.ConsumeRandomLengthString(30);
+ std::vector<std::string> dsu_partitions = {
+ fdp.ConsumeRandomLengthString(30),
+ fdp.ConsumeRandomLengthString(30),
+ };
+ std::string skip_mount_config = fdp.ConsumeRemainingBytesAsString();
+
android::fs_mgr::Fstab fstab;
android::fs_mgr::ParseFstabFromString(make_fstab_str, /* proc_mounts = */ false, &fstab);
+ android::fs_mgr::TransformFstabForDsu(&fstab, dsu_slot, dsu_partitions);
+ android::fs_mgr::SkipMountWithConfig(skip_mount_config, &fstab, /* verbose = */ false);
+
return 0;
}
diff --git a/fs_mgr/include/fs_mgr.h b/fs_mgr/include/fs_mgr.h
index 29a5e60..43de6d8 100644
--- a/fs_mgr/include/fs_mgr.h
+++ b/fs_mgr/include/fs_mgr.h
@@ -71,6 +71,8 @@
std::string algorithm;
// The root digest of the merkle tree.
std::string root_digest;
+ // If check_at_most_once is enabled.
+ bool check_at_most_once;
};
// fs_mgr_mount_all() updates fstab entries that reference device-mapper.
diff --git a/fs_mgr/include_fstab/fstab/fstab.h b/fs_mgr/include_fstab/fstab/fstab.h
index 689d18b..a914b53 100644
--- a/fs_mgr/include_fstab/fstab/fstab.h
+++ b/fs_mgr/include_fstab/fstab/fstab.h
@@ -97,16 +97,21 @@
bool ParseFstabFromString(const std::string& fstab_str, bool proc_mounts, Fstab* fstab_out);
// Exported for testability. Regular users should use ReadDefaultFstab().
std::string GetFstabPath();
+// Exported for testability.
+bool SkipMountWithConfig(const std::string& skip_config, Fstab* fstab, bool verbose);
bool ReadFstabFromFile(const std::string& path, Fstab* fstab);
bool ReadFstabFromDt(Fstab* fstab, bool verbose = true);
bool ReadDefaultFstab(Fstab* fstab);
bool SkipMountingPartitions(Fstab* fstab, bool verbose = false);
-FstabEntry* GetEntryForMountPoint(Fstab* fstab, const std::string& path);
// The Fstab can contain multiple entries for the same mount point with different configurations.
std::vector<FstabEntry*> GetEntriesForMountPoint(Fstab* fstab, const std::string& path);
+// Like GetEntriesForMountPoint() but return only the first entry or nullptr if no entry is found.
+FstabEntry* GetEntryForMountPoint(Fstab* fstab, const std::string& path);
+const FstabEntry* GetEntryForMountPoint(const Fstab* fstab, const std::string& path);
+
// This method builds DSU fstab entries and transfer the fstab.
//
// fstab points to the unmodified fstab.
diff --git a/fs_mgr/libdm/dm.cpp b/fs_mgr/libdm/dm.cpp
index 4034e30..deffae1 100644
--- a/fs_mgr/libdm/dm.cpp
+++ b/fs_mgr/libdm/dm.cpp
@@ -20,6 +20,7 @@
#include <sys/ioctl.h>
#include <sys/sysmacros.h>
#include <sys/types.h>
+#include <sys/utsname.h>
#include <chrono>
#include <functional>
@@ -289,7 +290,7 @@
return true;
}
-bool DeviceMapper::LoadTableAndActivate(const std::string& name, const DmTable& table) {
+bool DeviceMapper::LoadTable(const std::string& name, const DmTable& table) {
std::string ioctl_buffer(sizeof(struct dm_ioctl), 0);
ioctl_buffer += table.Serialize();
@@ -305,9 +306,17 @@
PLOG(ERROR) << "DM_TABLE_LOAD failed";
return false;
}
+ return true;
+}
- InitIo(io, name);
- if (ioctl(fd_, DM_DEV_SUSPEND, io)) {
+bool DeviceMapper::LoadTableAndActivate(const std::string& name, const DmTable& table) {
+ if (!LoadTable(name, table)) {
+ return false;
+ }
+
+ struct dm_ioctl io;
+ InitIo(&io, name);
+ if (ioctl(fd_, DM_DEV_SUSPEND, &io)) {
PLOG(ERROR) << "DM_TABLE_SUSPEND resume failed";
return false;
}
@@ -703,5 +712,28 @@
return dm_block_devices;
}
+bool DeviceMapper::CreatePlaceholderDevice(const std::string& name) {
+ if (!CreateEmptyDevice(name)) {
+ return false;
+ }
+
+ struct utsname uts;
+ unsigned int major, minor;
+ if (uname(&uts) != 0 || sscanf(uts.release, "%u.%u", &major, &minor) != 2) {
+ LOG(ERROR) << "Could not parse the kernel version from uname";
+ return true;
+ }
+
+ // On Linux 5.15+, there is no uevent until DM_TABLE_LOAD.
+ if (major > 5 || (major == 5 && minor >= 15)) {
+ DmTable table;
+ table.Emplace<DmTargetError>(0, 1);
+ if (!LoadTable(name, table)) {
+ return false;
+ }
+ }
+ return true;
+}
+
} // namespace dm
} // namespace android
diff --git a/fs_mgr/libdm/dm_test.cpp b/fs_mgr/libdm/dm_test.cpp
index 541f254..4448d35 100644
--- a/fs_mgr/libdm/dm_test.cpp
+++ b/fs_mgr/libdm/dm_test.cpp
@@ -690,3 +690,23 @@
// Empty device should be in suspended state.
ASSERT_EQ(DmDeviceState::SUSPENDED, dm.GetState("empty-device"));
}
+
+TEST(libdm, UeventAfterLoadTable) {
+ static const char* kDeviceName = "libmd-test-uevent-load-table";
+
+ DeviceMapper& dm = DeviceMapper::Instance();
+ ASSERT_TRUE(dm.CreateEmptyDevice(kDeviceName));
+
+ DmTable table;
+ table.Emplace<DmTargetError>(0, 1);
+ ASSERT_TRUE(dm.LoadTable(kDeviceName, table));
+
+ std::string ignore_path;
+ ASSERT_TRUE(dm.WaitForDevice(kDeviceName, 5s, &ignore_path));
+
+ auto info = dm.GetDetailedInfo(kDeviceName);
+ ASSERT_TRUE(info.has_value());
+ ASSERT_TRUE(info->IsSuspended());
+
+ ASSERT_TRUE(dm.DeleteDevice(kDeviceName));
+}
diff --git a/fs_mgr/libdm/include/libdm/dm.h b/fs_mgr/libdm/include/libdm/dm.h
index 1057d7f..dbef8f9 100644
--- a/fs_mgr/libdm/include/libdm/dm.h
+++ b/fs_mgr/libdm/include/libdm/dm.h
@@ -75,6 +75,7 @@
const std::chrono::milliseconds& timeout_ms) = 0;
virtual DmDeviceState GetState(const std::string& name) const = 0;
virtual bool LoadTableAndActivate(const std::string& name, const DmTable& table) = 0;
+ virtual bool LoadTable(const std::string& name, const DmTable& table) = 0;
virtual bool GetTableInfo(const std::string& name, std::vector<TargetInfo>* table) = 0;
virtual bool GetTableStatus(const std::string& name, std::vector<TargetInfo>* table) = 0;
virtual bool GetDmDevicePathByName(const std::string& name, std::string* path) = 0;
@@ -116,7 +117,7 @@
bool IsBufferFull() const { return flags_ & DM_BUFFER_FULL_FLAG; }
bool IsInactiveTablePresent() const { return flags_ & DM_INACTIVE_PRESENT_FLAG; }
bool IsReadOnly() const { return flags_ & DM_READONLY_FLAG; }
- bool IsSuspended() const { return flags_ & DM_SUSPEND_FLAG; }
+ bool IsSuspended() const { return !IsActiveTablePresent() || (flags_ & DM_SUSPEND_FLAG); }
};
// Removes a device mapper device with the given name.
@@ -199,6 +200,12 @@
// Returns 'true' on success, false otherwise.
bool LoadTableAndActivate(const std::string& name, const DmTable& table) override;
+ // Same as LoadTableAndActivate, but there is no resume step. This puts the
+ // new table in the inactive slot.
+ //
+ // Returns 'true' on success, false otherwise.
+ bool LoadTable(const std::string& name, const DmTable& table) override;
+
// Returns true if a list of available device mapper targets registered in the kernel was
// successfully read and stored in 'targets'. Returns 'false' otherwise.
bool GetAvailableTargets(std::vector<DmTargetTypeInfo>* targets);
@@ -285,6 +292,12 @@
// Returns mapping <partition-name, /dev/block/dm-x>
std::map<std::string, std::string> FindDmPartitions();
+ // Create a placeholder device. This is useful for ensuring that a uevent is in the pipeline,
+ // to reduce the amount of time a future WaitForDevice will block. On kernels < 5.15, this
+ // simply calls CreateEmptyDevice. On 5.15 and higher, it also loads (but does not activate)
+ // a placeholder table containing dm-error.
+ bool CreatePlaceholderDevice(const std::string& name);
+
private:
// Maximum possible device mapper targets registered in the kernel.
// This is only used to read the list of targets from kernel so we allocate
diff --git a/fs_mgr/libdm/include/libdm/dm_table.h b/fs_mgr/libdm/include/libdm/dm_table.h
index ee66653..427f34d 100644
--- a/fs_mgr/libdm/include/libdm/dm_table.h
+++ b/fs_mgr/libdm/include/libdm/dm_table.h
@@ -31,6 +31,7 @@
class DmTable {
public:
DmTable() : num_sectors_(0), readonly_(false) {}
+ DmTable(DmTable&& other) = default;
// Adds a target to the device mapper table for a range specified in the target object.
// The function will return 'true' if the target was successfully added and doesn't overlap with
@@ -70,6 +71,8 @@
void set_readonly(bool readonly) { readonly_ = readonly; }
bool readonly() const { return readonly_; }
+ DmTable& operator=(DmTable&& other) = default;
+
~DmTable() = default;
private:
diff --git a/fs_mgr/libdm/include/libdm/dm_target.h b/fs_mgr/libdm/include/libdm/dm_target.h
index 9543058..09fe200 100644
--- a/fs_mgr/libdm/include/libdm/dm_target.h
+++ b/fs_mgr/libdm/include/libdm/dm_target.h
@@ -323,6 +323,14 @@
std::string control_device_;
};
+class DmTargetError final : public DmTarget {
+ public:
+ DmTargetError(uint64_t start, uint64_t length) : DmTarget(start, length) {}
+
+ std::string name() const override { return "error"; }
+ std::string GetParameterString() const override { return ""; }
+};
+
} // namespace dm
} // namespace android
diff --git a/fs_mgr/libsnapshot/Android.bp b/fs_mgr/libsnapshot/Android.bp
index d5e85e6..2165961 100644
--- a/fs_mgr/libsnapshot/Android.bp
+++ b/fs_mgr/libsnapshot/Android.bp
@@ -173,10 +173,11 @@
"libsnapshot_cow_defaults",
],
srcs: [
- "cow_decompress.cpp",
- "cow_reader.cpp",
- "cow_writer.cpp",
- "cow_format.cpp",
+ "libsnapshot_cow/cow_decompress.cpp",
+ "libsnapshot_cow/cow_reader.cpp",
+ "libsnapshot_cow/cow_writer.cpp",
+ "libsnapshot_cow/cow_format.cpp",
+ "libsnapshot_cow/cow_compress.cpp",
],
host_supported: true,
recovery_available: true,
@@ -260,6 +261,7 @@
},
auto_gen_config: true,
require_root: true,
+ compile_multilib: "first",
}
cc_test {
@@ -323,6 +325,22 @@
"libstatslog",
"libutils",
],
+ header_libs: [
+ "libstorage_literals_headers",
+ ],
+ product_variables: {
+ debuggable: {
+ cppflags: [
+ "-DSNAPSHOTCTL_USERDEBUG_OR_ENG",
+ ],
+ shared_libs: [
+ "android.hardware.boot@1.0",
+ "android.hardware.boot@1.1",
+ "android.hardware.boot-V1-ndk",
+ "libboot_control_client",
+ ],
+ },
+ },
}
cc_test {
@@ -424,7 +442,7 @@
"libsnapshot_cow_defaults",
],
srcs: [
- "cow_api_test.cpp",
+ "libsnapshot_cow/cow_api_test.cpp",
],
cflags: [
"-D_FILE_OFFSET_BITS=64",
@@ -546,7 +564,7 @@
shared_libs: [
],
srcs: [
- "inspect_cow.cpp",
+ "libsnapshot_cow/inspect_cow.cpp",
],
}
diff --git a/fs_mgr/libsnapshot/cow_writer.cpp b/fs_mgr/libsnapshot/cow_writer.cpp
deleted file mode 100644
index 7281fc2..0000000
--- a/fs_mgr/libsnapshot/cow_writer.cpp
+++ /dev/null
@@ -1,634 +0,0 @@
-//
-// Copyright (C) 2020 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <limits>
-#include <queue>
-
-#include <android-base/file.h>
-#include <android-base/logging.h>
-#include <android-base/unique_fd.h>
-#include <brotli/encode.h>
-#include <libsnapshot/cow_format.h>
-#include <libsnapshot/cow_reader.h>
-#include <libsnapshot/cow_writer.h>
-#include <lz4.h>
-#include <zlib.h>
-
-namespace android {
-namespace snapshot {
-
-static_assert(sizeof(off_t) == sizeof(uint64_t));
-
-using android::base::borrowed_fd;
-using android::base::unique_fd;
-
-bool ICowWriter::AddCopy(uint64_t new_block, uint64_t old_block) {
- if (!ValidateNewBlock(new_block)) {
- return false;
- }
- return EmitCopy(new_block, old_block);
-}
-
-bool ICowWriter::AddRawBlocks(uint64_t new_block_start, const void* data, size_t size) {
- if (size % options_.block_size != 0) {
- LOG(ERROR) << "AddRawBlocks: size " << size << " is not a multiple of "
- << options_.block_size;
- return false;
- }
-
- uint64_t num_blocks = size / options_.block_size;
- uint64_t last_block = new_block_start + num_blocks - 1;
- if (!ValidateNewBlock(last_block)) {
- return false;
- }
- return EmitRawBlocks(new_block_start, data, size);
-}
-
-bool ICowWriter::AddXorBlocks(uint32_t new_block_start, const void* data, size_t size,
- uint32_t old_block, uint16_t offset) {
- if (size % options_.block_size != 0) {
- LOG(ERROR) << "AddRawBlocks: size " << size << " is not a multiple of "
- << options_.block_size;
- return false;
- }
-
- uint64_t num_blocks = size / options_.block_size;
- uint64_t last_block = new_block_start + num_blocks - 1;
- if (!ValidateNewBlock(last_block)) {
- return false;
- }
- if (offset >= options_.block_size) {
- LOG(ERROR) << "AddXorBlocks: offset " << offset << " is not less than "
- << options_.block_size;
- }
- return EmitXorBlocks(new_block_start, data, size, old_block, offset);
-}
-
-bool ICowWriter::AddZeroBlocks(uint64_t new_block_start, uint64_t num_blocks) {
- uint64_t last_block = new_block_start + num_blocks - 1;
- if (!ValidateNewBlock(last_block)) {
- return false;
- }
- return EmitZeroBlocks(new_block_start, num_blocks);
-}
-
-bool ICowWriter::AddLabel(uint64_t label) {
- return EmitLabel(label);
-}
-
-bool ICowWriter::AddSequenceData(size_t num_ops, const uint32_t* data) {
- return EmitSequenceData(num_ops, data);
-}
-
-bool ICowWriter::ValidateNewBlock(uint64_t new_block) {
- if (options_.max_blocks && new_block >= options_.max_blocks.value()) {
- LOG(ERROR) << "New block " << new_block << " exceeds maximum block count "
- << options_.max_blocks.value();
- return false;
- }
- return true;
-}
-
-CowWriter::CowWriter(const CowOptions& options) : ICowWriter(options), fd_(-1) {
- SetupHeaders();
-}
-
-void CowWriter::SetupHeaders() {
- header_ = {};
- header_.magic = kCowMagicNumber;
- header_.major_version = kCowVersionMajor;
- header_.minor_version = kCowVersionMinor;
- header_.header_size = sizeof(CowHeader);
- header_.footer_size = sizeof(CowFooter);
- header_.op_size = sizeof(CowOperation);
- header_.block_size = options_.block_size;
- header_.num_merge_ops = options_.num_merge_ops;
- header_.cluster_ops = options_.cluster_ops;
- header_.buffer_size = 0;
- footer_ = {};
- footer_.op.data_length = 64;
- footer_.op.type = kCowFooterOp;
-}
-
-bool CowWriter::ParseOptions() {
- if (options_.compression == "gz") {
- compression_ = kCowCompressGz;
- } else if (options_.compression == "brotli") {
- compression_ = kCowCompressBrotli;
- } else if (options_.compression == "lz4") {
- compression_ = kCowCompressLz4;
- } else if (options_.compression == "none") {
- compression_ = kCowCompressNone;
- } else if (!options_.compression.empty()) {
- LOG(ERROR) << "unrecognized compression: " << options_.compression;
- return false;
- }
- if (options_.cluster_ops == 1) {
- LOG(ERROR) << "Clusters must contain at least two operations to function.";
- return false;
- }
- return true;
-}
-
-bool CowWriter::SetFd(android::base::borrowed_fd fd) {
- if (fd.get() < 0) {
- owned_fd_.reset(open("/dev/null", O_RDWR | O_CLOEXEC));
- if (owned_fd_ < 0) {
- PLOG(ERROR) << "open /dev/null failed";
- return false;
- }
- fd_ = owned_fd_;
- is_dev_null_ = true;
- } else {
- fd_ = fd;
-
- struct stat stat;
- if (fstat(fd.get(), &stat) < 0) {
- PLOG(ERROR) << "fstat failed";
- return false;
- }
- is_block_device_ = S_ISBLK(stat.st_mode);
- }
- return true;
-}
-
-bool CowWriter::Initialize(unique_fd&& fd) {
- owned_fd_ = std::move(fd);
- return Initialize(borrowed_fd{owned_fd_});
-}
-
-bool CowWriter::Initialize(borrowed_fd fd) {
- if (!SetFd(fd) || !ParseOptions()) {
- return false;
- }
-
- return OpenForWrite();
-}
-
-bool CowWriter::InitializeAppend(android::base::unique_fd&& fd, uint64_t label) {
- owned_fd_ = std::move(fd);
- return InitializeAppend(android::base::borrowed_fd{owned_fd_}, label);
-}
-
-bool CowWriter::InitializeAppend(android::base::borrowed_fd fd, uint64_t label) {
- if (!SetFd(fd) || !ParseOptions()) {
- return false;
- }
-
- return OpenForAppend(label);
-}
-
-void CowWriter::InitPos() {
- next_op_pos_ = sizeof(header_) + header_.buffer_size;
- cluster_size_ = header_.cluster_ops * sizeof(CowOperation);
- if (header_.cluster_ops) {
- next_data_pos_ = next_op_pos_ + cluster_size_;
- } else {
- next_data_pos_ = next_op_pos_ + sizeof(CowOperation);
- }
- ops_.clear();
- current_cluster_size_ = 0;
- current_data_size_ = 0;
-}
-
-bool CowWriter::OpenForWrite() {
- // This limitation is tied to the data field size in CowOperation.
- if (header_.block_size > std::numeric_limits<uint16_t>::max()) {
- LOG(ERROR) << "Block size is too large";
- return false;
- }
-
- if (lseek(fd_.get(), 0, SEEK_SET) < 0) {
- PLOG(ERROR) << "lseek failed";
- return false;
- }
-
- if (options_.scratch_space) {
- header_.buffer_size = BUFFER_REGION_DEFAULT_SIZE;
- }
-
- // Headers are not complete, but this ensures the file is at the right
- // position.
- if (!android::base::WriteFully(fd_, &header_, sizeof(header_))) {
- PLOG(ERROR) << "write failed";
- return false;
- }
-
- if (options_.scratch_space) {
- // Initialize the scratch space
- std::string data(header_.buffer_size, 0);
- if (!android::base::WriteFully(fd_, data.data(), header_.buffer_size)) {
- PLOG(ERROR) << "writing scratch space failed";
- return false;
- }
- }
-
- if (!Sync()) {
- LOG(ERROR) << "Header sync failed";
- return false;
- }
-
- if (lseek(fd_.get(), sizeof(header_) + header_.buffer_size, SEEK_SET) < 0) {
- PLOG(ERROR) << "lseek failed";
- return false;
- }
-
- InitPos();
-
- return true;
-}
-
-bool CowWriter::OpenForAppend(uint64_t label) {
- auto reader = std::make_unique<CowReader>();
- std::queue<CowOperation> toAdd;
-
- if (!reader->Parse(fd_, {label}) || !reader->GetHeader(&header_)) {
- return false;
- }
-
- options_.block_size = header_.block_size;
- options_.cluster_ops = header_.cluster_ops;
-
- // Reset this, since we're going to reimport all operations.
- footer_.op.num_ops = 0;
- InitPos();
-
- auto iter = reader->GetOpIter();
-
- while (!iter->Done()) {
- AddOperation(iter->Get());
- iter->Next();
- }
-
- // Free reader so we own the descriptor position again.
- reader = nullptr;
-
- if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
- PLOG(ERROR) << "lseek failed";
- return false;
- }
- return EmitClusterIfNeeded();
-}
-
-bool CowWriter::EmitCopy(uint64_t new_block, uint64_t old_block) {
- CHECK(!merge_in_progress_);
- CowOperation op = {};
- op.type = kCowCopyOp;
- op.new_block = new_block;
- op.source = old_block;
- return WriteOperation(op);
-}
-
-bool CowWriter::EmitRawBlocks(uint64_t new_block_start, const void* data, size_t size) {
- return EmitBlocks(new_block_start, data, size, 0, 0, kCowReplaceOp);
-}
-
-bool CowWriter::EmitXorBlocks(uint32_t new_block_start, const void* data, size_t size,
- uint32_t old_block, uint16_t offset) {
- return EmitBlocks(new_block_start, data, size, old_block, offset, kCowXorOp);
-}
-
-bool CowWriter::EmitBlocks(uint64_t new_block_start, const void* data, size_t size,
- uint64_t old_block, uint16_t offset, uint8_t type) {
- const uint8_t* iter = reinterpret_cast<const uint8_t*>(data);
- CHECK(!merge_in_progress_);
- for (size_t i = 0; i < size / header_.block_size; i++) {
- CowOperation op = {};
- op.new_block = new_block_start + i;
- op.type = type;
- if (type == kCowXorOp) {
- op.source = (old_block + i) * header_.block_size + offset;
- } else {
- op.source = next_data_pos_;
- }
-
- if (compression_) {
- auto data = Compress(iter, header_.block_size);
- if (data.empty()) {
- PLOG(ERROR) << "AddRawBlocks: compression failed";
- return false;
- }
- if (data.size() > std::numeric_limits<uint16_t>::max()) {
- LOG(ERROR) << "Compressed block is too large: " << data.size() << " bytes";
- return false;
- }
- op.compression = compression_;
- op.data_length = static_cast<uint16_t>(data.size());
-
- if (!WriteOperation(op, data.data(), data.size())) {
- PLOG(ERROR) << "AddRawBlocks: write failed";
- return false;
- }
- } else {
- op.data_length = static_cast<uint16_t>(header_.block_size);
- if (!WriteOperation(op, iter, header_.block_size)) {
- PLOG(ERROR) << "AddRawBlocks: write failed";
- return false;
- }
- }
-
- iter += header_.block_size;
- }
- return true;
-}
-
-bool CowWriter::EmitZeroBlocks(uint64_t new_block_start, uint64_t num_blocks) {
- CHECK(!merge_in_progress_);
- for (uint64_t i = 0; i < num_blocks; i++) {
- CowOperation op = {};
- op.type = kCowZeroOp;
- op.new_block = new_block_start + i;
- op.source = 0;
- WriteOperation(op);
- }
- return true;
-}
-
-bool CowWriter::EmitLabel(uint64_t label) {
- CHECK(!merge_in_progress_);
- CowOperation op = {};
- op.type = kCowLabelOp;
- op.source = label;
- return WriteOperation(op) && Sync();
-}
-
-bool CowWriter::EmitSequenceData(size_t num_ops, const uint32_t* data) {
- CHECK(!merge_in_progress_);
- size_t to_add = 0;
- size_t max_ops = std::numeric_limits<uint16_t>::max() / sizeof(uint32_t);
- while (num_ops > 0) {
- CowOperation op = {};
- op.type = kCowSequenceOp;
- op.source = next_data_pos_;
- to_add = std::min(num_ops, max_ops);
- op.data_length = static_cast<uint16_t>(to_add * sizeof(uint32_t));
- if (!WriteOperation(op, data, op.data_length)) {
- PLOG(ERROR) << "AddSequenceData: write failed";
- return false;
- }
- num_ops -= to_add;
- data += to_add;
- }
- return true;
-}
-
-bool CowWriter::EmitCluster() {
- CowOperation op = {};
- op.type = kCowClusterOp;
- // Next cluster starts after remainder of current cluster and the next data block.
- op.source = current_data_size_ + cluster_size_ - current_cluster_size_ - sizeof(CowOperation);
- return WriteOperation(op);
-}
-
-bool CowWriter::EmitClusterIfNeeded() {
- // If there isn't room for another op and the cluster end op, end the current cluster
- if (cluster_size_ && cluster_size_ < current_cluster_size_ + 2 * sizeof(CowOperation)) {
- if (!EmitCluster()) return false;
- }
- return true;
-}
-
-std::basic_string<uint8_t> CowWriter::Compress(const void* data, size_t length) {
- switch (compression_) {
- case kCowCompressGz: {
- const auto bound = compressBound(length);
- std::basic_string<uint8_t> buffer(bound, '\0');
-
- uLongf dest_len = bound;
- auto rv = compress2(buffer.data(), &dest_len, reinterpret_cast<const Bytef*>(data),
- length, Z_BEST_COMPRESSION);
- if (rv != Z_OK) {
- LOG(ERROR) << "compress2 returned: " << rv;
- return {};
- }
- buffer.resize(dest_len);
- return buffer;
- }
- case kCowCompressBrotli: {
- const auto bound = BrotliEncoderMaxCompressedSize(length);
- if (!bound) {
- LOG(ERROR) << "BrotliEncoderMaxCompressedSize returned 0";
- return {};
- }
- std::basic_string<uint8_t> buffer(bound, '\0');
-
- size_t encoded_size = bound;
- auto rv = BrotliEncoderCompress(
- BROTLI_DEFAULT_QUALITY, BROTLI_DEFAULT_WINDOW, BROTLI_DEFAULT_MODE, length,
- reinterpret_cast<const uint8_t*>(data), &encoded_size, buffer.data());
- if (!rv) {
- LOG(ERROR) << "BrotliEncoderCompress failed";
- return {};
- }
- buffer.resize(encoded_size);
- return buffer;
- }
- case kCowCompressLz4: {
- const auto bound = LZ4_compressBound(length);
- if (!bound) {
- LOG(ERROR) << "LZ4_compressBound returned 0";
- return {};
- }
- std::basic_string<uint8_t> buffer(bound, '\0');
-
- const auto compressed_size = LZ4_compress_default(
- static_cast<const char*>(data), reinterpret_cast<char*>(buffer.data()), length,
- buffer.size());
- if (compressed_size <= 0) {
- LOG(ERROR) << "LZ4_compress_default failed, input size: " << length
- << ", compression bound: " << bound << ", ret: " << compressed_size;
- return {};
- }
- buffer.resize(compressed_size);
- return buffer;
- }
- default:
- LOG(ERROR) << "unhandled compression type: " << compression_;
- break;
- }
- return {};
-}
-
-// TODO: Fix compilation issues when linking libcrypto library
-// when snapuserd is compiled as part of ramdisk.
-static void SHA256(const void*, size_t, uint8_t[]) {
-#if 0
- SHA256_CTX c;
- SHA256_Init(&c);
- SHA256_Update(&c, data, length);
- SHA256_Final(out, &c);
-#endif
-}
-
-bool CowWriter::Finalize() {
- auto continue_cluster_size = current_cluster_size_;
- auto continue_data_size = current_data_size_;
- auto continue_data_pos = next_data_pos_;
- auto continue_op_pos = next_op_pos_;
- auto continue_size = ops_.size();
- auto continue_num_ops = footer_.op.num_ops;
- bool extra_cluster = false;
-
- // Blank out extra ops, in case we're in append mode and dropped ops.
- if (cluster_size_) {
- auto unused_cluster_space = cluster_size_ - current_cluster_size_;
- std::string clr;
- clr.resize(unused_cluster_space, '\0');
- if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
- PLOG(ERROR) << "Failed to seek to footer position.";
- return false;
- }
- if (!android::base::WriteFully(fd_, clr.data(), clr.size())) {
- PLOG(ERROR) << "clearing unused cluster area failed";
- return false;
- }
- }
-
- // Footer should be at the end of a file, so if there is data after the current block, end it
- // and start a new cluster.
- if (cluster_size_ && current_data_size_ > 0) {
- EmitCluster();
- extra_cluster = true;
- }
-
- footer_.op.ops_size = ops_.size();
- if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
- PLOG(ERROR) << "Failed to seek to footer position.";
- return false;
- }
- memset(&footer_.data.ops_checksum, 0, sizeof(uint8_t) * 32);
- memset(&footer_.data.footer_checksum, 0, sizeof(uint8_t) * 32);
-
- SHA256(ops_.data(), ops_.size(), footer_.data.ops_checksum);
- SHA256(&footer_.op, sizeof(footer_.op), footer_.data.footer_checksum);
- // Write out footer at end of file
- if (!android::base::WriteFully(fd_, reinterpret_cast<const uint8_t*>(&footer_),
- sizeof(footer_))) {
- PLOG(ERROR) << "write footer failed";
- return false;
- }
-
- // Remove excess data, if we're in append mode and threw away more data
- // than we wrote before.
- off_t offs = lseek(fd_.get(), 0, SEEK_CUR);
- if (offs < 0) {
- PLOG(ERROR) << "Failed to lseek to find current position";
- return false;
- }
- if (!Truncate(offs)) {
- return false;
- }
-
- // Reposition for additional Writing
- if (extra_cluster) {
- current_cluster_size_ = continue_cluster_size;
- current_data_size_ = continue_data_size;
- next_data_pos_ = continue_data_pos;
- next_op_pos_ = continue_op_pos;
- footer_.op.num_ops = continue_num_ops;
- ops_.resize(continue_size);
- }
- return Sync();
-}
-
-uint64_t CowWriter::GetCowSize() {
- if (current_data_size_ > 0) {
- return next_data_pos_ + sizeof(footer_);
- } else {
- return next_op_pos_ + sizeof(footer_);
- }
-}
-
-bool CowWriter::GetDataPos(uint64_t* pos) {
- off_t offs = lseek(fd_.get(), 0, SEEK_CUR);
- if (offs < 0) {
- PLOG(ERROR) << "lseek failed";
- return false;
- }
- *pos = offs;
- return true;
-}
-
-bool CowWriter::WriteOperation(const CowOperation& op, const void* data, size_t size) {
- if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
- PLOG(ERROR) << "lseek failed for writing operation.";
- return false;
- }
- if (!android::base::WriteFully(fd_, reinterpret_cast<const uint8_t*>(&op), sizeof(op))) {
- return false;
- }
- if (data != nullptr && size > 0) {
- if (!WriteRawData(data, size)) return false;
- }
- AddOperation(op);
- return EmitClusterIfNeeded();
-}
-
-void CowWriter::AddOperation(const CowOperation& op) {
- footer_.op.num_ops++;
-
- if (op.type == kCowClusterOp) {
- current_cluster_size_ = 0;
- current_data_size_ = 0;
- } else if (header_.cluster_ops) {
- current_cluster_size_ += sizeof(op);
- current_data_size_ += op.data_length;
- }
-
- next_data_pos_ += op.data_length + GetNextDataOffset(op, header_.cluster_ops);
- next_op_pos_ += sizeof(CowOperation) + GetNextOpOffset(op, header_.cluster_ops);
- ops_.insert(ops_.size(), reinterpret_cast<const uint8_t*>(&op), sizeof(op));
-}
-
-bool CowWriter::WriteRawData(const void* data, size_t size) {
- if (lseek(fd_.get(), next_data_pos_, SEEK_SET) < 0) {
- PLOG(ERROR) << "lseek failed for writing data.";
- return false;
- }
-
- if (!android::base::WriteFully(fd_, data, size)) {
- return false;
- }
- return true;
-}
-
-bool CowWriter::Sync() {
- if (is_dev_null_) {
- return true;
- }
- if (fsync(fd_.get()) < 0) {
- PLOG(ERROR) << "fsync failed";
- return false;
- }
- return true;
-}
-
-bool CowWriter::Truncate(off_t length) {
- if (is_dev_null_ || is_block_device_) {
- return true;
- }
- if (ftruncate(fd_.get(), length) < 0) {
- PLOG(ERROR) << "Failed to truncate.";
- return false;
- }
- return true;
-}
-
-} // namespace snapshot
-} // namespace android
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/cow_writer.h b/fs_mgr/libsnapshot/include/libsnapshot/cow_writer.h
index e7a2f02..798bc73 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/cow_writer.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/cow_writer.h
@@ -16,9 +16,17 @@
#include <stdint.h>
+#include <condition_variable>
+#include <cstdint>
+#include <future>
#include <memory>
+#include <mutex>
#include <optional>
+#include <queue>
#include <string>
+#include <thread>
+#include <utility>
+#include <vector>
#include <android-base/unique_fd.h>
#include <libsnapshot/cow_format.h>
@@ -41,6 +49,12 @@
// Preset the number of merged ops. Only useful for testing.
uint64_t num_merge_ops = 0;
+
+ // Number of threads for compression
+ int num_compress_threads = 0;
+
+ // Batch write cluster ops
+ bool batch_write = false;
};
// Interface for writing to a snapuserd COW. All operations are ordered; merges
@@ -52,8 +66,9 @@
virtual ~ICowWriter() {}
// Encode an operation that copies the contents of |old_block| to the
- // location of |new_block|.
- bool AddCopy(uint64_t new_block, uint64_t old_block);
+ // location of |new_block|. 'num_blocks' is the number of contiguous
+ // COPY operations from |old_block| to |new_block|.
+ bool AddCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks = 1);
// Encode a sequence of raw blocks. |size| must be a multiple of the block size.
bool AddRawBlocks(uint64_t new_block_start, const void* data, size_t size);
@@ -84,7 +99,7 @@
const CowOptions& options() { return options_; }
protected:
- virtual bool EmitCopy(uint64_t new_block, uint64_t old_block) = 0;
+ virtual bool EmitCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks = 1) = 0;
virtual bool EmitRawBlocks(uint64_t new_block_start, const void* data, size_t size) = 0;
virtual bool EmitXorBlocks(uint32_t new_block_start, const void* data, size_t size,
uint32_t old_block, uint16_t offset) = 0;
@@ -98,9 +113,40 @@
CowOptions options_;
};
+class CompressWorker {
+ public:
+ CompressWorker(CowCompressionAlgorithm compression, uint32_t block_size);
+ bool RunThread();
+ void EnqueueCompressBlocks(const void* buffer, size_t num_blocks);
+ bool GetCompressedBuffers(std::vector<std::basic_string<uint8_t>>* compressed_buf);
+ void Finalize();
+
+ private:
+ struct CompressWork {
+ const void* buffer;
+ size_t num_blocks;
+ bool compression_status = false;
+ std::vector<std::basic_string<uint8_t>> compressed_data;
+ };
+
+ CowCompressionAlgorithm compression_;
+ uint32_t block_size_;
+
+ std::queue<CompressWork> work_queue_;
+ std::queue<CompressWork> compressed_queue_;
+ std::mutex lock_;
+ std::condition_variable cv_;
+ bool stopped_ = false;
+
+ std::basic_string<uint8_t> Compress(const void* data, size_t length);
+ bool CompressBlocks(const void* buffer, size_t num_blocks,
+ std::vector<std::basic_string<uint8_t>>* compressed_data);
+};
+
class CowWriter : public ICowWriter {
public:
explicit CowWriter(const CowOptions& options);
+ ~CowWriter();
// Set up the writer.
// The file starts from the beginning.
@@ -122,7 +168,7 @@
uint32_t GetCowVersion() { return header_.major_version; }
protected:
- virtual bool EmitCopy(uint64_t new_block, uint64_t old_block) override;
+ virtual bool EmitCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks = 1) override;
virtual bool EmitRawBlocks(uint64_t new_block_start, const void* data, size_t size) override;
virtual bool EmitXorBlocks(uint32_t new_block_start, const void* data, size_t size,
uint32_t old_block, uint16_t offset) override;
@@ -136,6 +182,7 @@
bool EmitBlocks(uint64_t new_block_start, const void* data, size_t size, uint64_t old_block,
uint16_t offset, uint8_t type);
void SetupHeaders();
+ void SetupWriteOptions();
bool ParseOptions();
bool OpenForWrite();
bool OpenForAppend(uint64_t label);
@@ -143,12 +190,16 @@
bool WriteRawData(const void* data, size_t size);
bool WriteOperation(const CowOperation& op, const void* data = nullptr, size_t size = 0);
void AddOperation(const CowOperation& op);
- std::basic_string<uint8_t> Compress(const void* data, size_t length);
void InitPos();
+ void InitBatchWrites();
+ void InitWorkers();
+ bool FlushCluster();
+ bool CompressBlocks(size_t num_blocks, const void* data);
bool SetFd(android::base::borrowed_fd fd);
bool Sync();
bool Truncate(off_t length);
+ bool EnsureSpaceAvailable(const uint64_t bytes_needed) const;
private:
android::base::unique_fd owned_fd_;
@@ -156,18 +207,33 @@
CowHeader header_{};
CowFooter footer_{};
CowCompressionAlgorithm compression_ = kCowCompressNone;
+ uint64_t current_op_pos_ = 0;
uint64_t next_op_pos_ = 0;
uint64_t next_data_pos_ = 0;
+ uint64_t current_data_pos_ = 0;
+ ssize_t total_data_written_ = 0;
uint32_t cluster_size_ = 0;
uint32_t current_cluster_size_ = 0;
uint64_t current_data_size_ = 0;
bool is_dev_null_ = false;
bool merge_in_progress_ = false;
bool is_block_device_ = false;
+ uint64_t cow_image_size_ = INT64_MAX;
- // :TODO: this is not efficient, but stringstream ubsan aborts because some
- // bytes overflow a signed char.
- std::basic_string<uint8_t> ops_;
+ int num_compress_threads_ = 1;
+ std::vector<std::unique_ptr<CompressWorker>> compress_threads_;
+ std::vector<std::future<bool>> threads_;
+ std::vector<std::basic_string<uint8_t>> compressed_buf_;
+ std::vector<std::basic_string<uint8_t>>::iterator buf_iter_;
+
+ std::vector<std::unique_ptr<CowOperation>> opbuffer_vec_;
+ std::vector<std::unique_ptr<uint8_t[]>> databuffer_vec_;
+ std::unique_ptr<struct iovec[]> cowop_vec_;
+ int op_vec_index_ = 0;
+
+ std::unique_ptr<struct iovec[]> data_vec_;
+ int data_vec_index_ = 0;
+ bool batch_write_ = false;
};
} // namespace snapshot
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/mock_snapshot_writer.h b/fs_mgr/libsnapshot/include/libsnapshot/mock_snapshot_writer.h
index b0be5a5..29828bc 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/mock_snapshot_writer.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/mock_snapshot_writer.h
@@ -34,7 +34,7 @@
// Returns true if AddCopy() operations are supported.
MOCK_METHOD(bool, SupportsCopyOperation, (), (const override));
- MOCK_METHOD(bool, EmitCopy, (uint64_t, uint64_t), (override));
+ MOCK_METHOD(bool, EmitCopy, (uint64_t, uint64_t, uint64_t), (override));
MOCK_METHOD(bool, EmitRawBlocks, (uint64_t, const void*, size_t), (override));
MOCK_METHOD(bool, EmitXorBlocks, (uint32_t, const void*, size_t, uint32_t, uint16_t),
(override));
diff --git a/fs_mgr/libsnapshot/include/libsnapshot/snapshot_writer.h b/fs_mgr/libsnapshot/include/libsnapshot/snapshot_writer.h
index 545f117..0e3b1db 100644
--- a/fs_mgr/libsnapshot/include/libsnapshot/snapshot_writer.h
+++ b/fs_mgr/libsnapshot/include/libsnapshot/snapshot_writer.h
@@ -74,7 +74,7 @@
bool VerifyMergeOps() const noexcept;
protected:
- bool EmitCopy(uint64_t new_block, uint64_t old_block) override;
+ bool EmitCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks = 1) override;
bool EmitRawBlocks(uint64_t new_block_start, const void* data, size_t size) override;
bool EmitXorBlocks(uint32_t new_block_start, const void* data, size_t size, uint32_t old_block,
uint16_t offset) override;
@@ -113,7 +113,7 @@
bool EmitZeroBlocks(uint64_t new_block_start, uint64_t num_blocks) override;
bool EmitXorBlocks(uint32_t new_block_start, const void* data, size_t size, uint32_t old_block,
uint16_t offset) override;
- bool EmitCopy(uint64_t new_block, uint64_t old_block) override;
+ bool EmitCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks = 1) override;
bool EmitLabel(uint64_t label) override;
bool EmitSequenceData(size_t num_ops, const uint32_t* data) override;
diff --git a/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h b/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h
index f850b94..24c91a8 100644
--- a/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h
+++ b/fs_mgr/libsnapshot/include_test/libsnapshot/test_helpers.h
@@ -143,6 +143,9 @@
virtual DmDeviceState GetState(const std::string& name) const override {
return impl_.GetState(name);
}
+ virtual bool LoadTable(const std::string& name, const DmTable& table) {
+ return impl_.LoadTable(name, table);
+ }
virtual bool LoadTableAndActivate(const std::string& name, const DmTable& table) {
return impl_.LoadTableAndActivate(name, table);
}
diff --git a/fs_mgr/libsnapshot/cow_api_test.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/cow_api_test.cpp
similarity index 86%
rename from fs_mgr/libsnapshot/cow_api_test.cpp
rename to fs_mgr/libsnapshot/libsnapshot_cow/cow_api_test.cpp
index ba4044f..862ce55 100644
--- a/fs_mgr/libsnapshot/cow_api_test.cpp
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/cow_api_test.cpp
@@ -62,6 +62,48 @@
std::string stream_;
};
+TEST_F(CowTest, CopyContiguous) {
+ CowOptions options;
+ options.cluster_ops = 0;
+ CowWriter writer(options);
+
+ ASSERT_TRUE(writer.Initialize(cow_->fd));
+
+ ASSERT_TRUE(writer.AddCopy(10, 1000, 100));
+ ASSERT_TRUE(writer.Finalize());
+ ASSERT_EQ(lseek(cow_->fd, 0, SEEK_SET), 0);
+
+ CowReader reader;
+ CowHeader header;
+ CowFooter footer;
+ ASSERT_TRUE(reader.Parse(cow_->fd));
+ ASSERT_TRUE(reader.GetHeader(&header));
+ ASSERT_TRUE(reader.GetFooter(&footer));
+ ASSERT_EQ(header.magic, kCowMagicNumber);
+ ASSERT_EQ(header.major_version, kCowVersionMajor);
+ ASSERT_EQ(header.minor_version, kCowVersionMinor);
+ ASSERT_EQ(header.block_size, options.block_size);
+ ASSERT_EQ(footer.op.num_ops, 100);
+
+ auto iter = reader.GetOpIter();
+ ASSERT_NE(iter, nullptr);
+ ASSERT_FALSE(iter->Done());
+
+ size_t i = 0;
+ while (!iter->Done()) {
+ auto op = &iter->Get();
+ ASSERT_EQ(op->type, kCowCopyOp);
+ ASSERT_EQ(op->compression, kCowCompressNone);
+ ASSERT_EQ(op->data_length, 0);
+ ASSERT_EQ(op->new_block, 10 + i);
+ ASSERT_EQ(op->source, 1000 + i);
+ iter->Next();
+ i += 1;
+ }
+
+ ASSERT_EQ(i, 100);
+}
+
TEST_F(CowTest, ReadWrite) {
CowOptions options;
options.cluster_ops = 0;
@@ -256,6 +298,150 @@
ASSERT_TRUE(iter->Done());
}
+class CompressionRWTest : public CowTest, public testing::WithParamInterface<const char*> {};
+
+TEST_P(CompressionRWTest, ThreadedBatchWrites) {
+ CowOptions options;
+ options.compression = GetParam();
+ options.num_compress_threads = 2;
+
+ CowWriter writer(options);
+
+ ASSERT_TRUE(writer.Initialize(cow_->fd));
+
+ std::string xor_data = "This is test data-1. Testing xor";
+ xor_data.resize(options.block_size, '\0');
+ ASSERT_TRUE(writer.AddXorBlocks(50, xor_data.data(), xor_data.size(), 24, 10));
+
+ std::string data = "This is test data-2. Testing replace ops";
+ data.resize(options.block_size * 2048, '\0');
+ ASSERT_TRUE(writer.AddRawBlocks(100, data.data(), data.size()));
+
+ std::string data2 = "This is test data-3. Testing replace ops";
+ data2.resize(options.block_size * 259, '\0');
+ ASSERT_TRUE(writer.AddRawBlocks(6000, data2.data(), data2.size()));
+
+ std::string data3 = "This is test data-4. Testing replace ops";
+ data3.resize(options.block_size, '\0');
+ ASSERT_TRUE(writer.AddRawBlocks(9000, data3.data(), data3.size()));
+
+ ASSERT_TRUE(writer.Finalize());
+
+ int expected_blocks = (1 + 2048 + 259 + 1);
+ ASSERT_EQ(lseek(cow_->fd, 0, SEEK_SET), 0);
+
+ CowReader reader;
+ ASSERT_TRUE(reader.Parse(cow_->fd));
+
+ auto iter = reader.GetOpIter();
+ ASSERT_NE(iter, nullptr);
+
+ int total_blocks = 0;
+ while (!iter->Done()) {
+ auto op = &iter->Get();
+
+ if (op->type == kCowXorOp) {
+ total_blocks += 1;
+ StringSink sink;
+ ASSERT_EQ(op->new_block, 50);
+ ASSERT_EQ(op->source, 98314); // 4096 * 24 + 10
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ ASSERT_EQ(sink.stream(), xor_data);
+ }
+
+ if (op->type == kCowReplaceOp) {
+ total_blocks += 1;
+ if (op->new_block == 100) {
+ StringSink sink;
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ data.resize(options.block_size);
+ ASSERT_EQ(sink.stream(), data);
+ }
+ if (op->new_block == 6000) {
+ StringSink sink;
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ data2.resize(options.block_size);
+ ASSERT_EQ(sink.stream(), data2);
+ }
+ if (op->new_block == 9000) {
+ StringSink sink;
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ ASSERT_EQ(sink.stream(), data3);
+ }
+ }
+
+ iter->Next();
+ }
+
+ ASSERT_EQ(total_blocks, expected_blocks);
+}
+
+TEST_P(CompressionRWTest, NoBatchWrites) {
+ CowOptions options;
+ options.compression = GetParam();
+ options.num_compress_threads = 1;
+ options.cluster_ops = 0;
+
+ CowWriter writer(options);
+
+ ASSERT_TRUE(writer.Initialize(cow_->fd));
+
+ std::string data = "Testing replace ops without batch writes";
+ data.resize(options.block_size * 1024, '\0');
+ ASSERT_TRUE(writer.AddRawBlocks(50, data.data(), data.size()));
+
+ std::string data2 = "Testing odd blocks without batch writes";
+ data2.resize(options.block_size * 111, '\0');
+ ASSERT_TRUE(writer.AddRawBlocks(3000, data2.data(), data2.size()));
+
+ std::string data3 = "Testing single 4k block";
+ data3.resize(options.block_size, '\0');
+ ASSERT_TRUE(writer.AddRawBlocks(5000, data3.data(), data3.size()));
+
+ ASSERT_TRUE(writer.Finalize());
+
+ int expected_blocks = (1024 + 111 + 1);
+ ASSERT_EQ(lseek(cow_->fd, 0, SEEK_SET), 0);
+
+ CowReader reader;
+ ASSERT_TRUE(reader.Parse(cow_->fd));
+
+ auto iter = reader.GetOpIter();
+ ASSERT_NE(iter, nullptr);
+
+ int total_blocks = 0;
+ while (!iter->Done()) {
+ auto op = &iter->Get();
+
+ if (op->type == kCowReplaceOp) {
+ total_blocks += 1;
+ if (op->new_block == 50) {
+ StringSink sink;
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ data.resize(options.block_size);
+ ASSERT_EQ(sink.stream(), data);
+ }
+ if (op->new_block == 3000) {
+ StringSink sink;
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ data2.resize(options.block_size);
+ ASSERT_EQ(sink.stream(), data2);
+ }
+ if (op->new_block == 5000) {
+ StringSink sink;
+ ASSERT_TRUE(reader.ReadData(*op, &sink));
+ ASSERT_EQ(sink.stream(), data3);
+ }
+ }
+
+ iter->Next();
+ }
+
+ ASSERT_EQ(total_blocks, expected_blocks);
+}
+
+INSTANTIATE_TEST_SUITE_P(CowApi, CompressionRWTest, testing::Values("none", "gz", "brotli", "lz4"));
+
TEST_F(CowTest, ClusterCompressGz) {
CowOptions options;
options.compression = "gz";
diff --git a/fs_mgr/libsnapshot/libsnapshot_cow/cow_compress.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/cow_compress.cpp
new file mode 100644
index 0000000..4d9b748
--- /dev/null
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/cow_compress.cpp
@@ -0,0 +1,218 @@
+//
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <limits>
+#include <queue>
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/unique_fd.h>
+#include <brotli/encode.h>
+#include <libsnapshot/cow_format.h>
+#include <libsnapshot/cow_reader.h>
+#include <libsnapshot/cow_writer.h>
+#include <lz4.h>
+#include <zlib.h>
+
+namespace android {
+namespace snapshot {
+
+std::basic_string<uint8_t> CompressWorker::Compress(const void* data, size_t length) {
+ switch (compression_) {
+ case kCowCompressGz: {
+ const auto bound = compressBound(length);
+ std::basic_string<uint8_t> buffer(bound, '\0');
+
+ uLongf dest_len = bound;
+ auto rv = compress2(buffer.data(), &dest_len, reinterpret_cast<const Bytef*>(data),
+ length, Z_BEST_COMPRESSION);
+ if (rv != Z_OK) {
+ LOG(ERROR) << "compress2 returned: " << rv;
+ return {};
+ }
+ buffer.resize(dest_len);
+ return buffer;
+ }
+ case kCowCompressBrotli: {
+ const auto bound = BrotliEncoderMaxCompressedSize(length);
+ if (!bound) {
+ LOG(ERROR) << "BrotliEncoderMaxCompressedSize returned 0";
+ return {};
+ }
+ std::basic_string<uint8_t> buffer(bound, '\0');
+
+ size_t encoded_size = bound;
+ auto rv = BrotliEncoderCompress(
+ BROTLI_DEFAULT_QUALITY, BROTLI_DEFAULT_WINDOW, BROTLI_DEFAULT_MODE, length,
+ reinterpret_cast<const uint8_t*>(data), &encoded_size, buffer.data());
+ if (!rv) {
+ LOG(ERROR) << "BrotliEncoderCompress failed";
+ return {};
+ }
+ buffer.resize(encoded_size);
+ return buffer;
+ }
+ case kCowCompressLz4: {
+ const auto bound = LZ4_compressBound(length);
+ if (!bound) {
+ LOG(ERROR) << "LZ4_compressBound returned 0";
+ return {};
+ }
+ std::basic_string<uint8_t> buffer(bound, '\0');
+
+ const auto compressed_size = LZ4_compress_default(
+ static_cast<const char*>(data), reinterpret_cast<char*>(buffer.data()), length,
+ buffer.size());
+ if (compressed_size <= 0) {
+ LOG(ERROR) << "LZ4_compress_default failed, input size: " << length
+ << ", compression bound: " << bound << ", ret: " << compressed_size;
+ return {};
+ }
+ // Don't run compression if the compressed output is larger
+ if (compressed_size >= length) {
+ buffer.resize(length);
+ memcpy(buffer.data(), data, length);
+ } else {
+ buffer.resize(compressed_size);
+ }
+ return buffer;
+ }
+ default:
+ LOG(ERROR) << "unhandled compression type: " << compression_;
+ break;
+ }
+ return {};
+}
+
+bool CompressWorker::CompressBlocks(const void* buffer, size_t num_blocks,
+ std::vector<std::basic_string<uint8_t>>* compressed_data) {
+ const uint8_t* iter = reinterpret_cast<const uint8_t*>(buffer);
+ while (num_blocks) {
+ auto data = Compress(iter, block_size_);
+ if (data.empty()) {
+ PLOG(ERROR) << "CompressBlocks: Compression failed";
+ return false;
+ }
+ if (data.size() > std::numeric_limits<uint16_t>::max()) {
+ LOG(ERROR) << "Compressed block is too large: " << data.size();
+ return false;
+ }
+
+ compressed_data->emplace_back(std::move(data));
+ num_blocks -= 1;
+ iter += block_size_;
+ }
+ return true;
+}
+
+bool CompressWorker::RunThread() {
+ while (true) {
+ // Wait for work
+ CompressWork blocks;
+ {
+ std::unique_lock<std::mutex> lock(lock_);
+ while (work_queue_.empty() && !stopped_) {
+ cv_.wait(lock);
+ }
+
+ if (stopped_) {
+ return true;
+ }
+
+ blocks = std::move(work_queue_.front());
+ work_queue_.pop();
+ }
+
+ // Compress blocks
+ bool ret = CompressBlocks(blocks.buffer, blocks.num_blocks, &blocks.compressed_data);
+ blocks.compression_status = ret;
+ {
+ std::lock_guard<std::mutex> lock(lock_);
+ compressed_queue_.push(std::move(blocks));
+ }
+
+ // Notify completion
+ cv_.notify_all();
+
+ if (!ret) {
+ LOG(ERROR) << "CompressBlocks failed";
+ return false;
+ }
+ }
+
+ return true;
+}
+
+void CompressWorker::EnqueueCompressBlocks(const void* buffer, size_t num_blocks) {
+ {
+ std::lock_guard<std::mutex> lock(lock_);
+
+ CompressWork blocks = {};
+ blocks.buffer = buffer;
+ blocks.num_blocks = num_blocks;
+ work_queue_.push(std::move(blocks));
+ }
+ cv_.notify_all();
+}
+
+bool CompressWorker::GetCompressedBuffers(std::vector<std::basic_string<uint8_t>>* compressed_buf) {
+ {
+ std::unique_lock<std::mutex> lock(lock_);
+ while (compressed_queue_.empty() && !stopped_) {
+ cv_.wait(lock);
+ }
+
+ if (stopped_) {
+ return true;
+ }
+ }
+
+ {
+ std::lock_guard<std::mutex> lock(lock_);
+ while (compressed_queue_.size() > 0) {
+ CompressWork blocks = std::move(compressed_queue_.front());
+ compressed_queue_.pop();
+
+ if (blocks.compression_status) {
+ compressed_buf->insert(compressed_buf->end(),
+ std::make_move_iterator(blocks.compressed_data.begin()),
+ std::make_move_iterator(blocks.compressed_data.end()));
+ } else {
+ LOG(ERROR) << "Block compression failed";
+ return false;
+ }
+ }
+ }
+
+ return true;
+}
+
+void CompressWorker::Finalize() {
+ {
+ std::unique_lock<std::mutex> lock(lock_);
+ stopped_ = true;
+ }
+ cv_.notify_all();
+}
+
+CompressWorker::CompressWorker(CowCompressionAlgorithm compression, uint32_t block_size)
+ : compression_(compression), block_size_(block_size) {}
+
+} // namespace snapshot
+} // namespace android
diff --git a/fs_mgr/libsnapshot/cow_decompress.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/cow_decompress.cpp
similarity index 94%
rename from fs_mgr/libsnapshot/cow_decompress.cpp
rename to fs_mgr/libsnapshot/libsnapshot_cow/cow_decompress.cpp
index a4d2277..139a29f 100644
--- a/fs_mgr/libsnapshot/cow_decompress.cpp
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/cow_decompress.cpp
@@ -273,6 +273,18 @@
<< actual_buffer_size << " bytes";
return false;
}
+ // If input size is same as output size, then input is uncompressed.
+ if (stream_->Size() == output_size) {
+ size_t bytes_read = 0;
+ stream_->Read(output_buffer, output_size, &bytes_read);
+ if (bytes_read != output_size) {
+ LOG(ERROR) << "Failed to read all input at once. Expected: " << output_size
+ << " actual: " << bytes_read;
+ return false;
+ }
+ sink_->ReturnData(output_buffer, output_size);
+ return true;
+ }
std::string input_buffer;
input_buffer.resize(stream_->Size());
size_t bytes_read = 0;
diff --git a/fs_mgr/libsnapshot/cow_decompress.h b/fs_mgr/libsnapshot/libsnapshot_cow/cow_decompress.h
similarity index 100%
rename from fs_mgr/libsnapshot/cow_decompress.h
rename to fs_mgr/libsnapshot/libsnapshot_cow/cow_decompress.h
diff --git a/fs_mgr/libsnapshot/cow_format.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/cow_format.cpp
similarity index 100%
rename from fs_mgr/libsnapshot/cow_format.cpp
rename to fs_mgr/libsnapshot/libsnapshot_cow/cow_format.cpp
diff --git a/fs_mgr/libsnapshot/cow_reader.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/cow_reader.cpp
similarity index 100%
rename from fs_mgr/libsnapshot/cow_reader.cpp
rename to fs_mgr/libsnapshot/libsnapshot_cow/cow_reader.cpp
diff --git a/fs_mgr/libsnapshot/libsnapshot_cow/cow_writer.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/cow_writer.cpp
new file mode 100644
index 0000000..2d5e4bc
--- /dev/null
+++ b/fs_mgr/libsnapshot/libsnapshot_cow/cow_writer.cpp
@@ -0,0 +1,835 @@
+//
+// Copyright (C) 2020 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <unistd.h>
+
+#include <limits>
+#include <queue>
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+#include <android-base/unique_fd.h>
+#include <brotli/encode.h>
+#include <libsnapshot/cow_format.h>
+#include <libsnapshot/cow_reader.h>
+#include <libsnapshot/cow_writer.h>
+#include <lz4.h>
+#include <zlib.h>
+
+#include <fcntl.h>
+#include <linux/fs.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
+
+namespace android {
+namespace snapshot {
+
+namespace {
+std::string GetFdPath(int fd) {
+ const auto fd_path = "/proc/self/fd/" + std::to_string(fd);
+ std::string file_path(512, '\0');
+ const auto err = readlink(fd_path.c_str(), file_path.data(), file_path.size());
+ if (err <= 0) {
+ PLOG(ERROR) << "Failed to determine path for fd " << fd;
+ file_path.clear();
+ } else {
+ file_path.resize(err);
+ }
+ return file_path;
+}
+} // namespace
+
+static_assert(sizeof(off_t) == sizeof(uint64_t));
+
+using android::base::borrowed_fd;
+using android::base::unique_fd;
+
+bool ICowWriter::AddCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks) {
+ CHECK(num_blocks != 0);
+
+ for (size_t i = 0; i < num_blocks; i++) {
+ if (!ValidateNewBlock(new_block + i)) {
+ return false;
+ }
+ }
+
+ return EmitCopy(new_block, old_block, num_blocks);
+}
+
+bool ICowWriter::AddRawBlocks(uint64_t new_block_start, const void* data, size_t size) {
+ if (size % options_.block_size != 0) {
+ LOG(ERROR) << "AddRawBlocks: size " << size << " is not a multiple of "
+ << options_.block_size;
+ return false;
+ }
+
+ uint64_t num_blocks = size / options_.block_size;
+ uint64_t last_block = new_block_start + num_blocks - 1;
+ if (!ValidateNewBlock(last_block)) {
+ return false;
+ }
+ return EmitRawBlocks(new_block_start, data, size);
+}
+
+bool ICowWriter::AddXorBlocks(uint32_t new_block_start, const void* data, size_t size,
+ uint32_t old_block, uint16_t offset) {
+ if (size % options_.block_size != 0) {
+ LOG(ERROR) << "AddRawBlocks: size " << size << " is not a multiple of "
+ << options_.block_size;
+ return false;
+ }
+
+ uint64_t num_blocks = size / options_.block_size;
+ uint64_t last_block = new_block_start + num_blocks - 1;
+ if (!ValidateNewBlock(last_block)) {
+ return false;
+ }
+ if (offset >= options_.block_size) {
+ LOG(ERROR) << "AddXorBlocks: offset " << offset << " is not less than "
+ << options_.block_size;
+ }
+ return EmitXorBlocks(new_block_start, data, size, old_block, offset);
+}
+
+bool ICowWriter::AddZeroBlocks(uint64_t new_block_start, uint64_t num_blocks) {
+ uint64_t last_block = new_block_start + num_blocks - 1;
+ if (!ValidateNewBlock(last_block)) {
+ return false;
+ }
+ return EmitZeroBlocks(new_block_start, num_blocks);
+}
+
+bool ICowWriter::AddLabel(uint64_t label) {
+ return EmitLabel(label);
+}
+
+bool ICowWriter::AddSequenceData(size_t num_ops, const uint32_t* data) {
+ return EmitSequenceData(num_ops, data);
+}
+
+bool ICowWriter::ValidateNewBlock(uint64_t new_block) {
+ if (options_.max_blocks && new_block >= options_.max_blocks.value()) {
+ LOG(ERROR) << "New block " << new_block << " exceeds maximum block count "
+ << options_.max_blocks.value();
+ return false;
+ }
+ return true;
+}
+
+CowWriter::CowWriter(const CowOptions& options) : ICowWriter(options), fd_(-1) {
+ SetupHeaders();
+ SetupWriteOptions();
+}
+
+CowWriter::~CowWriter() {
+ for (size_t i = 0; i < compress_threads_.size(); i++) {
+ CompressWorker* worker = compress_threads_[i].get();
+ if (worker) {
+ worker->Finalize();
+ }
+ }
+
+ bool ret = true;
+ for (auto& t : threads_) {
+ ret = t.get() && ret;
+ }
+
+ if (!ret) {
+ LOG(ERROR) << "Compression failed";
+ }
+ compress_threads_.clear();
+}
+
+void CowWriter::SetupWriteOptions() {
+ num_compress_threads_ = options_.num_compress_threads;
+
+ if (!num_compress_threads_) {
+ num_compress_threads_ = 1;
+ // We prefer not to have more than two threads as the overhead of additional
+ // threads is far greater than cutting down compression time.
+ if (header_.cluster_ops &&
+ android::base::GetBoolProperty("ro.virtual_ab.compression.threads", false)) {
+ num_compress_threads_ = 2;
+ }
+ }
+
+ if (header_.cluster_ops &&
+ (android::base::GetBoolProperty("ro.virtual_ab.batch_writes", false) ||
+ options_.batch_write)) {
+ batch_write_ = true;
+ }
+}
+
+void CowWriter::SetupHeaders() {
+ header_ = {};
+ header_.magic = kCowMagicNumber;
+ header_.major_version = kCowVersionMajor;
+ header_.minor_version = kCowVersionMinor;
+ header_.header_size = sizeof(CowHeader);
+ header_.footer_size = sizeof(CowFooter);
+ header_.op_size = sizeof(CowOperation);
+ header_.block_size = options_.block_size;
+ header_.num_merge_ops = options_.num_merge_ops;
+ header_.cluster_ops = options_.cluster_ops;
+ header_.buffer_size = 0;
+ footer_ = {};
+ footer_.op.data_length = 64;
+ footer_.op.type = kCowFooterOp;
+}
+
+bool CowWriter::ParseOptions() {
+ if (options_.compression == "gz") {
+ compression_ = kCowCompressGz;
+ } else if (options_.compression == "brotli") {
+ compression_ = kCowCompressBrotli;
+ } else if (options_.compression == "lz4") {
+ compression_ = kCowCompressLz4;
+ } else if (options_.compression == "none") {
+ compression_ = kCowCompressNone;
+ } else if (!options_.compression.empty()) {
+ LOG(ERROR) << "unrecognized compression: " << options_.compression;
+ return false;
+ }
+ if (options_.cluster_ops == 1) {
+ LOG(ERROR) << "Clusters must contain at least two operations to function.";
+ return false;
+ }
+ return true;
+}
+
+bool CowWriter::SetFd(android::base::borrowed_fd fd) {
+ if (fd.get() < 0) {
+ owned_fd_.reset(open("/dev/null", O_RDWR | O_CLOEXEC));
+ if (owned_fd_ < 0) {
+ PLOG(ERROR) << "open /dev/null failed";
+ return false;
+ }
+ fd_ = owned_fd_;
+ is_dev_null_ = true;
+ } else {
+ fd_ = fd;
+
+ struct stat stat {};
+ if (fstat(fd.get(), &stat) < 0) {
+ PLOG(ERROR) << "fstat failed";
+ return false;
+ }
+ const auto file_path = GetFdPath(fd.get());
+ is_block_device_ = S_ISBLK(stat.st_mode);
+ if (is_block_device_) {
+ uint64_t size_in_bytes = 0;
+ if (ioctl(fd.get(), BLKGETSIZE64, &size_in_bytes)) {
+ PLOG(ERROR) << "Failed to get total size for: " << fd.get();
+ return false;
+ }
+ cow_image_size_ = size_in_bytes;
+ LOG(INFO) << "COW image " << file_path << " has size " << size_in_bytes;
+ } else {
+ LOG(INFO) << "COW image " << file_path
+ << " is not a block device, assuming unlimited space.";
+ }
+ }
+ return true;
+}
+
+void CowWriter::InitBatchWrites() {
+ if (batch_write_) {
+ cowop_vec_ = std::make_unique<struct iovec[]>(header_.cluster_ops);
+ data_vec_ = std::make_unique<struct iovec[]>(header_.cluster_ops);
+ struct iovec* cowop_ptr = cowop_vec_.get();
+ struct iovec* data_ptr = data_vec_.get();
+ for (size_t i = 0; i < header_.cluster_ops; i++) {
+ std::unique_ptr<CowOperation> op = std::make_unique<CowOperation>();
+ cowop_ptr[i].iov_base = op.get();
+ cowop_ptr[i].iov_len = sizeof(CowOperation);
+ opbuffer_vec_.push_back(std::move(op));
+
+ std::unique_ptr<uint8_t[]> buffer = std::make_unique<uint8_t[]>(header_.block_size * 2);
+ data_ptr[i].iov_base = buffer.get();
+ data_ptr[i].iov_len = header_.block_size * 2;
+ databuffer_vec_.push_back(std::move(buffer));
+ }
+
+ current_op_pos_ = next_op_pos_;
+ current_data_pos_ = next_data_pos_;
+ }
+
+ std::string batch_write = batch_write_ ? "enabled" : "disabled";
+ LOG(INFO) << "Batch writes: " << batch_write;
+}
+
+void CowWriter::InitWorkers() {
+ for (int i = 0; i < num_compress_threads_; i++) {
+ auto wt = std::make_unique<CompressWorker>(compression_, header_.block_size);
+ threads_.emplace_back(std::async(std::launch::async, &CompressWorker::RunThread, wt.get()));
+ compress_threads_.push_back(std::move(wt));
+ }
+
+ LOG(INFO) << num_compress_threads_ << " thread used for compression";
+}
+
+bool CowWriter::Initialize(unique_fd&& fd) {
+ owned_fd_ = std::move(fd);
+ return Initialize(borrowed_fd{owned_fd_});
+}
+
+bool CowWriter::Initialize(borrowed_fd fd) {
+ if (!SetFd(fd) || !ParseOptions()) {
+ return false;
+ }
+
+ bool ret = OpenForWrite();
+
+ if (ret) {
+ InitWorkers();
+ }
+
+ return ret;
+}
+
+bool CowWriter::InitializeAppend(android::base::unique_fd&& fd, uint64_t label) {
+ owned_fd_ = std::move(fd);
+ return InitializeAppend(android::base::borrowed_fd{owned_fd_}, label);
+}
+
+bool CowWriter::InitializeAppend(android::base::borrowed_fd fd, uint64_t label) {
+ if (!SetFd(fd) || !ParseOptions()) {
+ return false;
+ }
+
+ bool ret = OpenForAppend(label);
+
+ if (ret && !compress_threads_.size()) {
+ InitWorkers();
+ }
+
+ return ret;
+}
+
+void CowWriter::InitPos() {
+ next_op_pos_ = sizeof(header_) + header_.buffer_size;
+ cluster_size_ = header_.cluster_ops * sizeof(CowOperation);
+ if (header_.cluster_ops) {
+ next_data_pos_ = next_op_pos_ + cluster_size_;
+ } else {
+ next_data_pos_ = next_op_pos_ + sizeof(CowOperation);
+ }
+ current_cluster_size_ = 0;
+ current_data_size_ = 0;
+}
+
+bool CowWriter::OpenForWrite() {
+ // This limitation is tied to the data field size in CowOperation.
+ if (header_.block_size > std::numeric_limits<uint16_t>::max()) {
+ LOG(ERROR) << "Block size is too large";
+ return false;
+ }
+
+ if (lseek(fd_.get(), 0, SEEK_SET) < 0) {
+ PLOG(ERROR) << "lseek failed";
+ return false;
+ }
+
+ if (options_.scratch_space) {
+ header_.buffer_size = BUFFER_REGION_DEFAULT_SIZE;
+ }
+
+ // Headers are not complete, but this ensures the file is at the right
+ // position.
+ if (!android::base::WriteFully(fd_, &header_, sizeof(header_))) {
+ PLOG(ERROR) << "write failed";
+ return false;
+ }
+
+ if (options_.scratch_space) {
+ // Initialize the scratch space
+ std::string data(header_.buffer_size, 0);
+ if (!android::base::WriteFully(fd_, data.data(), header_.buffer_size)) {
+ PLOG(ERROR) << "writing scratch space failed";
+ return false;
+ }
+ }
+
+ if (!Sync()) {
+ LOG(ERROR) << "Header sync failed";
+ return false;
+ }
+
+ if (lseek(fd_.get(), sizeof(header_) + header_.buffer_size, SEEK_SET) < 0) {
+ PLOG(ERROR) << "lseek failed";
+ return false;
+ }
+
+ InitPos();
+ InitBatchWrites();
+
+ return true;
+}
+
+bool CowWriter::OpenForAppend(uint64_t label) {
+ auto reader = std::make_unique<CowReader>();
+ std::queue<CowOperation> toAdd;
+
+ if (!reader->Parse(fd_, {label}) || !reader->GetHeader(&header_)) {
+ return false;
+ }
+
+ options_.block_size = header_.block_size;
+ options_.cluster_ops = header_.cluster_ops;
+
+ // Reset this, since we're going to reimport all operations.
+ footer_.op.num_ops = 0;
+ InitPos();
+
+ auto iter = reader->GetOpIter();
+
+ while (!iter->Done()) {
+ AddOperation(iter->Get());
+ iter->Next();
+ }
+
+ // Free reader so we own the descriptor position again.
+ reader = nullptr;
+
+ if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
+ PLOG(ERROR) << "lseek failed";
+ return false;
+ }
+
+ InitBatchWrites();
+
+ return EmitClusterIfNeeded();
+}
+
+bool CowWriter::EmitCopy(uint64_t new_block, uint64_t old_block, uint64_t num_blocks) {
+ CHECK(!merge_in_progress_);
+
+ for (size_t i = 0; i < num_blocks; i++) {
+ CowOperation op = {};
+ op.type = kCowCopyOp;
+ op.new_block = new_block + i;
+ op.source = old_block + i;
+ if (!WriteOperation(op)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool CowWriter::EmitRawBlocks(uint64_t new_block_start, const void* data, size_t size) {
+ return EmitBlocks(new_block_start, data, size, 0, 0, kCowReplaceOp);
+}
+
+bool CowWriter::EmitXorBlocks(uint32_t new_block_start, const void* data, size_t size,
+ uint32_t old_block, uint16_t offset) {
+ return EmitBlocks(new_block_start, data, size, old_block, offset, kCowXorOp);
+}
+
+bool CowWriter::CompressBlocks(size_t num_blocks, const void* data) {
+ size_t num_threads = (num_blocks == 1) ? 1 : num_compress_threads_;
+ size_t num_blocks_per_thread = num_blocks / num_threads;
+ const uint8_t* iter = reinterpret_cast<const uint8_t*>(data);
+ compressed_buf_.clear();
+
+ // Submit the blocks per thread. The retrieval of
+ // compressed buffers has to be done in the same order.
+ // We should not poll for completed buffers in a different order as the
+ // buffers are tightly coupled with block ordering.
+ for (size_t i = 0; i < num_threads; i++) {
+ CompressWorker* worker = compress_threads_[i].get();
+ if (i == num_threads - 1) {
+ num_blocks_per_thread = num_blocks;
+ }
+ worker->EnqueueCompressBlocks(iter, num_blocks_per_thread);
+ iter += (num_blocks_per_thread * header_.block_size);
+ num_blocks -= num_blocks_per_thread;
+ }
+
+ for (size_t i = 0; i < num_threads; i++) {
+ CompressWorker* worker = compress_threads_[i].get();
+ if (!worker->GetCompressedBuffers(&compressed_buf_)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool CowWriter::EmitBlocks(uint64_t new_block_start, const void* data, size_t size,
+ uint64_t old_block, uint16_t offset, uint8_t type) {
+ CHECK(!merge_in_progress_);
+ const uint8_t* iter = reinterpret_cast<const uint8_t*>(data);
+
+ // Update engine can potentially send 100MB of blocks at a time. We
+ // don't want to process all those blocks in one shot as it can
+ // stress the memory. Hence, process the blocks in chunks.
+ //
+ // 1024 blocks is reasonable given we will end up using max
+ // memory of ~4MB.
+ const size_t kProcessingBlocks = 1024;
+ size_t num_blocks = (size / header_.block_size);
+ size_t i = 0;
+
+ while (num_blocks) {
+ size_t pending_blocks = (std::min(kProcessingBlocks, num_blocks));
+
+ if (compression_) {
+ if (!CompressBlocks(pending_blocks, iter)) {
+ return false;
+ }
+ buf_iter_ = compressed_buf_.begin();
+ CHECK(pending_blocks == compressed_buf_.size());
+ iter += (pending_blocks * header_.block_size);
+ }
+
+ num_blocks -= pending_blocks;
+
+ while (i < size / header_.block_size && pending_blocks) {
+ CowOperation op = {};
+ op.new_block = new_block_start + i;
+ op.type = type;
+ if (type == kCowXorOp) {
+ op.source = (old_block + i) * header_.block_size + offset;
+ } else {
+ op.source = next_data_pos_;
+ }
+
+ if (compression_) {
+ auto data = std::move(*buf_iter_);
+ op.compression = compression_;
+ op.data_length = static_cast<uint16_t>(data.size());
+
+ if (!WriteOperation(op, data.data(), data.size())) {
+ PLOG(ERROR) << "AddRawBlocks: write failed";
+ return false;
+ }
+ buf_iter_++;
+ } else {
+ op.data_length = static_cast<uint16_t>(header_.block_size);
+ if (!WriteOperation(op, iter, header_.block_size)) {
+ PLOG(ERROR) << "AddRawBlocks: write failed";
+ return false;
+ }
+ iter += header_.block_size;
+ }
+
+ i += 1;
+ pending_blocks -= 1;
+ }
+
+ CHECK(pending_blocks == 0);
+ }
+ return true;
+}
+
+bool CowWriter::EmitZeroBlocks(uint64_t new_block_start, uint64_t num_blocks) {
+ CHECK(!merge_in_progress_);
+ for (uint64_t i = 0; i < num_blocks; i++) {
+ CowOperation op = {};
+ op.type = kCowZeroOp;
+ op.new_block = new_block_start + i;
+ op.source = 0;
+ WriteOperation(op);
+ }
+ return true;
+}
+
+bool CowWriter::EmitLabel(uint64_t label) {
+ CHECK(!merge_in_progress_);
+ CowOperation op = {};
+ op.type = kCowLabelOp;
+ op.source = label;
+ return WriteOperation(op) && Sync();
+}
+
+bool CowWriter::EmitSequenceData(size_t num_ops, const uint32_t* data) {
+ CHECK(!merge_in_progress_);
+ size_t to_add = 0;
+ size_t max_ops = (header_.block_size * 2) / sizeof(uint32_t);
+ while (num_ops > 0) {
+ CowOperation op = {};
+ op.type = kCowSequenceOp;
+ op.source = next_data_pos_;
+ to_add = std::min(num_ops, max_ops);
+ op.data_length = static_cast<uint16_t>(to_add * sizeof(uint32_t));
+ if (!WriteOperation(op, data, op.data_length)) {
+ PLOG(ERROR) << "AddSequenceData: write failed";
+ return false;
+ }
+ num_ops -= to_add;
+ data += to_add;
+ }
+ return true;
+}
+
+bool CowWriter::EmitCluster() {
+ CowOperation op = {};
+ op.type = kCowClusterOp;
+ // Next cluster starts after remainder of current cluster and the next data block.
+ op.source = current_data_size_ + cluster_size_ - current_cluster_size_ - sizeof(CowOperation);
+ return WriteOperation(op);
+}
+
+bool CowWriter::EmitClusterIfNeeded() {
+ // If there isn't room for another op and the cluster end op, end the current cluster
+ if (cluster_size_ && cluster_size_ < current_cluster_size_ + 2 * sizeof(CowOperation)) {
+ if (!EmitCluster()) return false;
+ }
+ return true;
+}
+
+// TODO: Fix compilation issues when linking libcrypto library
+// when snapuserd is compiled as part of ramdisk.
+static void SHA256(const void*, size_t, uint8_t[]) {
+#if 0
+ SHA256_CTX c;
+ SHA256_Init(&c);
+ SHA256_Update(&c, data, length);
+ SHA256_Final(out, &c);
+#endif
+}
+
+bool CowWriter::Finalize() {
+ if (!FlushCluster()) {
+ LOG(ERROR) << "Finalize: FlushCluster() failed";
+ return false;
+ }
+
+ auto continue_cluster_size = current_cluster_size_;
+ auto continue_data_size = current_data_size_;
+ auto continue_data_pos = next_data_pos_;
+ auto continue_op_pos = next_op_pos_;
+ auto continue_num_ops = footer_.op.num_ops;
+ bool extra_cluster = false;
+
+ // Blank out extra ops, in case we're in append mode and dropped ops.
+ if (cluster_size_) {
+ auto unused_cluster_space = cluster_size_ - current_cluster_size_;
+ std::string clr;
+ clr.resize(unused_cluster_space, '\0');
+ if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
+ PLOG(ERROR) << "Failed to seek to footer position.";
+ return false;
+ }
+ if (!android::base::WriteFully(fd_, clr.data(), clr.size())) {
+ PLOG(ERROR) << "clearing unused cluster area failed";
+ return false;
+ }
+ }
+
+ // Footer should be at the end of a file, so if there is data after the current block, end it
+ // and start a new cluster.
+ if (cluster_size_ && current_data_size_ > 0) {
+ EmitCluster();
+ extra_cluster = true;
+ }
+
+ footer_.op.ops_size = footer_.op.num_ops * sizeof(CowOperation);
+ if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
+ PLOG(ERROR) << "Failed to seek to footer position.";
+ return false;
+ }
+ memset(&footer_.data.ops_checksum, 0, sizeof(uint8_t) * 32);
+ memset(&footer_.data.footer_checksum, 0, sizeof(uint8_t) * 32);
+
+ SHA256(&footer_.op, sizeof(footer_.op), footer_.data.footer_checksum);
+ // Write out footer at end of file
+ if (!android::base::WriteFully(fd_, reinterpret_cast<const uint8_t*>(&footer_),
+ sizeof(footer_))) {
+ PLOG(ERROR) << "write footer failed";
+ return false;
+ }
+
+ // Remove excess data, if we're in append mode and threw away more data
+ // than we wrote before.
+ off_t offs = lseek(fd_.get(), 0, SEEK_CUR);
+ if (offs < 0) {
+ PLOG(ERROR) << "Failed to lseek to find current position";
+ return false;
+ }
+ if (!Truncate(offs)) {
+ return false;
+ }
+
+ // Reposition for additional Writing
+ if (extra_cluster) {
+ current_cluster_size_ = continue_cluster_size;
+ current_data_size_ = continue_data_size;
+ next_data_pos_ = continue_data_pos;
+ next_op_pos_ = continue_op_pos;
+ footer_.op.num_ops = continue_num_ops;
+ }
+
+ FlushCluster();
+
+ return Sync();
+}
+
+uint64_t CowWriter::GetCowSize() {
+ if (current_data_size_ > 0) {
+ return next_data_pos_ + sizeof(footer_);
+ } else {
+ return next_op_pos_ + sizeof(footer_);
+ }
+}
+
+bool CowWriter::GetDataPos(uint64_t* pos) {
+ off_t offs = lseek(fd_.get(), 0, SEEK_CUR);
+ if (offs < 0) {
+ PLOG(ERROR) << "lseek failed";
+ return false;
+ }
+ *pos = offs;
+ return true;
+}
+
+bool CowWriter::EnsureSpaceAvailable(const uint64_t bytes_needed) const {
+ if (bytes_needed > cow_image_size_) {
+ LOG(ERROR) << "No space left on COW device. Required: " << bytes_needed
+ << ", available: " << cow_image_size_;
+ errno = ENOSPC;
+ return false;
+ }
+ return true;
+}
+
+bool CowWriter::FlushCluster() {
+ ssize_t ret;
+
+ if (op_vec_index_) {
+ ret = pwritev(fd_.get(), cowop_vec_.get(), op_vec_index_, current_op_pos_);
+ if (ret != (op_vec_index_ * sizeof(CowOperation))) {
+ PLOG(ERROR) << "pwritev failed for CowOperation. Expected: "
+ << (op_vec_index_ * sizeof(CowOperation));
+ return false;
+ }
+ }
+
+ if (data_vec_index_) {
+ ret = pwritev(fd_.get(), data_vec_.get(), data_vec_index_, current_data_pos_);
+ if (ret != total_data_written_) {
+ PLOG(ERROR) << "pwritev failed for data. Expected: " << total_data_written_;
+ return false;
+ }
+ }
+
+ total_data_written_ = 0;
+ op_vec_index_ = 0;
+ data_vec_index_ = 0;
+ current_op_pos_ = next_op_pos_;
+ current_data_pos_ = next_data_pos_;
+
+ return true;
+}
+
+bool CowWriter::WriteOperation(const CowOperation& op, const void* data, size_t size) {
+ if (!EnsureSpaceAvailable(next_op_pos_ + sizeof(op))) {
+ return false;
+ }
+ if (!EnsureSpaceAvailable(next_data_pos_ + size)) {
+ return false;
+ }
+
+ if (batch_write_) {
+ CowOperation* cow_op = reinterpret_cast<CowOperation*>(cowop_vec_[op_vec_index_].iov_base);
+ std::memcpy(cow_op, &op, sizeof(CowOperation));
+ op_vec_index_ += 1;
+
+ if (data != nullptr && size > 0) {
+ struct iovec* data_ptr = data_vec_.get();
+ std::memcpy(data_ptr[data_vec_index_].iov_base, data, size);
+ data_ptr[data_vec_index_].iov_len = size;
+ data_vec_index_ += 1;
+ total_data_written_ += size;
+ }
+ } else {
+ if (lseek(fd_.get(), next_op_pos_, SEEK_SET) < 0) {
+ PLOG(ERROR) << "lseek failed for writing operation.";
+ return false;
+ }
+ if (!android::base::WriteFully(fd_, reinterpret_cast<const uint8_t*>(&op), sizeof(op))) {
+ return false;
+ }
+ if (data != nullptr && size > 0) {
+ if (!WriteRawData(data, size)) return false;
+ }
+ }
+
+ AddOperation(op);
+
+ if (batch_write_) {
+ if (op_vec_index_ == header_.cluster_ops || data_vec_index_ == header_.cluster_ops ||
+ op.type == kCowLabelOp || op.type == kCowClusterOp) {
+ if (!FlushCluster()) {
+ LOG(ERROR) << "Failed to flush cluster data";
+ return false;
+ }
+ }
+ }
+
+ return EmitClusterIfNeeded();
+}
+
+void CowWriter::AddOperation(const CowOperation& op) {
+ footer_.op.num_ops++;
+
+ if (op.type == kCowClusterOp) {
+ current_cluster_size_ = 0;
+ current_data_size_ = 0;
+ } else if (header_.cluster_ops) {
+ current_cluster_size_ += sizeof(op);
+ current_data_size_ += op.data_length;
+ }
+
+ next_data_pos_ += op.data_length + GetNextDataOffset(op, header_.cluster_ops);
+ next_op_pos_ += sizeof(CowOperation) + GetNextOpOffset(op, header_.cluster_ops);
+}
+
+bool CowWriter::WriteRawData(const void* data, const size_t size) {
+ if (!android::base::WriteFullyAtOffset(fd_, data, size, next_data_pos_)) {
+ return false;
+ }
+ return true;
+}
+
+bool CowWriter::Sync() {
+ if (is_dev_null_) {
+ return true;
+ }
+ if (fsync(fd_.get()) < 0) {
+ PLOG(ERROR) << "fsync failed";
+ return false;
+ }
+ return true;
+}
+
+bool CowWriter::Truncate(off_t length) {
+ if (is_dev_null_ || is_block_device_) {
+ return true;
+ }
+ if (ftruncate(fd_.get(), length) < 0) {
+ PLOG(ERROR) << "Failed to truncate.";
+ return false;
+ }
+ return true;
+}
+
+} // namespace snapshot
+} // namespace android
diff --git a/fs_mgr/libsnapshot/inspect_cow.cpp b/fs_mgr/libsnapshot/libsnapshot_cow/inspect_cow.cpp
similarity index 100%
rename from fs_mgr/libsnapshot/inspect_cow.cpp
rename to fs_mgr/libsnapshot/libsnapshot_cow/inspect_cow.cpp
diff --git a/fs_mgr/libsnapshot/snapshot_writer.cpp b/fs_mgr/libsnapshot/snapshot_writer.cpp
index 48b7d80..82a7fd7 100644
--- a/fs_mgr/libsnapshot/snapshot_writer.cpp
+++ b/fs_mgr/libsnapshot/snapshot_writer.cpp
@@ -93,6 +93,9 @@
std::unique_ptr<FileDescriptor> CompressedSnapshotWriter::OpenReader() {
auto cow = OpenCowReader();
+ if (cow == nullptr) {
+ return nullptr;
+ }
auto reader = std::make_unique<CompressedSnapshotReader>();
if (!reader->SetCow(std::move(cow))) {
@@ -111,8 +114,9 @@
return reader;
}
-bool CompressedSnapshotWriter::EmitCopy(uint64_t new_block, uint64_t old_block) {
- return cow_->AddCopy(new_block, old_block);
+bool CompressedSnapshotWriter::EmitCopy(uint64_t new_block, uint64_t old_block,
+ uint64_t num_blocks) {
+ return cow_->AddCopy(new_block, old_block, num_blocks);
}
bool CompressedSnapshotWriter::EmitRawBlocks(uint64_t new_block_start, const void* data,
@@ -191,19 +195,29 @@
return true;
}
-bool OnlineKernelSnapshotWriter::EmitCopy(uint64_t new_block, uint64_t old_block) {
+bool OnlineKernelSnapshotWriter::EmitCopy(uint64_t new_block, uint64_t old_block,
+ uint64_t num_blocks) {
auto source_fd = GetSourceFd();
if (source_fd < 0) {
return false;
}
- std::string buffer(options_.block_size, 0);
- uint64_t offset = old_block * options_.block_size;
- if (!android::base::ReadFullyAtOffset(source_fd, buffer.data(), buffer.size(), offset)) {
- PLOG(ERROR) << "EmitCopy read";
- return false;
+ CHECK(num_blocks != 0);
+
+ for (size_t i = 0; i < num_blocks; i++) {
+ std::string buffer(options_.block_size, 0);
+ uint64_t offset = (old_block + i) * options_.block_size;
+ if (!android::base::ReadFullyAtOffset(source_fd, buffer.data(), buffer.size(), offset)) {
+ PLOG(ERROR) << "EmitCopy read";
+ return false;
+ }
+ if (!EmitRawBlocks(new_block + i, buffer.data(), buffer.size())) {
+ PLOG(ERROR) << "EmitRawBlocks failed";
+ return false;
+ }
}
- return EmitRawBlocks(new_block, buffer.data(), buffer.size());
+
+ return true;
}
bool OnlineKernelSnapshotWriter::EmitLabel(uint64_t) {
diff --git a/fs_mgr/libsnapshot/snapshotctl.cpp b/fs_mgr/libsnapshot/snapshotctl.cpp
index 67189d4..ad3f83c 100644
--- a/fs_mgr/libsnapshot/snapshotctl.cpp
+++ b/fs_mgr/libsnapshot/snapshotctl.cpp
@@ -25,9 +25,27 @@
#include <android-base/logging.h>
#include <android-base/unique_fd.h>
+#include <fs_mgr.h>
+#include <fs_mgr_dm_linear.h>
+#include <fstab/fstab.h>
+#include <liblp/builder.h>
+#include <libsnapshot/cow_format.h>
#include <libsnapshot/snapshot.h>
+#include <storage_literals/storage_literals.h>
+#ifdef SNAPSHOTCTL_USERDEBUG_OR_ENG
+#include <BootControlClient.h>
+#endif
+
+using namespace std::chrono_literals;
using namespace std::string_literals;
+using namespace android::storage_literals;
+using android::fs_mgr::CreateLogicalPartitionParams;
+using android::fs_mgr::FindPartition;
+using android::fs_mgr::GetPartitionSize;
+using android::fs_mgr::PartitionOpener;
+using android::fs_mgr::ReadMetadata;
+using android::fs_mgr::SlotNumberForSlotSuffix;
int Usage() {
std::cerr << "snapshotctl: Control snapshots.\n"
@@ -67,11 +85,136 @@
return false;
}
+#ifdef SNAPSHOTCTL_USERDEBUG_OR_ENG
+bool CreateTestUpdate(SnapshotManager* sm) {
+ chromeos_update_engine::DeltaArchiveManifest manifest;
+
+ // We only copy system, to simplify things.
+ manifest.set_partial_update(true);
+
+ auto dap = manifest.mutable_dynamic_partition_metadata();
+ dap->set_snapshot_enabled(true);
+ dap->set_vabc_enabled(true);
+ dap->set_vabc_compression_param("none");
+ dap->set_cow_version(kCowVersionMajor);
+
+ auto source_slot = fs_mgr_get_slot_suffix();
+ auto source_slot_number = SlotNumberForSlotSuffix(source_slot);
+ auto target_slot = fs_mgr_get_other_slot_suffix();
+ auto target_slot_number = SlotNumberForSlotSuffix(target_slot);
+ auto super_source = fs_mgr_get_super_partition_name(source_slot_number);
+
+ // Get current partition information.
+ PartitionOpener opener;
+ auto source_metadata = ReadMetadata(opener, super_source, source_slot_number);
+ if (!source_metadata) {
+ std::cerr << "Could not read source partition metadata.\n";
+ return false;
+ }
+
+ auto system_source_name = "system" + source_slot;
+ auto system_source = FindPartition(*source_metadata.get(), system_source_name);
+ if (!system_source) {
+ std::cerr << "Could not find system partition: " << system_source_name << ".\n";
+ return false;
+ }
+ auto system_source_size = GetPartitionSize(*source_metadata.get(), *system_source);
+
+ // Since we only add copy operations, 64MB should be enough.
+ auto system_update = manifest.mutable_partitions()->Add();
+ system_update->set_partition_name("system");
+ system_update->set_estimate_cow_size(64_MiB);
+ system_update->mutable_new_partition_info()->set_size(system_source_size);
+
+ if (!sm->CreateUpdateSnapshots(manifest)) {
+ std::cerr << "Could not create update snapshots.\n";
+ return false;
+ }
+
+ // Write the "new" system partition.
+ auto system_target_name = "system" + target_slot;
+ auto source_device = "/dev/block/mapper/" + system_source_name;
+ CreateLogicalPartitionParams clpp = {
+ .block_device = fs_mgr_get_super_partition_name(target_slot_number),
+ .metadata_slot = {target_slot_number},
+ .partition_name = system_target_name,
+ .partition_opener = &opener,
+ .timeout_ms = 10s,
+ };
+ auto writer = sm->OpenSnapshotWriter(clpp, {source_device});
+ if (!writer) {
+ std::cerr << "Could not open snapshot writer.\n";
+ return false;
+ }
+ if (!writer->Initialize()) {
+ std::cerr << "Could not initialize snapshot for writing.\n";
+ return false;
+ }
+
+ for (uint64_t block = 0; block < system_source_size / 4096; block++) {
+ if (!writer->AddCopy(block, block)) {
+ std::cerr << "Unable to add copy operation for block " << block << ".\n";
+ return false;
+ }
+ }
+ if (!writer->Finalize()) {
+ std::cerr << "Could not finalize COW for " << system_target_name << ".\n";
+ return false;
+ }
+ writer = nullptr;
+
+ // Finished writing this partition, unmap.
+ if (!sm->UnmapUpdateSnapshot(system_target_name)) {
+ std::cerr << "Could not unmap snapshot for " << system_target_name << ".\n";
+ return false;
+ }
+
+ // All snapshots have been written.
+ if (!sm->FinishedSnapshotWrites(false /* wipe */)) {
+ std::cerr << "Could not finalize snapshot writes.\n";
+ return false;
+ }
+
+ auto hal = hal::BootControlClient::WaitForService();
+ if (!hal) {
+ std::cerr << "Could not find IBootControl HAL.\n";
+ return false;
+ }
+ auto cr = hal->SetActiveBootSlot(target_slot_number);
+ if (!cr.IsOk()) {
+ std::cerr << "Could not set active boot slot: " << cr.errMsg;
+ return false;
+ }
+
+ std::cerr << "It is now safe to reboot your device. If using a physical device, make\n"
+ << "sure that all physical partitions are flashed to both A and B slots.\n";
+ return true;
+}
+
+bool TestOtaHandler(int /* argc */, char** /* argv */) {
+ auto sm = SnapshotManager::New();
+
+ if (!sm->BeginUpdate()) {
+ std::cerr << "Error starting update.\n";
+ return false;
+ }
+
+ if (!CreateTestUpdate(sm.get())) {
+ sm->CancelUpdate();
+ return false;
+ }
+ return true;
+}
+#endif
+
static std::map<std::string, std::function<bool(int, char**)>> kCmdMap = {
// clang-format off
{"dump", DumpCmdHandler},
{"merge", MergeCmdHandler},
{"map", MapCmdHandler},
+#ifdef SNAPSHOTCTL_USERDEBUG_OR_ENG
+ {"test-blank-ota", TestOtaHandler},
+#endif
{"unmap", UnmapCmdHandler},
// clang-format on
};
diff --git a/fs_mgr/libsnapshot/utility.cpp b/fs_mgr/libsnapshot/utility.cpp
index 0a1be0d..a98bf0e 100644
--- a/fs_mgr/libsnapshot/utility.cpp
+++ b/fs_mgr/libsnapshot/utility.cpp
@@ -17,6 +17,7 @@
#include <errno.h>
#include <time.h>
+#include <filesystem>
#include <iomanip>
#include <sstream>
@@ -152,20 +153,52 @@
}
}
-bool WriteStringToFileAtomic(const std::string& content, const std::string& path) {
- std::string tmp_path = path + ".tmp";
- if (!android::base::WriteStringToFile(content, tmp_path)) {
+bool FsyncDirectory(const char* dirname) {
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(dirname, O_RDONLY | O_CLOEXEC)));
+ if (fd == -1) {
+ PLOG(ERROR) << "Failed to open " << dirname;
return false;
}
+ if (fsync(fd) == -1) {
+ if (errno == EROFS || errno == EINVAL) {
+ PLOG(WARNING) << "Skip fsync " << dirname
+ << " on a file system does not support synchronization";
+ } else {
+ PLOG(ERROR) << "Failed to fsync " << dirname;
+ return false;
+ }
+ }
+ return true;
+}
+
+bool WriteStringToFileAtomic(const std::string& content, const std::string& path) {
+ const std::string tmp_path = path + ".tmp";
+ {
+ const int flags = O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC | O_BINARY;
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(tmp_path.c_str(), flags, 0666)));
+ if (fd == -1) {
+ PLOG(ERROR) << "Failed to open " << path;
+ return false;
+ }
+ if (!android::base::WriteStringToFd(content, fd)) {
+ PLOG(ERROR) << "Failed to write to fd " << fd;
+ return false;
+ }
+ // rename() without fsync() is not safe. Data could still be living on page cache. To ensure
+ // atomiticity, call fsync()
+ if (fsync(fd) != 0) {
+ PLOG(ERROR) << "Failed to fsync " << tmp_path;
+ }
+ }
if (rename(tmp_path.c_str(), path.c_str()) == -1) {
PLOG(ERROR) << "rename failed from " << tmp_path << " to " << path;
return false;
}
- return true;
+ return FsyncDirectory(std::filesystem::path(path).parent_path().c_str());
}
std::ostream& operator<<(std::ostream& os, const Now&) {
- struct tm now;
+ struct tm now {};
time_t t = time(nullptr);
localtime_r(&t, &now);
return os << std::put_time(&now, "%Y%m%d-%H%M%S");
diff --git a/fs_mgr/libsnapshot/utility.h b/fs_mgr/libsnapshot/utility.h
index eff6f10..8c4c7c6 100644
--- a/fs_mgr/libsnapshot/utility.h
+++ b/fs_mgr/libsnapshot/utility.h
@@ -117,6 +117,7 @@
// Note that rename() is an atomic operation. This function may not work properly if there
// is an open fd to |path|, because that fd has an old view of the file.
bool WriteStringToFileAtomic(const std::string& content, const std::string& path);
+bool FsyncDirectory(const char* dirname);
// Writes current time to a given stream.
struct Now {};
diff --git a/fs_mgr/set-verity-state.cpp b/fs_mgr/set-verity-state.cpp
deleted file mode 100644
index 84ee01f..0000000
--- a/fs_mgr/set-verity-state.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <getopt.h>
-#include <stdio.h>
-
-#include <android-base/file.h>
-#include <android-base/logging.h>
-#include <android-base/properties.h>
-#include <binder/ProcessState.h>
-#include <cutils/android_reboot.h>
-#include <fs_mgr_overlayfs.h>
-#include <libavb_user/libavb_user.h>
-
-#include "fs_mgr_priv_overlayfs.h"
-
-using namespace std::string_literals;
-
-namespace {
-
-void print_usage() {
- printf("Usage:\n"
- "\tdisable-verity\n"
- "\tenable-verity\n"
- "\tset-verity-state [0|1]\n"
- "Options:\n"
- "\t-h --help\tthis help\n"
- "\t-R --reboot\tautomatic reboot if needed for new settings to take effect\n"
- "\t-v --verbose\tbe noisy\n");
-}
-
-#ifdef ALLOW_DISABLE_VERITY
-const bool kAllowDisableVerity = true;
-#else
-const bool kAllowDisableVerity = false;
-#endif
-
-static bool SetupOrTeardownOverlayfs(bool enable) {
- bool want_reboot = false;
- if (enable) {
- if (!fs_mgr_overlayfs_setup(nullptr, &want_reboot)) {
- LOG(ERROR) << "Overlayfs setup failed.";
- return want_reboot;
- }
- if (want_reboot) {
- printf("enabling overlayfs\n");
- }
- } else {
- auto rv = fs_mgr_overlayfs_teardown(nullptr, &want_reboot);
- if (rv == OverlayfsTeardownResult::Error) {
- LOG(ERROR) << "Overlayfs teardown failed.";
- return want_reboot;
- }
- if (rv == OverlayfsTeardownResult::Busy) {
- LOG(ERROR) << "Overlayfs is still active until reboot.";
- return true;
- }
- if (want_reboot) {
- printf("disabling overlayfs\n");
- }
- }
- return want_reboot;
-}
-
-/* Helper function to get A/B suffix, if any. If the device isn't
- * using A/B the empty string is returned. Otherwise either "_a",
- * "_b", ... is returned.
- */
-std::string get_ab_suffix() {
- return android::base::GetProperty("ro.boot.slot_suffix", "");
-}
-
-bool is_avb_device_locked() {
- return android::base::GetProperty("ro.boot.vbmeta.device_state", "") == "locked";
-}
-
-bool is_debuggable() {
- return android::base::GetBoolProperty("ro.debuggable", false);
-}
-
-bool is_using_avb() {
- // Figure out if we're using VB1.0 or VB2.0 (aka AVB) - by
- // contract, androidboot.vbmeta.digest is set by the bootloader
- // when using AVB).
- return !android::base::GetProperty("ro.boot.vbmeta.digest", "").empty();
-}
-
-[[noreturn]] void reboot(const std::string& name) {
- LOG(INFO) << "Rebooting device for new settings to take effect";
- ::sync();
- android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot," + name);
- ::sleep(60);
- LOG(ERROR) << "Failed to reboot";
- ::exit(1);
-}
-
-struct SetVerityStateResult {
- bool success = false;
- bool want_reboot = false;
-};
-
-/* Use AVB to turn verity on/off */
-SetVerityStateResult SetVerityState(bool enable_verity) {
- std::string ab_suffix = get_ab_suffix();
- bool verity_enabled = false;
-
- if (is_avb_device_locked()) {
- LOG(ERROR) << "Device must be bootloader unlocked to change verity state";
- return {};
- }
-
- std::unique_ptr<AvbOps, decltype(&avb_ops_user_free)> ops(avb_ops_user_new(),
- &avb_ops_user_free);
- if (!ops) {
- LOG(ERROR) << "Error getting AVB ops";
- return {};
- }
-
- if (!avb_user_verity_get(ops.get(), ab_suffix.c_str(), &verity_enabled)) {
- LOG(ERROR) << "Error getting verity state";
- return {};
- }
-
- if ((verity_enabled && enable_verity) || (!verity_enabled && !enable_verity)) {
- LOG(INFO) << "Verity is already " << (verity_enabled ? "enabled" : "disabled");
- return {.success = true, .want_reboot = false};
- }
-
- if (!avb_user_verity_set(ops.get(), ab_suffix.c_str(), enable_verity)) {
- LOG(ERROR) << "Error setting verity state";
- return {};
- }
-
- LOG(INFO) << "Successfully " << (enable_verity ? "enabled" : "disabled") << " verity";
- return {.success = true, .want_reboot = true};
-}
-
-class MyLogger {
- public:
- explicit MyLogger(bool verbose) : verbose_(verbose) {}
-
- void operator()(android::base::LogId id, android::base::LogSeverity severity, const char* tag,
- const char* file, unsigned int line, const char* message) {
- // Hide log starting with '[fs_mgr]' unless it's an error.
- if (verbose_ || severity >= android::base::ERROR || message[0] != '[') {
- fprintf(stderr, "%s\n", message);
- }
- logd_(id, severity, tag, file, line, message);
- }
-
- private:
- android::base::LogdLogger logd_;
- bool verbose_;
-};
-
-} // namespace
-
-int main(int argc, char* argv[]) {
- bool auto_reboot = false;
- bool verbose = false;
-
- struct option longopts[] = {
- {"help", no_argument, nullptr, 'h'},
- {"reboot", no_argument, nullptr, 'R'},
- {"verbose", no_argument, nullptr, 'v'},
- {0, 0, nullptr, 0},
- };
- for (int opt; (opt = ::getopt_long(argc, argv, "hRv", longopts, nullptr)) != -1;) {
- switch (opt) {
- case 'h':
- print_usage();
- return 0;
- case 'R':
- auto_reboot = true;
- break;
- case 'v':
- verbose = true;
- break;
- default:
- print_usage();
- return 1;
- }
- }
-
- android::base::InitLogging(argv, MyLogger(verbose));
-
- bool enable_verity = false;
- const std::string progname = getprogname();
- if (progname == "enable-verity") {
- enable_verity = true;
- } else if (progname == "disable-verity") {
- enable_verity = false;
- } else if (optind < argc && (argv[optind] == "1"s || argv[optind] == "0"s)) {
- // progname "set-verity-state"
- enable_verity = (argv[optind] == "1"s);
- } else {
- print_usage();
- return 1;
- }
-
- if (!kAllowDisableVerity || !is_debuggable()) {
- errno = EPERM;
- PLOG(ERROR) << "Cannot disable/enable verity on user build";
- return 1;
- }
-
- if (getuid() != 0) {
- errno = EACCES;
- PLOG(ERROR) << "Must be running as root (adb root)";
- return 1;
- }
-
- if (!is_using_avb()) {
- LOG(ERROR) << "Expected AVB device, VB1.0 is no longer supported";
- return 1;
- }
-
- int exit_code = 0;
- bool want_reboot = false;
-
- auto ret = SetVerityState(enable_verity);
- if (ret.success) {
- want_reboot |= ret.want_reboot;
- } else {
- exit_code = 1;
- }
-
- // Disable any overlayfs unconditionally if we want verity enabled.
- // Enable overlayfs only if verity is successfully disabled or is already disabled.
- if (enable_verity || ret.success) {
- // Start a threadpool to service waitForService() callbacks as
- // fs_mgr_overlayfs_* might call waitForService() to get the image service.
- android::ProcessState::self()->startThreadPool();
- want_reboot |= SetupOrTeardownOverlayfs(!enable_verity);
- }
-
- if (want_reboot) {
- if (auto_reboot) {
- reboot(progname);
- }
- printf("Reboot the device for new settings to take effect\n");
- }
-
- return exit_code;
-}
diff --git a/fs_mgr/tests/adb-remount-test.sh b/fs_mgr/tests/adb-remount-test.sh
index eba4f6e..c87e564 100755
--- a/fs_mgr/tests/adb-remount-test.sh
+++ b/fs_mgr/tests/adb-remount-test.sh
@@ -1422,9 +1422,12 @@
LOG RUN "flash vendor, and confirm vendor override disappears"
is_bootloader_fastboot=true
-# cuttlefish?
-[[ "$(get_property ro.product.device)" == vsoc* ]] &&
- is_bootloader_fastboot=false
+# virtual device?
+case "$(get_property ro.product.vendor.device)" in
+ vsoc_* | emulator_* | emulator64_*)
+ is_bootloader_fastboot=false
+ ;;
+esac
is_userspace_fastboot=false
if ! ${is_bootloader_fastboot}; then
diff --git a/fs_mgr/tests/vts_fs_test.cpp b/fs_mgr/tests/vts_fs_test.cpp
index b8b34e2..bb2ceb9 100644
--- a/fs_mgr/tests/vts_fs_test.cpp
+++ b/fs_mgr/tests/vts_fs_test.cpp
@@ -66,6 +66,14 @@
int vsr_level = GetVsrLevel();
+ std::vector<std::string> must_be_f2fs;
+ if (vsr_level >= __ANDROID_API_T__) {
+ must_be_f2fs.emplace_back("/data");
+ }
+ if (vsr_level >= __ANDROID_API_U__) {
+ must_be_f2fs.emplace_back("/metadata");
+ }
+
for (const auto& entry : fstab) {
std::string parent_bdev = entry.blk_device;
while (true) {
@@ -99,15 +107,15 @@
}
if (entry.flags & MS_RDONLY) {
- std::vector<std::string> allowed = {"erofs", "ext4"};
- if (vsr_level == __ANDROID_API_T__) {
- allowed.emplace_back("f2fs");
- }
+ std::vector<std::string> allowed = {"erofs", "ext4", "f2fs"};
EXPECT_NE(std::find(allowed.begin(), allowed.end(), entry.fs_type), allowed.end())
<< entry.mount_point;
} else {
- EXPECT_NE(entry.fs_type, "ext4") << entry.mount_point;
+ if (std::find(must_be_f2fs.begin(), must_be_f2fs.end(), entry.mount_point) !=
+ must_be_f2fs.end()) {
+ EXPECT_EQ(entry.fs_type, "f2fs") << entry.mount_point;
+ }
}
}
}
diff --git a/fs_mgr/tools/dmctl.cpp b/fs_mgr/tools/dmctl.cpp
index 62ca162..10efd0c 100644
--- a/fs_mgr/tools/dmctl.cpp
+++ b/fs_mgr/tools/dmctl.cpp
@@ -33,6 +33,7 @@
#include <ios>
#include <iostream>
#include <map>
+#include <optional>
#include <sstream>
#include <string>
#include <vector>
@@ -183,6 +184,8 @@
}
std::string control_device = NextArg();
return std::make_unique<DmTargetUser>(start_sector, num_sectors, control_device);
+ } else if (target_type == "error") {
+ return std::make_unique<DmTargetError>(start_sector, num_sectors);
} else {
std::cerr << "Unrecognized target type: " << target_type << std::endl;
return nullptr;
@@ -206,16 +209,26 @@
char** argv_;
};
-static bool parse_table_args(DmTable* table, int argc, char** argv) {
+struct TableArgs {
+ DmTable table;
+ bool suspended = false;
+};
+
+static std::optional<TableArgs> parse_table_args(int argc, char** argv) {
+ TableArgs out;
+
// Parse extended options first.
int arg_index = 1;
while (arg_index < argc && argv[arg_index][0] == '-') {
if (strcmp(argv[arg_index], "-ro") == 0) {
- table->set_readonly(true);
+ out.table.set_readonly(true);
+ arg_index++;
+ } else if (strcmp(argv[arg_index], "-suspended") == 0) {
+ out.suspended = true;
arg_index++;
} else {
std::cerr << "Unrecognized option: " << argv[arg_index] << std::endl;
- return -EINVAL;
+ return {};
}
}
@@ -223,37 +236,44 @@
TargetParser parser(argc - arg_index, argv + arg_index);
while (parser.More()) {
std::unique_ptr<DmTarget> target = parser.Next();
- if (!target || !table->AddTarget(std::move(target))) {
- return -EINVAL;
+ if (!target || !out.table.AddTarget(std::move(target))) {
+ return {};
}
}
- if (table->num_targets() == 0) {
+ if (out.table.num_targets() == 0) {
std::cerr << "Must define at least one target." << std::endl;
- return -EINVAL;
+ return {};
}
- return 0;
+ return {std::move(out)};
}
static int DmCreateCmdHandler(int argc, char** argv) {
if (argc < 1) {
- std::cerr << "Usage: dmctl create <dm-name> [-ro] <targets...>" << std::endl;
+ std::cerr << "Usage: dmctl create <dm-name> [--suspended] [-ro] <targets...>" << std::endl;
return -EINVAL;
}
std::string name = argv[0];
- DmTable table;
- int ret = parse_table_args(&table, argc, argv);
- if (ret) {
- return ret;
+ auto table_args = parse_table_args(argc, argv);
+ if (!table_args) {
+ return -EINVAL;
}
std::string ignore_path;
DeviceMapper& dm = DeviceMapper::Instance();
- if (!dm.CreateDevice(name, table, &ignore_path, 5s)) {
+ if (!dm.CreateEmptyDevice(name)) {
std::cerr << "Failed to create device-mapper device with name: " << name << std::endl;
return -EIO;
}
+ if (!dm.LoadTable(name, table_args->table)) {
+ std::cerr << "Failed to load table for dm device: " << name << std::endl;
+ return -EIO;
+ }
+ if (!table_args->suspended && !dm.ChangeState(name, DmDeviceState::ACTIVE)) {
+ std::cerr << "Failed to activate table for " << name << std::endl;
+ return -EIO;
+ }
return 0;
}
@@ -269,7 +289,6 @@
std::cerr << "Failed to delete [" << name << "]" << std::endl;
return -EIO;
}
-
return 0;
}
@@ -280,17 +299,20 @@
}
std::string name = argv[0];
- DmTable table;
- int ret = parse_table_args(&table, argc, argv);
- if (ret) {
- return ret;
+ auto table_args = parse_table_args(argc, argv);
+ if (!table_args) {
+ return -EINVAL;
}
DeviceMapper& dm = DeviceMapper::Instance();
- if (!dm.LoadTableAndActivate(name, table)) {
+ if (!dm.LoadTable(name, table_args->table)) {
std::cerr << "Failed to replace device-mapper table to: " << name << std::endl;
return -EIO;
}
+ if (!table_args->suspended && !dm.ChangeState(name, DmDeviceState::ACTIVE)) {
+ std::cerr << "Failed to activate table for " << name << std::endl;
+ return -EIO;
+ }
return 0;
}
diff --git a/fs_mgr/tools/dmuserd.cpp b/fs_mgr/tools/dmuserd.cpp
index 6b68b28..da7156c 100644
--- a/fs_mgr/tools/dmuserd.cpp
+++ b/fs_mgr/tools/dmuserd.cpp
@@ -13,6 +13,7 @@
#include <sys/prctl.h>
#include <unistd.h>
#include <iostream>
+#include <string>
#define SECTOR_SIZE ((__u64)512)
#define BUFFER_BYTES 4096
@@ -133,16 +134,16 @@
return 0;
}
-int simple_daemon(char* control_path, char* backing_path) {
- int control_fd = open(control_path, O_RDWR);
+static int simple_daemon(const std::string& control_path, const std::string& backing_path) {
+ int control_fd = open(control_path.c_str(), O_RDWR);
if (control_fd < 0) {
- fprintf(stderr, "Unable to open control device %s\n", control_path);
+ fprintf(stderr, "Unable to open control device %s\n", control_path.c_str());
return -1;
}
- int backing_fd = open(backing_path, O_RDWR);
+ int backing_fd = open(backing_path.c_str(), O_RDWR);
if (backing_fd < 0) {
- fprintf(stderr, "Unable to open backing device %s\n", backing_path);
+ fprintf(stderr, "Unable to open backing device %s\n", backing_path.c_str());
return -1;
}
@@ -286,8 +287,8 @@
}
int main(int argc, char* argv[]) {
- char* control_path = NULL;
- char* backing_path = NULL;
+ std::string control_path;
+ std::string backing_path;
char* store;
int c;
@@ -299,10 +300,10 @@
usage(basename(argv[0]));
exit(0);
case 'c':
- control_path = strdup(optarg);
+ control_path = optarg;
break;
case 'b':
- backing_path = strdup(optarg);
+ backing_path = optarg;
break;
case 'v':
verbose = true;
diff --git a/init/Android.bp b/init/Android.bp
index f6f1e8c..c7e7de8 100644
--- a/init/Android.bp
+++ b/init/Android.bp
@@ -39,6 +39,7 @@
"epoll.cpp",
"import_parser.cpp",
"interface_utils.cpp",
+ "interprocess_fifo.cpp",
"keychords.cpp",
"parser.cpp",
"property_type.cpp",
@@ -108,21 +109,22 @@
misc_undefined: ["signed-integer-overflow"],
},
cflags: [
- "-DLOG_UEVENTS=0",
- "-Wall",
- "-Wextra",
- "-Wno-unused-parameter",
- "-Werror",
- "-Wthread-safety",
"-DALLOW_FIRST_STAGE_CONSOLE=0",
"-DALLOW_LOCAL_PROP_OVERRIDE=0",
"-DALLOW_PERMISSIVE_SELINUX=0",
- "-DREBOOT_BOOTLOADER_ON_PANIC=0",
- "-DWORLD_WRITABLE_KMSG=0",
+ "-DANDROID_BASE_UNIQUE_FD_DISABLE_IMPLICIT_CONVERSION",
"-DDUMP_ON_UMOUNT_FAILURE=0",
- "-DSHUTDOWN_ZERO_TIMEOUT=0",
"-DINIT_FULL_SOURCES",
"-DINSTALL_DEBUG_POLICY_TO_SYSTEM_EXT=0",
+ "-DLOG_UEVENTS=0",
+ "-DREBOOT_BOOTLOADER_ON_PANIC=0",
+ "-DSHUTDOWN_ZERO_TIMEOUT=0",
+ "-DWORLD_WRITABLE_KMSG=0",
+ "-Wall",
+ "-Werror",
+ "-Wextra",
+ "-Wno-unused-parameter",
+ "-Wthread-safety",
],
product_variables: {
debuggable: {
@@ -467,6 +469,7 @@
"epoll_test.cpp",
"firmware_handler_test.cpp",
"init_test.cpp",
+ "interprocess_fifo_test.cpp",
"keychords_test.cpp",
"oneshot_on_test.cpp",
"persistent_properties_test.cpp",
@@ -481,7 +484,10 @@
"ueventd_test.cpp",
"util_test.cpp",
],
- static_libs: ["libinit"],
+ static_libs: [
+ "libgmock",
+ "libinit",
+ ],
test_suites: [
"cts",
diff --git a/init/README.md b/init/README.md
index 7b3d32a..957eb9e 100644
--- a/init/README.md
+++ b/init/README.md
@@ -162,6 +162,17 @@
setprop e 1
setprop f 2
+If the property `true` wasn't `true` when the `boot` was triggered, then the
+order of the commands executed will be:
+
+ setprop a 1
+ setprop b 2
+ setprop e 1
+ setprop f 2
+
+If the property `true` becomes `true` *AFTER* `boot` was triggered, nothing will
+be executed. The condition `boot && property:true=true` will be evaluated to
+false because the `boot` trigger is a past event.
Services
--------
@@ -184,8 +195,10 @@
capability without the "CAP\_" prefix, like "NET\_ADMIN" or "SETPCAP". See
http://man7.org/linux/man-pages/man7/capabilities.7.html for a list of Linux
capabilities.
- If no capabilities are provided, then all capabilities are removed from this service, even if it
- runs as root.
+ If no capabilities are provided, then behaviour depends on the user the service runs under:
+ * if it's root, then the service will run with all the capabitilies (note: whether the
+ service can actually use them is controlled by selinux);
+ * otherwise all capabilities will be dropped.
`class <name> [ <name>\* ]`
> Specify class names for the service. All services in a
@@ -368,8 +381,9 @@
given console.
`task_profiles <profile> [ <profile>\* ]`
-> Set task profiles for the process when it forks. This is designed to replace the use of
- writepid option for moving a process into a cgroup.
+> Set task profiles. Before Android U, the profiles are applied to the main thread of the service.
+ For Android U and later, the profiles are applied to the entire service process. This is designed
+ to replace the use of writepid option for moving a process into a cgroup.
`timeout_period <seconds>`
> Provide a timeout after which point the service will be killed. The oneshot keyword is respected
@@ -398,7 +412,7 @@
using this new mechanism, processes can use the user option to
select their desired uid without ever running as root.
As of Android O, processes can also request capabilities directly in their .rc
- files. See the "capabilities" option below.
+ files. See the "capabilities" option above.
`writepid <file> [ <file>\* ]`
> Write the child's pid to the given files when it forks. Meant for
@@ -432,7 +446,9 @@
For example:
`on boot && property:a=b` defines an action that is only executed when
-the 'boot' event trigger happens and the property a equals b.
+the 'boot' event trigger happens and the property a equals b at the moment. This
+will NOT be executed when the property a transitions to value b after the `boot`
+event was triggered.
`on property:a=b && property:c=d` defines an action that is executed
at three times:
diff --git a/init/builtins.cpp b/init/builtins.cpp
index c8cb253..a89813e 100644
--- a/init/builtins.cpp
+++ b/init/builtins.cpp
@@ -331,13 +331,13 @@
unique_fd s(TEMP_FAILURE_RETRY(socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0)));
if (s < 0) return ErrnoError() << "opening socket failed";
- if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0) {
+ if (ioctl(s.get(), SIOCGIFFLAGS, &ifr) < 0) {
return ErrnoError() << "ioctl(..., SIOCGIFFLAGS, ...) failed";
}
ifr.ifr_flags |= IFF_UP;
- if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0) {
+ if (ioctl(s.get(), SIOCSIFFLAGS, &ifr) < 0) {
return ErrnoError() << "ioctl(..., SIOCSIFFLAGS, ...) failed";
}
@@ -516,11 +516,11 @@
loop_info info;
/* if it is a blank loop device */
- if (ioctl(loop, LOOP_GET_STATUS, &info) < 0 && errno == ENXIO) {
+ if (ioctl(loop.get(), LOOP_GET_STATUS, &info) < 0 && errno == ENXIO) {
/* if it becomes our loop device */
- if (ioctl(loop, LOOP_SET_FD, fd.get()) >= 0) {
+ if (ioctl(loop.get(), LOOP_SET_FD, fd.get()) >= 0) {
if (mount(tmp.c_str(), target, system, flags, options) < 0) {
- ioctl(loop, LOOP_CLR_FD, 0);
+ ioctl(loop.get(), LOOP_CLR_FD, 0);
return ErrnoError() << "mount() failed";
}
return {};
@@ -879,6 +879,8 @@
SetProperty("partition." + partition + ".verified.hash_alg", hashtree_info->algorithm);
SetProperty("partition." + partition + ".verified.root_digest",
hashtree_info->root_digest);
+ SetProperty("partition." + partition + ".verified.check_at_most_once",
+ hashtree_info->check_at_most_once ? "1" : "0");
}
}
@@ -899,16 +901,16 @@
if (fd == -1) {
return ErrnoError() << "Error opening file";
}
- if (posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED)) {
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_WILLNEED)) {
return ErrnoError() << "Error posix_fadvise file";
}
- if (readahead(fd, 0, std::numeric_limits<size_t>::max())) {
+ if (readahead(fd.get(), 0, std::numeric_limits<size_t>::max())) {
return ErrnoError() << "Error readahead file";
}
if (fully) {
char buf[BUFSIZ];
ssize_t n;
- while ((n = TEMP_FAILURE_RETRY(read(fd, &buf[0], sizeof(buf)))) > 0) {
+ while ((n = TEMP_FAILURE_RETRY(read(fd.get(), &buf[0], sizeof(buf)))) > 0) {
}
if (n != 0) {
return ErrnoError() << "Error reading file";
diff --git a/init/devices.cpp b/init/devices.cpp
index 28406f6..8bc6e52 100644
--- a/init/devices.cpp
+++ b/init/devices.cpp
@@ -470,7 +470,11 @@
MakeDevice(devpath, block, major, minor, links);
}
- // We don't have full device-mapper information until a change event is fired.
+ // Handle device-mapper nodes.
+ // On kernels <= 5.10, the "add" event is fired on DM_DEV_CREATE, but does not contain name
+ // information until DM_TABLE_LOAD - thus, we wait for a "change" event.
+ // On kernels >= 5.15, the "add" event is fired on DM_TABLE_LOAD, followed by a "change"
+ // event.
if (action == "add" || (action == "change" && StartsWith(devpath, "/dev/block/dm-"))) {
for (const auto& link : links) {
if (!mkdir_recursive(Dirname(link), 0755)) {
diff --git a/init/epoll.cpp b/init/epoll.cpp
index 0580f86..cd73a0c 100644
--- a/init/epoll.cpp
+++ b/init/epoll.cpp
@@ -45,19 +45,19 @@
return Error() << "Must specify events";
}
- Info info;
- info.events = events;
- info.handler = std::make_shared<decltype(handler)>(std::move(handler));
- auto [it, inserted] = epoll_handlers_.emplace(fd, std::move(info));
+ auto [it, inserted] = epoll_handlers_.emplace(
+ fd, Info{
+ .events = events,
+ .handler = std::move(handler),
+ });
if (!inserted) {
return Error() << "Cannot specify two epoll handlers for a given FD";
}
- epoll_event ev;
- ev.events = events;
- // std::map's iterators do not get invalidated until erased, so we use the
- // pointer to the std::function in the map directly for epoll_ctl.
- ev.data.ptr = reinterpret_cast<void*>(&it->second);
- if (epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, fd, &ev) == -1) {
+ epoll_event ev = {
+ .events = events,
+ .data.fd = fd,
+ };
+ if (epoll_ctl(epoll_fd_.get(), EPOLL_CTL_ADD, fd, &ev) == -1) {
Result<void> result = ErrnoError() << "epoll_ctl failed to add fd";
epoll_handlers_.erase(fd);
return result;
@@ -66,40 +66,54 @@
}
Result<void> Epoll::UnregisterHandler(int fd) {
- if (epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, fd, nullptr) == -1) {
+ if (epoll_ctl(epoll_fd_.get(), EPOLL_CTL_DEL, fd, nullptr) == -1) {
return ErrnoError() << "epoll_ctl failed to remove fd";
}
- if (epoll_handlers_.erase(fd) != 1) {
+ auto it = epoll_handlers_.find(fd);
+ if (it == epoll_handlers_.end()) {
return Error() << "Attempting to remove epoll handler for FD without an existing handler";
}
+ to_remove_.insert(it->first);
return {};
}
-Result<std::vector<std::shared_ptr<Epoll::Handler>>> Epoll::Wait(
- std::optional<std::chrono::milliseconds> timeout) {
+void Epoll::SetFirstCallback(std::function<void()> first_callback) {
+ first_callback_ = std::move(first_callback);
+}
+
+Result<int> Epoll::Wait(std::optional<std::chrono::milliseconds> timeout) {
int timeout_ms = -1;
if (timeout && timeout->count() < INT_MAX) {
timeout_ms = timeout->count();
}
const auto max_events = epoll_handlers_.size();
epoll_event ev[max_events];
- auto num_events = TEMP_FAILURE_RETRY(epoll_wait(epoll_fd_, ev, max_events, timeout_ms));
+ auto num_events = TEMP_FAILURE_RETRY(epoll_wait(epoll_fd_.get(), ev, max_events, timeout_ms));
if (num_events == -1) {
return ErrnoError() << "epoll_wait failed";
}
- std::vector<std::shared_ptr<Handler>> pending_functions;
+ if (num_events > 0 && first_callback_) {
+ first_callback_();
+ }
for (int i = 0; i < num_events; ++i) {
- auto& info = *reinterpret_cast<Info*>(ev[i].data.ptr);
+ const auto it = epoll_handlers_.find(ev[i].data.fd);
+ if (it == epoll_handlers_.end()) {
+ continue;
+ }
+ const Info& info = it->second;
if ((info.events & (EPOLLIN | EPOLLPRI)) == (EPOLLIN | EPOLLPRI) &&
(ev[i].events & EPOLLIN) != ev[i].events) {
// This handler wants to know about exception events, and just got one.
// Log something informational.
LOG(ERROR) << "Received unexpected epoll event set: " << ev[i].events;
}
- pending_functions.emplace_back(info.handler);
+ info.handler();
+ for (auto fd : to_remove_) {
+ epoll_handlers_.erase(fd);
+ }
+ to_remove_.clear();
}
-
- return pending_functions;
+ return num_events;
}
} // namespace init
diff --git a/init/epoll.h b/init/epoll.h
index f58ae8d..1e71803 100644
--- a/init/epoll.h
+++ b/init/epoll.h
@@ -24,6 +24,7 @@
#include <map>
#include <memory>
#include <optional>
+#include <unordered_set>
#include <vector>
#include <android-base/unique_fd.h>
@@ -42,17 +43,19 @@
Result<void> Open();
Result<void> RegisterHandler(int fd, Handler handler, uint32_t events = EPOLLIN);
Result<void> UnregisterHandler(int fd);
- Result<std::vector<std::shared_ptr<Handler>>> Wait(
- std::optional<std::chrono::milliseconds> timeout);
+ void SetFirstCallback(std::function<void()> first_callback);
+ Result<int> Wait(std::optional<std::chrono::milliseconds> timeout);
private:
struct Info {
- std::shared_ptr<Handler> handler;
+ Handler handler;
uint32_t events;
};
android::base::unique_fd epoll_fd_;
std::map<int, Info> epoll_handlers_;
+ std::function<void()> first_callback_;
+ std::unordered_set<int> to_remove_;
};
} // namespace init
diff --git a/init/epoll_test.cpp b/init/epoll_test.cpp
index 9236cd5..7105a68 100644
--- a/init/epoll_test.cpp
+++ b/init/epoll_test.cpp
@@ -21,6 +21,7 @@
#include <unordered_set>
#include <android-base/file.h>
+#include <android-base/logging.h>
#include <gtest/gtest.h>
namespace android {
@@ -30,14 +31,10 @@
class CatchDtor final {
public:
- CatchDtor() { sValidObjects.emplace(this); }
- CatchDtor(const CatchDtor&) { sValidObjects.emplace(this); }
- ~CatchDtor() {
- auto iter = sValidObjects.find(this);
- if (iter != sValidObjects.end()) {
- sValidObjects.erase(iter);
- }
- }
+ CatchDtor() { CHECK(sValidObjects.emplace(this).second); }
+ CatchDtor(const CatchDtor&) { CHECK(sValidObjects.emplace(this).second); }
+ CatchDtor(const CatchDtor&&) { CHECK(sValidObjects.emplace(this).second); }
+ ~CatchDtor() { CHECK_EQ(sValidObjects.erase(this), size_t{1}); }
};
TEST(epoll, UnregisterHandler) {
@@ -48,11 +45,13 @@
ASSERT_EQ(pipe(fds), 0);
CatchDtor catch_dtor;
- bool handler_invoked;
+ bool handler_invoked = false;
auto handler = [&, catch_dtor]() -> void {
auto result = epoll.UnregisterHandler(fds[0]);
ASSERT_EQ(result.ok(), !handler_invoked);
handler_invoked = true;
+ // The assert statement below verifies that the UnregisterHandler() call
+ // above did not destroy the current std::function<> instance.
ASSERT_NE(sValidObjects.find((void*)&catch_dtor), sValidObjects.end());
};
@@ -61,14 +60,9 @@
uint8_t byte = 0xee;
ASSERT_TRUE(android::base::WriteFully(fds[1], &byte, sizeof(byte)));
- auto results = epoll.Wait({});
- ASSERT_RESULT_OK(results);
- ASSERT_EQ(results->size(), size_t(1));
-
- for (const auto& function : *results) {
- (*function)();
- (*function)();
- }
+ auto epoll_result = epoll.Wait({});
+ ASSERT_RESULT_OK(epoll_result);
+ ASSERT_EQ(*epoll_result, 1);
ASSERT_TRUE(handler_invoked);
}
diff --git a/init/firmware_handler.cpp b/init/firmware_handler.cpp
index 30e808d..b9fa58c 100644
--- a/init/firmware_handler.cpp
+++ b/init/firmware_handler.cpp
@@ -257,12 +257,12 @@
return false;
}
struct stat sb;
- if (fstat(fw_fd, &sb) == -1) {
+ if (fstat(fw_fd.get(), &sb) == -1) {
attempted_paths_and_errors.emplace_back("firmware: attempted " + file +
", fstat failed: " + strerror(errno));
return false;
}
- LoadFirmware(firmware, root, fw_fd, sb.st_size, loading_fd, data_fd);
+ LoadFirmware(firmware, root, fw_fd.get(), sb.st_size, loading_fd.get(), data_fd.get());
return true;
};
@@ -287,7 +287,7 @@
}
// Write "-1" as our response to the kernel's firmware request, since we have nothing for it.
- write(loading_fd, "-1", 2);
+ write(loading_fd.get(), "-1", 2);
}
bool FirmwareHandler::ForEachFirmwareDirectory(
diff --git a/init/host_init_stubs.h b/init/host_init_stubs.h
index 2a8bf6c..753ed6b 100644
--- a/init/host_init_stubs.h
+++ b/init/host_init_stubs.h
@@ -29,6 +29,9 @@
#define __ANDROID_API_P__ 28
#define __ANDROID_API_Q__ 29
#define __ANDROID_API_R__ 30
+#define __ANDROID_API_S__ 31
+#define __ANDROID_API_T__ 33
+#define __ANDROID_API_U__ 34
// sys/system_properties.h
#define PROP_VALUE_MAX 92
diff --git a/init/init.cpp b/init/init.cpp
index ce668d7..4262191 100644
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -513,7 +513,7 @@
}
static Result<void> DoLoadApex(const std::string& apex_name) {
- if(auto result = ParseApexConfigs(apex_name); !result.ok()) {
+ if (auto result = ParseApexConfigs(apex_name); !result.ok()) {
return result.error();
}
@@ -662,6 +662,10 @@
}
static Result<void> SetupCgroupsAction(const BuiltinArguments&) {
+ if (!CgroupsAvailable()) {
+ LOG(INFO) << "Cgroups support in kernel is not enabled";
+ return {};
+ }
// Have to create <CGROUPS_RC_DIR> using make_dir function
// for appropriate sepolicy to be set for it
make_dir(android::base::Dirname(CGROUPS_RC_PATH), 0711);
@@ -735,30 +739,13 @@
HandlePowerctlMessage("shutdown,container");
}
-static constexpr std::chrono::milliseconds kDiagnosticTimeout = 10s;
-
-static void HandleSignalFd(bool one_off) {
+static void HandleSignalFd() {
signalfd_siginfo siginfo;
- auto started = std::chrono::steady_clock::now();
- do {
- ssize_t bytes_read = TEMP_FAILURE_RETRY(read(signal_fd, &siginfo, sizeof(siginfo)));
- if (bytes_read < 0 && errno == EAGAIN) {
- auto now = std::chrono::steady_clock::now();
- std::chrono::duration<double> waited = now - started;
- if (waited >= kDiagnosticTimeout) {
- LOG(ERROR) << "epoll() woke us up, but we waited with no SIGCHLD!";
- started = now;
- }
-
- std::this_thread::sleep_for(100ms);
- continue;
- }
- if (bytes_read != sizeof(siginfo)) {
- PLOG(ERROR) << "Failed to read siginfo from signal_fd";
- return;
- }
- break;
- } while (!one_off);
+ ssize_t bytes_read = TEMP_FAILURE_RETRY(read(signal_fd, &siginfo, sizeof(siginfo)));
+ if (bytes_read != sizeof(siginfo)) {
+ PLOG(ERROR) << "Failed to read siginfo from signal_fd";
+ return;
+ }
switch (siginfo.ssi_signo) {
case SIGCHLD:
@@ -768,7 +755,7 @@
HandleSigtermSignal(siginfo);
break;
default:
- PLOG(ERROR) << "signal_fd: received unexpected signal " << siginfo.ssi_signo;
+ LOG(ERROR) << "signal_fd: received unexpected signal " << siginfo.ssi_signo;
break;
}
}
@@ -813,14 +800,13 @@
LOG(FATAL) << "Failed to register a fork handler: " << strerror(result);
}
- signal_fd = signalfd(-1, &mask, SFD_CLOEXEC | SFD_NONBLOCK);
+ signal_fd = signalfd(-1, &mask, SFD_CLOEXEC);
if (signal_fd == -1) {
PLOG(FATAL) << "failed to create signalfd";
}
constexpr int flags = EPOLLIN | EPOLLPRI;
- auto handler = std::bind(HandleSignalFd, false);
- if (auto result = epoll->RegisterHandler(signal_fd, handler, flags); !result.ok()) {
+ if (auto result = epoll->RegisterHandler(signal_fd, HandleSignalFd, flags); !result.ok()) {
LOG(FATAL) << result.error();
}
}
@@ -949,32 +935,6 @@
return {};
}
-static void DumpPidFds(const std::string& prefix, pid_t pid) {
- std::error_code ec;
- std::string proc_dir = "/proc/" + std::to_string(pid) + "/fd";
- for (const auto& entry : std::filesystem::directory_iterator(proc_dir)) {
- std::string target;
- if (android::base::Readlink(entry.path(), &target)) {
- LOG(ERROR) << prefix << target;
- } else {
- LOG(ERROR) << prefix << entry.path();
- }
- }
-}
-
-static void DumpFile(const std::string& prefix, const std::string& file) {
- std::ifstream fp(file);
- if (!fp) {
- LOG(ERROR) << "Could not open " << file;
- return;
- }
-
- std::string line;
- while (std::getline(fp, line)) {
- LOG(ERROR) << prefix << line;
- }
-}
-
int SecondStageMain(int argc, char** argv) {
if (REBOOT_BOOTLOADER_ON_PANIC) {
InstallRebootSignalHandlers();
@@ -1061,6 +1021,11 @@
PLOG(FATAL) << result.error();
}
+ // We always reap children before responding to the other pending functions. This is to
+ // prevent a race where other daemons see that a service has exited and ask init to
+ // start it again via ctl.start before init has reaped it.
+ epoll.SetFirstCallback(ReapAnyOutstandingChildren);
+
InstallSignalFdHandler(&epoll);
InstallInitNotifier(&epoll);
StartPropertyService(&property_fd);
@@ -1143,7 +1108,7 @@
setpriority(PRIO_PROCESS, 0, 0);
while (true) {
// By default, sleep until something happens.
- auto epoll_timeout = std::optional<std::chrono::milliseconds>{kDiagnosticTimeout};
+ std::optional<std::chrono::milliseconds> epoll_timeout;
auto shutdown_command = shutdown_state.CheckShutdown();
if (shutdown_command) {
@@ -1163,7 +1128,7 @@
if (next_process_action_time) {
epoll_timeout = std::chrono::ceil<std::chrono::milliseconds>(
*next_process_action_time - boot_clock::now());
- if (*epoll_timeout < 0ms) epoll_timeout = 0ms;
+ if (epoll_timeout < 0ms) epoll_timeout = 0ms;
}
}
@@ -1172,36 +1137,9 @@
if (am.HasMoreCommands()) epoll_timeout = 0ms;
}
- auto pending_functions = epoll.Wait(epoll_timeout);
- if (!pending_functions.ok()) {
- LOG(ERROR) << pending_functions.error();
- } else if (!pending_functions->empty()) {
- // We always reap children before responding to the other pending functions. This is to
- // prevent a race where other daemons see that a service has exited and ask init to
- // start it again via ctl.start before init has reaped it.
- ReapAnyOutstandingChildren();
- for (const auto& function : *pending_functions) {
- (*function)();
- }
- } else if (Service::is_exec_service_running()) {
- static bool dumped_diagnostics = false;
- std::chrono::duration<double> waited =
- std::chrono::steady_clock::now() - Service::exec_service_started();
- if (waited >= kDiagnosticTimeout) {
- LOG(ERROR) << "Exec service is hung? Waited " << waited.count()
- << " without SIGCHLD";
- if (!dumped_diagnostics) {
- DumpPidFds("exec service opened: ", Service::exec_service_pid());
-
- std::string status_file =
- "/proc/" + std::to_string(Service::exec_service_pid()) + "/status";
- DumpFile("exec service: ", status_file);
- dumped_diagnostics = true;
-
- LOG(INFO) << "Attempting to handle any stuck SIGCHLDs...";
- HandleSignalFd(true);
- }
- }
+ auto epoll_result = epoll.Wait(epoll_timeout);
+ if (!epoll_result.ok()) {
+ LOG(ERROR) << epoll_result.error();
}
if (!IsShuttingDown()) {
HandleControlMessages();
diff --git a/init/init_test.cpp b/init/init_test.cpp
index 5c1e9ef..18a08c7 100644
--- a/init/init_test.cpp
+++ b/init/init_test.cpp
@@ -193,6 +193,36 @@
EXPECT_TRUE(service->is_override());
}
+TEST(init, StartConsole) {
+ if (GetProperty("ro.build.type", "") == "user") {
+ GTEST_SKIP() << "Must run on userdebug/eng builds. b/262090304";
+ return;
+ }
+ std::string init_script = R"init(
+service console /system/bin/sh
+ class core
+ console null
+ disabled
+ user root
+ group root shell log readproc
+ seclabel u:r:shell:s0
+ setenv HOSTNAME console
+)init";
+
+ ActionManager action_manager;
+ ServiceList service_list;
+ TestInitText(init_script, BuiltinFunctionMap(), {}, &action_manager, &service_list);
+ ASSERT_EQ(std::distance(service_list.begin(), service_list.end()), 1);
+
+ auto service = service_list.begin()->get();
+ ASSERT_NE(service, nullptr);
+ ASSERT_RESULT_OK(service->Start());
+ const pid_t pid = service->pid();
+ ASSERT_GT(pid, 0);
+ EXPECT_NE(getsid(pid), 0);
+ service->Stop();
+}
+
static std::string GetSecurityContext() {
char* ctx;
if (getcon(&ctx) == -1) {
diff --git a/init/interprocess_fifo.cpp b/init/interprocess_fifo.cpp
new file mode 100644
index 0000000..6e0d031
--- /dev/null
+++ b/init/interprocess_fifo.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "interprocess_fifo.h"
+
+#include <android-base/logging.h>
+
+#include <unistd.h>
+
+using ::android::base::ErrnoError;
+using ::android::base::Error;
+using ::android::base::Result;
+
+namespace android {
+namespace init {
+
+InterprocessFifo::InterprocessFifo() noexcept : fds_({-1, -1}) {}
+
+InterprocessFifo::InterprocessFifo(InterprocessFifo&& orig) noexcept : fds_({-1, -1}) {
+ std::swap(fds_, orig.fds_);
+}
+
+InterprocessFifo::~InterprocessFifo() noexcept {
+ Close();
+}
+
+void InterprocessFifo::CloseFd(int& fd) noexcept {
+ if (fd >= 0) {
+ close(fd);
+ fd = -1;
+ }
+}
+
+void InterprocessFifo::CloseReadFd() noexcept {
+ CloseFd(fds_[0]);
+}
+
+void InterprocessFifo::CloseWriteFd() noexcept {
+ CloseFd(fds_[1]);
+}
+
+void InterprocessFifo::Close() noexcept {
+ CloseReadFd();
+ CloseWriteFd();
+}
+
+Result<void> InterprocessFifo::Initialize() noexcept {
+ if (fds_[0] >= 0) {
+ return Error() << "already initialized";
+ }
+ if (pipe(fds_.data()) < 0) { // NOLINT(android-cloexec-pipe)
+ return ErrnoError() << "pipe()";
+ }
+ return {};
+}
+
+Result<uint8_t> InterprocessFifo::Read() noexcept {
+ uint8_t byte;
+ ssize_t count = read(fds_[0], &byte, 1);
+ if (count < 0) {
+ return ErrnoError() << "read()";
+ }
+ if (count == 0) {
+ return Error() << "read() EOF";
+ }
+ DCHECK_EQ(count, 1);
+ return byte;
+}
+
+Result<void> InterprocessFifo::Write(uint8_t byte) noexcept {
+ ssize_t written = write(fds_[1], &byte, 1);
+ if (written < 0) {
+ return ErrnoError() << "write()";
+ }
+ if (written == 0) {
+ return Error() << "write() EOF";
+ }
+ DCHECK_EQ(written, 1);
+ return {};
+}
+
+} // namespace init
+} // namespace android
diff --git a/init/interprocess_fifo.h b/init/interprocess_fifo.h
new file mode 100644
index 0000000..cdaac86
--- /dev/null
+++ b/init/interprocess_fifo.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <array>
+
+#include <android-base/result.h>
+
+namespace android {
+namespace init {
+
+// A FIFO for inter-process communication that uses a Unix pipe internally.
+class InterprocessFifo {
+ public:
+ template <typename T>
+ using Result = ::android::base::Result<T>;
+
+ InterprocessFifo() noexcept;
+ InterprocessFifo(const InterprocessFifo& orig) noexcept = delete;
+ InterprocessFifo(InterprocessFifo&& orig) noexcept;
+ InterprocessFifo& operator=(const InterprocessFifo& orig) noexcept = delete;
+ InterprocessFifo& operator=(InterprocessFifo&& orig) noexcept = delete;
+ ~InterprocessFifo() noexcept;
+ void CloseReadFd() noexcept;
+ void CloseWriteFd() noexcept;
+ void Close() noexcept;
+ Result<void> Initialize() noexcept;
+ Result<void> Write(uint8_t byte) noexcept;
+ Result<uint8_t> Read() noexcept;
+
+ private:
+ static void CloseFd(int& fd) noexcept;
+
+ std::array<int, 2> fds_;
+};
+
+} // namespace init
+} // namespace android
diff --git a/init/interprocess_fifo_test.cpp b/init/interprocess_fifo_test.cpp
new file mode 100644
index 0000000..81cfbac
--- /dev/null
+++ b/init/interprocess_fifo_test.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "interprocess_fifo.h"
+
+#include <android-base/result-gmock.h>
+#include <gtest/gtest.h>
+
+#define ASSERT_OK(e) ASSERT_THAT(e, Ok())
+#define ASSERT_NOT_OK(e) ASSERT_THAT(e, Not(Ok()))
+
+using ::android::base::Result;
+using ::android::base::testing::Ok;
+using ::testing::Not;
+
+namespace android {
+namespace init {
+
+TEST(FifoTest, WriteAndRead) {
+ InterprocessFifo fifo;
+ ASSERT_OK(fifo.Initialize());
+ ASSERT_OK(fifo.Write('a'));
+ ASSERT_OK(fifo.Write('b'));
+ Result<uint8_t> result = fifo.Read();
+ ASSERT_OK(result);
+ EXPECT_EQ(*result, 'a');
+ result = fifo.Read();
+ ASSERT_OK(result);
+ EXPECT_EQ(*result, 'b');
+ InterprocessFifo fifo2 = std::move(fifo);
+ ASSERT_NOT_OK(fifo.Write('c'));
+ ASSERT_NOT_OK(fifo.Read());
+ ASSERT_OK(fifo2.Write('d'));
+ result = fifo2.Read();
+ ASSERT_OK(result);
+ EXPECT_EQ(*result, 'd');
+}
+
+} // namespace init
+} // namespace android
diff --git a/init/keychords_test.cpp b/init/keychords_test.cpp
index 8a333a2..5789bf5 100644
--- a/init/keychords_test.cpp
+++ b/init/keychords_test.cpp
@@ -212,11 +212,8 @@
}
void TestFrame::RelaxForMs(std::chrono::milliseconds wait) {
- auto pending_functions = epoll_.Wait(wait);
- ASSERT_RESULT_OK(pending_functions);
- for (const auto& function : *pending_functions) {
- (*function)();
- }
+ auto epoll_result = epoll_.Wait(wait);
+ ASSERT_RESULT_OK(epoll_result);
}
void TestFrame::SetChord(int key, bool value) {
diff --git a/init/persistent_properties.cpp b/init/persistent_properties.cpp
index d33a6b8..8db7267 100644
--- a/init/persistent_properties.cpp
+++ b/init/persistent_properties.cpp
@@ -77,7 +77,7 @@
}
struct stat sb;
- if (fstat(fd, &sb) == -1) {
+ if (fstat(fd.get(), &sb) == -1) {
PLOG(ERROR) << "fstat on property file \"" << entry->d_name << "\" failed";
continue;
}
@@ -198,7 +198,7 @@
if (!WriteStringToFd(serialized_string, fd)) {
return ErrnoError() << "Unable to write file contents";
}
- fsync(fd);
+ fsync(fd.get());
fd.reset();
if (rename(temp_filename.c_str(), persistent_property_filename.c_str())) {
@@ -216,7 +216,7 @@
if (dir_fd < 0) {
return ErrnoError() << "Unable to open persistent properties directory for fsync()";
}
- fsync(dir_fd);
+ fsync(dir_fd.get());
return {};
}
diff --git a/init/property_service.cpp b/init/property_service.cpp
index c2ba8d5..9df9828 100644
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -300,13 +300,13 @@
if (!socket_.ok()) {
return true;
}
- int result = TEMP_FAILURE_RETRY(send(socket_, &value, sizeof(value), 0));
+ int result = TEMP_FAILURE_RETRY(send(socket_.get(), &value, sizeof(value), 0));
return result == sizeof(value);
}
bool GetSourceContext(std::string* source_context) const {
char* c_source_context = nullptr;
- if (getpeercon(socket_, &c_source_context) != 0) {
+ if (getpeercon(socket_.get(), &c_source_context) != 0) {
return false;
}
*source_context = c_source_context;
@@ -320,13 +320,13 @@
private:
bool PollIn(uint32_t* timeout_ms) {
- struct pollfd ufds[1];
- ufds[0].fd = socket_;
- ufds[0].events = POLLIN;
- ufds[0].revents = 0;
+ struct pollfd ufd = {
+ .fd = socket_.get(),
+ .events = POLLIN,
+ };
while (*timeout_ms > 0) {
auto start_time = std::chrono::steady_clock::now();
- int nr = poll(ufds, 1, *timeout_ms);
+ int nr = poll(&ufd, 1, *timeout_ms);
auto now = std::chrono::steady_clock::now();
auto time_elapsed =
std::chrono::duration_cast<std::chrono::milliseconds>(now - start_time);
@@ -368,7 +368,7 @@
return false;
}
- int result = TEMP_FAILURE_RETRY(recv(socket_, data, bytes_left, MSG_DONTWAIT));
+ int result = TEMP_FAILURE_RETRY(recv(socket_.get(), data, bytes_left, MSG_DONTWAIT));
if (result <= 0) {
PLOG(ERROR) << "sys_prop: recv error";
return false;
@@ -1381,13 +1381,9 @@
}
while (true) {
- auto pending_functions = epoll.Wait(std::nullopt);
- if (!pending_functions.ok()) {
- LOG(ERROR) << pending_functions.error();
- } else {
- for (const auto& function : *pending_functions) {
- (*function)();
- }
+ auto epoll_result = epoll.Wait(std::nullopt);
+ if (!epoll_result.ok()) {
+ LOG(ERROR) << epoll_result.error();
}
}
}
diff --git a/init/reboot.cpp b/init/reboot.cpp
index 4c27a56..a3fc534 100644
--- a/init/reboot.cpp
+++ b/init/reboot.cpp
@@ -567,6 +567,11 @@
}
static Result<void> UnmountAllApexes() {
+ // don't need to unmount because apexd doesn't use /data in Microdroid
+ if (IsMicrodroid()) {
+ return {};
+ }
+
const char* args[] = {"/system/bin/apexd", "--unmount-all"};
int status;
if (logwrap_fork_execvp(arraysize(args), args, &status, false, LOG_KLOG, true, nullptr) != 0) {
@@ -762,7 +767,7 @@
if (IsDataMounted("f2fs")) {
uint32_t flag = F2FS_GOING_DOWN_FULLSYNC;
unique_fd fd(TEMP_FAILURE_RETRY(open("/data", O_RDONLY)));
- int ret = ioctl(fd, F2FS_IOC_SHUTDOWN, &flag);
+ int ret = ioctl(fd.get(), F2FS_IOC_SHUTDOWN, &flag);
if (ret) {
PLOG(ERROR) << "Shutdown /data: ";
} else {
diff --git a/init/security.cpp b/init/security.cpp
index 0e9f6c2..6e616be 100644
--- a/init/security.cpp
+++ b/init/security.cpp
@@ -116,6 +116,13 @@
if (SetMmapRndBitsMin(33, 24, false) && (!Has32BitAbi() || SetMmapRndBitsMin(16, 16, true))) {
return {};
}
+#elif defined(__riscv)
+ // TODO: sv48 and sv57 were both added to the kernel this year, so we
+ // probably just need some kernel fixes to enable higher ASLR randomization,
+ // but for now 24 is the maximum that the kernel supports.
+ if (SetMmapRndBitsMin(24, 18, false)) {
+ return {};
+ }
#elif defined(__x86_64__)
// x86_64 supports 28 - 32 rnd bits, but Android wants to ensure that the
// theoretical maximum of 32 bits is always supported and used.
@@ -209,7 +216,7 @@
return {};
}
- int ioctl_ret = ioctl(fd, PERF_EVENT_IOC_RESET);
+ int ioctl_ret = ioctl(fd.get(), PERF_EVENT_IOC_RESET);
if (ioctl_ret != -1) {
// Success implies that the kernel doesn't have the hooks.
return {};
diff --git a/init/selinux.cpp b/init/selinux.cpp
index ab5b0a0..ea308aa 100644
--- a/init/selinux.cpp
+++ b/init/selinux.cpp
@@ -567,7 +567,7 @@
return ErrnoError() << "Failed to open " << dstPath;
}
- ret = ExtractEntryToFile(archive, &entry, fd);
+ ret = ExtractEntryToFile(archive, &entry, fd.get());
if (ret != 0) {
return Error() << "Failed to extract entry \"" << fileName << "\" ("
<< entry.uncompressed_length << " bytes) to \"" << dstPath
@@ -785,7 +785,7 @@
return;
}
- TEMP_FAILURE_RETRY(send(fd, &request, sizeof(request), 0));
+ TEMP_FAILURE_RETRY(send(fd.get(), &request, sizeof(request), 0));
}
} // namespace
diff --git a/init/service.cpp b/init/service.cpp
index a633048..b9b3309 100644
--- a/init/service.cpp
+++ b/init/service.cpp
@@ -16,6 +16,7 @@
#include "service.h"
+#include <errno.h>
#include <fcntl.h>
#include <inttypes.h>
#include <linux/securebits.h>
@@ -38,6 +39,7 @@
#include <string>
+#include "interprocess_fifo.h"
#include "lmkd_service.h"
#include "service_list.h"
#include "util.h"
@@ -134,8 +136,6 @@
unsigned long Service::next_start_order_ = 1;
bool Service::is_exec_service_running_ = false;
-pid_t Service::exec_service_pid_ = -1;
-std::chrono::time_point<std::chrono::steady_clock> Service::exec_service_started_;
Service::Service(const std::string& name, Subcontext* subcontext_for_restart_commands,
const std::string& filename, const std::vector<std::string>& args)
@@ -225,7 +225,7 @@
}
}
-void Service::SetProcessAttributesAndCaps() {
+void Service::SetProcessAttributesAndCaps(InterprocessFifo setsid_finished) {
// Keep capabilites on uid change.
if (capabilities_ && proc_attr_.uid) {
// If Android is running in a container, some securebits might already
@@ -240,7 +240,7 @@
}
}
- if (auto result = SetProcessAttributes(proc_attr_); !result.ok()) {
+ if (auto result = SetProcessAttributes(proc_attr_, std::move(setsid_finished)); !result.ok()) {
LOG(FATAL) << "cannot set attribute for " << name_ << ": " << result.error();
}
@@ -290,7 +290,8 @@
}
if ((siginfo.si_code != CLD_EXITED || siginfo.si_status != 0) && on_failure_reboot_target_) {
- LOG(ERROR) << "Service with 'reboot_on_failure' option failed, shutting down system.";
+ LOG(ERROR) << "Service " << name_
+ << " has 'reboot_on_failure' option and failed, shutting down system.";
trigger_shutdown(*on_failure_reboot_target_);
}
@@ -431,8 +432,6 @@
flags_ |= SVC_EXEC;
is_exec_service_running_ = true;
- exec_service_pid_ = pid_;
- exec_service_started_ = std::chrono::steady_clock::now();
LOG(INFO) << "SVC_EXEC service '" << name_ << "' pid " << pid_ << " (uid " << proc_attr_.uid
<< " gid " << proc_attr_.gid << "+" << proc_attr_.supp_gids.size() << " context "
@@ -442,14 +441,6 @@
return {};
}
-static void ClosePipe(const std::array<int, 2>* pipe) {
- for (const auto fd : *pipe) {
- if (fd >= 0) {
- close(fd);
- }
- }
-}
-
Result<void> Service::CheckConsole() {
if (!(flags_ & SVC_CONSOLE)) {
return {};
@@ -514,7 +505,7 @@
// Enters namespaces, sets environment variables, writes PID files and runs the service executable.
void Service::RunService(const std::vector<Descriptor>& descriptors,
- std::unique_ptr<std::array<int, 2>, decltype(&ClosePipe)> pipefd) {
+ InterprocessFifo cgroups_activated, InterprocessFifo setsid_finished) {
if (auto result = EnterNamespaces(namespaces_, name_, mount_namespace_); !result.ok()) {
LOG(FATAL) << "Service '" << name_ << "' failed to set up namespaces: " << result.error();
}
@@ -536,23 +527,33 @@
// Wait until the cgroups have been created and until the cgroup controllers have been
// activated.
- char byte = 0;
- if (read((*pipefd)[0], &byte, 1) < 0) {
- PLOG(ERROR) << "failed to read from notification channel";
+ Result<uint8_t> byte = cgroups_activated.Read();
+ if (!byte.ok()) {
+ LOG(ERROR) << name_ << ": failed to read from notification channel: " << byte.error();
}
- pipefd.reset();
- if (!byte) {
+ cgroups_activated.Close();
+ if (*byte != kCgroupsActivated) {
LOG(FATAL) << "Service '" << name_ << "' failed to start due to a fatal error";
_exit(EXIT_FAILURE);
}
- if (task_profiles_.size() > 0 && !SetTaskProfiles(getpid(), task_profiles_)) {
- LOG(ERROR) << "failed to set task profiles";
+ if (task_profiles_.size() > 0) {
+ bool succeeded = SelinuxGetVendorAndroidVersion() < __ANDROID_API_U__
+ ?
+ // Compatibility mode: apply the task profiles to the current
+ // thread.
+ SetTaskProfiles(getpid(), task_profiles_)
+ :
+ // Apply the task profiles to the current process.
+ SetProcessProfiles(getuid(), getpid(), task_profiles_);
+ if (!succeeded) {
+ LOG(ERROR) << "failed to set task profiles";
+ }
}
// As requested, set our gid, supplemental gids, uid, context, and
// priority. Aborts on failure.
- SetProcessAttributesAndCaps();
+ SetProcessAttributesAndCaps(std::move(setsid_finished));
if (!ExpandArgsAndExecv(args_, sigstop_)) {
PLOG(ERROR) << "cannot execv('" << args_[0]
@@ -595,11 +596,14 @@
return {};
}
- std::unique_ptr<std::array<int, 2>, decltype(&ClosePipe)> pipefd(new std::array<int, 2>{-1, -1},
- ClosePipe);
- if (pipe(pipefd->data()) < 0) {
- return ErrnoError() << "pipe()";
- }
+ // cgroups_activated is used for communication from the parent to the child
+ // while setsid_finished is used for communication from the child process to
+ // the parent process. These two communication channels are separate because
+ // combining these into a single communication channel would introduce a
+ // race between the Write() calls by the parent and by the child.
+ InterprocessFifo cgroups_activated, setsid_finished;
+ OR_RETURN(cgroups_activated.Initialize());
+ OR_RETURN(setsid_finished.Initialize());
if (Result<void> result = CheckConsole(); !result.ok()) {
return result;
@@ -657,8 +661,13 @@
if (pid == 0) {
umask(077);
- RunService(descriptors, std::move(pipefd));
+ cgroups_activated.CloseWriteFd();
+ setsid_finished.CloseReadFd();
+ RunService(descriptors, std::move(cgroups_activated), std::move(setsid_finished));
_exit(127);
+ } else {
+ cgroups_activated.CloseReadFd();
+ setsid_finished.CloseWriteFd();
}
if (pid < 0) {
@@ -682,34 +691,67 @@
start_order_ = next_start_order_++;
process_cgroup_empty_ = false;
- bool use_memcg = swappiness_ != -1 || soft_limit_in_bytes_ != -1 || limit_in_bytes_ != -1 ||
- limit_percent_ != -1 || !limit_property_.empty();
- errno = -createProcessGroup(proc_attr_.uid, pid_, use_memcg);
- if (errno != 0) {
- if (char byte = 0; write((*pipefd)[1], &byte, 1) < 0) {
- return ErrnoError() << "sending notification failed";
+ if (CgroupsAvailable()) {
+ bool use_memcg = swappiness_ != -1 || soft_limit_in_bytes_ != -1 || limit_in_bytes_ != -1 ||
+ limit_percent_ != -1 || !limit_property_.empty();
+ errno = -createProcessGroup(proc_attr_.uid, pid_, use_memcg);
+ if (errno != 0) {
+ Result<void> result = cgroups_activated.Write(kActivatingCgroupsFailed);
+ if (!result.ok()) {
+ return Error() << "Sending notification failed: " << result.error();
+ }
+ return Error() << "createProcessGroup(" << proc_attr_.uid << ", " << pid_ << ", "
+ << use_memcg << ") failed for service '" << name_
+ << "': " << strerror(errno);
}
- return Error() << "createProcessGroup(" << proc_attr_.uid << ", " << pid_
- << ") failed for service '" << name_ << "'";
- }
- // When the blkio controller is mounted in the v1 hierarchy, NormalIoPriority is
- // the default (/dev/blkio). When the blkio controller is mounted in the v2 hierarchy, the
- // NormalIoPriority profile has to be applied explicitly.
- SetProcessProfiles(proc_attr_.uid, pid_, {"NormalIoPriority"});
+ // When the blkio controller is mounted in the v1 hierarchy, NormalIoPriority is
+ // the default (/dev/blkio). When the blkio controller is mounted in the v2 hierarchy, the
+ // NormalIoPriority profile has to be applied explicitly.
+ SetProcessProfiles(proc_attr_.uid, pid_, {"NormalIoPriority"});
- if (use_memcg) {
- ConfigureMemcg();
+ if (use_memcg) {
+ ConfigureMemcg();
+ }
}
if (oom_score_adjust_ != DEFAULT_OOM_SCORE_ADJUST) {
LmkdRegister(name_, proc_attr_.uid, pid_, oom_score_adjust_);
}
- if (char byte = 1; write((*pipefd)[1], &byte, 1) < 0) {
- return ErrnoError() << "sending notification failed";
+ if (Result<void> result = cgroups_activated.Write(kCgroupsActivated); !result.ok()) {
+ return Error() << "Sending cgroups activated notification failed: " << result.error();
}
+ cgroups_activated.Close();
+
+ // Call setpgid() from the parent process to make sure that this call has
+ // finished before the parent process calls kill(-pgid, ...).
+ if (!RequiresConsole(proc_attr_)) {
+ if (setpgid(pid, pid) < 0) {
+ switch (errno) {
+ case EACCES: // Child has already performed setpgid() followed by execve().
+ case ESRCH: // Child process no longer exists.
+ break;
+ default:
+ PLOG(ERROR) << "setpgid() from parent failed";
+ }
+ }
+ } else {
+ // The Read() call below will return an error if the child is killed.
+ if (Result<uint8_t> result = setsid_finished.Read();
+ !result.ok() || *result != kSetSidFinished) {
+ if (!result.ok()) {
+ return Error() << "Waiting for setsid() failed: " << result.error();
+ } else {
+ return Error() << "Waiting for setsid() failed: " << static_cast<uint32_t>(*result)
+ << " <> " << static_cast<uint32_t>(kSetSidFinished);
+ }
+ }
+ }
+
+ setsid_finished.Close();
+
NotifyStateChange("running");
reboot_on_failure.Disable();
return {};
@@ -825,6 +867,8 @@
if ((how != SVC_DISABLED) && (how != SVC_RESET) && (how != SVC_RESTART)) {
// An illegal flag: default to SVC_DISABLED.
+ LOG(ERROR) << "service '" << name_ << "' requested unknown flag " << how
+ << ", defaulting to disabling it.";
how = SVC_DISABLED;
}
diff --git a/init/service.h b/init/service.h
index ab19865..f9749d2 100644
--- a/init/service.h
+++ b/init/service.h
@@ -31,6 +31,7 @@
#include "action.h"
#include "capabilities.h"
+#include "interprocess_fifo.h"
#include "keyword_map.h"
#include "mount_namespace.h"
#include "parser.h"
@@ -72,6 +73,8 @@
const std::vector<gid_t>& supp_gids, int namespace_flags, const std::string& seclabel,
Subcontext* subcontext_for_restart_commands, const std::string& filename,
const std::vector<std::string>& args);
+ Service(const Service&) = delete;
+ void operator=(const Service&) = delete;
static Result<std::unique_ptr<Service>> MakeTemporaryOneshotService(
const std::vector<std::string>& args);
@@ -103,10 +106,6 @@
size_t CheckAllCommands() const { return onrestart_.CheckAllCommands(); }
static bool is_exec_service_running() { return is_exec_service_running_; }
- static pid_t exec_service_pid() { return exec_service_pid_; }
- static std::chrono::time_point<std::chrono::steady_clock> exec_service_started() {
- return exec_service_started_;
- }
const std::string& name() const { return name_; }
const std::set<std::string>& classnames() const { return classnames_; }
@@ -142,7 +141,7 @@
flags_ &= ~SVC_ONESHOT;
}
}
- Subcontext* subcontext() const { return subcontext_; }
+ const Subcontext* subcontext() const { return subcontext_; }
const std::string& filename() const { return filename_; }
void set_filename(const std::string& name) { filename_ = name; }
@@ -150,20 +149,17 @@
void NotifyStateChange(const std::string& new_state) const;
void StopOrReset(int how);
void KillProcessGroup(int signal, bool report_oneshot = false);
- void SetProcessAttributesAndCaps();
+ void SetProcessAttributesAndCaps(InterprocessFifo setsid_finished);
void ResetFlagsForStart();
Result<void> CheckConsole();
void ConfigureMemcg();
- void RunService(
- const std::vector<Descriptor>& descriptors,
- std::unique_ptr<std::array<int, 2>, void (*)(const std::array<int, 2>* pipe)> pipefd);
+ void RunService(const std::vector<Descriptor>& descriptors, InterprocessFifo cgroups_activated,
+ InterprocessFifo setsid_finished);
void SetMountNamespace();
static unsigned long next_start_order_;
static bool is_exec_service_running_;
- static std::chrono::time_point<std::chrono::steady_clock> exec_service_started_;
- static pid_t exec_service_pid_;
- std::string name_;
+ const std::string name_;
std::set<std::string> classnames_;
unsigned flags_;
@@ -187,7 +183,7 @@
// Environment variables that only get applied to the next run.
std::vector<std::pair<std::string, std::string>> once_environment_vars_;
- Subcontext* subcontext_;
+ const Subcontext* const subcontext_;
Action onrestart_; // Commands to execute on restart.
std::vector<std::string> writepid_files_;
@@ -221,7 +217,7 @@
bool updatable_ = false;
- std::vector<std::string> args_;
+ const std::vector<std::string> args_;
std::vector<std::function<void(const siginfo_t& siginfo)>> reap_callbacks_;
diff --git a/init/service_list.cpp b/init/service_list.cpp
index 3047821..937d82e 100644
--- a/init/service_list.cpp
+++ b/init/service_list.cpp
@@ -24,8 +24,8 @@
ServiceList::ServiceList() {}
ServiceList& ServiceList::GetInstance() {
- static ServiceList instance;
- return instance;
+ static ServiceList* instance = new ServiceList;
+ return *instance;
}
size_t ServiceList::CheckAllCommands() {
diff --git a/init/service_utils.cpp b/init/service_utils.cpp
index d19f5ee..7004d8d 100644
--- a/init/service_utils.cpp
+++ b/init/service_utils.cpp
@@ -52,7 +52,7 @@
if (fd == -1) {
return ErrnoError() << "Could not open namespace at " << path;
}
- if (setns(fd, nstype) == -1) {
+ if (setns(fd.get(), nstype) == -1) {
return ErrnoError() << "Could not setns() namespace at " << path;
}
return {};
@@ -127,22 +127,22 @@
void SetupStdio(bool stdio_to_kmsg) {
auto fd = unique_fd{open("/dev/null", O_RDWR | O_CLOEXEC)};
- dup2(fd, STDIN_FILENO);
+ dup2(fd.get(), STDIN_FILENO);
if (stdio_to_kmsg) {
fd.reset(open("/dev/kmsg_debug", O_WRONLY | O_CLOEXEC));
if (fd == -1) fd.reset(open("/dev/null", O_WRONLY | O_CLOEXEC));
}
- dup2(fd, STDOUT_FILENO);
- dup2(fd, STDERR_FILENO);
+ dup2(fd.get(), STDOUT_FILENO);
+ dup2(fd.get(), STDERR_FILENO);
}
void OpenConsole(const std::string& console) {
auto fd = unique_fd{open(console.c_str(), O_RDWR | O_CLOEXEC)};
if (fd == -1) fd.reset(open("/dev/null", O_RDWR | O_CLOEXEC));
- ioctl(fd, TIOCSCTTY, 0);
- dup2(fd, 0);
- dup2(fd, 1);
- dup2(fd, 2);
+ ioctl(fd.get(), TIOCSCTTY, 0);
+ dup2(fd.get(), 0);
+ dup2(fd.get(), 1);
+ dup2(fd.get(), 2);
}
} // namespace
@@ -190,7 +190,7 @@
}
// Fixup as we set O_NONBLOCK for open, the intent for fd is to block reads.
- fcntl(fd, F_SETFL, flags);
+ fcntl(fd.get(), F_SETFL, flags);
return Descriptor(ANDROID_FILE_ENV_PREFIX + name, std::move(fd));
}
@@ -232,7 +232,7 @@
return {};
}
-Result<void> SetProcessAttributes(const ProcessAttributes& attr) {
+Result<void> SetProcessAttributes(const ProcessAttributes& attr, InterprocessFifo setsid_finished) {
if (attr.ioprio_class != IoSchedClass_NONE) {
if (android_set_ioprio(getpid(), attr.ioprio_class, attr.ioprio_pri)) {
PLOG(ERROR) << "failed to set pid " << getpid() << " ioprio=" << attr.ioprio_class
@@ -240,11 +240,17 @@
}
}
- if (!attr.console.empty()) {
+ if (RequiresConsole(attr)) {
setsid();
+ setsid_finished.Write(kSetSidFinished);
+ setsid_finished.Close();
OpenConsole(attr.console);
} else {
- if (setpgid(0, getpid()) == -1) {
+ // Without PID namespaces, this call duplicates the setpgid() call from
+ // the parent process. With PID namespaces, this setpgid() call sets the
+ // process group ID for a child of the init process in the PID
+ // namespace.
+ if (setpgid(0, 0) == -1) {
return ErrnoError() << "setpgid failed";
}
SetupStdio(attr.stdio_to_kmsg);
@@ -280,6 +286,15 @@
}
Result<void> WritePidToFiles(std::vector<std::string>* files) {
+ if (files->empty()) {
+ // No files to write pid to, exit early.
+ return {};
+ }
+
+ if (!CgroupsAvailable()) {
+ return Error() << "cgroups are not available";
+ }
+
// See if there were "writepid" instructions to write to files under cpuset path.
std::string cpuset_path;
if (CgroupGetControllerPath("cpuset", &cpuset_path)) {
diff --git a/init/service_utils.h b/init/service_utils.h
index 65a2012..d4143aa 100644
--- a/init/service_utils.h
+++ b/init/service_utils.h
@@ -26,12 +26,20 @@
#include <android-base/unique_fd.h>
#include <cutils/iosched_policy.h>
+#include "interprocess_fifo.h"
#include "mount_namespace.h"
#include "result.h"
namespace android {
namespace init {
+// Constants used by Service::Start() for communication between parent and child.
+enum ServiceCode : uint8_t {
+ kActivatingCgroupsFailed,
+ kCgroupsActivated,
+ kSetSidFinished,
+};
+
class Descriptor {
public:
Descriptor(const std::string& name, android::base::unique_fd fd)
@@ -89,7 +97,12 @@
int priority;
bool stdio_to_kmsg;
};
-Result<void> SetProcessAttributes(const ProcessAttributes& attr);
+
+inline bool RequiresConsole(const ProcessAttributes& attr) {
+ return !attr.console.empty();
+}
+
+Result<void> SetProcessAttributes(const ProcessAttributes& attr, InterprocessFifo setsid_finished);
Result<void> WritePidToFiles(std::vector<std::string>* files);
diff --git a/init/sigchld_handler.cpp b/init/sigchld_handler.cpp
index 6fc64df..f8c501f 100644
--- a/init/sigchld_handler.cpp
+++ b/init/sigchld_handler.cpp
@@ -24,6 +24,7 @@
#include <unistd.h>
#include <android-base/chrono_utils.h>
+#include <android-base/file.h>
#include <android-base/logging.h>
#include <android-base/scopeguard.h>
#include <android-base/stringprintf.h>
@@ -36,6 +37,7 @@
using android::base::boot_clock;
using android::base::make_scope_guard;
+using android::base::ReadFileToString;
using android::base::StringPrintf;
using android::base::Timer;
@@ -51,8 +53,13 @@
return 0;
}
- auto pid = siginfo.si_pid;
- if (pid == 0) return 0;
+ const pid_t pid = siginfo.si_pid;
+ if (pid == 0) {
+ DCHECK_EQ(siginfo.si_signo, 0);
+ return 0;
+ }
+
+ DCHECK_EQ(siginfo.si_signo, SIGCHLD);
// At this point we know we have a zombie pid, so we use this scopeguard to reap the pid
// whenever the function returns from this point forward.
@@ -132,6 +139,11 @@
}
LOG(INFO) << "Waiting for " << pids.size() << " pids to be reaped took " << t << " with "
<< alive_pids.size() << " of them still running";
+ for (pid_t pid : pids) {
+ std::string status = "(no-such-pid)";
+ ReadFileToString(StringPrintf("/proc/%d/status", pid), &status);
+ LOG(INFO) << "Still running: " << pid << ' ' << status;
+ }
}
} // namespace init
diff --git a/init/subcontext.cpp b/init/subcontext.cpp
index 961e006..6a095fb 100644
--- a/init/subcontext.cpp
+++ b/init/subcontext.cpp
@@ -207,7 +207,7 @@
// We explicitly do not use O_CLOEXEC here, such that we can reference this FD by number
// in the subcontext process after we exec.
- int child_fd = dup(subcontext_socket); // NOLINT(android-cloexec-dup)
+ int child_fd = dup(subcontext_socket.get()); // NOLINT(android-cloexec-dup)
if (child_fd < 0) {
PLOG(FATAL) << "Could not dup child_fd";
}
@@ -268,12 +268,12 @@
}
Result<SubcontextReply> Subcontext::TransmitMessage(const SubcontextCommand& subcontext_command) {
- if (auto result = SendMessage(socket_, subcontext_command); !result.ok()) {
+ if (auto result = SendMessage(socket_.get(), subcontext_command); !result.ok()) {
Restart();
return ErrnoError() << "Failed to send message to subcontext";
}
- auto subcontext_message = ReadMessage(socket_);
+ auto subcontext_message = ReadMessage(socket_.get());
if (!subcontext_message.ok()) {
Restart();
return Error() << "Failed to receive result from subcontext: " << subcontext_message.error();
diff --git a/init/subcontext.h b/init/subcontext.h
index 8acc032..93ebace 100644
--- a/init/subcontext.h
+++ b/init/subcontext.h
@@ -36,8 +36,10 @@
class Subcontext {
public:
- Subcontext(std::vector<std::string> path_prefixes, std::string context, bool host = false)
- : path_prefixes_(std::move(path_prefixes)), context_(std::move(context)), pid_(0) {
+ Subcontext(std::vector<std::string> path_prefixes, std::string_view context, bool host = false)
+ : path_prefixes_(std::move(path_prefixes)),
+ context_(context.begin(), context.end()),
+ pid_(0) {
if (!host) {
Fork();
}
diff --git a/init/test_upgrade_mte/mte_upgrade_test_helper.cpp b/init/test_upgrade_mte/mte_upgrade_test_helper.cpp
index 10af06b..3188337 100644
--- a/init/test_upgrade_mte/mte_upgrade_test_helper.cpp
+++ b/init/test_upgrade_mte/mte_upgrade_test_helper.cpp
@@ -22,6 +22,7 @@
#include <sys/prctl.h>
#include <time.h>
#include <unistd.h>
+#include <memory>
int MaybeDowngrade() {
int res = prctl(PR_GET_TAGGED_ADDR_CTRL, 0, 0, 0, 0);
@@ -58,7 +59,7 @@
// Disallow automatic upgrade from ASYNC mode.
if (prctl(PR_SET_TAGGED_ADDR_CTRL, res & ~PR_MTE_TCF_SYNC, 0, 0, 0) == -1) abort();
}
- volatile char* f = (char*)malloc(1);
+ std::unique_ptr<volatile char[]> f(new char[1]);
f[17] = 'x';
char buf[1];
read(1, buf, 1);
diff --git a/init/uevent_listener.cpp b/init/uevent_listener.cpp
index 7cd396a..5da6777 100644
--- a/init/uevent_listener.cpp
+++ b/init/uevent_listener.cpp
@@ -92,12 +92,12 @@
LOG(FATAL) << "Could not open uevent socket";
}
- fcntl(device_fd_, F_SETFL, O_NONBLOCK);
+ fcntl(device_fd_.get(), F_SETFL, O_NONBLOCK);
}
ReadUeventResult UeventListener::ReadUevent(Uevent* uevent) const {
char msg[UEVENT_MSG_LEN + 2];
- int n = uevent_kernel_multicast_recv(device_fd_, msg, UEVENT_MSG_LEN);
+ int n = uevent_kernel_multicast_recv(device_fd_.get(), msg, UEVENT_MSG_LEN);
if (n <= 0) {
if (errno != EAGAIN && errno != EWOULDBLOCK) {
PLOG(ERROR) << "Error reading from Uevent Fd";
@@ -184,9 +184,10 @@
const std::optional<std::chrono::milliseconds> relative_timeout) const {
using namespace std::chrono;
- pollfd ufd;
- ufd.events = POLLIN;
- ufd.fd = device_fd_;
+ pollfd ufd = {
+ .events = POLLIN,
+ .fd = device_fd_.get(),
+ };
auto start_time = steady_clock::now();
diff --git a/init/util.cpp b/init/util.cpp
index 3d42855..bc8ea6e 100644
--- a/init/util.cpp
+++ b/init/util.cpp
@@ -120,12 +120,12 @@
if (passcred) {
int on = 1;
- if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on))) {
+ if (setsockopt(fd.get(), SOL_SOCKET, SO_PASSCRED, &on, sizeof(on))) {
return ErrnoError() << "Failed to set SO_PASSCRED '" << name << "'";
}
}
- int ret = bind(fd, (struct sockaddr *) &addr, sizeof (addr));
+ int ret = bind(fd.get(), (struct sockaddr*)&addr, sizeof(addr));
int savederrno = errno;
if (!secontext.empty()) {
@@ -145,7 +145,7 @@
if (fchmodat(AT_FDCWD, addr.sun_path, perm, AT_SYMLINK_NOFOLLOW)) {
return ErrnoError() << "Failed to fchmodat socket '" << addr.sun_path << "'";
}
- if (should_listen && listen(fd, /* use OS maximum */ 1 << 30)) {
+ if (should_listen && listen(fd.get(), /* use OS maximum */ 1 << 30)) {
return ErrnoError() << "Failed to listen on socket '" << addr.sun_path << "'";
}
@@ -168,7 +168,7 @@
// For security reasons, disallow world-writable
// or group-writable files.
struct stat sb;
- if (fstat(fd, &sb) == -1) {
+ if (fstat(fd.get(), &sb) == -1) {
return ErrnoError() << "fstat failed()";
}
if ((sb.st_mode & (S_IWGRP | S_IWOTH)) != 0) {
diff --git a/janitors/OWNERS b/janitors/OWNERS
index e132f0b..d871201 100644
--- a/janitors/OWNERS
+++ b/janitors/OWNERS
@@ -1,6 +1,7 @@
# OWNERS file for projects that don't really have owners so much as volunteer janitors.
ccross@google.com
+cferris@google.com
dwillemsen@google.com
enh@google.com
narayan@google.com
-sadafebrahimi@google.com
\ No newline at end of file
+sadafebrahimi@google.com
diff --git a/libcutils/Android.bp b/libcutils/Android.bp
index fde30ad..b135e57 100644
--- a/libcutils/Android.bp
+++ b/libcutils/Android.bp
@@ -193,6 +193,9 @@
],
},
android: {
+ sanitize: {
+ misc_undefined: ["integer"],
+ },
static_libs: [
"libasync_safe",
],
@@ -209,32 +212,6 @@
],
},
- android_arm: {
- sanitize: {
- misc_undefined: ["integer"],
- },
- },
- android_arm64: {
- sanitize: {
- misc_undefined: ["integer"],
- },
- },
-
- android_x86: {
- // TODO: This is to work around b/29412086.
- // Remove once __mulodi4 is available and move the "sanitize" block
- // to the android target.
- sanitize: {
- misc_undefined: [],
- },
- },
-
- android_x86_64: {
- sanitize: {
- misc_undefined: ["integer"],
- },
- },
-
// qtaguid.cpp loads libnetd_client.so with dlopen(). Since
// the interface of libnetd_client.so may vary between AOSP
// releases, exclude qtaguid.cpp from the VNDK-SP variant.
diff --git a/libcutils/ashmem_test.cpp b/libcutils/ashmem_test.cpp
index fb657f6..d158427 100644
--- a/libcutils/ashmem_test.cpp
+++ b/libcutils/ashmem_test.cpp
@@ -75,7 +75,7 @@
unique_fd fd;
ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd, PROT_READ | PROT_WRITE));
- void *region1;
+ void* region1 = nullptr;
ASSERT_NO_FATAL_FAILURE(TestMmap(fd, size, PROT_READ | PROT_WRITE, ®ion1));
memcpy(region1, &data, size);
@@ -97,7 +97,7 @@
unique_fd fd;
ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd, PROT_READ | PROT_WRITE));
- void *region1;
+ void* region1 = nullptr;
ASSERT_NO_FATAL_FAILURE(TestMmap(fd, size, PROT_READ | PROT_WRITE, ®ion1));
memcpy(region1, &data, size);
@@ -131,7 +131,7 @@
TEST(AshmemTest, FileOperationsTest) {
unique_fd fd;
- void* region;
+ void* region = nullptr;
// Allocate a 4-page buffer, but leave page-sized holes on either side
constexpr size_t size = PAGE_SIZE * 4;
@@ -246,7 +246,7 @@
unique_fd fd[nRegions];
for (int i = 0; i < nRegions; i++) {
ASSERT_NO_FATAL_FAILURE(TestCreateRegion(size, fd[i], PROT_READ | PROT_WRITE));
- void *region;
+ void* region = nullptr;
ASSERT_NO_FATAL_FAILURE(TestMmap(fd[i], size, PROT_READ | PROT_WRITE, ®ion));
memcpy(region, &data, size);
ASSERT_EQ(0, memcmp(region, &data, size));
diff --git a/libcutils/include/cutils/qtaguid.h b/libcutils/include/cutils/qtaguid.h
index a5ffb03..8902c2b 100644
--- a/libcutils/include/cutils/qtaguid.h
+++ b/libcutils/include/cutils/qtaguid.h
@@ -33,12 +33,6 @@
*/
extern int qtaguid_untagSocket(int sockfd);
-/*
- * Enable/disable qtaguid functionnality at a lower level.
- * When pacified, the kernel will accept commands but do nothing.
- */
-extern int qtaguid_setPacifier(int on);
-
#ifdef __cplusplus
}
#endif
diff --git a/libprocessgroup/OWNERS b/libprocessgroup/OWNERS
index 8ebb8cc..d5aa721 100644
--- a/libprocessgroup/OWNERS
+++ b/libprocessgroup/OWNERS
@@ -1,2 +1,4 @@
-ccross@google.com
+# Bug component: 1293033
surenb@google.com
+tjmercier@google.com
+carlosgalo@google.com
diff --git a/libprocessgroup/include/processgroup/processgroup.h b/libprocessgroup/include/processgroup/processgroup.h
index 45a723f..9b2d775 100644
--- a/libprocessgroup/include/processgroup/processgroup.h
+++ b/libprocessgroup/include/processgroup/processgroup.h
@@ -28,6 +28,7 @@
static constexpr const char* CGROUPV2_CONTROLLER_NAME = "cgroup2";
+bool CgroupsAvailable();
bool CgroupGetControllerPath(const std::string& cgroup_name, std::string* path);
bool CgroupGetControllerFromPath(const std::string& path, std::string* cgroup_name);
bool CgroupGetAttributePath(const std::string& attr_name, std::string* path);
diff --git a/libprocessgroup/processgroup.cpp b/libprocessgroup/processgroup.cpp
index bdda102..1da69ba 100644
--- a/libprocessgroup/processgroup.cpp
+++ b/libprocessgroup/processgroup.cpp
@@ -55,6 +55,11 @@
#define PROCESSGROUP_CGROUP_PROCS_FILE "/cgroup.procs"
+bool CgroupsAvailable() {
+ static bool cgroups_available = access("/proc/cgroups", F_OK) == 0;
+ return cgroups_available;
+}
+
bool CgroupGetControllerPath(const std::string& cgroup_name, std::string* path) {
auto controller = CgroupMap::GetInstance().FindController(cgroup_name);
@@ -362,59 +367,70 @@
// Returns 0 if there are no processes in the process cgroup left to kill
// Returns -1 on error
static int DoKillProcessGroupOnce(const char* cgroup, uid_t uid, int initialPid, int signal) {
- auto path = ConvertUidPidToPath(cgroup, uid, initialPid) + PROCESSGROUP_CGROUP_PROCS_FILE;
- std::unique_ptr<FILE, decltype(&fclose)> fd(fopen(path.c_str(), "re"), fclose);
- if (!fd) {
- if (errno == ENOENT) {
- // This happens when process is already dead
- return 0;
- }
- PLOG(WARNING) << __func__ << " failed to open process cgroup uid " << uid << " pid "
- << initialPid;
- return -1;
- }
-
// We separate all of the pids in the cgroup into those pids that are also the leaders of
// process groups (stored in the pgids set) and those that are not (stored in the pids set).
std::set<pid_t> pgids;
pgids.emplace(initialPid);
std::set<pid_t> pids;
- pid_t pid;
+ std::unique_ptr<FILE, decltype(&fclose)> fd(nullptr, fclose);
+
+ if (CgroupsAvailable()) {
+ auto path = ConvertUidPidToPath(cgroup, uid, initialPid) + PROCESSGROUP_CGROUP_PROCS_FILE;
+ fd.reset(fopen(path.c_str(), "re"));
+ if (!fd) {
+ if (errno == ENOENT) {
+ // This happens when process is already dead
+ return 0;
+ }
+ PLOG(WARNING) << __func__ << " failed to open process cgroup uid " << uid << " pid "
+ << initialPid;
+ return -1;
+ }
+ pid_t pid;
+ bool file_is_empty = true;
+ while (fscanf(fd.get(), "%d\n", &pid) == 1 && pid >= 0) {
+ file_is_empty = false;
+ if (pid == 0) {
+ // Should never happen... but if it does, trying to kill this
+ // will boomerang right back and kill us! Let's not let that happen.
+ LOG(WARNING)
+ << "Yikes, we've been told to kill pid 0! How about we don't do that?";
+ continue;
+ }
+ pid_t pgid = getpgid(pid);
+ if (pgid == -1) PLOG(ERROR) << "getpgid(" << pid << ") failed";
+ if (pgid == pid) {
+ pgids.emplace(pid);
+ } else {
+ pids.emplace(pid);
+ }
+ }
+ if (file_is_empty) {
+ // This happens when process is already dead
+ return 0;
+ }
+
+ // Erase all pids that will be killed when we kill the process groups.
+ for (auto it = pids.begin(); it != pids.end();) {
+ pid_t pgid = getpgid(*it);
+ if (pgids.count(pgid) == 1) {
+ it = pids.erase(it);
+ } else {
+ ++it;
+ }
+ }
+ }
+
int processes = 0;
- while (fscanf(fd.get(), "%d\n", &pid) == 1 && pid >= 0) {
- processes++;
- if (pid == 0) {
- // Should never happen... but if it does, trying to kill this
- // will boomerang right back and kill us! Let's not let that happen.
- LOG(WARNING) << "Yikes, we've been told to kill pid 0! How about we don't do that?";
- continue;
- }
- pid_t pgid = getpgid(pid);
- if (pgid == -1) PLOG(ERROR) << "getpgid(" << pid << ") failed";
- if (pgid == pid) {
- pgids.emplace(pid);
- } else {
- pids.emplace(pid);
- }
- }
-
- // Erase all pids that will be killed when we kill the process groups.
- for (auto it = pids.begin(); it != pids.end();) {
- pid_t pgid = getpgid(*it);
- if (pgids.count(pgid) == 1) {
- it = pids.erase(it);
- } else {
- ++it;
- }
- }
-
// Kill all process groups.
for (const auto pgid : pgids) {
LOG(VERBOSE) << "Killing process group " << -pgid << " in uid " << uid
<< " as part of process cgroup " << initialPid;
- if (kill(-pgid, signal) == -1 && errno != ESRCH) {
+ if (kill(-pgid, signal) == 0) {
+ processes++;
+ } else if (errno != ESRCH) {
PLOG(WARNING) << "kill(" << -pgid << ", " << signal << ") failed";
}
}
@@ -424,18 +440,22 @@
LOG(VERBOSE) << "Killing pid " << pid << " in uid " << uid << " as part of process cgroup "
<< initialPid;
- if (kill(pid, signal) == -1 && errno != ESRCH) {
+ if (kill(pid, signal) == 0) {
+ processes++;
+ } else if (errno != ESRCH) {
PLOG(WARNING) << "kill(" << pid << ", " << signal << ") failed";
}
}
- return feof(fd.get()) ? processes : -1;
+ return (!fd || feof(fd.get())) ? processes : -1;
}
static int KillProcessGroup(uid_t uid, int initialPid, int signal, int retries,
int* max_processes) {
std::string hierarchy_root_path;
- CgroupGetControllerPath(CGROUPV2_CONTROLLER_NAME, &hierarchy_root_path);
+ if (CgroupsAvailable()) {
+ CgroupGetControllerPath(CGROUPV2_CONTROLLER_NAME, &hierarchy_root_path);
+ }
const char* cgroup = hierarchy_root_path.c_str();
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now();
@@ -451,6 +471,11 @@
*max_processes = processes;
}
LOG(VERBOSE) << "Killed " << processes << " processes for processgroup " << initialPid;
+ if (!CgroupsAvailable()) {
+ // makes no sense to retry, because there are no cgroup_procs file
+ processes = 0; // no remaining processes
+ break;
+ }
if (retry > 0) {
std::this_thread::sleep_for(5ms);
--retry;
@@ -480,6 +505,11 @@
<< " in " << static_cast<int>(ms) << "ms";
}
+ if (!CgroupsAvailable()) {
+ // nothing to do here, if cgroups isn't available
+ return 0;
+ }
+
// 400 retries correspond to 2 secs max timeout
int err = RemoveProcessGroup(cgroup, uid, initialPid, 400);
diff --git a/libprocessgroup/profiles/task_profiles.json b/libprocessgroup/profiles/task_profiles.json
index 15f95fc..e44d3bf 100644
--- a/libprocessgroup/profiles/task_profiles.json
+++ b/libprocessgroup/profiles/task_profiles.json
@@ -80,17 +80,20 @@
{
"Name": "BfqWeight",
"Controller": "io",
- "File": "io.bfq.weight"
+ "File": "blkio.bfq.weight",
+ "FileV2": "io.bfq.weight"
},
{
"Name": "CfqGroupIdle",
"Controller": "io",
- "File": "io.group_idle"
+ "File": "blkio.group_idle",
+ "FileV2": "io.group_idle"
},
{
"Name": "CfqWeight",
"Controller": "io",
- "File": "io.weight"
+ "File": "blkio.weight",
+ "FileV2": "io.weight"
}
],
@@ -459,7 +462,7 @@
{
"Controller": "blkio",
"Path": "background"
- }
+ }
},
{
"Name": "SetAttribute",
@@ -499,7 +502,7 @@
{
"Controller": "blkio",
"Path": ""
- }
+ }
},
{
"Name": "SetAttribute",
@@ -539,7 +542,7 @@
{
"Controller": "blkio",
"Path": ""
- }
+ }
},
{
"Name": "SetAttribute",
@@ -579,7 +582,7 @@
{
"Controller": "blkio",
"Path": ""
- }
+ }
},
{
"Name": "SetAttribute",
@@ -806,6 +809,10 @@
"Profiles": [ "Dex2oatPerformance", "LowIoPriority", "TimerSlackHigh" ]
},
{
+ "Name": "Dex2OatBackground",
+ "Profiles": [ "Dex2OatBootComplete" ]
+ },
+ {
"Name": "OtaProfiles",
"Profiles": [ "ServiceCapacityLow", "LowIoPriority", "HighEnergySaving" ]
}
diff --git a/libprocessgroup/task_profiles.cpp b/libprocessgroup/task_profiles.cpp
index 744710f..35adf36 100644
--- a/libprocessgroup/task_profiles.cpp
+++ b/libprocessgroup/task_profiles.cpp
@@ -287,7 +287,7 @@
if (cache_type == ResourceCacheType::RCT_TASK &&
fd_[cache_type] == FdCacheHelper::FDS_APP_DEPENDENT) {
// application-dependent path can't be used with tid
- PLOG(ERROR) << "Application profile can't be applied to a thread";
+ LOG(ERROR) << Name() << ": application profile can't be applied to a thread";
return ProfileAction::FAIL;
}
@@ -304,7 +304,7 @@
std::string procs_path = controller()->GetProcsFilePath(path_, uid, pid);
unique_fd tmp_fd(TEMP_FAILURE_RETRY(open(procs_path.c_str(), O_WRONLY | O_CLOEXEC)));
if (tmp_fd < 0) {
- PLOG(WARNING) << "Failed to open " << procs_path;
+ PLOG(WARNING) << Name() << "::" << __func__ << ": failed to open " << procs_path;
return false;
}
if (!AddTidToCgroup(pid, tmp_fd, controller()->name())) {
@@ -325,7 +325,7 @@
std::string tasks_path = controller()->GetTasksFilePath(path_);
unique_fd tmp_fd(TEMP_FAILURE_RETRY(open(tasks_path.c_str(), O_WRONLY | O_CLOEXEC)));
if (tmp_fd < 0) {
- PLOG(WARNING) << "Failed to open " << tasks_path;
+ PLOG(WARNING) << Name() << "::" << __func__ << ": failed to open " << tasks_path;
return false;
}
if (!AddTidToCgroup(tid, tmp_fd, controller()->name())) {
@@ -394,7 +394,7 @@
unique_fd tmp_fd(TEMP_FAILURE_RETRY(open(path.c_str(), O_WRONLY | O_CLOEXEC)));
if (tmp_fd < 0) {
- if (logfailures) PLOG(WARNING) << "Failed to open " << path;
+ if (logfailures) PLOG(WARNING) << Name() << "::" << __func__ << ": failed to open " << path;
return false;
}
@@ -431,7 +431,7 @@
if (cache_type == ResourceCacheType::RCT_TASK &&
fd_[cache_type] == FdCacheHelper::FDS_APP_DEPENDENT) {
// application-dependent path can't be used with tid
- PLOG(ERROR) << "Application profile can't be applied to a thread";
+ LOG(ERROR) << Name() << ": application profile can't be applied to a thread";
return ProfileAction::FAIL;
}
return ProfileAction::UNUSED;
diff --git a/libsparse/append2simg.cpp b/libsparse/append2simg.cpp
index 99f4339..d3a43a8 100644
--- a/libsparse/append2simg.cpp
+++ b/libsparse/append2simg.cpp
@@ -64,60 +64,60 @@
input_path = argv[2];
} else {
usage();
- exit(-1);
+ exit(EXIT_FAILURE);
}
ret = asprintf(&tmp_path, "%s.append2simg", output_path);
if (ret < 0) {
fprintf(stderr, "Couldn't allocate filename\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
output = open(output_path, O_RDWR | O_BINARY);
if (output < 0) {
fprintf(stderr, "Couldn't open output file (%s)\n", strerror(errno));
- exit(-1);
+ exit(EXIT_FAILURE);
}
sparse_output = sparse_file_import_auto(output, false, true);
if (!sparse_output) {
fprintf(stderr, "Couldn't import output file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
input = open(input_path, O_RDONLY | O_BINARY);
if (input < 0) {
fprintf(stderr, "Couldn't open input file (%s)\n", strerror(errno));
- exit(-1);
+ exit(EXIT_FAILURE);
}
input_len = lseek64(input, 0, SEEK_END);
if (input_len < 0) {
fprintf(stderr, "Couldn't get input file length (%s)\n", strerror(errno));
- exit(-1);
+ exit(EXIT_FAILURE);
} else if (input_len % sparse_output->block_size) {
fprintf(stderr, "Input file is not a multiple of the output file's block size");
- exit(-1);
+ exit(EXIT_FAILURE);
}
lseek64(input, 0, SEEK_SET);
output_block = sparse_output->len / sparse_output->block_size;
if (sparse_file_add_fd(sparse_output, input, 0, input_len, output_block) < 0) {
fprintf(stderr, "Couldn't add input file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
sparse_output->len += input_len;
tmp_fd = open(tmp_path, O_WRONLY | O_CREAT | O_BINARY, 0664);
if (tmp_fd < 0) {
fprintf(stderr, "Couldn't open temporary file (%s)\n", strerror(errno));
- exit(-1);
+ exit(EXIT_FAILURE);
}
lseek64(output, 0, SEEK_SET);
if (sparse_file_write(sparse_output, tmp_fd, false, true, false) < 0) {
fprintf(stderr, "Failed to write sparse file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
sparse_file_destroy(sparse_output);
@@ -128,10 +128,10 @@
ret = rename(tmp_path, output_path);
if (ret < 0) {
fprintf(stderr, "Failed to rename temporary file (%s)\n", strerror(errno));
- exit(-1);
+ exit(EXIT_FAILURE);
}
free(tmp_path);
- exit(0);
+ exit(EXIT_SUCCESS);
}
diff --git a/libsparse/img2simg.cpp b/libsparse/img2simg.cpp
index 51580f7..c390506 100644
--- a/libsparse/img2simg.cpp
+++ b/libsparse/img2simg.cpp
@@ -61,14 +61,14 @@
break;
default:
usage();
- exit(-1);
+ exit(EXIT_FAILURE);
}
}
extra = argc - optind;
if (extra < 2 || extra > 3) {
usage();
- exit(-1);
+ exit(EXIT_FAILURE);
}
if (extra == 3) {
@@ -77,7 +77,7 @@
if (block_size < 1024 || block_size % 4 != 0) {
usage();
- exit(-1);
+ exit(EXIT_FAILURE);
}
arg_in = argv[optind];
@@ -87,7 +87,7 @@
in = open(arg_in, O_RDONLY | O_BINARY);
if (in < 0) {
fprintf(stderr, "Cannot open input file %s\n", arg_in);
- exit(-1);
+ exit(EXIT_FAILURE);
}
}
@@ -98,7 +98,7 @@
out = open(arg_out, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0664);
if (out < 0) {
fprintf(stderr, "Cannot open output file %s\n", arg_out);
- exit(-1);
+ exit(EXIT_FAILURE);
}
}
@@ -108,24 +108,24 @@
s = sparse_file_new(block_size, len);
if (!s) {
fprintf(stderr, "Failed to create sparse file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
sparse_file_verbose(s);
ret = sparse_file_read(s, in, mode, false);
if (ret) {
fprintf(stderr, "Failed to read file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
ret = sparse_file_write(s, out, false, true, false);
if (ret) {
fprintf(stderr, "Failed to write sparse file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
close(in);
close(out);
- exit(0);
+ exit(EXIT_SUCCESS);
}
diff --git a/libsparse/simg2img.cpp b/libsparse/simg2img.cpp
index 8ba5f69..2301a83 100644
--- a/libsparse/simg2img.cpp
+++ b/libsparse/simg2img.cpp
@@ -41,13 +41,13 @@
if (argc < 3) {
usage();
- exit(-1);
+ exit(EXIT_FAILURE);
}
out = open(argv[argc - 1], O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0664);
if (out < 0) {
fprintf(stderr, "Cannot open output file %s\n", argv[argc - 1]);
- exit(-1);
+ exit(EXIT_FAILURE);
}
for (i = 1; i < argc - 1; i++) {
@@ -57,14 +57,14 @@
in = open(argv[i], O_RDONLY | O_BINARY);
if (in < 0) {
fprintf(stderr, "Cannot open input file %s\n", argv[i]);
- exit(-1);
+ exit(EXIT_FAILURE);
}
}
s = sparse_file_import(in, true, false);
if (!s) {
fprintf(stderr, "Failed to read sparse file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
if (lseek(out, 0, SEEK_SET) == -1) {
@@ -74,7 +74,7 @@
if (sparse_file_write(s, out, false, false, false) < 0) {
fprintf(stderr, "Cannot write output file\n");
- exit(-1);
+ exit(EXIT_FAILURE);
}
sparse_file_destroy(s);
close(in);
@@ -82,5 +82,5 @@
close(out);
- exit(0);
+ exit(EXIT_SUCCESS);
}
diff --git a/libsparse/simg2simg.cpp b/libsparse/simg2simg.cpp
deleted file mode 100644
index a2c296e..0000000
--- a/libsparse/simg2simg.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define _FILE_OFFSET_BITS 64
-#define _LARGEFILE64_SOURCE 1
-
-#include <fcntl.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <sparse/sparse.h>
-
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-void usage() {
- fprintf(stderr, "Usage: simg2simg <sparse image file> <sparse_image_file> <max_size>\n");
-}
-
-int main(int argc, char* argv[]) {
- int in;
- int out;
- int i;
- int ret;
- struct sparse_file* s;
- int64_t max_size;
- struct sparse_file** out_s;
- int files;
- char filename[4096];
-
- if (argc != 4) {
- usage();
- exit(-1);
- }
-
- max_size = atoll(argv[3]);
-
- in = open(argv[1], O_RDONLY | O_BINARY);
- if (in < 0) {
- fprintf(stderr, "Cannot open input file %s\n", argv[1]);
- exit(-1);
- }
-
- s = sparse_file_import(in, true, false);
- if (!s) {
- fprintf(stderr, "Failed to import sparse file\n");
- exit(-1);
- }
-
- files = sparse_file_resparse(s, max_size, nullptr, 0);
- if (files < 0) {
- fprintf(stderr, "Failed to resparse\n");
- exit(-1);
- }
-
- out_s = calloc(sizeof(struct sparse_file*), files);
- if (!out_s) {
- fprintf(stderr, "Failed to allocate sparse file array\n");
- exit(-1);
- }
-
- files = sparse_file_resparse(s, max_size, out_s, files);
- if (files < 0) {
- fprintf(stderr, "Failed to resparse\n");
- exit(-1);
- }
-
- for (i = 0; i < files; i++) {
- ret = snprintf(filename, sizeof(filename), "%s.%d", argv[2], i);
- if (ret >= (int)sizeof(filename)) {
- fprintf(stderr, "Filename too long\n");
- exit(-1);
- }
-
- out = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0664);
- if (out < 0) {
- fprintf(stderr, "Cannot open output file %s\n", argv[2]);
- exit(-1);
- }
-
- ret = sparse_file_write(out_s[i], out, false, true, false);
- if (ret) {
- fprintf(stderr, "Failed to write sparse file\n");
- exit(-1);
- }
- close(out);
- }
-
- close(in);
-
- exit(0);
-}
diff --git a/libsystem/include/system/graphics-base-v1.2.h b/libsystem/include/system/graphics-base-v1.2.h
index 2194f5e..624912c 100644
--- a/libsystem/include/system/graphics-base-v1.2.h
+++ b/libsystem/include/system/graphics-base-v1.2.h
@@ -14,13 +14,17 @@
} android_hdr_v1_2_t;
typedef enum {
- HAL_DATASPACE_DISPLAY_BT2020 = 142999552 /* ((STANDARD_BT2020 | TRANSFER_SRGB) | RANGE_FULL) */,
+ HAL_DATASPACE_DISPLAY_BT2020 = 142999552 /* STANDARD_BT2020 | TRANSFER_SRGB | RANGE_FULL */,
HAL_DATASPACE_DYNAMIC_DEPTH = 4098 /* 0x1002 */,
HAL_DATASPACE_JPEG_APP_SEGMENTS = 4099 /* 0x1003 */,
HAL_DATASPACE_HEIF = 4100 /* 0x1004 */,
} android_dataspace_v1_2_t;
typedef enum {
+ HAL_COLOR_MODE_DISPLAY_BT2020 = 13,
+} android_color_mode_v1_2_t;
+
+typedef enum {
HAL_PIXEL_FORMAT_HSV_888 = 55 /* 0x37 */,
} android_pixel_format_v1_2_t;
diff --git a/libutils/Android.bp b/libutils/Android.bp
index 26e1597..162f0f4 100644
--- a/libutils/Android.bp
+++ b/libutils/Android.bp
@@ -21,11 +21,13 @@
vendor_ramdisk_available: true,
host_supported: true,
native_bridge_supported: true,
+ defaults: [
+ "apex-lowest-min-sdk-version",
+ ],
apex_available: [
"//apex_available:platform",
"//apex_available:anyapex",
],
- min_sdk_version: "apex_inherit",
header_libs: [
"libbase_headers",
@@ -124,7 +126,10 @@
cc_defaults {
name: "libutils_impl_defaults",
- defaults: ["libutils_defaults"],
+ defaults: [
+ "libutils_defaults",
+ "apex-lowest-min-sdk-version",
+ ],
native_bridge_supported: true,
srcs: [
@@ -167,13 +172,8 @@
"//apex_available:anyapex",
"//apex_available:platform",
],
- min_sdk_version: "apex_inherit",
afdo: true,
-
- header_abi_checker: {
- diff_flags: ["-allow-adding-removing-weak-symbols"],
- },
}
cc_library {
@@ -184,6 +184,12 @@
enabled: true,
support_system_process: true,
},
+
+ header_abi_checker: {
+ // AFDO affects weak symbols.
+ diff_flags: ["-allow-adding-removing-weak-symbols"],
+ ref_dump_dirs: ["abi-dumps"],
+ },
}
cc_library {
diff --git a/libutils/String8.cpp b/libutils/String8.cpp
index 3690389..82f5cb6 100644
--- a/libutils/String8.cpp
+++ b/libutils/String8.cpp
@@ -25,6 +25,7 @@
#include <ctype.h>
+#include <limits>
#include <string>
#include "SharedBuffer.h"
diff --git a/libutils/Unicode_test.cpp b/libutils/Unicode_test.cpp
index 8b994d9..7969525 100644
--- a/libutils/Unicode_test.cpp
+++ b/libutils/Unicode_test.cpp
@@ -35,86 +35,208 @@
}
char16_t const * const kSearchString = u"I am a leaf on the wind.";
+
+ constexpr static size_t BUFSIZE = 64; // large enough for all tests
+
+ void TestUTF8toUTF16(std::initializer_list<uint8_t> input,
+ std::initializer_list<char16_t> expect,
+ const char* err_msg_length = "",
+ ssize_t expected_length = 0) {
+ uint8_t empty_str[] = {};
+ char16_t output[BUFSIZE];
+
+ const size_t inlen = input.size(), outlen = expect.size();
+ ASSERT_LT(outlen, BUFSIZE);
+
+ const uint8_t *input_data = inlen ? std::data(input) : empty_str;
+ ssize_t measured = utf8_to_utf16_length(input_data, inlen);
+ EXPECT_EQ(expected_length ? : (ssize_t)outlen, measured) << err_msg_length;
+
+ utf8_to_utf16(input_data, inlen, output, outlen + 1);
+ for (size_t i = 0; i < outlen; i++) {
+ EXPECT_EQ(std::data(expect)[i], output[i]);
+ }
+ EXPECT_EQ(0, output[outlen]) << "should be null terminated";
+ }
+
+ void TestUTF16toUTF8(std::initializer_list<char16_t> input,
+ std::initializer_list<char> expect,
+ const char* err_msg_length = "",
+ ssize_t expected_length = 0) {
+ char16_t empty_str[] = {};
+ char output[BUFSIZE];
+
+ const size_t inlen = input.size(), outlen = expect.size();
+ ASSERT_LT(outlen, BUFSIZE);
+
+ const char16_t *input_data = inlen ? std::data(input) : empty_str;
+ ssize_t measured = utf16_to_utf8_length(input_data, inlen);
+ EXPECT_EQ(expected_length ? : (ssize_t)outlen, measured) << err_msg_length;
+
+ utf16_to_utf8(input_data, inlen, output, outlen + 1);
+ for (size_t i = 0; i < outlen; i++) {
+ EXPECT_EQ(std::data(expect)[i], output[i]);
+ }
+ EXPECT_EQ(0, output[outlen]) << "should be null terminated";
+ }
};
TEST_F(UnicodeTest, UTF8toUTF16ZeroLength) {
- ssize_t measured;
-
- const uint8_t str[] = { };
-
- measured = utf8_to_utf16_length(str, 0);
- EXPECT_EQ(0, measured)
- << "Zero length input should return zero length output.";
+ TestUTF8toUTF16({}, {},
+ "Zero length input should return zero length output.");
}
-TEST_F(UnicodeTest, UTF8toUTF16ASCIILength) {
- ssize_t measured;
-
- // U+0030 or ASCII '0'
- const uint8_t str[] = { 0x30 };
-
- measured = utf8_to_utf16_length(str, sizeof(str));
- EXPECT_EQ(1, measured)
- << "ASCII glyphs should have a length of 1 char16_t";
+TEST_F(UnicodeTest, UTF8toUTF16ASCII) {
+ TestUTF8toUTF16(
+ { 0x30 }, // U+0030 or ASCII '0'
+ { 0x0030 },
+ "ASCII codepoints should have a length of 1 char16_t");
}
-TEST_F(UnicodeTest, UTF8toUTF16Plane1Length) {
- ssize_t measured;
-
- // U+2323 SMILE
- const uint8_t str[] = { 0xE2, 0x8C, 0xA3 };
-
- measured = utf8_to_utf16_length(str, sizeof(str));
- EXPECT_EQ(1, measured)
- << "Plane 1 glyphs should have a length of 1 char16_t";
+TEST_F(UnicodeTest, UTF8toUTF16Plane1) {
+ TestUTF8toUTF16(
+ { 0xE2, 0x8C, 0xA3 }, // U+2323 SMILE
+ { 0x2323 },
+ "Plane 1 codepoints should have a length of 1 char16_t");
}
-TEST_F(UnicodeTest, UTF8toUTF16SurrogateLength) {
- ssize_t measured;
-
- // U+10000
- const uint8_t str[] = { 0xF0, 0x90, 0x80, 0x80 };
-
- measured = utf8_to_utf16_length(str, sizeof(str));
- EXPECT_EQ(2, measured)
- << "Surrogate pairs should have a length of 2 char16_t";
+TEST_F(UnicodeTest, UTF8toUTF16Surrogate) {
+ TestUTF8toUTF16(
+ { 0xF0, 0x90, 0x80, 0x80 }, // U+10000
+ { 0xD800, 0xDC00 },
+ "Surrogate pairs should have a length of 2 char16_t");
}
TEST_F(UnicodeTest, UTF8toUTF16TruncatedUTF8) {
- ssize_t measured;
-
- // Truncated U+2323 SMILE
- // U+2323 SMILE
- const uint8_t str[] = { 0xE2, 0x8C };
-
- measured = utf8_to_utf16_length(str, sizeof(str));
- EXPECT_EQ(-1, measured)
- << "Truncated UTF-8 should return -1 to indicate invalid";
+ TestUTF8toUTF16(
+ { 0xE2, 0x8C }, // Truncated U+2323 SMILE
+ { }, // Conversion should still work but produce nothing
+ "Truncated UTF-8 should return -1 to indicate invalid",
+ -1);
}
TEST_F(UnicodeTest, UTF8toUTF16Normal) {
- const uint8_t str[] = {
- 0x30, // U+0030, 1 UTF-16 character
- 0xC4, 0x80, // U+0100, 1 UTF-16 character
- 0xE2, 0x8C, 0xA3, // U+2323, 1 UTF-16 character
+ TestUTF8toUTF16({
+ 0x30, // U+0030, 1 UTF-16 character
+ 0xC4, 0x80, // U+0100, 1 UTF-16 character
+ 0xE2, 0x8C, 0xA3, // U+2323, 1 UTF-16 character
0xF0, 0x90, 0x80, 0x80, // U+10000, 2 UTF-16 character
- };
+ }, {
+ 0x0030,
+ 0x0100,
+ 0x2323,
+ 0xD800, 0xDC00
+ });
+}
- char16_t output[1 + 1 + 1 + 2 + 1]; // Room for null
+TEST_F(UnicodeTest, UTF8toUTF16Invalid) {
+ // TODO: The current behavior of utf8_to_utf16 is to treat invalid
+ // leading byte (>= 0xf8) as a 4-byte UTF8 sequence, and to treat
+ // invalid trailing byte(s) (i.e. bytes not having MSB set) as if
+ // they are valid and do the normal conversion. However, a better
+ // handling would be to treat invalid sequences as errors, such
+ // cases need to be reported and invalid characters (e.g. U+FFFD)
+ // could be produced at the place of error. Until a fix is ready
+ // and compatibility is not an issue, we will keep testing the
+ // current behavior
+ TestUTF8toUTF16({
+ 0xf8, // invalid leading byte
+ 0xc4, 0x00, // U+0100 with invalid trailing byte
+ 0xe2, 0x0c, 0xa3, // U+2323 with invalid trailing bytes
+ 0xf0, 0x10, 0x00, 0x00, // U+10000 with invalid trailing bytes
+ }, {
+ 0x4022, // invalid leading byte (>=0xfc) is treated
+ // as valid for 4-byte UTF8 sequence
+ 0x000C,
+ 0x00A3, // invalid leadnig byte (b'10xxxxxx) is
+ // treated as valid single UTF-8 byte
+ 0xD800, // invalid trailing bytes are treated
+ 0xDC00, // as valid bytes and follow normal
+ });
+}
- utf8_to_utf16(str, sizeof(str), output, sizeof(output) / sizeof(output[0]));
+TEST_F(UnicodeTest, UTF16toUTF8ZeroLength) {
+ // TODO: The current behavior of utf16_to_utf8_length() is that
+ // it returns -1 if the input is a zero length UTF16 string.
+ // This is inconsistent with utf8_to_utf16_length() where a zero
+ // length string returns 0. However, to fix the current behavior,
+ // we could have compatibility issue. Until then, we will keep
+ // testing the current behavior
+ TestUTF16toUTF8({}, {},
+ "Zero length UTF16 input should return length of -1.", -1);
+}
- EXPECT_EQ(0x0030, output[0])
- << "should be U+0030";
- EXPECT_EQ(0x0100, output[1])
- << "should be U+0100";
- EXPECT_EQ(0x2323, output[2])
- << "should be U+2323";
- EXPECT_EQ(0xD800, output[3])
- << "should be first half of surrogate U+10000";
- EXPECT_EQ(0xDC00, output[4])
- << "should be second half of surrogate U+10000";
- EXPECT_EQ(0, output[5]) << "should be null terminated";
+TEST_F(UnicodeTest, UTF16toUTF8ASCII) {
+ TestUTF16toUTF8(
+ { 0x0030 }, // U+0030 or ASCII '0'
+ { '\x30' },
+ "ASCII codepoints in UTF16 should give a length of 1 in UTF8");
+}
+
+TEST_F(UnicodeTest, UTF16toUTF8Plane1) {
+ TestUTF16toUTF8(
+ { 0x2323 }, // U+2323 SMILE
+ { '\xE2', '\x8C', '\xA3' },
+ "Plane 1 codepoints should have a length of 3 char in UTF-8");
+}
+
+TEST_F(UnicodeTest, UTF16toUTF8Surrogate) {
+ TestUTF16toUTF8(
+ { 0xD800, 0xDC00 }, // U+10000
+ { '\xF0', '\x90', '\x80', '\x80' },
+ "Surrogate pairs should have a length of 4 chars");
+}
+
+TEST_F(UnicodeTest, UTF16toUTF8UnpairedSurrogate) {
+ TestUTF16toUTF8(
+ { 0xD800 }, // U+10000 with high surrogate pair only
+ { }, // Unpaired surrogate should be ignored
+ "A single unpaired high surrogate should have a length of 0 chars");
+
+ TestUTF16toUTF8(
+ { 0xDC00 }, // U+10000 with low surrogate pair only
+ { }, // Unpaired surrogate should be ignored
+ "A single unpaired low surrogate should have a length of 0 chars");
+
+ TestUTF16toUTF8(
+ // U+0030, U+0100, U+10000 with high surrogate pair only, U+2323
+ { 0x0030, 0x0100, 0xDC00, 0x2323 },
+ { '\x30', '\xC4', '\x80', '\xE2', '\x8C', '\xA3' },
+ "Unpaired high surrogate should be skipped in the middle");
+
+ TestUTF16toUTF8(
+ // U+0030, U+0100, U+10000 with high surrogate pair only, U+2323
+ { 0x0030, 0x0100, 0xDC00, 0x2323 },
+ { '\x30', '\xC4', '\x80', '\xE2', '\x8C', '\xA3' },
+ "Unpaired low surrogate should be skipped in the middle");
+}
+
+TEST_F(UnicodeTest, UTF16toUTF8CorrectInvalidSurrogate) {
+ // http://b/29250543
+ // d841d8 is an invalid start for a surrogate pair. Make sure this is handled by ignoring the
+ // first character in the pair and handling the rest correctly.
+ TestUTF16toUTF8(
+ { 0xD841, 0xD841, 0xDC41 }, // U+20441
+ { '\xF0', '\xA0', '\x91', '\x81' },
+ "Invalid start for a surrogate pair should be ignored");
+}
+
+TEST_F(UnicodeTest, UTF16toUTF8Normal) {
+ TestUTF16toUTF8({
+ 0x0024, // U+0024 ($) --> 0x24, 1 UTF-8 byte
+ 0x00A3, // U+00A3 (£) --> 0xC2 0xA3, 2 UTF-8 bytes
+ 0x0939, // U+0939 (ह) --> 0xE0 0xA4 0xB9, 3 UTF-8 bytes
+ 0x20AC, // U+20AC (€) --> 0xE2 0x82 0xAC, 3 UTF-8 bytes
+ 0xD55C, // U+D55C (한)--> 0xED 0x95 0x9C, 3 UTF-8 bytes
+ 0xD801, 0xDC37, // U+10437 (𐐷) --> 0xF0 0x90 0x90 0xB7, 4 UTF-8 bytes
+ }, {
+ '\x24',
+ '\xC2', '\xA3',
+ '\xE0', '\xA4', '\xB9',
+ '\xE2', '\x82', '\xAC',
+ '\xED', '\x95', '\x9C',
+ '\xF0', '\x90', '\x90', '\xB7',
+ });
}
TEST_F(UnicodeTest, strstr16EmptyTarget) {
diff --git a/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump b/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump
new file mode 100644
index 0000000..c89af9e
--- /dev/null
+++ b/libutils/abi-dumps/arm64/source-based/libutils.so.lsdump
@@ -0,0 +1,15553 @@
+{
+ "array_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIA0_i",
+ "name" : "int[0]",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIA0_i",
+ "source_file" : "system/core/libcutils/include_outside_system/cutils/native_handle.h"
+ },
+ {
+ "alignment" : 2,
+ "linker_set_key" : "_ZTIA1_Ds",
+ "name" : "char16_t[1]",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIA1_Ds",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIA20_c",
+ "name" : "char[20]",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIA20_c",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIA5121_h",
+ "name" : "unsigned char[5121]",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIA5121_h",
+ "size" : 5121,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIA8_j",
+ "name" : "unsigned int[8]",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIA8_j",
+ "size" : 32,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "linker_set_key" : "_ZTIA_f",
+ "name" : "float[]",
+ "referenced_type" : "_ZTIf",
+ "self_type" : "_ZTIA_f",
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ }
+ ],
+ "builtin_types" :
+ [
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIDi",
+ "name" : "char32_t",
+ "referenced_type" : "_ZTIDi",
+ "self_type" : "_ZTIDi",
+ "size" : 4
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIDn",
+ "name" : "std::nullptr_t",
+ "referenced_type" : "_ZTIDn",
+ "self_type" : "_ZTIDn",
+ "size" : 8
+ },
+ {
+ "alignment" : 2,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIDs",
+ "name" : "char16_t",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIDs",
+ "size" : 2
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIa",
+ "name" : "signed char",
+ "referenced_type" : "_ZTIa",
+ "self_type" : "_ZTIa",
+ "size" : 1
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIb",
+ "name" : "bool",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIb",
+ "size" : 1
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIc",
+ "name" : "char",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIc",
+ "size" : 1
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTId",
+ "name" : "double",
+ "referenced_type" : "_ZTId",
+ "self_type" : "_ZTId",
+ "size" : 8
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIf",
+ "name" : "float",
+ "referenced_type" : "_ZTIf",
+ "self_type" : "_ZTIf",
+ "size" : 4
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIh",
+ "name" : "unsigned char",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIh",
+ "size" : 1
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIi",
+ "name" : "int",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIi",
+ "size" : 4
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIj",
+ "name" : "unsigned int",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIj",
+ "size" : 4
+ },
+ {
+ "alignment" : 8,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIl",
+ "name" : "long",
+ "referenced_type" : "_ZTIl",
+ "self_type" : "_ZTIl",
+ "size" : 8
+ },
+ {
+ "alignment" : 8,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIm",
+ "name" : "unsigned long",
+ "referenced_type" : "_ZTIm",
+ "self_type" : "_ZTIm",
+ "size" : 8
+ },
+ {
+ "alignment" : 2,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIs",
+ "name" : "short",
+ "referenced_type" : "_ZTIs",
+ "self_type" : "_ZTIs",
+ "size" : 2
+ },
+ {
+ "alignment" : 2,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIt",
+ "name" : "unsigned short",
+ "referenced_type" : "_ZTIt",
+ "self_type" : "_ZTIt",
+ "size" : 2
+ },
+ {
+ "linker_set_key" : "_ZTIv",
+ "name" : "void",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIv"
+ },
+ {
+ "alignment" : 8,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIx",
+ "name" : "long long",
+ "referenced_type" : "_ZTIx",
+ "self_type" : "_ZTIx",
+ "size" : 8
+ },
+ {
+ "alignment" : 8,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIy",
+ "name" : "unsigned long long",
+ "referenced_type" : "_ZTIy",
+ "self_type" : "_ZTIy",
+ "size" : 8
+ }
+ ],
+ "elf_functions" :
+ [
+ {
+ "name" : "_Z24androidCreateThreadGetIDPFiPvES_PS_"
+ },
+ {
+ "name" : "_ZN7android10LogPrinter8printRawEPKc"
+ },
+ {
+ "name" : "_ZN7android10LogPrinter9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android10LogPrinterC1EPKc19android_LogPriorityS2_b"
+ },
+ {
+ "name" : "_ZN7android10LogPrinterC2EPKc19android_LogPriorityS2_b"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl11appendArrayEPKvm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl11setCapacityEm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl12appendVectorERKS0_"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13editArrayImplEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13finish_vectorEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13insertArrayAtEPKvmm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13removeItemsAtEmm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl14insertVectorAtERKS0_m"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl15release_storageEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl16editItemLocationEm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl3addEPKv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl3addEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl3popEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4pushEPKv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4pushEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4sortEPFiPKvS2_E"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4sortEPFiPKvS2_PvES3_"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl5_growEmm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl5clearEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl6resizeEm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl7_shrinkEmm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl8insertAtEPKvmm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl8insertAtEmm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl9replaceAtEPKvm"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl9replaceAtEm"
+ },
+ {
+ "name" : "_ZN7android10VectorImplC2ERKS0_"
+ },
+ {
+ "name" : "_ZN7android10VectorImplC2Emj"
+ },
+ {
+ "name" : "_ZN7android10VectorImplD0Ev"
+ },
+ {
+ "name" : "_ZN7android10VectorImplD1Ev"
+ },
+ {
+ "name" : "_ZN7android10VectorImplD2Ev"
+ },
+ {
+ "name" : "_ZN7android10VectorImplaSERKS0_"
+ },
+ {
+ "name" : "_ZN7android11uptimeNanosEv"
+ },
+ {
+ "name" : "_ZN7android12NativeHandle6createEP13native_handleb"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleC1EP13native_handleb"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleC2EP13native_handleb"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleD1Ev"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleD2Ev"
+ },
+ {
+ "name" : "_ZN7android12SharedBuffer5allocEm"
+ },
+ {
+ "name" : "_ZN7android12SharedBuffer7deallocEPKS0_"
+ },
+ {
+ "name" : "_ZN7android12uptimeMillisEv"
+ },
+ {
+ "name" : "_ZN7android13PrefixPrinter9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android13PrefixPrinterC1ERNS_7PrinterEPKc"
+ },
+ {
+ "name" : "_ZN7android13PrefixPrinterC2ERNS_7PrinterEPKc"
+ },
+ {
+ "name" : "_ZN7android14LooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZN7android14LooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZN7android14LooperCallbackD2Ev"
+ },
+ {
+ "name" : "_ZN7android14MessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZN7android14MessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZN7android14MessageHandlerD2Ev"
+ },
+ {
+ "name" : "_ZN7android14String8Printer9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android14String8PrinterC1EPNS_7String8EPKc"
+ },
+ {
+ "name" : "_ZN7android14String8PrinterC2EPNS_7String8EPKc"
+ },
+ {
+ "name" : "_ZN7android14sp_report_raceEv"
+ },
+ {
+ "name" : "_ZN7android14statusToStringEi"
+ },
+ {
+ "name" : "_ZN7android15elapsedRealtimeEv"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl3addEPKv"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl5mergeERKNS_10VectorImplE"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl5mergeERKS0_"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl6removeEPKv"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplC2ERKNS_10VectorImplE"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplC2Emj"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplD0Ev"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplD1Ev"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplD2Ev"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplaSERKS0_"
+ },
+ {
+ "name" : "_ZN7android17JenkinsHashWhitenEj"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandler13handleMessageERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerC1ERKNS_2wpINS_14MessageHandlerEEE"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerC2ERKNS_2wpINS_14MessageHandlerEEE"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerD2Ev"
+ },
+ {
+ "name" : "_ZN7android19JenkinsHashMixBytesEjPKhm"
+ },
+ {
+ "name" : "_ZN7android19elapsedRealtimeNanoEv"
+ },
+ {
+ "name" : "_ZN7android20JenkinsHashMixShortsEjPKtm"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallback11handleEventEiiPv"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackC1EPFiiiPvE"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackC2EPFiiiPvE"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackD2Ev"
+ },
+ {
+ "name" : "_ZN7android21report_sysprop_changeEv"
+ },
+ {
+ "name" : "_ZN7android23sp_report_stack_pointerEv"
+ },
+ {
+ "name" : "_ZN7android27add_sysprop_change_callbackEPFvvEi"
+ },
+ {
+ "name" : "_ZN7android30get_report_sysprop_change_funcEv"
+ },
+ {
+ "name" : "_ZN7android47LightRefBase_reportIncStrongRequireStrongFailedEPKv"
+ },
+ {
+ "name" : "_ZN7android6Looper10initTLSKeyEv"
+ },
+ {
+ "name" : "_ZN7android6Looper11sendMessageERKNS_2spINS_14MessageHandlerEEERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android6Looper12getForThreadEv"
+ },
+ {
+ "name" : "_ZN7android6Looper12setForThreadERKNS_2spIS0_EE"
+ },
+ {
+ "name" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEE"
+ },
+ {
+ "name" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEEi"
+ },
+ {
+ "name" : "_ZN7android6Looper16threadDestructorEPv"
+ },
+ {
+ "name" : "_ZN7android6Looper17sendMessageAtTimeElRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android6Looper18rebuildEpollLockedEv"
+ },
+ {
+ "name" : "_ZN7android6Looper18sendMessageDelayedElRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android6Looper26removeSequenceNumberLockedEm"
+ },
+ {
+ "name" : "_ZN7android6Looper26scheduleEpollRebuildLockedEv"
+ },
+ {
+ "name" : "_ZN7android6Looper4wakeEv"
+ },
+ {
+ "name" : "_ZN7android6Looper5addFdEiiiPFiiiPvES1_"
+ },
+ {
+ "name" : "_ZN7android6Looper5addFdEiiiRKNS_2spINS_14LooperCallbackEEEPv"
+ },
+ {
+ "name" : "_ZN7android6Looper6awokenEv"
+ },
+ {
+ "name" : "_ZN7android6Looper7pollAllEiPiS1_PPv"
+ },
+ {
+ "name" : "_ZN7android6Looper7prepareEi"
+ },
+ {
+ "name" : "_ZN7android6Looper8pollOnceEiPiS1_PPv"
+ },
+ {
+ "name" : "_ZN7android6Looper8removeFdEi"
+ },
+ {
+ "name" : "_ZN7android6Looper9pollInnerEi"
+ },
+ {
+ "name" : "_ZN7android6LooperC1Eb"
+ },
+ {
+ "name" : "_ZN7android6LooperC2Eb"
+ },
+ {
+ "name" : "_ZN7android6LooperD0Ev"
+ },
+ {
+ "name" : "_ZN7android6LooperD1Ev"
+ },
+ {
+ "name" : "_ZN7android6LooperD2Ev"
+ },
+ {
+ "name" : "_ZN7android6Thread10readyToRunEv"
+ },
+ {
+ "name" : "_ZN7android6Thread11_threadLoopEPv"
+ },
+ {
+ "name" : "_ZN7android6Thread11requestExitEv"
+ },
+ {
+ "name" : "_ZN7android6Thread18requestExitAndWaitEv"
+ },
+ {
+ "name" : "_ZN7android6Thread3runEPKcim"
+ },
+ {
+ "name" : "_ZN7android6Thread4joinEv"
+ },
+ {
+ "name" : "_ZN7android6ThreadC2Eb"
+ },
+ {
+ "name" : "_ZN7android6ThreadD0Ev"
+ },
+ {
+ "name" : "_ZN7android6ThreadD1Ev"
+ },
+ {
+ "name" : "_ZN7android6ThreadD2Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMap6adviseENS0_9MapAdviceE"
+ },
+ {
+ "name" : "_ZN7android7FileMap6createEPKcilmb"
+ },
+ {
+ "name" : "_ZN7android7FileMapC1EOS0_"
+ },
+ {
+ "name" : "_ZN7android7FileMapC1Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapC2EOS0_"
+ },
+ {
+ "name" : "_ZN7android7FileMapC2Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapD1Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapD2Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapaSEOS0_"
+ },
+ {
+ "name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "name" : "_ZN7android7PrinterC2Ev"
+ },
+ {
+ "name" : "_ZN7android7PrinterD0Ev"
+ },
+ {
+ "name" : "_ZN7android7PrinterD1Ev"
+ },
+ {
+ "name" : "_ZN7android7PrinterD2Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "name" : "_ZN7android7RefBase10renameRefsEmRKNS_16ReferenceRenamerE"
+ },
+ {
+ "name" : "_ZN7android7RefBase11renameRefIdEPNS0_12weakref_typeEPKvS4_"
+ },
+ {
+ "name" : "_ZN7android7RefBase11renameRefIdEPS0_PKvS3_"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type14attemptIncWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type16attemptIncStrongEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type18incWeakRequireWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type7decWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type7incWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type7trackMeEbb"
+ },
+ {
+ "name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase20extendObjectLifetimeEi"
+ },
+ {
+ "name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBaseC1Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseC2Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseD0Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseD1Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseD2Ev"
+ },
+ {
+ "name" : "_ZN7android7String810appendPathEPKc"
+ },
+ {
+ "name" : "_ZN7android7String810lockBufferEm"
+ },
+ {
+ "name" : "_ZN7android7String811real_appendEPKcm"
+ },
+ {
+ "name" : "_ZN7android7String812appendFormatEPKcz"
+ },
+ {
+ "name" : "_ZN7android7String812unlockBufferEm"
+ },
+ {
+ "name" : "_ZN7android7String812unlockBufferEv"
+ },
+ {
+ "name" : "_ZN7android7String813appendFormatVEPKcSt9__va_list"
+ },
+ {
+ "name" : "_ZN7android7String816convertToResPathEv"
+ },
+ {
+ "name" : "_ZN7android7String85clearEv"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKDim"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKDsm"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKc"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKcm"
+ },
+ {
+ "name" : "_ZN7android7String85setToERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String86appendEPKc"
+ },
+ {
+ "name" : "_ZN7android7String86appendEPKcm"
+ },
+ {
+ "name" : "_ZN7android7String86appendERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String86formatEPKcz"
+ },
+ {
+ "name" : "_ZN7android7String87formatVEPKcSt9__va_list"
+ },
+ {
+ "name" : "_ZN7android7String87toLowerEv"
+ },
+ {
+ "name" : "_ZN7android7String89removeAllEPKc"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDi"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDim"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDs"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDsm"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKc"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKcm"
+ },
+ {
+ "name" : "_ZN7android7String8C1ERKNS_8String16E"
+ },
+ {
+ "name" : "_ZN7android7String8C1ERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String8C1Ev"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDi"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDim"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDs"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDsm"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKc"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKcm"
+ },
+ {
+ "name" : "_ZN7android7String8C2ERKNS_8String16E"
+ },
+ {
+ "name" : "_ZN7android7String8C2ERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String8C2Ev"
+ },
+ {
+ "name" : "_ZN7android7String8D1Ev"
+ },
+ {
+ "name" : "_ZN7android7String8D2Ev"
+ },
+ {
+ "name" : "_ZN7android8String1610editResizeEm"
+ },
+ {
+ "name" : "_ZN7android8String1610replaceAllEDsDs"
+ },
+ {
+ "name" : "_ZN7android8String1613allocFromUTF8EPKcm"
+ },
+ {
+ "name" : "_ZN7android8String1614allocFromUTF16EPKDsm"
+ },
+ {
+ "name" : "_ZN7android8String164editEv"
+ },
+ {
+ "name" : "_ZN7android8String165allocEm"
+ },
+ {
+ "name" : "_ZN7android8String165setToEPKDs"
+ },
+ {
+ "name" : "_ZN7android8String165setToEPKDsm"
+ },
+ {
+ "name" : "_ZN7android8String165setToERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String165setToERKS0_mm"
+ },
+ {
+ "name" : "_ZN7android8String166appendEPKDsm"
+ },
+ {
+ "name" : "_ZN7android8String166appendERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String166insertEmPKDs"
+ },
+ {
+ "name" : "_ZN7android8String166insertEmPKDsm"
+ },
+ {
+ "name" : "_ZN7android8String167acquireEv"
+ },
+ {
+ "name" : "_ZN7android8String167releaseEv"
+ },
+ {
+ "name" : "_ZN7android8String16C1EOS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKDs"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKDsm"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKc"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKcm"
+ },
+ {
+ "name" : "_ZN7android8String16C1ERKNS_7String8E"
+ },
+ {
+ "name" : "_ZN7android8String16C1ERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C1ERKS0_mm"
+ },
+ {
+ "name" : "_ZN7android8String16C1Ev"
+ },
+ {
+ "name" : "_ZN7android8String16C2EOS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKDs"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKDsm"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKc"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKcm"
+ },
+ {
+ "name" : "_ZN7android8String16C2ERKNS_7String8E"
+ },
+ {
+ "name" : "_ZN7android8String16C2ERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C2ERKS0_mm"
+ },
+ {
+ "name" : "_ZN7android8String16C2Ev"
+ },
+ {
+ "name" : "_ZN7android8String16D1Ev"
+ },
+ {
+ "name" : "_ZN7android8String16D2Ev"
+ },
+ {
+ "name" : "_ZN7android8String16aSEOS0_"
+ },
+ {
+ "name" : "_ZN7android9FdPrinter9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android9FdPrinterC1EijPKc"
+ },
+ {
+ "name" : "_ZN7android9FdPrinterC2EijPKc"
+ },
+ {
+ "name" : "_ZN7android9StopWatch5resetEv"
+ },
+ {
+ "name" : "_ZN7android9StopWatchC1EPKci"
+ },
+ {
+ "name" : "_ZN7android9StopWatchC2EPKci"
+ },
+ {
+ "name" : "_ZN7android9StopWatchD1Ev"
+ },
+ {
+ "name" : "_ZN7android9StopWatchD2Ev"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer12fromContentsERKNS_7String8EPKcPPS0_"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer14skipDelimitersEPKc"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer4openERKNS_7String8EPPS0_"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer8nextLineEv"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer9nextTokenEPKc"
+ },
+ {
+ "name" : "_ZN7android9TokenizerC1ERKNS_7String8EPNS_7FileMapEPcbm"
+ },
+ {
+ "name" : "_ZN7android9TokenizerC2ERKNS_7String8EPNS_7FileMapEPcbm"
+ },
+ {
+ "name" : "_ZN7android9TokenizerD1Ev"
+ },
+ {
+ "name" : "_ZN7android9TokenizerD2Ev"
+ },
+ {
+ "name" : "_ZNK7android10VectorImpl12itemLocationEm"
+ },
+ {
+ "name" : "_ZNK7android10VectorImpl8capacityEv"
+ },
+ {
+ "name" : "_ZNK7android10VectorImpl8itemSizeEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer10editResizeEm"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer11attemptEditEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer4editEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer5resetEm"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer7acquireEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer7releaseEj"
+ },
+ {
+ "name" : "_ZNK7android16SortedVectorImpl13_indexOrderOfEPKvPm"
+ },
+ {
+ "name" : "_ZNK7android16SortedVectorImpl7indexOfEPKv"
+ },
+ {
+ "name" : "_ZNK7android16SortedVectorImpl7orderOfEPKv"
+ },
+ {
+ "name" : "_ZNK7android6Looper20getAllowNonCallbacksEv"
+ },
+ {
+ "name" : "_ZNK7android6Looper7Request14getEpollEventsEv"
+ },
+ {
+ "name" : "_ZNK7android6Looper9isPollingEv"
+ },
+ {
+ "name" : "_ZNK7android6Thread11exitPendingEv"
+ },
+ {
+ "name" : "_ZNK7android6Thread6getTidEv"
+ },
+ {
+ "name" : "_ZNK7android6Thread9isRunningEv"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE10do_destroyEPvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE12do_constructEPvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE15do_move_forwardEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE16do_move_backwardEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE7do_copyEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE8do_splatEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE10do_destroyEPvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE12do_constructEPvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE15do_move_forwardEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE16do_move_backwardEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE7do_copyEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE8do_splatEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE10do_destroyEPvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE12do_constructEPvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE15do_move_forwardEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE16do_move_backwardEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE7do_copyEPvPKvm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE8do_splatEPvPKvm"
+ },
+ {
+ "name" : "_ZNK7android7RefBase10createWeakEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase11getWeakRefsEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase12weakref_type12getWeakCountEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase12weakref_type7refBaseEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase12weakref_type9printRefsEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase14forceIncStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase14getStrongCountEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase22incStrongRequireStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase9decStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase9incStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7String810getPathDirEv"
+ },
+ {
+ "name" : "_ZNK7android7String811getBasePathEv"
+ },
+ {
+ "name" : "_ZNK7android7String811getPathLeafEv"
+ },
+ {
+ "name" : "_ZNK7android7String814find_extensionEv"
+ },
+ {
+ "name" : "_ZNK7android7String816getPathExtensionEv"
+ },
+ {
+ "name" : "_ZNK7android7String84findEPKcm"
+ },
+ {
+ "name" : "_ZNK7android7String86lengthEv"
+ },
+ {
+ "name" : "_ZNK7android7String88walkPathEPS0_"
+ },
+ {
+ "name" : "_ZNK7android8String1610startsWithEPKDs"
+ },
+ {
+ "name" : "_ZNK7android8String1610startsWithERKS0_"
+ },
+ {
+ "name" : "_ZNK7android8String1614isStaticStringEv"
+ },
+ {
+ "name" : "_ZNK7android8String1616staticStringSizeEv"
+ },
+ {
+ "name" : "_ZNK7android8String164sizeEv"
+ },
+ {
+ "name" : "_ZNK7android8String168containsEPKDs"
+ },
+ {
+ "name" : "_ZNK7android8String168findLastEDs"
+ },
+ {
+ "name" : "_ZNK7android8String169findFirstEDs"
+ },
+ {
+ "name" : "_ZNK7android9StopWatch11elapsedTimeEv"
+ },
+ {
+ "name" : "_ZNK7android9StopWatch4nameEv"
+ },
+ {
+ "name" : "_ZNK7android9Tokenizer11getLocationEv"
+ },
+ {
+ "name" : "_ZNK7android9Tokenizer19peekRemainderOfLineEv"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIimEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE14__erase_uniqueIiEEmRKT_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIimEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE25__emplace_unique_key_argsIiJRiRKmEEENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS2_PvEEEEbEERKT_DpOT0_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIimEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE6rehashEm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIimEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS2_PvEEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIimEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE8__rehashEm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeImN7android6Looper7RequestEEENS_22__unordered_map_hasherImS5_NS_4hashImEELb1EEENS_21__unordered_map_equalImS5_NS_8equal_toImEELb1EEENS_9allocatorIS5_EEE14__erase_uniqueImEEmRKT_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeImN7android6Looper7RequestEEENS_22__unordered_map_hasherImS5_NS_4hashImEELb1EEENS_21__unordered_map_equalImS5_NS_8equal_toImEELb1EEENS_9allocatorIS5_EEE25__emplace_unique_key_argsImJRKmRS4_EEENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS5_PvEEEEbEERKT_DpOT0_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeImN7android6Looper7RequestEEENS_22__unordered_map_hasherImS5_NS_4hashImEELb1EEENS_21__unordered_map_equalImS5_NS_8equal_toImEELb1EEENS_9allocatorIS5_EEE6rehashEm"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeImN7android6Looper7RequestEEENS_22__unordered_map_hasherImS5_NS_4hashImEELb1EEENS_21__unordered_map_equalImS5_NS_8equal_toImEELb1EEENS_9allocatorIS5_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS5_PvEEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeImN7android6Looper7RequestEEENS_22__unordered_map_hasherImS5_NS_4hashImEELb1EEENS_21__unordered_map_equalImS5_NS_8equal_toImEELb1EEENS_9allocatorIS5_EEE8__rehashEm"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android14LooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android14LooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android14MessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android14MessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android6ThreadD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n24_N7android6ThreadD1Ev"
+ },
+ {
+ "name" : "androidCreateRawThreadEtc"
+ },
+ {
+ "name" : "androidCreateThread"
+ },
+ {
+ "name" : "androidCreateThreadEtc"
+ },
+ {
+ "name" : "androidGetThreadId"
+ },
+ {
+ "name" : "androidGetThreadPriority"
+ },
+ {
+ "name" : "androidSetCreateThreadFunc"
+ },
+ {
+ "name" : "androidSetThreadName"
+ },
+ {
+ "name" : "androidSetThreadPriority"
+ },
+ {
+ "name" : "do_report_sysprop_change"
+ },
+ {
+ "name" : "strcmp16"
+ },
+ {
+ "name" : "strlen16"
+ },
+ {
+ "name" : "strncmp16"
+ },
+ {
+ "name" : "strnlen16"
+ },
+ {
+ "name" : "strstr16"
+ },
+ {
+ "name" : "strzcmp16"
+ },
+ {
+ "name" : "systemTime"
+ },
+ {
+ "name" : "toMillisecondTimeoutDelay"
+ },
+ {
+ "name" : "utf16_to_utf8"
+ },
+ {
+ "name" : "utf16_to_utf8_length"
+ },
+ {
+ "name" : "utf32_from_utf8_at"
+ },
+ {
+ "name" : "utf32_to_utf8"
+ },
+ {
+ "name" : "utf32_to_utf8_length"
+ },
+ {
+ "name" : "utf8_to_utf16"
+ },
+ {
+ "name" : "utf8_to_utf16_length"
+ },
+ {
+ "name" : "utf8_to_utf16_no_null_terminator"
+ }
+ ],
+ "elf_objects" :
+ [
+ {
+ "name" : "_ZN7android7FileMap9mPageSizeE"
+ },
+ {
+ "name" : "_ZTCN7android18WeakMessageHandlerE0_NS_14MessageHandlerE"
+ },
+ {
+ "name" : "_ZTCN7android20SimpleLooperCallbackE0_NS_14LooperCallbackE"
+ },
+ {
+ "name" : "_ZTTN7android14LooperCallbackE"
+ },
+ {
+ "name" : "_ZTTN7android14MessageHandlerE"
+ },
+ {
+ "name" : "_ZTTN7android18WeakMessageHandlerE"
+ },
+ {
+ "name" : "_ZTTN7android20SimpleLooperCallbackE"
+ },
+ {
+ "name" : "_ZTTN7android6ThreadE"
+ },
+ {
+ "name" : "_ZTVN7android10LogPrinterE"
+ },
+ {
+ "name" : "_ZTVN7android10VectorImplE"
+ },
+ {
+ "name" : "_ZTVN7android13PrefixPrinterE"
+ },
+ {
+ "name" : "_ZTVN7android14LooperCallbackE"
+ },
+ {
+ "name" : "_ZTVN7android14MessageHandlerE"
+ },
+ {
+ "name" : "_ZTVN7android14String8PrinterE"
+ },
+ {
+ "name" : "_ZTVN7android16SortedVectorImplE"
+ },
+ {
+ "name" : "_ZTVN7android18WeakMessageHandlerE"
+ },
+ {
+ "name" : "_ZTVN7android20SimpleLooperCallbackE"
+ },
+ {
+ "name" : "_ZTVN7android6LooperE"
+ },
+ {
+ "name" : "_ZTVN7android6ThreadE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZTVN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZTVN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZTVN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "name" : "_ZTVN7android7PrinterE"
+ },
+ {
+ "name" : "_ZTVN7android7RefBaseE"
+ },
+ {
+ "name" : "_ZTVN7android9FdPrinterE"
+ }
+ ],
+ "enum_types" :
+ [
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : -1,
+ "name" : "SP_DEFAULT"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "SP_BACKGROUND"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "SP_FOREGROUND"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "SP_SYSTEM"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "SP_AUDIO_APP"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "SP_AUDIO_SYS"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "SP_TOP_APP"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "SP_RT_APP"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "SP_RESTRICTED"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "SP_CNT"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "SP_MAX"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "SP_SYSTEM_DEFAULT"
+ }
+ ],
+ "linker_set_key" : "_ZTI11SchedPolicy",
+ "name" : "SchedPolicy",
+ "referenced_type" : "_ZTI11SchedPolicy",
+ "self_type" : "_ZTI11SchedPolicy",
+ "size" : 4,
+ "source_file" : "system/core/libprocessgroup/include/processgroup/sched_policy.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_HDR_DOLBY_VISION"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_HDR_HDR10"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_HDR_HLG"
+ }
+ ],
+ "linker_set_key" : "_ZTI13android_hdr_t",
+ "name" : "android_hdr_t",
+ "referenced_type" : "_ZTI13android_hdr_t",
+ "self_type" : "_ZTI13android_hdr_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_HDR_HDR10_PLUS"
+ }
+ ],
+ "linker_set_key" : "_ZTI18android_hdr_v1_2_t",
+ "name" : "android_hdr_v1_2_t",
+ "referenced_type" : "_ZTI18android_hdr_v1_2_t",
+ "self_type" : "_ZTI18android_hdr_v1_2_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.2.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "ANDROID_LOG_UNKNOWN"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "ANDROID_LOG_DEFAULT"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "ANDROID_LOG_VERBOSE"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "ANDROID_LOG_DEBUG"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "ANDROID_LOG_INFO"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "ANDROID_LOG_WARN"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "ANDROID_LOG_ERROR"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "ANDROID_LOG_FATAL"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "ANDROID_LOG_SILENT"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_LogPriority",
+ "name" : "android_LogPriority",
+ "referenced_type" : "_ZTI19android_LogPriority",
+ "self_type" : "_ZTI19android_LogPriority",
+ "size" : 4,
+ "source_file" : "system/logging/liblog/include_vndk/android/log.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_UNKNOWN"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_DATASPACE_ARBITRARY"
+ },
+ {
+ "enum_field_value" : 16,
+ "name" : "HAL_DATASPACE_STANDARD_SHIFT"
+ },
+ {
+ "enum_field_value" : 4128768,
+ "name" : "HAL_DATASPACE_STANDARD_MASK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_STANDARD_UNSPECIFIED"
+ },
+ {
+ "enum_field_value" : 65536,
+ "name" : "HAL_DATASPACE_STANDARD_BT709"
+ },
+ {
+ "enum_field_value" : 131072,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_625"
+ },
+ {
+ "enum_field_value" : 196608,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 262144,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_525"
+ },
+ {
+ "enum_field_value" : 327680,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 393216,
+ "name" : "HAL_DATASPACE_STANDARD_BT2020"
+ },
+ {
+ "enum_field_value" : 458752,
+ "name" : "HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE"
+ },
+ {
+ "enum_field_value" : 524288,
+ "name" : "HAL_DATASPACE_STANDARD_BT470M"
+ },
+ {
+ "enum_field_value" : 589824,
+ "name" : "HAL_DATASPACE_STANDARD_FILM"
+ },
+ {
+ "enum_field_value" : 655360,
+ "name" : "HAL_DATASPACE_STANDARD_DCI_P3"
+ },
+ {
+ "enum_field_value" : 720896,
+ "name" : "HAL_DATASPACE_STANDARD_ADOBE_RGB"
+ },
+ {
+ "enum_field_value" : 22,
+ "name" : "HAL_DATASPACE_TRANSFER_SHIFT"
+ },
+ {
+ "enum_field_value" : 130023424,
+ "name" : "HAL_DATASPACE_TRANSFER_MASK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_TRANSFER_UNSPECIFIED"
+ },
+ {
+ "enum_field_value" : 4194304,
+ "name" : "HAL_DATASPACE_TRANSFER_LINEAR"
+ },
+ {
+ "enum_field_value" : 8388608,
+ "name" : "HAL_DATASPACE_TRANSFER_SRGB"
+ },
+ {
+ "enum_field_value" : 12582912,
+ "name" : "HAL_DATASPACE_TRANSFER_SMPTE_170M"
+ },
+ {
+ "enum_field_value" : 16777216,
+ "name" : "HAL_DATASPACE_TRANSFER_GAMMA2_2"
+ },
+ {
+ "enum_field_value" : 20971520,
+ "name" : "HAL_DATASPACE_TRANSFER_GAMMA2_6"
+ },
+ {
+ "enum_field_value" : 25165824,
+ "name" : "HAL_DATASPACE_TRANSFER_GAMMA2_8"
+ },
+ {
+ "enum_field_value" : 29360128,
+ "name" : "HAL_DATASPACE_TRANSFER_ST2084"
+ },
+ {
+ "enum_field_value" : 33554432,
+ "name" : "HAL_DATASPACE_TRANSFER_HLG"
+ },
+ {
+ "enum_field_value" : 27,
+ "name" : "HAL_DATASPACE_RANGE_SHIFT"
+ },
+ {
+ "enum_field_value" : 939524096,
+ "name" : "HAL_DATASPACE_RANGE_MASK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_RANGE_UNSPECIFIED"
+ },
+ {
+ "enum_field_value" : 134217728,
+ "name" : "HAL_DATASPACE_RANGE_FULL"
+ },
+ {
+ "enum_field_value" : 268435456,
+ "name" : "HAL_DATASPACE_RANGE_LIMITED"
+ },
+ {
+ "enum_field_value" : 402653184,
+ "name" : "HAL_DATASPACE_RANGE_EXTENDED"
+ },
+ {
+ "enum_field_value" : 512,
+ "name" : "HAL_DATASPACE_SRGB_LINEAR"
+ },
+ {
+ "enum_field_value" : 138477568,
+ "name" : "HAL_DATASPACE_V0_SRGB_LINEAR"
+ },
+ {
+ "enum_field_value" : 406913024,
+ "name" : "HAL_DATASPACE_V0_SCRGB_LINEAR"
+ },
+ {
+ "enum_field_value" : 513,
+ "name" : "HAL_DATASPACE_SRGB"
+ },
+ {
+ "enum_field_value" : 142671872,
+ "name" : "HAL_DATASPACE_V0_SRGB"
+ },
+ {
+ "enum_field_value" : 411107328,
+ "name" : "HAL_DATASPACE_V0_SCRGB"
+ },
+ {
+ "enum_field_value" : 257,
+ "name" : "HAL_DATASPACE_JFIF"
+ },
+ {
+ "enum_field_value" : 146931712,
+ "name" : "HAL_DATASPACE_V0_JFIF"
+ },
+ {
+ "enum_field_value" : 258,
+ "name" : "HAL_DATASPACE_BT601_625"
+ },
+ {
+ "enum_field_value" : 281149440,
+ "name" : "HAL_DATASPACE_V0_BT601_625"
+ },
+ {
+ "enum_field_value" : 259,
+ "name" : "HAL_DATASPACE_BT601_525"
+ },
+ {
+ "enum_field_value" : 281280512,
+ "name" : "HAL_DATASPACE_V0_BT601_525"
+ },
+ {
+ "enum_field_value" : 260,
+ "name" : "HAL_DATASPACE_BT709"
+ },
+ {
+ "enum_field_value" : 281083904,
+ "name" : "HAL_DATASPACE_V0_BT709"
+ },
+ {
+ "enum_field_value" : 139067392,
+ "name" : "HAL_DATASPACE_DCI_P3_LINEAR"
+ },
+ {
+ "enum_field_value" : 155844608,
+ "name" : "HAL_DATASPACE_DCI_P3"
+ },
+ {
+ "enum_field_value" : 139067392,
+ "name" : "HAL_DATASPACE_DISPLAY_P3_LINEAR"
+ },
+ {
+ "enum_field_value" : 143261696,
+ "name" : "HAL_DATASPACE_DISPLAY_P3"
+ },
+ {
+ "enum_field_value" : 151715840,
+ "name" : "HAL_DATASPACE_ADOBE_RGB"
+ },
+ {
+ "enum_field_value" : 138805248,
+ "name" : "HAL_DATASPACE_BT2020_LINEAR"
+ },
+ {
+ "enum_field_value" : 147193856,
+ "name" : "HAL_DATASPACE_BT2020"
+ },
+ {
+ "enum_field_value" : 163971072,
+ "name" : "HAL_DATASPACE_BT2020_PQ"
+ },
+ {
+ "enum_field_value" : 4096,
+ "name" : "HAL_DATASPACE_DEPTH"
+ },
+ {
+ "enum_field_value" : 4097,
+ "name" : "HAL_DATASPACE_SENSOR"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_dataspace_t",
+ "name" : "android_dataspace_t",
+ "referenced_type" : "_ZTI19android_dataspace_t",
+ "self_type" : "_ZTI19android_dataspace_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "FLEX_FORMAT_INVALID"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "FLEX_FORMAT_Y"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "FLEX_FORMAT_YCbCr"
+ },
+ {
+ "enum_field_value" : 1073741831,
+ "name" : "FLEX_FORMAT_YCbCrA"
+ },
+ {
+ "enum_field_value" : 7168,
+ "name" : "FLEX_FORMAT_RGB"
+ },
+ {
+ "enum_field_value" : 1073748992,
+ "name" : "FLEX_FORMAT_RGBA"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_flex_format",
+ "name" : "android_flex_format",
+ "referenced_type" : "_ZTI19android_flex_format",
+ "self_type" : "_ZTI19android_flex_format",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_TRANSFORM_FLIP_H"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_TRANSFORM_FLIP_V"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_TRANSFORM_ROT_90"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_TRANSFORM_ROT_180"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "HAL_TRANSFORM_ROT_270"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_transform_t",
+ "name" : "android_transform_t",
+ "referenced_type" : "_ZTI19android_transform_t",
+ "self_type" : "_ZTI19android_transform_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_COLOR_MODE_NATIVE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_625"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_625_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_525"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_525_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT709"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "HAL_COLOR_MODE_DCI_P3"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "HAL_COLOR_MODE_SRGB"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "HAL_COLOR_MODE_ADOBE_RGB"
+ },
+ {
+ "enum_field_value" : 9,
+ "name" : "HAL_COLOR_MODE_DISPLAY_P3"
+ }
+ ],
+ "linker_set_key" : "_ZTI20android_color_mode_t",
+ "name" : "android_color_mode_t",
+ "referenced_type" : "_ZTI20android_color_mode_t",
+ "self_type" : "_ZTI20android_color_mode_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "SYSTEM_TIME_REALTIME"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "SYSTEM_TIME_MONOTONIC"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "SYSTEM_TIME_PROCESS"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "SYSTEM_TIME_THREAD"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "SYSTEM_TIME_BOOTTIME"
+ }
+ ],
+ "linker_set_key" : "_ZTI21$SYSTEM_TIME_BOOTTIME",
+ "name" : "(unnamed)",
+ "referenced_type" : "_ZTI21$SYSTEM_TIME_BOOTTIME",
+ "self_type" : "_ZTI21$SYSTEM_TIME_BOOTTIME",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Timers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "FLEX_COMPONENT_Y"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "FLEX_COMPONENT_Cb"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "FLEX_COMPONENT_Cr"
+ },
+ {
+ "enum_field_value" : 1024,
+ "name" : "FLEX_COMPONENT_R"
+ },
+ {
+ "enum_field_value" : 2048,
+ "name" : "FLEX_COMPONENT_G"
+ },
+ {
+ "enum_field_value" : 4096,
+ "name" : "FLEX_COMPONENT_B"
+ },
+ {
+ "enum_field_value" : 1073741824,
+ "name" : "FLEX_COMPONENT_A"
+ }
+ ],
+ "linker_set_key" : "_ZTI22android_flex_component",
+ "name" : "android_flex_component",
+ "referenced_type" : "_ZTI22android_flex_component",
+ "self_type" : "_ZTI22android_flex_component",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_PIXEL_FORMAT_RGBA_8888"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_PIXEL_FORMAT_RGBX_8888"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_PIXEL_FORMAT_RGB_888"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_PIXEL_FORMAT_RGB_565"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "HAL_PIXEL_FORMAT_BGRA_8888"
+ },
+ {
+ "enum_field_value" : 16,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_422_SP"
+ },
+ {
+ "enum_field_value" : 17,
+ "name" : "HAL_PIXEL_FORMAT_YCRCB_420_SP"
+ },
+ {
+ "enum_field_value" : 20,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_422_I"
+ },
+ {
+ "enum_field_value" : 22,
+ "name" : "HAL_PIXEL_FORMAT_RGBA_FP16"
+ },
+ {
+ "enum_field_value" : 32,
+ "name" : "HAL_PIXEL_FORMAT_RAW16"
+ },
+ {
+ "enum_field_value" : 33,
+ "name" : "HAL_PIXEL_FORMAT_BLOB"
+ },
+ {
+ "enum_field_value" : 34,
+ "name" : "HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED"
+ },
+ {
+ "enum_field_value" : 35,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_420_888"
+ },
+ {
+ "enum_field_value" : 36,
+ "name" : "HAL_PIXEL_FORMAT_RAW_OPAQUE"
+ },
+ {
+ "enum_field_value" : 37,
+ "name" : "HAL_PIXEL_FORMAT_RAW10"
+ },
+ {
+ "enum_field_value" : 38,
+ "name" : "HAL_PIXEL_FORMAT_RAW12"
+ },
+ {
+ "enum_field_value" : 43,
+ "name" : "HAL_PIXEL_FORMAT_RGBA_1010102"
+ },
+ {
+ "enum_field_value" : 538982489,
+ "name" : "HAL_PIXEL_FORMAT_Y8"
+ },
+ {
+ "enum_field_value" : 540422489,
+ "name" : "HAL_PIXEL_FORMAT_Y16"
+ },
+ {
+ "enum_field_value" : 842094169,
+ "name" : "HAL_PIXEL_FORMAT_YV12"
+ }
+ ],
+ "linker_set_key" : "_ZTI22android_pixel_format_t",
+ "name" : "android_pixel_format_t",
+ "referenced_type" : "_ZTI22android_pixel_format_t",
+ "self_type" : "_ZTI22android_pixel_format_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 19,
+ "name" : "ANDROID_PRIORITY_LOWEST"
+ },
+ {
+ "enum_field_value" : 10,
+ "name" : "ANDROID_PRIORITY_BACKGROUND"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "ANDROID_PRIORITY_NORMAL"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "ANDROID_PRIORITY_FOREGROUND"
+ },
+ {
+ "enum_field_value" : -4,
+ "name" : "ANDROID_PRIORITY_DISPLAY"
+ },
+ {
+ "enum_field_value" : -8,
+ "name" : "ANDROID_PRIORITY_URGENT_DISPLAY"
+ },
+ {
+ "enum_field_value" : -10,
+ "name" : "ANDROID_PRIORITY_VIDEO"
+ },
+ {
+ "enum_field_value" : -16,
+ "name" : "ANDROID_PRIORITY_AUDIO"
+ },
+ {
+ "enum_field_value" : -19,
+ "name" : "ANDROID_PRIORITY_URGENT_AUDIO"
+ },
+ {
+ "enum_field_value" : -20,
+ "name" : "ANDROID_PRIORITY_HIGHEST"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "ANDROID_PRIORITY_DEFAULT"
+ },
+ {
+ "enum_field_value" : -1,
+ "name" : "ANDROID_PRIORITY_MORE_FAVORABLE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "ANDROID_PRIORITY_LESS_FAVORABLE"
+ }
+ ],
+ "linker_set_key" : "_ZTI23$ANDROID_PRIORITY_AUDIO",
+ "name" : "(unnamed)",
+ "referenced_type" : "_ZTI23$ANDROID_PRIORITY_AUDIO",
+ "self_type" : "_ZTI23$ANDROID_PRIORITY_AUDIO",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/thread_defs.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 281411584,
+ "name" : "HAL_DATASPACE_BT2020_ITU"
+ },
+ {
+ "enum_field_value" : 298188800,
+ "name" : "HAL_DATASPACE_BT2020_ITU_PQ"
+ },
+ {
+ "enum_field_value" : 302383104,
+ "name" : "HAL_DATASPACE_BT2020_ITU_HLG"
+ },
+ {
+ "enum_field_value" : 168165376,
+ "name" : "HAL_DATASPACE_BT2020_HLG"
+ }
+ ],
+ "linker_set_key" : "_ZTI24android_dataspace_v1_1_t",
+ "name" : "android_dataspace_v1_1_t",
+ "referenced_type" : "_ZTI24android_dataspace_v1_1_t",
+ "self_type" : "_ZTI24android_dataspace_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 142999552,
+ "name" : "HAL_DATASPACE_DISPLAY_BT2020"
+ },
+ {
+ "enum_field_value" : 4098,
+ "name" : "HAL_DATASPACE_DYNAMIC_DEPTH"
+ },
+ {
+ "enum_field_value" : 4099,
+ "name" : "HAL_DATASPACE_JPEG_APP_SEGMENTS"
+ },
+ {
+ "enum_field_value" : 4100,
+ "name" : "HAL_DATASPACE_HEIF"
+ }
+ ],
+ "linker_set_key" : "_ZTI24android_dataspace_v1_2_t",
+ "name" : "android_dataspace_v1_2_t",
+ "referenced_type" : "_ZTI24android_dataspace_v1_2_t",
+ "self_type" : "_ZTI24android_dataspace_v1_2_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.2.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 10,
+ "name" : "HAL_COLOR_MODE_BT2020"
+ },
+ {
+ "enum_field_value" : 11,
+ "name" : "HAL_COLOR_MODE_BT2100_PQ"
+ },
+ {
+ "enum_field_value" : 12,
+ "name" : "HAL_COLOR_MODE_BT2100_HLG"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_color_mode_v1_1_t",
+ "name" : "android_color_mode_v1_1_t",
+ "referenced_type" : "_ZTI25android_color_mode_v1_1_t",
+ "self_type" : "_ZTI25android_color_mode_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_COLOR_TRANSFORM_IDENTITY"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_COLOR_TRANSFORM_ARBITRARY_MATRIX"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_COLOR_TRANSFORM_VALUE_INVERSE"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_COLOR_TRANSFORM_GRAYSCALE"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_COLOR_TRANSFORM_CORRECT_PROTANOPIA"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "HAL_COLOR_TRANSFORM_CORRECT_DEUTERANOPIA"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "HAL_COLOR_TRANSFORM_CORRECT_TRITANOPIA"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_color_transform_t",
+ "name" : "android_color_transform_t",
+ "referenced_type" : "_ZTI25android_color_transform_t",
+ "self_type" : "_ZTI25android_color_transform_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 39,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_422_888"
+ },
+ {
+ "enum_field_value" : 40,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_444_888"
+ },
+ {
+ "enum_field_value" : 41,
+ "name" : "HAL_PIXEL_FORMAT_FLEX_RGB_888"
+ },
+ {
+ "enum_field_value" : 42,
+ "name" : "HAL_PIXEL_FORMAT_FLEX_RGBA_8888"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_pixel_format_sw_t",
+ "name" : "android_pixel_format_sw_t",
+ "referenced_type" : "_ZTI25android_pixel_format_sw_t",
+ "self_type" : "_ZTI25android_pixel_format_sw_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-sw.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 48,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_16"
+ },
+ {
+ "enum_field_value" : 49,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_24"
+ },
+ {
+ "enum_field_value" : 50,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_24_STENCIL_8"
+ },
+ {
+ "enum_field_value" : 51,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_32F"
+ },
+ {
+ "enum_field_value" : 52,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_32F_STENCIL_8"
+ },
+ {
+ "enum_field_value" : 53,
+ "name" : "HAL_PIXEL_FORMAT_STENCIL_8"
+ },
+ {
+ "enum_field_value" : 54,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_P010"
+ }
+ ],
+ "linker_set_key" : "_ZTI27android_pixel_format_v1_1_t",
+ "name" : "android_pixel_format_v1_1_t",
+ "referenced_type" : "_ZTI27android_pixel_format_v1_1_t",
+ "self_type" : "_ZTI27android_pixel_format_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 55,
+ "name" : "HAL_PIXEL_FORMAT_HSV_888"
+ }
+ ],
+ "linker_set_key" : "_ZTI27android_pixel_format_v1_2_t",
+ "name" : "android_pixel_format_v1_2_t",
+ "referenced_type" : "_ZTI27android_pixel_format_v1_2_t",
+ "self_type" : "_ZTI27android_pixel_format_v1_2_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.2.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_RENDER_INTENT_COLORIMETRIC"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_RENDER_INTENT_ENHANCE"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_RENDER_INTENT_TONE_MAP_COLORIMETRIC"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_RENDER_INTENT_TONE_MAP_ENHANCE"
+ }
+ ],
+ "linker_set_key" : "_ZTI28android_render_intent_v1_1_t",
+ "name" : "android_render_intent_v1_1_t",
+ "referenced_type" : "_ZTI28android_render_intent_v1_1_t",
+ "self_type" : "_ZTI28android_render_intent_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "LOG_ID_MIN"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "LOG_ID_MAIN"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "LOG_ID_RADIO"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "LOG_ID_EVENTS"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "LOG_ID_SYSTEM"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "LOG_ID_CRASH"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "LOG_ID_STATS"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "LOG_ID_SECURITY"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "LOG_ID_KERNEL"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "LOG_ID_MAX"
+ },
+ {
+ "enum_field_value" : 2147483647,
+ "name" : "LOG_ID_DEFAULT"
+ }
+ ],
+ "linker_set_key" : "_ZTI6log_id",
+ "name" : "log_id",
+ "referenced_type" : "_ZTI6log_id",
+ "self_type" : "_ZTI6log_id",
+ "size" : 4,
+ "source_file" : "system/logging/liblog/include_vndk/android/log.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::VectorImpl::HAS_TRIVIAL_CTOR"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "android::VectorImpl::HAS_TRIVIAL_DTOR"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "android::VectorImpl::HAS_TRIVIAL_COPY"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android10VectorImpl17$HAS_TRIVIAL_COPYE",
+ "name" : "android::VectorImpl::(unnamed)",
+ "referenced_type" : "_ZTIN7android10VectorImpl17$HAS_TRIVIAL_COPYE",
+ "self_type" : "_ZTIN7android10VectorImpl17$HAS_TRIVIAL_COPYE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_pointer<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_pointer<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_pointer<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_pointer<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_pointer<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_pointer<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::OK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::NO_ERROR"
+ },
+ {
+ "enum_field_value" : -2147483648,
+ "name" : "android::UNKNOWN_ERROR"
+ },
+ {
+ "enum_field_value" : -12,
+ "name" : "android::NO_MEMORY"
+ },
+ {
+ "enum_field_value" : -38,
+ "name" : "android::INVALID_OPERATION"
+ },
+ {
+ "enum_field_value" : -22,
+ "name" : "android::BAD_VALUE"
+ },
+ {
+ "enum_field_value" : -2147483647,
+ "name" : "android::BAD_TYPE"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "android::NAME_NOT_FOUND"
+ },
+ {
+ "enum_field_value" : -1,
+ "name" : "android::PERMISSION_DENIED"
+ },
+ {
+ "enum_field_value" : -19,
+ "name" : "android::NO_INIT"
+ },
+ {
+ "enum_field_value" : -17,
+ "name" : "android::ALREADY_EXISTS"
+ },
+ {
+ "enum_field_value" : -32,
+ "name" : "android::DEAD_OBJECT"
+ },
+ {
+ "enum_field_value" : -2147483646,
+ "name" : "android::FAILED_TRANSACTION"
+ },
+ {
+ "enum_field_value" : -75,
+ "name" : "android::BAD_INDEX"
+ },
+ {
+ "enum_field_value" : -61,
+ "name" : "android::NOT_ENOUGH_DATA"
+ },
+ {
+ "enum_field_value" : -11,
+ "name" : "android::WOULD_BLOCK"
+ },
+ {
+ "enum_field_value" : -110,
+ "name" : "android::TIMED_OUT"
+ },
+ {
+ "enum_field_value" : -74,
+ "name" : "android::UNKNOWN_TRANSACTION"
+ },
+ {
+ "enum_field_value" : -2147483641,
+ "name" : "android::FDS_NOT_ALLOWED"
+ },
+ {
+ "enum_field_value" : -2147483640,
+ "name" : "android::UNEXPECTED_NULL"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android15$ALREADY_EXISTSE",
+ "name" : "android::(unnamed)",
+ "referenced_type" : "_ZTIN7android15$ALREADY_EXISTSE",
+ "self_type" : "_ZTIN7android15$ALREADY_EXISTSE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Errors.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 19,
+ "name" : "android::PRIORITY_LOWEST"
+ },
+ {
+ "enum_field_value" : 10,
+ "name" : "android::PRIORITY_BACKGROUND"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::PRIORITY_NORMAL"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "android::PRIORITY_FOREGROUND"
+ },
+ {
+ "enum_field_value" : -4,
+ "name" : "android::PRIORITY_DISPLAY"
+ },
+ {
+ "enum_field_value" : -8,
+ "name" : "android::PRIORITY_URGENT_DISPLAY"
+ },
+ {
+ "enum_field_value" : -16,
+ "name" : "android::PRIORITY_AUDIO"
+ },
+ {
+ "enum_field_value" : -19,
+ "name" : "android::PRIORITY_URGENT_AUDIO"
+ },
+ {
+ "enum_field_value" : -20,
+ "name" : "android::PRIORITY_HIGHEST"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::PRIORITY_DEFAULT"
+ },
+ {
+ "enum_field_value" : -1,
+ "name" : "android::PRIORITY_MORE_FAVORABLE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::PRIORITY_LESS_FAVORABLE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android15$PRIORITY_AUDIOE",
+ "name" : "android::(unnamed)",
+ "referenced_type" : "_ZTIN7android15$PRIORITY_AUDIOE",
+ "self_type" : "_ZTIN7android15$PRIORITY_AUDIOE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/ThreadDefs.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_copy<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_copy<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_copy<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_copy<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_copy<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_copy<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIbE6$valueE",
+ "name" : "android::trait_trivial_copy<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIcE6$valueE",
+ "name" : "android::trait_trivial_copy<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIdE6$valueE",
+ "name" : "android::trait_trivial_copy<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIfE6$valueE",
+ "name" : "android::trait_trivial_copy<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIhE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIiE6$valueE",
+ "name" : "android::trait_trivial_copy<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIjE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIlE6$valueE",
+ "name" : "android::trait_trivial_copy<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyImE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIsE6$valueE",
+ "name" : "android::trait_trivial_copy<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyItE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIvE6$valueE",
+ "name" : "android::trait_trivial_copy<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIxE6$valueE",
+ "name" : "android::trait_trivial_copy<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIyE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_ctor<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_ctor<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_ctor<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_ctor<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_ctor<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_ctor<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIbE6$valueE",
+ "name" : "android::trait_trivial_ctor<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIcE6$valueE",
+ "name" : "android::trait_trivial_ctor<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIdE6$valueE",
+ "name" : "android::trait_trivial_ctor<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIfE6$valueE",
+ "name" : "android::trait_trivial_ctor<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIhE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIiE6$valueE",
+ "name" : "android::trait_trivial_ctor<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIjE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIlE6$valueE",
+ "name" : "android::trait_trivial_ctor<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorImE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIsE6$valueE",
+ "name" : "android::trait_trivial_ctor<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorItE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIvE6$valueE",
+ "name" : "android::trait_trivial_ctor<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIxE6$valueE",
+ "name" : "android::trait_trivial_ctor<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIyE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_dtor<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_dtor<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_dtor<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_dtor<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_dtor<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_dtor<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIbE6$valueE",
+ "name" : "android::trait_trivial_dtor<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIcE6$valueE",
+ "name" : "android::trait_trivial_dtor<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIdE6$valueE",
+ "name" : "android::trait_trivial_dtor<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIfE6$valueE",
+ "name" : "android::trait_trivial_dtor<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIhE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIiE6$valueE",
+ "name" : "android::trait_trivial_dtor<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIjE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIlE6$valueE",
+ "name" : "android::trait_trivial_dtor<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorImE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIsE6$valueE",
+ "name" : "android::trait_trivial_dtor<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorItE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIvE6$valueE",
+ "name" : "android::trait_trivial_dtor<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIxE6$valueE",
+ "name" : "android::trait_trivial_dtor<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIyE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_move<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_move<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_move<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_move<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_move<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_move<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<android::String8>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_7String8EE6$valueE",
+ "name" : "android::trait_trivial_move<android::String8>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<android::String16>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_8String16EE6$valueE",
+ "name" : "android::trait_trivial_move<android::String16>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIbE6$valueE",
+ "name" : "android::trait_trivial_move<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIcE6$valueE",
+ "name" : "android::trait_trivial_move<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIdE6$valueE",
+ "name" : "android::trait_trivial_move<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIfE6$valueE",
+ "name" : "android::trait_trivial_move<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIhE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIiE6$valueE",
+ "name" : "android::trait_trivial_move<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIjE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIlE6$valueE",
+ "name" : "android::trait_trivial_move<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveImE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIsE6$valueE",
+ "name" : "android::trait_trivial_move<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveItE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIvE6$valueE",
+ "name" : "android::trait_trivial_move<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIxE6$valueE",
+ "name" : "android::trait_trivial_move<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIyE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::Mutex::PRIVATE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Mutex::SHARED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android5Mutex8$PRIVATEE",
+ "name" : "android::Mutex::(unnamed)",
+ "referenced_type" : "_ZTIN7android5Mutex8$PRIVATEE",
+ "self_type" : "_ZTIN7android5Mutex8$PRIVATEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Looper::EVENT_INPUT"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "android::Looper::EVENT_OUTPUT"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "android::Looper::EVENT_ERROR"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "android::Looper::EVENT_HANGUP"
+ },
+ {
+ "enum_field_value" : 16,
+ "name" : "android::Looper::EVENT_INVALID"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper12$EVENT_ERRORE",
+ "name" : "android::Looper::(unnamed)",
+ "referenced_type" : "_ZTIN7android6Looper12$EVENT_ERRORE",
+ "self_type" : "_ZTIN7android6Looper12$EVENT_ERRORE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : -1,
+ "name" : "android::Looper::POLL_WAKE"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "android::Looper::POLL_CALLBACK"
+ },
+ {
+ "enum_field_value" : -3,
+ "name" : "android::Looper::POLL_TIMEOUT"
+ },
+ {
+ "enum_field_value" : -4,
+ "name" : "android::Looper::POLL_ERROR"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper14$POLL_CALLBACKE",
+ "name" : "android::Looper::(unnamed)",
+ "referenced_type" : "_ZTIN7android6Looper14$POLL_CALLBACKE",
+ "self_type" : "_ZTIN7android6Looper14$POLL_CALLBACKE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Looper::PREPARE_ALLOW_NON_CALLBACKS"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper28$PREPARE_ALLOW_NON_CALLBACKSE",
+ "name" : "android::Looper::(unnamed)",
+ "referenced_type" : "_ZTIN7android6Looper28$PREPARE_ALLOW_NON_CALLBACKSE",
+ "self_type" : "_ZTIN7android6Looper28$PREPARE_ALLOW_NON_CALLBACKSE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::RWLock::PRIVATE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RWLock::SHARED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLock8$PRIVATEE",
+ "name" : "android::RWLock::(unnamed)",
+ "referenced_type" : "_ZTIN7android6RWLock8$PRIVATEE",
+ "self_type" : "_ZTIN7android6RWLock8$PRIVATEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::is_pointer"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_ctor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_dtor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_copy"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_move"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEE17$has_trivial_copyE",
+ "name" : "android::traits<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEE17$has_trivial_copyE",
+ "self_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEE17$has_trivial_copyE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::is_pointer"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_ctor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_dtor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_copy"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_move"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEE17$has_trivial_copyE",
+ "name" : "android::traits<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEE17$has_trivial_copyE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEE17$has_trivial_copyE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::is_pointer"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_ctor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_dtor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_copy"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_move"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper8ResponseEE17$has_trivial_copyE",
+ "name" : "android::traits<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEE17$has_trivial_copyE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEE17$has_trivial_copyE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::FileMap::NORMAL"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::FileMap::RANDOM"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "android::FileMap::SEQUENTIAL"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "android::FileMap::WILLNEED"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "android::FileMap::DONTNEED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7FileMap9MapAdviceE",
+ "name" : "android::FileMap::MapAdvice",
+ "referenced_type" : "_ZTIN7android7FileMap9MapAdviceE",
+ "self_type" : "_ZTIN7android7FileMap9MapAdviceE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "access" : "protected",
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RefBase::FIRST_INC_STRONG"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7RefBase17$FIRST_INC_STRONGE",
+ "name" : "android::RefBase::(unnamed)",
+ "referenced_type" : "_ZTIN7android7RefBase17$FIRST_INC_STRONGE",
+ "self_type" : "_ZTIN7android7RefBase17$FIRST_INC_STRONGE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "access" : "protected",
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::RefBase::OBJECT_LIFETIME_STRONG"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RefBase::OBJECT_LIFETIME_WEAK"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RefBase::OBJECT_LIFETIME_MASK"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7RefBase21$OBJECT_LIFETIME_MASKE",
+ "name" : "android::RefBase::(unnamed)",
+ "referenced_type" : "_ZTIN7android7RefBase21$OBJECT_LIFETIME_MASKE",
+ "self_type" : "_ZTIN7android7RefBase21$OBJECT_LIFETIME_MASKE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::Condition::WAKE_UP_ONE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Condition::WAKE_UP_ALL"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9Condition10WakeUpTypeE",
+ "name" : "android::Condition::WakeUpType",
+ "referenced_type" : "_ZTIN7android9Condition10WakeUpTypeE",
+ "self_type" : "_ZTIN7android9Condition10WakeUpTypeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Condition.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::Condition::PRIVATE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Condition::SHARED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9Condition8$PRIVATEE",
+ "name" : "android::Condition::(unnamed)",
+ "referenced_type" : "_ZTIN7android9Condition8$PRIVATEE",
+ "self_type" : "_ZTIN7android9Condition8$PRIVATEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Condition.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 20,
+ "name" : "android::FdPrinter::MAX_FORMAT_STRING"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9FdPrinter18$MAX_FORMAT_STRINGE",
+ "name" : "android::FdPrinter::(unnamed)",
+ "referenced_type" : "_ZTIN7android9FdPrinter18$MAX_FORMAT_STRINGE",
+ "self_type" : "_ZTIN7android9FdPrinter18$MAX_FORMAT_STRINGE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "underlying_type" : "_ZTIj"
+ }
+ ],
+ "function_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPFiPvES_PKcimPS_E",
+ "name" : "int (int (*)(void *), void *, const char *, int, unsigned long, void **)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPFiPvES_PKcimPS_E",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPFiPvES_PKcimPS_E",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPKvS0_E",
+ "name" : "int (const void *, const void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPKvS0_E",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPKvS0_E",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPKvS0_PvE",
+ "name" : "int (const void *, const void *, void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPKvS0_PvE",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPKvS0_PvE",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPvE",
+ "name" : "int (void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPvE",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPvE",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiiiPvE",
+ "name" : "int (int, int, void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiiiPvE",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiiiPvE",
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFvvE",
+ "name" : "void ()",
+ "referenced_type" : "_ZTIFvvE",
+ "return_type" : "_ZTIv",
+ "self_type" : "_ZTIFvvE",
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ }
+ ],
+ "functions" :
+ [
+ {
+ "access" : "private",
+ "function_name" : "android::LogPrinter::printRaw",
+ "linker_set_key" : "_ZN7android10LogPrinter8printRawEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::LogPrinter::printLine",
+ "linker_set_key" : "_ZN7android10LogPrinter9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::LogPrinter::LogPrinter",
+ "linker_set_key" : "_ZN7android10LogPrinterC1EPKc19android_LogPriorityS2_b",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTI19android_LogPriority"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::LogPrinter::LogPrinter",
+ "linker_set_key" : "_ZN7android10LogPrinterC2EPKc19android_LogPriorityS2_b",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTI19android_LogPriority"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::appendArray",
+ "linker_set_key" : "_ZN7android10VectorImpl11appendArrayEPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::setCapacity",
+ "linker_set_key" : "_ZN7android10VectorImpl11setCapacityEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::appendVector",
+ "linker_set_key" : "_ZN7android10VectorImpl12appendVectorERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::editArrayImpl",
+ "linker_set_key" : "_ZN7android10VectorImpl13editArrayImplEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::finish_vector",
+ "linker_set_key" : "_ZN7android10VectorImpl13finish_vectorEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertArrayAt",
+ "linker_set_key" : "_ZN7android10VectorImpl13insertArrayAtEPKvmm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::removeItemsAt",
+ "linker_set_key" : "_ZN7android10VectorImpl13removeItemsAtEmm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertVectorAt",
+ "linker_set_key" : "_ZN7android10VectorImpl14insertVectorAtERKS0_m",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::VectorImpl::release_storage",
+ "linker_set_key" : "_ZN7android10VectorImpl15release_storageEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::editItemLocation",
+ "linker_set_key" : "_ZN7android10VectorImpl16editItemLocationEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::add",
+ "linker_set_key" : "_ZN7android10VectorImpl3addEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::add",
+ "linker_set_key" : "_ZN7android10VectorImpl3addEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::pop",
+ "linker_set_key" : "_ZN7android10VectorImpl3popEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::push",
+ "linker_set_key" : "_ZN7android10VectorImpl4pushEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::push",
+ "linker_set_key" : "_ZN7android10VectorImpl4pushEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::sort",
+ "linker_set_key" : "_ZN7android10VectorImpl4sortEPFiPKvS2_E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiPKvS0_E"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::sort",
+ "linker_set_key" : "_ZN7android10VectorImpl4sortEPFiPKvS2_PvES3_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiPKvS0_PvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::VectorImpl::_grow",
+ "linker_set_key" : "_ZN7android10VectorImpl5_growEmm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::clear",
+ "linker_set_key" : "_ZN7android10VectorImpl5clearEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::resize",
+ "linker_set_key" : "_ZN7android10VectorImpl6resizeEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::VectorImpl::_shrink",
+ "linker_set_key" : "_ZN7android10VectorImpl7_shrinkEmm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertAt",
+ "linker_set_key" : "_ZN7android10VectorImpl8insertAtEPKvmm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertAt",
+ "linker_set_key" : "_ZN7android10VectorImpl8insertAtEmm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::replaceAt",
+ "linker_set_key" : "_ZN7android10VectorImpl9replaceAtEPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::replaceAt",
+ "linker_set_key" : "_ZN7android10VectorImpl9replaceAtEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplC2ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplC2Emj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::~VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::~VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::~VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::operator=",
+ "linker_set_key" : "_ZN7android10VectorImplaSERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIRN7android10VectorImplE",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::uptimeNanos",
+ "linker_set_key" : "_ZN7android11uptimeNanosEv",
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::NativeHandle::create",
+ "linker_set_key" : "_ZN7android12NativeHandle6createEP13native_handleb",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleC1EP13native_handleb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ },
+ {
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleC2EP13native_handleb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ },
+ {
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::~NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::~NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "function_name" : "android::uptimeMillis",
+ "linker_set_key" : "_ZN7android12uptimeMillisEv",
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::PrefixPrinter::printLine",
+ "linker_set_key" : "_ZN7android13PrefixPrinter9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android13PrefixPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::PrefixPrinter::PrefixPrinter",
+ "linker_set_key" : "_ZN7android13PrefixPrinterC1ERNS_7PrinterEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android13PrefixPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIRN7android7PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::PrefixPrinter::PrefixPrinter",
+ "linker_set_key" : "_ZN7android13PrefixPrinterC2ERNS_7PrinterEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android13PrefixPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIRN7android7PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::LooperCallback::~LooperCallback",
+ "linker_set_key" : "_ZN7android14LooperCallbackD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::LooperCallback::~LooperCallback",
+ "linker_set_key" : "_ZN7android14LooperCallbackD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::LooperCallback::~LooperCallback",
+ "linker_set_key" : "_ZN7android14LooperCallbackD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::MessageHandler::~MessageHandler",
+ "linker_set_key" : "_ZN7android14MessageHandlerD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::MessageHandler::~MessageHandler",
+ "linker_set_key" : "_ZN7android14MessageHandlerD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::MessageHandler::~MessageHandler",
+ "linker_set_key" : "_ZN7android14MessageHandlerD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::String8Printer::printLine",
+ "linker_set_key" : "_ZN7android14String8Printer9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14String8PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::String8Printer::String8Printer",
+ "linker_set_key" : "_ZN7android14String8PrinterC1EPNS_7String8EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14String8PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::String8Printer::String8Printer",
+ "linker_set_key" : "_ZN7android14String8PrinterC2EPNS_7String8EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14String8PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::statusToString",
+ "linker_set_key" : "_ZN7android14statusToStringEi",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTINSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE",
+ "source_file" : "system/core/libutils/include/utils/Errors.h"
+ },
+ {
+ "function_name" : "android::elapsedRealtime",
+ "linker_set_key" : "_ZN7android15elapsedRealtimeEv",
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::add",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl3addEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::merge",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl5mergeERKNS_10VectorImplE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::merge",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl5mergeERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::remove",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl6removeEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplC2ERKNS_10VectorImplE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplC2Emj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::~SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::~SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::~SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::operator=",
+ "linker_set_key" : "_ZN7android16SortedVectorImplaSERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIRN7android16SortedVectorImplE",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::JenkinsHashWhiten",
+ "linker_set_key" : "_ZN7android17JenkinsHashWhitenEj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "function_name" : "android::WeakMessageHandler::handleMessage",
+ "linker_set_key" : "_ZN7android18WeakMessageHandler13handleMessageERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::WeakMessageHandler::WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerC1ERKNS_2wpINS_14MessageHandlerEEE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::WeakMessageHandler::WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerC2ERKNS_2wpINS_14MessageHandlerEEE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::WeakMessageHandler::~WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::WeakMessageHandler::~WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::WeakMessageHandler::~WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::JenkinsHashMixBytes",
+ "linker_set_key" : "_ZN7android19JenkinsHashMixBytesEjPKhm",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "function_name" : "android::elapsedRealtimeNano",
+ "linker_set_key" : "_ZN7android19elapsedRealtimeNanoEv",
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::JenkinsHashMixShorts",
+ "linker_set_key" : "_ZN7android20JenkinsHashMixShortsEjPKtm",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKt"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "function_name" : "android::SimpleLooperCallback::handleEvent",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallback11handleEventEiiPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::SimpleLooperCallback::SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackC1EPFiiiPvE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiiiPvE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::SimpleLooperCallback::SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackC2EPFiiiPvE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiiiPvE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::SimpleLooperCallback::~SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::SimpleLooperCallback::~SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::SimpleLooperCallback::~SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::report_sysprop_change",
+ "linker_set_key" : "_ZN7android21report_sysprop_changeEv",
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ },
+ {
+ "function_name" : "android::add_sysprop_change_callback",
+ "linker_set_key" : "_ZN7android27add_sysprop_change_callbackEPFvvEi",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFvvE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ },
+ {
+ "function_name" : "android::LightRefBase_reportIncStrongRequireStrongFailed",
+ "linker_set_key" : "_ZN7android47LightRefBase_reportIncStrongRequireStrongFailedEPKv",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::initTLSKey",
+ "linker_set_key" : "_ZN7android6Looper10initTLSKeyEv",
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::sendMessage",
+ "linker_set_key" : "_ZN7android6Looper11sendMessageERKNS_2spINS_14MessageHandlerEEERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::getForThread",
+ "linker_set_key" : "_ZN7android6Looper12getForThreadEv",
+ "return_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::setForThread",
+ "linker_set_key" : "_ZN7android6Looper12setForThreadERKNS_2spIS0_EE",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_6LooperEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::removeMessages",
+ "linker_set_key" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::removeMessages",
+ "linker_set_key" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::threadDestructor",
+ "linker_set_key" : "_ZN7android6Looper16threadDestructorEPv",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::sendMessageAtTime",
+ "linker_set_key" : "_ZN7android6Looper17sendMessageAtTimeElRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIl"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::rebuildEpollLocked",
+ "linker_set_key" : "_ZN7android6Looper18rebuildEpollLockedEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::sendMessageDelayed",
+ "linker_set_key" : "_ZN7android6Looper18sendMessageDelayedElRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIl"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::removeSequenceNumberLocked",
+ "linker_set_key" : "_ZN7android6Looper26removeSequenceNumberLockedEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::scheduleEpollRebuildLocked",
+ "linker_set_key" : "_ZN7android6Looper26scheduleEpollRebuildLockedEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::wake",
+ "linker_set_key" : "_ZN7android6Looper4wakeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::addFd",
+ "linker_set_key" : "_ZN7android6Looper5addFdEiiiPFiiiPvES1_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPFiiiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::addFd",
+ "linker_set_key" : "_ZN7android6Looper5addFdEiiiRKNS_2spINS_14LooperCallbackEEEPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14LooperCallbackEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::awoken",
+ "linker_set_key" : "_ZN7android6Looper6awokenEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::pollAll",
+ "linker_set_key" : "_ZN7android6Looper7pollAllEiPiS1_PPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::prepare",
+ "linker_set_key" : "_ZN7android6Looper7prepareEi",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::pollOnce",
+ "linker_set_key" : "_ZN7android6Looper8pollOnceEiPiS1_PPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::removeFd",
+ "linker_set_key" : "_ZN7android6Looper8removeFdEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::pollInner",
+ "linker_set_key" : "_ZN7android6Looper9pollInnerEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::Looper",
+ "linker_set_key" : "_ZN7android6LooperC1Eb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::Looper",
+ "linker_set_key" : "_ZN7android6LooperC2Eb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Looper::~Looper",
+ "linker_set_key" : "_ZN7android6LooperD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Looper::~Looper",
+ "linker_set_key" : "_ZN7android6LooperD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Looper::~Looper",
+ "linker_set_key" : "_ZN7android6LooperD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Thread::readyToRun",
+ "linker_set_key" : "_ZN7android6Thread10readyToRunEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Thread::_threadLoop",
+ "linker_set_key" : "_ZN7android6Thread11_threadLoopEPv",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::requestExit",
+ "linker_set_key" : "_ZN7android6Thread11requestExitEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::requestExitAndWait",
+ "linker_set_key" : "_ZN7android6Thread18requestExitAndWaitEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::run",
+ "linker_set_key" : "_ZN7android6Thread3runEPKcim",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::join",
+ "linker_set_key" : "_ZN7android6Thread4joinEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::Thread",
+ "linker_set_key" : "_ZN7android6ThreadC2Eb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::~Thread",
+ "linker_set_key" : "_ZN7android6ThreadD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::~Thread",
+ "linker_set_key" : "_ZN7android6ThreadD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::~Thread",
+ "linker_set_key" : "_ZN7android6ThreadD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::FileMap::advise",
+ "linker_set_key" : "_ZN7android7FileMap6adviseENS0_9MapAdviceE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIN7android7FileMap9MapAdviceE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::create",
+ "linker_set_key" : "_ZN7android7FileMap6createEPKcilmb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIl"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC1EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTION7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC2EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTION7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::~FileMap",
+ "linker_set_key" : "_ZN7android7FileMapD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::~FileMap",
+ "linker_set_key" : "_ZN7android7FileMapD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::operator=",
+ "linker_set_key" : "_ZN7android7FileMapaSEOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTION7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIRN7android7FileMapE",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::Printer::printFormatLine",
+ "linker_set_key" : "_ZN7android7Printer15printFormatLineEPKcz",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::Printer",
+ "linker_set_key" : "_ZN7android7PrinterC2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::~Printer",
+ "linker_set_key" : "_ZN7android7PrinterD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::~Printer",
+ "linker_set_key" : "_ZN7android7PrinterD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::~Printer",
+ "linker_set_key" : "_ZN7android7PrinterD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onFirstRef",
+ "linker_set_key" : "_ZN7android7RefBase10onFirstRefEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::RefBase::renameRefs",
+ "linker_set_key" : "_ZN7android7RefBase10renameRefsEmRKNS_16ReferenceRenamerE",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android16ReferenceRenamerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::RefBase::renameRefId",
+ "linker_set_key" : "_ZN7android7RefBase11renameRefIdEPNS0_12weakref_typeEPKvS4_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::RefBase::renameRefId",
+ "linker_set_key" : "_ZN7android7RefBase11renameRefIdEPS0_PKvS3_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::attemptIncWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type14attemptIncWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::attemptIncStrong",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type16attemptIncStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::incWeakRequireWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type18incWeakRequireWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::decWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type7decWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::incWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type7incWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::trackMe",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type7trackMeEbb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onLastWeakRef",
+ "linker_set_key" : "_ZN7android7RefBase13onLastWeakRefEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onLastStrongRef",
+ "linker_set_key" : "_ZN7android7RefBase15onLastStrongRefEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::extendObjectLifetime",
+ "linker_set_key" : "_ZN7android7RefBase20extendObjectLifetimeEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onIncStrongAttempted",
+ "linker_set_key" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseC1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseC2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::~RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::~RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::~RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::String8::appendPath",
+ "linker_set_key" : "_ZN7android7String810appendPathEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIRN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::lockBuffer",
+ "linker_set_key" : "_ZN7android7String810lockBufferEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPc",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String8::real_append",
+ "linker_set_key" : "_ZN7android7String811real_appendEPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::appendFormat",
+ "linker_set_key" : "_ZN7android7String812appendFormatEPKcz",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::unlockBuffer",
+ "linker_set_key" : "_ZN7android7String812unlockBufferEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::unlockBuffer",
+ "linker_set_key" : "_ZN7android7String812unlockBufferEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::appendFormatV",
+ "linker_set_key" : "_ZN7android7String813appendFormatVEPKcSt9__va_list",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTISt9__va_list"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::convertToResPath",
+ "linker_set_key" : "_ZN7android7String816convertToResPathEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIRN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::clear",
+ "linker_set_key" : "_ZN7android7String85clearEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKDim",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::append",
+ "linker_set_key" : "_ZN7android7String86appendEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::append",
+ "linker_set_key" : "_ZN7android7String86appendEPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::append",
+ "linker_set_key" : "_ZN7android7String86appendERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::format",
+ "linker_set_key" : "_ZN7android7String86formatEPKcz",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::formatV",
+ "linker_set_key" : "_ZN7android7String87formatVEPKcSt9__va_list",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTISt9__va_list"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::toLower",
+ "linker_set_key" : "_ZN7android7String87toLowerEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::removeAll",
+ "linker_set_key" : "_ZN7android7String89removeAllEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDim",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1ERKNS_8String16E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDim",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2ERKNS_8String16E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::~String8",
+ "linker_set_key" : "_ZN7android7String8D1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::~String8",
+ "linker_set_key" : "_ZN7android7String8D2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::editResize",
+ "linker_set_key" : "_ZN7android8String1610editResizeEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::replaceAll",
+ "linker_set_key" : "_ZN7android8String1610replaceAllEDsDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::allocFromUTF8",
+ "linker_set_key" : "_ZN7android8String1613allocFromUTF8EPKcm",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::allocFromUTF16",
+ "linker_set_key" : "_ZN7android8String1614allocFromUTF16EPKDsm",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::edit",
+ "linker_set_key" : "_ZN7android8String164editEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::alloc",
+ "linker_set_key" : "_ZN7android8String165allocEm",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToEPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToEPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToERKS0_mm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::append",
+ "linker_set_key" : "_ZN7android8String166appendEPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::append",
+ "linker_set_key" : "_ZN7android8String166appendERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::insert",
+ "linker_set_key" : "_ZN7android8String166insertEmPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::insert",
+ "linker_set_key" : "_ZN7android8String166insertEmPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::acquire",
+ "linker_set_key" : "_ZN7android8String167acquireEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::release",
+ "linker_set_key" : "_ZN7android8String167releaseEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTION7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1ERKNS_7String8E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1ERKS0_mm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTION7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKDsm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2ERKNS_7String8E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2ERKS0_mm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::~String16",
+ "linker_set_key" : "_ZN7android8String16D1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::~String16",
+ "linker_set_key" : "_ZN7android8String16D2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::operator=",
+ "linker_set_key" : "_ZN7android8String16aSEOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTION7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIRN7android8String16E",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::FdPrinter::printLine",
+ "linker_set_key" : "_ZN7android9FdPrinter9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9FdPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::FdPrinter::FdPrinter",
+ "linker_set_key" : "_ZN7android9FdPrinterC1EijPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9FdPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::FdPrinter::FdPrinter",
+ "linker_set_key" : "_ZN7android9FdPrinterC2EijPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9FdPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::StopWatch::reset",
+ "linker_set_key" : "_ZN7android9StopWatch5resetEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchC1EPKci",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchC2EPKci",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::~StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::~StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::fromContents",
+ "linker_set_key" : "_ZN7android9Tokenizer12fromContentsERKNS_7String8EPKcPPS0_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIPPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::skipDelimiters",
+ "linker_set_key" : "_ZN7android9Tokenizer14skipDelimitersEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::open",
+ "linker_set_key" : "_ZN7android9Tokenizer4openERKNS_7String8EPPS0_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::nextLine",
+ "linker_set_key" : "_ZN7android9Tokenizer8nextLineEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::nextToken",
+ "linker_set_key" : "_ZN7android9Tokenizer9nextTokenEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Tokenizer::Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerC1ERKNS_7String8EPNS_7FileMapEPcbm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Tokenizer::Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerC2ERKNS_7String8EPNS_7FileMapEPcbm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::~Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::~Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::itemLocation",
+ "linker_set_key" : "_ZNK7android10VectorImpl12itemLocationEm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPKv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::capacity",
+ "linker_set_key" : "_ZNK7android10VectorImpl8capacityEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::VectorImpl::itemSize",
+ "linker_set_key" : "_ZNK7android10VectorImpl8itemSizeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::SortedVectorImpl::_indexOrderOf",
+ "linker_set_key" : "_ZNK7android16SortedVectorImpl13_indexOrderOfEPKvPm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::indexOf",
+ "linker_set_key" : "_ZNK7android16SortedVectorImpl7indexOfEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::orderOf",
+ "linker_set_key" : "_ZNK7android16SortedVectorImpl7orderOfEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::Looper::getAllowNonCallbacks",
+ "linker_set_key" : "_ZNK7android6Looper20getAllowNonCallbacksEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::Request::getEpollEvents",
+ "linker_set_key" : "_ZNK7android6Looper7Request14getEpollEventsEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6Looper7RequestE"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::isPolling",
+ "linker_set_key" : "_ZNK7android6Looper9isPollingEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Thread::exitPending",
+ "linker_set_key" : "_ZNK7android6Thread11exitPendingEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::getTid",
+ "linker_set_key" : "_ZNK7android6Thread6getTidEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::isRunning",
+ "linker_set_key" : "_ZNK7android6Thread9isRunningEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_destroy",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE10do_destroyEPvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_construct",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE12do_constructEPvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_move_forward",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE15do_move_forwardEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_move_backward",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE16do_move_backwardEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_copy",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE7do_copyEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_splat",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE8do_splatEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_destroy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE10do_destroyEPvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_construct",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE12do_constructEPvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_move_forward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE15do_move_forwardEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_move_backward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE16do_move_backwardEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_copy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE7do_copyEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_splat",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE8do_splatEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_destroy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE10do_destroyEPvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_construct",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE12do_constructEPvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_move_forward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE15do_move_forwardEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_move_backward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE16do_move_backwardEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_copy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE7do_copyEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_splat",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE8do_splatEPvPKvm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "function_name" : "android::RefBase::createWeak",
+ "linker_set_key" : "_ZNK7android7RefBase10createWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::getWeakRefs",
+ "linker_set_key" : "_ZNK7android7RefBase11getWeakRefsEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::getWeakCount",
+ "linker_set_key" : "_ZNK7android7RefBase12weakref_type12getWeakCountEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::refBase",
+ "linker_set_key" : "_ZNK7android7RefBase12weakref_type7refBaseEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "return_type" : "_ZTIPN7android7RefBaseE",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::printRefs",
+ "linker_set_key" : "_ZNK7android7RefBase12weakref_type9printRefsEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::forceIncStrong",
+ "linker_set_key" : "_ZNK7android7RefBase14forceIncStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::getStrongCount",
+ "linker_set_key" : "_ZNK7android7RefBase14getStrongCountEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::incStrongRequireStrong",
+ "linker_set_key" : "_ZNK7android7RefBase22incStrongRequireStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::decStrong",
+ "linker_set_key" : "_ZNK7android7RefBase9decStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::incStrong",
+ "linker_set_key" : "_ZNK7android7RefBase9incStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::String8::getPathDir",
+ "linker_set_key" : "_ZNK7android7String810getPathDirEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::getBasePath",
+ "linker_set_key" : "_ZNK7android7String811getBasePathEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::getPathLeaf",
+ "linker_set_key" : "_ZNK7android7String811getPathLeafEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String8::find_extension",
+ "linker_set_key" : "_ZNK7android7String814find_extensionEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIPc",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::getPathExtension",
+ "linker_set_key" : "_ZNK7android7String816getPathExtensionEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::find",
+ "linker_set_key" : "_ZNK7android7String84findEPKcm",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::length",
+ "linker_set_key" : "_ZNK7android7String86lengthEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::walkPath",
+ "linker_set_key" : "_ZNK7android7String88walkPathEPS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String16::startsWith",
+ "linker_set_key" : "_ZNK7android8String1610startsWithEPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::startsWith",
+ "linker_set_key" : "_ZNK7android8String1610startsWithERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::isStaticString",
+ "linker_set_key" : "_ZNK7android8String1614isStaticStringEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::staticStringSize",
+ "linker_set_key" : "_ZNK7android8String1616staticStringSizeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::size",
+ "linker_set_key" : "_ZNK7android8String164sizeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::contains",
+ "linker_set_key" : "_ZNK7android8String168containsEPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::findLast",
+ "linker_set_key" : "_ZNK7android8String168findLastEDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::findFirst",
+ "linker_set_key" : "_ZNK7android8String169findFirstEDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::StopWatch::elapsedTime",
+ "linker_set_key" : "_ZNK7android9StopWatch11elapsedTimeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::name",
+ "linker_set_key" : "_ZNK7android9StopWatch4nameEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIPKc",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::getLocation",
+ "linker_set_key" : "_ZNK7android9Tokenizer11getLocationEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::peekRemainderOfLine",
+ "linker_set_key" : "_ZNK7android9Tokenizer19peekRemainderOfLineEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "androidCreateRawThreadEtc",
+ "linker_set_key" : "androidCreateRawThreadEtc",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidCreateThread",
+ "linker_set_key" : "androidCreateThread",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidCreateThreadEtc",
+ "linker_set_key" : "androidCreateThreadEtc",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidGetThreadId",
+ "linker_set_key" : "androidGetThreadId",
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidGetThreadPriority",
+ "linker_set_key" : "androidGetThreadPriority",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidSetCreateThreadFunc",
+ "linker_set_key" : "androidSetCreateThreadFunc",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPFiPvES_PKcimPS_E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidSetThreadName",
+ "linker_set_key" : "androidSetThreadName",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidSetThreadPriority",
+ "linker_set_key" : "androidSetThreadPriority",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "strcmp16",
+ "linker_set_key" : "strcmp16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strlen16",
+ "linker_set_key" : "strlen16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strncmp16",
+ "linker_set_key" : "strncmp16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strnlen16",
+ "linker_set_key" : "strnlen16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIm",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strstr16",
+ "linker_set_key" : "strstr16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strzcmp16",
+ "linker_set_key" : "strzcmp16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "systemTime",
+ "linker_set_key" : "systemTime",
+ "parameters" :
+ [
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/Timers.h"
+ },
+ {
+ "function_name" : "toMillisecondTimeoutDelay",
+ "linker_set_key" : "toMillisecondTimeoutDelay",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIl"
+ },
+ {
+ "referenced_type" : "_ZTIl"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Timers.h"
+ },
+ {
+ "function_name" : "utf16_to_utf8",
+ "linker_set_key" : "utf16_to_utf8",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf16_to_utf8_length",
+ "linker_set_key" : "utf16_to_utf8_length",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf32_from_utf8_at",
+ "linker_set_key" : "utf32_from_utf8_at",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPm"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf32_to_utf8",
+ "linker_set_key" : "utf32_to_utf8",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf32_to_utf8_length",
+ "linker_set_key" : "utf32_to_utf8_length",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf8_to_utf16",
+ "linker_set_key" : "utf8_to_utf16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf8_to_utf16_length",
+ "linker_set_key" : "utf8_to_utf16_length",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf8_to_utf16_no_null_terminator",
+ "linker_set_key" : "utf8_to_utf16_no_null_terminator",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "referenced_type" : "_ZTIPDs"
+ },
+ {
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ }
+ ],
+ "global_vars" :
+ [
+ {
+ "access" : "private",
+ "linker_set_key" : "_ZN7android7FileMap9mPageSizeE",
+ "name" : "android::FileMap::mPageSize",
+ "referenced_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ }
+ ],
+ "lvalue_reference_types" :
+ [
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRA1_KDs",
+ "name" : "const char16_t (&)[1]",
+ "referenced_type" : "_ZTIA1_KDs",
+ "self_type" : "_ZTIRA1_KDs",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android10VectorImplE",
+ "name" : "const android::VectorImpl &",
+ "referenced_type" : "_ZTIKN7android10VectorImplE",
+ "self_type" : "_ZTIRKN7android10VectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android16ReferenceRenamerE",
+ "name" : "const android::ReferenceRenamer &",
+ "referenced_type" : "_ZTIKN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIRKN7android16ReferenceRenamerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android16SortedVectorImplE",
+ "name" : "const android::SortedVectorImpl &",
+ "referenced_type" : "_ZTIKN7android16SortedVectorImplE",
+ "self_type" : "_ZTIRKN7android16SortedVectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android28sysprop_change_callback_infoE",
+ "name" : "const android::sysprop_change_callback_info &",
+ "referenced_type" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIRKN7android28sysprop_change_callback_infoE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android2spINS_14LooperCallbackEEE",
+ "name" : "const android::sp<android::LooperCallback> &",
+ "referenced_type" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIRKN7android2spINS_14LooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android2spINS_14MessageHandlerEEE",
+ "name" : "const android::sp<android::MessageHandler> &",
+ "referenced_type" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "const android::sp<android::SimpleLooperCallback> &",
+ "referenced_type" : "_ZTIKN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIRKN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android2spINS_6LooperEEE",
+ "name" : "const android::sp<android::Looper> &",
+ "referenced_type" : "_ZTIKN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIRKN7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android2spINS_6ThreadEEE",
+ "name" : "const android::sp<android::Thread> &",
+ "referenced_type" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIRKN7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE",
+ "name" : "const android::wp<android::MessageHandler> &",
+ "referenced_type" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android6Looper15MessageEnvelopeE",
+ "name" : "const android::Looper::MessageEnvelope &",
+ "referenced_type" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIRKN7android6Looper15MessageEnvelopeE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android6Looper8ResponseE",
+ "name" : "const android::Looper::Response &",
+ "referenced_type" : "_ZTIKN7android6Looper8ResponseE",
+ "self_type" : "_ZTIRKN7android6Looper8ResponseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "const android::Vector<android::sysprop_change_callback_info> &",
+ "referenced_type" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIRKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android7MessageE",
+ "name" : "const android::Message &",
+ "referenced_type" : "_ZTIKN7android7MessageE",
+ "self_type" : "_ZTIRKN7android7MessageE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android7String8E",
+ "name" : "const android::String8 &",
+ "referenced_type" : "_ZTIKN7android7String8E",
+ "self_type" : "_ZTIRKN7android7String8E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android8String1610StaticDataILm1EEE",
+ "name" : "const android::String16::StaticData<1> &",
+ "referenced_type" : "_ZTIKN7android8String1610StaticDataILm1EEE",
+ "self_type" : "_ZTIRKN7android8String1610StaticDataILm1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKN7android8String16E",
+ "name" : "const android::String16 &",
+ "referenced_type" : "_ZTIKN7android8String16E",
+ "self_type" : "_ZTIRKN7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKa",
+ "name" : "const signed char &",
+ "referenced_type" : "_ZTIKa",
+ "self_type" : "_ZTIRKa",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKb",
+ "name" : "const bool &",
+ "referenced_type" : "_ZTIKb",
+ "self_type" : "_ZTIRKb",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKd",
+ "name" : "const double &",
+ "referenced_type" : "_ZTIKd",
+ "self_type" : "_ZTIRKd",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKf",
+ "name" : "const float &",
+ "referenced_type" : "_ZTIKf",
+ "self_type" : "_ZTIRKf",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKh",
+ "name" : "const unsigned char &",
+ "referenced_type" : "_ZTIKh",
+ "self_type" : "_ZTIRKh",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKi",
+ "name" : "const int &",
+ "referenced_type" : "_ZTIKi",
+ "self_type" : "_ZTIRKi",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKj",
+ "name" : "const unsigned int &",
+ "referenced_type" : "_ZTIKj",
+ "self_type" : "_ZTIRKj",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKl",
+ "name" : "const long &",
+ "referenced_type" : "_ZTIKl",
+ "self_type" : "_ZTIRKl",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKm",
+ "name" : "const unsigned long &",
+ "referenced_type" : "_ZTIKm",
+ "self_type" : "_ZTIRKm",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKs",
+ "name" : "const short &",
+ "referenced_type" : "_ZTIKs",
+ "self_type" : "_ZTIRKs",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRKt",
+ "name" : "const unsigned short &",
+ "referenced_type" : "_ZTIKt",
+ "self_type" : "_ZTIRKt",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android10VectorImplE",
+ "name" : "android::VectorImpl &",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIRN7android10VectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android16SortedVectorImplE",
+ "name" : "android::SortedVectorImpl &",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIRN7android16SortedVectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android2spINS_14LooperCallbackEEE",
+ "name" : "android::sp<android::LooperCallback> &",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIRN7android2spINS_14LooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler> &",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIRN7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback> &",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIRN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper> &",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIRN7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread> &",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIRN7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android5MutexE",
+ "name" : "android::Mutex &",
+ "referenced_type" : "_ZTIN7android5MutexE",
+ "self_type" : "_ZTIRN7android5MutexE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android6Looper8ResponseE",
+ "name" : "android::Looper::Response &",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIRN7android6Looper8ResponseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android6RWLockE",
+ "name" : "android::RWLock &",
+ "referenced_type" : "_ZTIN7android6RWLockE",
+ "self_type" : "_ZTIRN7android6RWLockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::Vector<android::sysprop_change_callback_info> &",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIRN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android7FileMapE",
+ "name" : "android::FileMap &",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIRN7android7FileMapE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android7PrinterE",
+ "name" : "android::Printer &",
+ "referenced_type" : "_ZTIN7android7PrinterE",
+ "self_type" : "_ZTIRN7android7PrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android7String8E",
+ "name" : "android::String8 &",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIRN7android7String8E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRN7android8String16E",
+ "name" : "android::String16 &",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIRN7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRP13native_handle",
+ "name" : "native_handle *&",
+ "referenced_type" : "_ZTIP13native_handle",
+ "self_type" : "_ZTIRP13native_handle",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRPFiiiPvE",
+ "name" : "int (*&)(int, int, void *)",
+ "referenced_type" : "_ZTIPFiiiPvE",
+ "self_type" : "_ZTIRPFiiiPvE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIRb",
+ "name" : "bool &",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIRb",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ }
+ ],
+ "pointer_types" :
+ [
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP13native_handle",
+ "name" : "native_handle *",
+ "referenced_type" : "_ZTI13native_handle",
+ "self_type" : "_ZTIP13native_handle",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP18android_flex_plane",
+ "name" : "android_flex_plane *",
+ "referenced_type" : "_ZTI18android_flex_plane",
+ "self_type" : "_ZTIP18android_flex_plane",
+ "size" : 8,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP3DIR",
+ "name" : "DIR *",
+ "referenced_type" : "_ZTI3DIR",
+ "self_type" : "_ZTIP3DIR",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP7__sFILE",
+ "name" : "__sFILE *",
+ "referenced_type" : "_ZTI7__sFILE",
+ "self_type" : "_ZTIP7__sFILE",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIP7log_msg",
+ "name" : "log_msg *",
+ "referenced_type" : "_ZTI7log_msg",
+ "self_type" : "_ZTIP7log_msg",
+ "size" : 8,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPDs",
+ "name" : "char16_t *",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIPDs",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPFiPFiPvES_PKcimPS_E",
+ "name" : "int (*)(int (*)(void *), void *, const char *, int, unsigned long, void **)",
+ "referenced_type" : "_ZTIFiPFiPvES_PKcimPS_E",
+ "self_type" : "_ZTIPFiPFiPvES_PKcimPS_E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPFiPKvS0_E",
+ "name" : "int (*)(const void *, const void *)",
+ "referenced_type" : "_ZTIFiPKvS0_E",
+ "self_type" : "_ZTIPFiPKvS0_E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPFiPKvS0_PvE",
+ "name" : "int (*)(const void *, const void *, void *)",
+ "referenced_type" : "_ZTIFiPKvS0_PvE",
+ "self_type" : "_ZTIPFiPKvS0_PvE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPFiPvE",
+ "name" : "int (*)(void *)",
+ "referenced_type" : "_ZTIFiPvE",
+ "self_type" : "_ZTIPFiPvE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPFiiiPvE",
+ "name" : "int (*)(int, int, void *)",
+ "referenced_type" : "_ZTIFiiiPvE",
+ "self_type" : "_ZTIPFiiiPvE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPFvvE",
+ "name" : "void (*)()",
+ "referenced_type" : "_ZTIFvvE",
+ "self_type" : "_ZTIPFvvE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPK13native_handle",
+ "name" : "const native_handle *",
+ "referenced_type" : "_ZTIK13native_handle",
+ "self_type" : "_ZTIPK13native_handle",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPK7log_msg",
+ "name" : "const log_msg *",
+ "referenced_type" : "_ZTIK7log_msg",
+ "self_type" : "_ZTIPK7log_msg",
+ "size" : 8,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKDi",
+ "name" : "const char32_t *",
+ "referenced_type" : "_ZTIKDi",
+ "self_type" : "_ZTIPKDi",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKDs",
+ "name" : "const char16_t *",
+ "referenced_type" : "_ZTIKDs",
+ "self_type" : "_ZTIPKDs",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android10VectorImplE",
+ "name" : "const android::VectorImpl *",
+ "referenced_type" : "_ZTIKN7android10VectorImplE",
+ "self_type" : "_ZTIPKN7android10VectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "const android::LightRefBase<android::NativeHandle> *",
+ "referenced_type" : "_ZTIKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIPKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android12NativeHandleE",
+ "name" : "const android::NativeHandle *",
+ "referenced_type" : "_ZTIKN7android12NativeHandleE",
+ "self_type" : "_ZTIPKN7android12NativeHandleE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android16SortedVectorImplE",
+ "name" : "const android::SortedVectorImpl *",
+ "referenced_type" : "_ZTIKN7android16SortedVectorImplE",
+ "self_type" : "_ZTIPKN7android16SortedVectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android28sysprop_change_callback_infoE",
+ "name" : "const android::sysprop_change_callback_info *",
+ "referenced_type" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIPKN7android28sysprop_change_callback_infoE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android2spINS_14LooperCallbackEEE",
+ "name" : "const android::sp<android::LooperCallback> *",
+ "referenced_type" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIPKN7android2spINS_14LooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android2spINS_14MessageHandlerEEE",
+ "name" : "const android::sp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPKN7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android2spINS_6LooperEEE",
+ "name" : "const android::sp<android::Looper> *",
+ "referenced_type" : "_ZTIKN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIPKN7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android2spINS_6ThreadEEE",
+ "name" : "const android::sp<android::Thread> *",
+ "referenced_type" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIPKN7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android2wpINS_14MessageHandlerEEE",
+ "name" : "const android::wp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPKN7android2wpINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android2wpINS_6ThreadEEE",
+ "name" : "const android::wp<android::Thread> *",
+ "referenced_type" : "_ZTIKN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIPKN7android2wpINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android4base11borrowed_fdE",
+ "name" : "const android::base::borrowed_fd *",
+ "referenced_type" : "_ZTIKN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIPKN7android4base11borrowed_fdE",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "const android::base::unique_fd_impl<android::base::DefaultCloser> *",
+ "referenced_type" : "_ZTIKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIPKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6Looper15MessageEnvelopeE",
+ "name" : "const android::Looper::MessageEnvelope *",
+ "referenced_type" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIPKN7android6Looper15MessageEnvelopeE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6Looper7RequestE",
+ "name" : "const android::Looper::Request *",
+ "referenced_type" : "_ZTIKN7android6Looper7RequestE",
+ "self_type" : "_ZTIPKN7android6Looper7RequestE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6Looper8ResponseE",
+ "name" : "const android::Looper::Response *",
+ "referenced_type" : "_ZTIKN7android6Looper8ResponseE",
+ "self_type" : "_ZTIPKN7android6Looper8ResponseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6LooperE",
+ "name" : "const android::Looper *",
+ "referenced_type" : "_ZTIKN7android6LooperE",
+ "self_type" : "_ZTIPKN7android6LooperE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6ThreadE",
+ "name" : "const android::Thread *",
+ "referenced_type" : "_ZTIKN7android6ThreadE",
+ "self_type" : "_ZTIPKN7android6ThreadE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "const android::Vector<android::sysprop_change_callback_info> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "const android::Vector<android::Looper::MessageEnvelope> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "const android::Vector<android::Looper::Response> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_7String8EEE",
+ "name" : "const android::Vector<android::String8> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_7String8EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android7FileMapE",
+ "name" : "const android::FileMap *",
+ "referenced_type" : "_ZTIKN7android7FileMapE",
+ "self_type" : "_ZTIPKN7android7FileMapE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android7RefBase12weakref_typeE",
+ "name" : "const android::RefBase::weakref_type *",
+ "referenced_type" : "_ZTIKN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIPKN7android7RefBase12weakref_typeE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android7RefBaseE",
+ "name" : "const android::RefBase *",
+ "referenced_type" : "_ZTIKN7android7RefBaseE",
+ "self_type" : "_ZTIPKN7android7RefBaseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android7String8E",
+ "name" : "const android::String8 *",
+ "referenced_type" : "_ZTIKN7android7String8E",
+ "self_type" : "_ZTIPKN7android7String8E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android8String16E",
+ "name" : "const android::String16 *",
+ "referenced_type" : "_ZTIKN7android8String16E",
+ "self_type" : "_ZTIPKN7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android9CallStackE",
+ "name" : "const android::CallStack *",
+ "referenced_type" : "_ZTIKN7android9CallStackE",
+ "self_type" : "_ZTIPKN7android9CallStackE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android9StopWatchE",
+ "name" : "const android::StopWatch *",
+ "referenced_type" : "_ZTIKN7android9StopWatchE",
+ "self_type" : "_ZTIPKN7android9StopWatchE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKN7android9TokenizerE",
+ "name" : "const android::Tokenizer *",
+ "referenced_type" : "_ZTIKN7android9TokenizerE",
+ "self_type" : "_ZTIPKN7android9TokenizerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKc",
+ "name" : "const char *",
+ "referenced_type" : "_ZTIKc",
+ "self_type" : "_ZTIPKc",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKh",
+ "name" : "const unsigned char *",
+ "referenced_type" : "_ZTIKh",
+ "self_type" : "_ZTIPKh",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKt",
+ "name" : "const unsigned short *",
+ "referenced_type" : "_ZTIKt",
+ "self_type" : "_ZTIPKt",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPKv",
+ "name" : "const void *",
+ "referenced_type" : "_ZTIKv",
+ "self_type" : "_ZTIPKv",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android10LogPrinterE",
+ "name" : "android::LogPrinter *",
+ "referenced_type" : "_ZTIN7android10LogPrinterE",
+ "self_type" : "_ZTIPN7android10LogPrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android10VectorImplE",
+ "name" : "android::VectorImpl *",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIPN7android10VectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android11ScopedTraceE",
+ "name" : "android::ScopedTrace *",
+ "referenced_type" : "_ZTIN7android11ScopedTraceE",
+ "self_type" : "_ZTIPN7android11ScopedTraceE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Trace.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "android::LightRefBase<android::NativeHandle> *",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIPN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android12NativeHandleE",
+ "name" : "android::NativeHandle *",
+ "referenced_type" : "_ZTIN7android12NativeHandleE",
+ "self_type" : "_ZTIPN7android12NativeHandleE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android13PrefixPrinterE",
+ "name" : "android::PrefixPrinter *",
+ "referenced_type" : "_ZTIN7android13PrefixPrinterE",
+ "self_type" : "_ZTIPN7android13PrefixPrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android14LooperCallbackE",
+ "name" : "android::LooperCallback *",
+ "referenced_type" : "_ZTIN7android14LooperCallbackE",
+ "self_type" : "_ZTIPN7android14LooperCallbackE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android14MessageHandlerE",
+ "name" : "android::MessageHandler *",
+ "referenced_type" : "_ZTIN7android14MessageHandlerE",
+ "self_type" : "_ZTIPN7android14MessageHandlerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android14StaticString16ILm1EEE",
+ "name" : "android::StaticString16<1> *",
+ "referenced_type" : "_ZTIN7android14StaticString16ILm1EEE",
+ "self_type" : "_ZTIPN7android14StaticString16ILm1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android14String8PrinterE",
+ "name" : "android::String8Printer *",
+ "referenced_type" : "_ZTIN7android14String8PrinterE",
+ "self_type" : "_ZTIPN7android14String8PrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android16ReferenceRenamerE",
+ "name" : "android::ReferenceRenamer *",
+ "referenced_type" : "_ZTIN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIPN7android16ReferenceRenamerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android16SortedVectorImplE",
+ "name" : "android::SortedVectorImpl *",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIPN7android16SortedVectorImplE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android18WeakMessageHandlerE",
+ "name" : "android::WeakMessageHandler *",
+ "referenced_type" : "_ZTIN7android18WeakMessageHandlerE",
+ "self_type" : "_ZTIPN7android18WeakMessageHandlerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android19VirtualLightRefBaseE",
+ "name" : "android::VirtualLightRefBase *",
+ "referenced_type" : "_ZTIN7android19VirtualLightRefBaseE",
+ "self_type" : "_ZTIPN7android19VirtualLightRefBaseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android20SimpleLooperCallbackE",
+ "name" : "android::SimpleLooperCallback *",
+ "referenced_type" : "_ZTIN7android20SimpleLooperCallbackE",
+ "self_type" : "_ZTIPN7android20SimpleLooperCallbackE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android28sysprop_change_callback_infoE",
+ "name" : "android::sysprop_change_callback_info *",
+ "referenced_type" : "_ZTIN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIPN7android28sysprop_change_callback_infoE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2spINS_12NativeHandleEEE",
+ "name" : "android::sp<android::NativeHandle> *",
+ "referenced_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "self_type" : "_ZTIPN7android2spINS_12NativeHandleEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2spINS_14LooperCallbackEEE",
+ "name" : "android::sp<android::LooperCallback> *",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIPN7android2spINS_14LooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPN7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback> *",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIPN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper> *",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIPN7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread> *",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIPN7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2wpINS_14MessageHandlerEEE",
+ "name" : "android::wp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPN7android2wpINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android2wpINS_6ThreadEEE",
+ "name" : "android::wp<android::Thread> *",
+ "referenced_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIPN7android2wpINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android4base11borrowed_fdE",
+ "name" : "android::base::borrowed_fd *",
+ "referenced_type" : "_ZTIN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIPN7android4base11borrowed_fdE",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "android::base::unique_fd_impl<android::base::DefaultCloser> *",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIPN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android5Mutex8AutolockE",
+ "name" : "android::Mutex::Autolock *",
+ "referenced_type" : "_ZTIN7android5Mutex8AutolockE",
+ "self_type" : "_ZTIPN7android5Mutex8AutolockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android5MutexE",
+ "name" : "android::Mutex *",
+ "referenced_type" : "_ZTIN7android5MutexE",
+ "self_type" : "_ZTIPN7android5MutexE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6Looper15MessageEnvelopeE",
+ "name" : "android::Looper::MessageEnvelope *",
+ "referenced_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIPN7android6Looper15MessageEnvelopeE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6Looper8ResponseE",
+ "name" : "android::Looper::Response *",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIPN7android6Looper8ResponseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6LooperE",
+ "name" : "android::Looper *",
+ "referenced_type" : "_ZTIN7android6LooperE",
+ "self_type" : "_ZTIPN7android6LooperE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6RWLock9AutoRLockE",
+ "name" : "android::RWLock::AutoRLock *",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoRLockE",
+ "self_type" : "_ZTIPN7android6RWLock9AutoRLockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6RWLock9AutoWLockE",
+ "name" : "android::RWLock::AutoWLock *",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoWLockE",
+ "self_type" : "_ZTIPN7android6RWLock9AutoWLockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6RWLockE",
+ "name" : "android::RWLock *",
+ "referenced_type" : "_ZTIN7android6RWLockE",
+ "self_type" : "_ZTIPN7android6RWLockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6ThreadE",
+ "name" : "android::Thread *",
+ "referenced_type" : "_ZTIN7android6ThreadE",
+ "self_type" : "_ZTIPN7android6ThreadE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::Vector<android::sysprop_change_callback_info> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIPN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::Vector<android::Looper::MessageEnvelope> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIPN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "android::Vector<android::Looper::Response> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIPN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_7String8EEE",
+ "name" : "android::Vector<android::String8> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIPN7android6VectorINS_7String8EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7FileMapE",
+ "name" : "android::FileMap *",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIPN7android7FileMapE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7MessageE",
+ "name" : "android::Message *",
+ "referenced_type" : "_ZTIN7android7MessageE",
+ "self_type" : "_ZTIPN7android7MessageE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7PrinterE",
+ "name" : "android::Printer *",
+ "referenced_type" : "_ZTIN7android7PrinterE",
+ "self_type" : "_ZTIPN7android7PrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7RefBase12weakref_implE",
+ "name" : "android::RefBase::weakref_impl *",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_implE",
+ "self_type" : "_ZTIPN7android7RefBase12weakref_implE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "name" : "android::RefBase::weakref_type *",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7RefBaseE",
+ "name" : "android::RefBase *",
+ "referenced_type" : "_ZTIN7android7RefBaseE",
+ "self_type" : "_ZTIPN7android7RefBaseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android7String8E",
+ "name" : "android::String8 *",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIPN7android7String8E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android8String1610StaticDataILm1EEE",
+ "name" : "android::String16::StaticData<1> *",
+ "referenced_type" : "_ZTIN7android8String1610StaticDataILm1EEE",
+ "self_type" : "_ZTIPN7android8String1610StaticDataILm1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android8String16E",
+ "name" : "android::String16 *",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIPN7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android9CallStack12StackDeleterE",
+ "name" : "android::CallStack::StackDeleter *",
+ "referenced_type" : "_ZTIN7android9CallStack12StackDeleterE",
+ "self_type" : "_ZTIPN7android9CallStack12StackDeleterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android9CallStackE",
+ "name" : "android::CallStack *",
+ "referenced_type" : "_ZTIN7android9CallStackE",
+ "self_type" : "_ZTIPN7android9CallStackE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android9ConditionE",
+ "name" : "android::Condition *",
+ "referenced_type" : "_ZTIN7android9ConditionE",
+ "self_type" : "_ZTIPN7android9ConditionE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Condition.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android9FdPrinterE",
+ "name" : "android::FdPrinter *",
+ "referenced_type" : "_ZTIN7android9FdPrinterE",
+ "self_type" : "_ZTIPN7android9FdPrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android9StopWatchE",
+ "name" : "android::StopWatch *",
+ "referenced_type" : "_ZTIN7android9StopWatchE",
+ "self_type" : "_ZTIPN7android9StopWatchE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPN7android9TokenizerE",
+ "name" : "android::Tokenizer *",
+ "referenced_type" : "_ZTIN7android9TokenizerE",
+ "self_type" : "_ZTIPN7android9TokenizerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPPN7android9TokenizerE",
+ "name" : "android::Tokenizer **",
+ "referenced_type" : "_ZTIPN7android9TokenizerE",
+ "self_type" : "_ZTIPPN7android9TokenizerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPPv",
+ "name" : "void **",
+ "referenced_type" : "_ZTIPv",
+ "self_type" : "_ZTIPPv",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPc",
+ "name" : "char *",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIPc",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPh",
+ "name" : "unsigned char *",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIPh",
+ "size" : 8,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPi",
+ "name" : "int *",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIPi",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPm",
+ "name" : "unsigned long *",
+ "referenced_type" : "_ZTIm",
+ "self_type" : "_ZTIPm",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIPv",
+ "name" : "void *",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIPv",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ }
+ ],
+ "qualified_types" :
+ [
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIA1_KDs",
+ "name" : "const char16_t[1]",
+ "referenced_type" : "_ZTIA1_Ds",
+ "self_type" : "_ZTIA1_KDs",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK13native_handle",
+ "name" : "const native_handle",
+ "referenced_type" : "_ZTI13native_handle",
+ "self_type" : "_ZTIK13native_handle",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK7log_msg",
+ "name" : "const log_msg",
+ "referenced_type" : "_ZTI7log_msg",
+ "self_type" : "_ZTIK7log_msg",
+ "size" : 5124,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKDi",
+ "name" : "const char32_t",
+ "referenced_type" : "_ZTIDi",
+ "self_type" : "_ZTIKDi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKDs",
+ "name" : "const char16_t",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIKDs",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android10VectorImplE",
+ "name" : "const android::VectorImpl",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIKN7android10VectorImplE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "const android::LightRefBase<android::NativeHandle>",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android12NativeHandleE",
+ "name" : "const android::NativeHandle",
+ "referenced_type" : "_ZTIN7android12NativeHandleE",
+ "self_type" : "_ZTIKN7android12NativeHandleE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android16ReferenceRenamerE",
+ "name" : "const android::ReferenceRenamer",
+ "referenced_type" : "_ZTIN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIKN7android16ReferenceRenamerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android16SortedVectorImplE",
+ "name" : "const android::SortedVectorImpl",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIKN7android16SortedVectorImplE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "name" : "const android::sysprop_change_callback_info",
+ "referenced_type" : "_ZTIN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "name" : "const android::sp<android::LooperCallback>",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "name" : "const android::sp<android::MessageHandler>",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "const android::sp<android::SimpleLooperCallback>",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIKN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_6LooperEEE",
+ "name" : "const android::sp<android::Looper>",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIKN7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "name" : "const android::sp<android::Thread>",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "name" : "const android::wp<android::MessageHandler>",
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2wpINS_6ThreadEEE",
+ "name" : "const android::wp<android::Thread>",
+ "referenced_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIKN7android2wpINS_6ThreadEEE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android4base11borrowed_fdE",
+ "name" : "const android::base::borrowed_fd",
+ "referenced_type" : "_ZTIN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIKN7android4base11borrowed_fdE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "const android::base::unique_fd_impl<android::base::DefaultCloser>",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "name" : "const android::Looper::MessageEnvelope",
+ "referenced_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6Looper7RequestE",
+ "name" : "const android::Looper::Request",
+ "referenced_type" : "_ZTIN7android6Looper7RequestE",
+ "self_type" : "_ZTIKN7android6Looper7RequestE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6Looper8ResponseE",
+ "name" : "const android::Looper::Response",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIKN7android6Looper8ResponseE",
+ "size" : 48,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6LooperE",
+ "name" : "const android::Looper",
+ "referenced_type" : "_ZTIN7android6LooperE",
+ "self_type" : "_ZTIKN7android6LooperE",
+ "size" : 264,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6ThreadE",
+ "name" : "const android::Thread",
+ "referenced_type" : "_ZTIN7android6ThreadE",
+ "self_type" : "_ZTIKN7android6ThreadE",
+ "size" : 152,
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "const android::Vector<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "const android::Vector<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "const android::Vector<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIKN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_7String8EEE",
+ "name" : "const android::Vector<android::String8>",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIKN7android6VectorINS_7String8EEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7FileMapE",
+ "name" : "const android::FileMap",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIKN7android7FileMapE",
+ "size" : 48,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7MessageE",
+ "name" : "const android::Message",
+ "referenced_type" : "_ZTIN7android7MessageE",
+ "self_type" : "_ZTIKN7android7MessageE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7RefBase12weakref_typeE",
+ "name" : "const android::RefBase::weakref_type",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIKN7android7RefBase12weakref_typeE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7RefBaseE",
+ "name" : "const android::RefBase",
+ "referenced_type" : "_ZTIN7android7RefBaseE",
+ "self_type" : "_ZTIKN7android7RefBaseE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7String8E",
+ "name" : "const android::String8",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIKN7android7String8E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android8String1610StaticDataILm1EEE",
+ "name" : "const android::String16::StaticData<1>",
+ "referenced_type" : "_ZTIN7android8String1610StaticDataILm1EEE",
+ "self_type" : "_ZTIKN7android8String1610StaticDataILm1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android8String16E",
+ "name" : "const android::String16",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIKN7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android9CallStackE",
+ "name" : "const android::CallStack",
+ "referenced_type" : "_ZTIN7android9CallStackE",
+ "self_type" : "_ZTIKN7android9CallStackE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android9StopWatchE",
+ "name" : "const android::StopWatch",
+ "referenced_type" : "_ZTIN7android9StopWatchE",
+ "self_type" : "_ZTIKN7android9StopWatchE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android9TokenizerE",
+ "name" : "const android::Tokenizer",
+ "referenced_type" : "_ZTIN7android9TokenizerE",
+ "self_type" : "_ZTIKN7android9TokenizerE",
+ "size" : 56,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKPKc",
+ "name" : "const char *const",
+ "referenced_type" : "_ZTIPKc",
+ "self_type" : "_ZTIKPKc",
+ "size" : 8,
+ "source_file" : "system/core/libprocessgroup/include/processgroup/processgroup.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKPN7android7RefBase12weakref_implE",
+ "name" : "android::RefBase::weakref_impl *const",
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_implE",
+ "self_type" : "_ZTIKPN7android7RefBase12weakref_implE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKa",
+ "name" : "const signed char",
+ "referenced_type" : "_ZTIa",
+ "self_type" : "_ZTIKa",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKb",
+ "name" : "const bool",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIKb",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKc",
+ "name" : "const char",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIKc",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKd",
+ "name" : "const double",
+ "referenced_type" : "_ZTId",
+ "self_type" : "_ZTIKd",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKf",
+ "name" : "const float",
+ "referenced_type" : "_ZTIf",
+ "self_type" : "_ZTIKf",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKh",
+ "name" : "const unsigned char",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIKh",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKi",
+ "name" : "const int",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIKi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKj",
+ "name" : "const unsigned int",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIKj",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKl",
+ "name" : "const long",
+ "referenced_type" : "_ZTIl",
+ "self_type" : "_ZTIKl",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKm",
+ "name" : "const unsigned long",
+ "referenced_type" : "_ZTIm",
+ "self_type" : "_ZTIKm",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKs",
+ "name" : "const short",
+ "referenced_type" : "_ZTIs",
+ "self_type" : "_ZTIKs",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKt",
+ "name" : "const unsigned short",
+ "referenced_type" : "_ZTIt",
+ "self_type" : "_ZTIKt",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKv",
+ "name" : "const void",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIKv",
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 1,
+ "is_volatile" : true,
+ "linker_set_key" : "_ZTIVb",
+ "name" : "volatile bool",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIVb",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ }
+ ],
+ "record_types" :
+ [
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "len",
+ "referenced_type" : "_ZTIt"
+ },
+ {
+ "field_name" : "hdr_size",
+ "field_offset" : 16,
+ "referenced_type" : "_ZTIt"
+ },
+ {
+ "field_name" : "pid",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "tid",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "sec",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "nsec",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "lid",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "uid",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "linker_set_key" : "_ZTI12logger_entry",
+ "name" : "logger_entry",
+ "referenced_type" : "_ZTI12logger_entry",
+ "self_type" : "_ZTI12logger_entry",
+ "size" : 28,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "y",
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "field_name" : "cb",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "field_name" : "cr",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "field_name" : "ystride",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "field_name" : "cstride",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "field_name" : "chroma_step",
+ "field_offset" : 320,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "field_name" : "reserved",
+ "field_offset" : 384,
+ "referenced_type" : "_ZTIA8_j"
+ }
+ ],
+ "linker_set_key" : "_ZTI13android_ycbcr",
+ "name" : "android_ycbcr",
+ "referenced_type" : "_ZTI13android_ycbcr",
+ "self_type" : "_ZTI13android_ycbcr",
+ "size" : 80,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "version",
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "numFds",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "numInts",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "data",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIA0_i"
+ }
+ ],
+ "linker_set_key" : "_ZTI13native_handle",
+ "name" : "native_handle",
+ "referenced_type" : "_ZTI13native_handle",
+ "self_type" : "_ZTI13native_handle",
+ "size" : 12,
+ "source_file" : "system/core/libcutils/include_outside_system/cutils/native_handle.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "x",
+ "referenced_type" : "_ZTIf"
+ },
+ {
+ "field_name" : "y",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIf"
+ }
+ ],
+ "linker_set_key" : "_ZTI16android_xy_color",
+ "name" : "android_xy_color",
+ "referenced_type" : "_ZTI16android_xy_color",
+ "self_type" : "_ZTI16android_xy_color",
+ "size" : 8,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "top_left",
+ "referenced_type" : "_ZTIPh"
+ },
+ {
+ "field_name" : "component",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTI22android_flex_component"
+ },
+ {
+ "field_name" : "bits_per_component",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "bits_used",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "h_increment",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "v_increment",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "h_subsampling",
+ "field_offset" : 224,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "v_subsampling",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTI18android_flex_plane",
+ "name" : "android_flex_plane",
+ "referenced_type" : "_ZTI18android_flex_plane",
+ "self_type" : "_ZTI18android_flex_plane",
+ "size" : 40,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "format",
+ "referenced_type" : "_ZTI19android_flex_format"
+ },
+ {
+ "field_name" : "num_planes",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "planes",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIP18android_flex_plane"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_flex_layout",
+ "name" : "android_flex_layout",
+ "referenced_type" : "_ZTI19android_flex_layout",
+ "self_type" : "_ZTI19android_flex_layout",
+ "size" : 16,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "num_points",
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "reserved",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIA8_j"
+ },
+ {
+ "field_name" : "xyzc_points",
+ "field_offset" : 288,
+ "referenced_type" : "_ZTIA_f"
+ }
+ ],
+ "linker_set_key" : "_ZTI20android_depth_points",
+ "name" : "android_depth_points",
+ "referenced_type" : "_ZTI20android_depth_points",
+ "self_type" : "_ZTI20android_depth_points",
+ "size" : 36,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "struct_size",
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "field_name" : "buffer_id",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "priority",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "tag",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "field_name" : "file",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "field_name" : "line",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "message",
+ "field_offset" : 320,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTI21__android_log_message",
+ "name" : "__android_log_message",
+ "referenced_type" : "_ZTI21__android_log_message",
+ "self_type" : "_ZTI21__android_log_message",
+ "size" : 48,
+ "source_file" : "system/logging/liblog/include_vndk/android/log.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "maxContentLightLevel",
+ "referenced_type" : "_ZTIf"
+ },
+ {
+ "field_name" : "maxFrameAverageLightLevel",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIf"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_cta861_3_metadata",
+ "name" : "android_cta861_3_metadata",
+ "referenced_type" : "_ZTI25android_cta861_3_metadata",
+ "self_type" : "_ZTI25android_cta861_3_metadata",
+ "size" : 8,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "displayPrimaryRed",
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "displayPrimaryGreen",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "displayPrimaryBlue",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "whitePoint",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "maxLuminance",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIf"
+ },
+ {
+ "field_name" : "minLuminance",
+ "field_offset" : 288,
+ "referenced_type" : "_ZTIf"
+ }
+ ],
+ "linker_set_key" : "_ZTI26android_smpte2086_metadata",
+ "name" : "android_smpte2086_metadata",
+ "referenced_type" : "_ZTI26android_smpte2086_metadata",
+ "self_type" : "_ZTI26android_smpte2086_metadata",
+ "size" : 40,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "referenced_type" : "_ZTIN7log_msgUt_E"
+ }
+ ],
+ "linker_set_key" : "_ZTI7log_msg",
+ "name" : "log_msg",
+ "referenced_type" : "_ZTI7log_msg",
+ "self_type" : "_ZTI7log_msg",
+ "size" : 5124,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 1,
+ "fields" :
+ [
+ {
+ "field_name" : "tv_sec",
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "tv_nsec",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "linker_set_key" : "_ZTI8log_time",
+ "name" : "log_time",
+ "referenced_type" : "_ZTI8log_time",
+ "self_type" : "_ZTI8log_time",
+ "size" : 8,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_time.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLogTag",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPriority",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTI19android_LogPriority"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mIgnoreBlankLines",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android10LogPrinterE",
+ "name" : "android::LogPrinter",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android10LogPrinterE",
+ "self_type" : "_ZTIN7android10LogPrinterE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android10LogPrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android10LogPrinter9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10LogPrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10LogPrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mStorage",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mCount",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mFlags",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIKj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mItemSize",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIKm"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android10VectorImplE",
+ "name" : "android::VectorImpl",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIN7android10VectorImplE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android10VectorImplE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10VectorImplD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10VectorImplD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl12do_constructEPvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl10do_destroyEPvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl7do_copyEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl8do_splatEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl15do_move_forwardEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl16do_move_backwardEPvPKvm"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mTag",
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android11ScopedTraceE",
+ "name" : "android::ScopedTrace",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android11ScopedTraceE",
+ "self_type" : "_ZTIN7android11ScopedTraceE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Trace.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCount",
+ "referenced_type" : "_ZTINSt3__16atomicIiEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "android::LightRefBase<android::NativeHandle>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android12NativeHandleE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCount",
+ "referenced_type" : "_ZTINSt3__16atomicIiEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE",
+ "name" : "android::LightRefBase<android::VirtualLightRefBase>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE",
+ "self_type" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android19VirtualLightRefBaseE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mHandle",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mOwnsHandle",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android12NativeHandleE",
+ "name" : "android::NativeHandle",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android12NativeHandleE",
+ "self_type" : "_ZTIN7android12NativeHandleE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mPrinter",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIRN7android7PrinterE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13PrefixPrinterE",
+ "name" : "android::PrefixPrinter",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android13PrefixPrinterE",
+ "self_type" : "_ZTIN7android13PrefixPrinterE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android13PrefixPrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android13PrefixPrinter9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android13PrefixPrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android13PrefixPrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_pointer<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_pointer<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEEE",
+ "name" : "android::trait_pointer<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "is_virtual" : true,
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14LooperCallbackE",
+ "name" : "android::LooperCallback",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14LooperCallbackE",
+ "self_type" : "_ZTIN7android14LooperCallbackE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 8,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14LooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14LooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14LooperCallbackD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android14LooperCallback11handleEventEiiPv"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -8,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -8,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14LooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android14LooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android14LooperCallbackD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "is_virtual" : true,
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14MessageHandlerE",
+ "name" : "android::MessageHandler",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14MessageHandlerE",
+ "self_type" : "_ZTIN7android14MessageHandlerE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 8,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14MessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14MessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14MessageHandlerD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android14MessageHandler13handleMessageERKNS_7MessageE"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -8,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -8,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14MessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android14MessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android14MessageHandlerD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android14ReferenceMoverE",
+ "name" : "android::ReferenceMover",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14ReferenceMoverE",
+ "self_type" : "_ZTIN7android14ReferenceMoverE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android8String16E"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mData",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIKN7android8String1610StaticDataILm1EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14StaticString16ILm1EEE",
+ "name" : "android::StaticString16<1>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14StaticString16ILm1EEE",
+ "self_type" : "_ZTIN7android14StaticString16ILm1EEE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mTarget",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14String8PrinterE",
+ "name" : "android::String8Printer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14String8PrinterE",
+ "self_type" : "_ZTIN7android14String8PrinterE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14String8PrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android14String8Printer9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14String8PrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14String8PrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIN7android16ReferenceRenamerE",
+ "name" : "android::ReferenceRenamer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIN7android16ReferenceRenamerE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android16ReferenceRenamerE"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android16ReferenceRenamerclEm"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16SortedVectorImplE",
+ "name" : "android::SortedVectorImpl",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIN7android16SortedVectorImplE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android16SortedVectorImplE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android16SortedVectorImplD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android16SortedVectorImplD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl12do_constructEPvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl10do_destroyEPvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl7do_copyEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl8do_splatEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl15do_move_forwardEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl16do_move_backwardEPvPKvm"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android16SortedVectorImpl10do_compareEPKvS2_"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTINSt3__117integral_constantIbLb0EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16use_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::use_trivial_move<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android16use_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android16use_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTINSt3__117integral_constantIbLb0EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16use_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::use_trivial_move<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android16use_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android16use_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTINSt3__117integral_constantIbLb0EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16use_trivial_moveINS_6Looper8ResponseEEE",
+ "name" : "android::use_trivial_move<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android16use_trivial_moveINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android16use_trivial_moveINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android14MessageHandlerE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mHandler",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18WeakMessageHandlerE",
+ "name" : "android::WeakMessageHandler",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android18WeakMessageHandlerE",
+ "self_type" : "_ZTIN7android18WeakMessageHandlerE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 24,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android18WeakMessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android18WeakMessageHandler13handleMessageERKNS_7MessageE"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -24,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -24,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android18WeakMessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_copy<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_copy<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_copy<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIbEE",
+ "name" : "android::trait_trivial_copy<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIcEE",
+ "name" : "android::trait_trivial_copy<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIdEE",
+ "name" : "android::trait_trivial_copy<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIfEE",
+ "name" : "android::trait_trivial_copy<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIhEE",
+ "name" : "android::trait_trivial_copy<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIiEE",
+ "name" : "android::trait_trivial_copy<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIjEE",
+ "name" : "android::trait_trivial_copy<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIlEE",
+ "name" : "android::trait_trivial_copy<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyImEE",
+ "name" : "android::trait_trivial_copy<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIsEE",
+ "name" : "android::trait_trivial_copy<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyItEE",
+ "name" : "android::trait_trivial_copy<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIvEE",
+ "name" : "android::trait_trivial_copy<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIxEE",
+ "name" : "android::trait_trivial_copy<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIyEE",
+ "name" : "android::trait_trivial_copy<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_ctor<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_ctor<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_ctor<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIbEE",
+ "name" : "android::trait_trivial_ctor<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIcEE",
+ "name" : "android::trait_trivial_ctor<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIdEE",
+ "name" : "android::trait_trivial_ctor<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIfEE",
+ "name" : "android::trait_trivial_ctor<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIhEE",
+ "name" : "android::trait_trivial_ctor<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIiEE",
+ "name" : "android::trait_trivial_ctor<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIjEE",
+ "name" : "android::trait_trivial_ctor<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIlEE",
+ "name" : "android::trait_trivial_ctor<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorImEE",
+ "name" : "android::trait_trivial_ctor<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIsEE",
+ "name" : "android::trait_trivial_ctor<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorItEE",
+ "name" : "android::trait_trivial_ctor<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIvEE",
+ "name" : "android::trait_trivial_ctor<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIxEE",
+ "name" : "android::trait_trivial_ctor<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIyEE",
+ "name" : "android::trait_trivial_ctor<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_dtor<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_dtor<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_dtor<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIbEE",
+ "name" : "android::trait_trivial_dtor<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIcEE",
+ "name" : "android::trait_trivial_dtor<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIdEE",
+ "name" : "android::trait_trivial_dtor<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIfEE",
+ "name" : "android::trait_trivial_dtor<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIhEE",
+ "name" : "android::trait_trivial_dtor<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIiEE",
+ "name" : "android::trait_trivial_dtor<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIjEE",
+ "name" : "android::trait_trivial_dtor<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIlEE",
+ "name" : "android::trait_trivial_dtor<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorImEE",
+ "name" : "android::trait_trivial_dtor<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIsEE",
+ "name" : "android::trait_trivial_dtor<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorItEE",
+ "name" : "android::trait_trivial_dtor<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIvEE",
+ "name" : "android::trait_trivial_dtor<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIxEE",
+ "name" : "android::trait_trivial_dtor<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIyEE",
+ "name" : "android::trait_trivial_dtor<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_move<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_move<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_move<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_7String8EEE",
+ "name" : "android::trait_trivial_move<android::String8>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/String8.h",
+ "template_args" :
+ [
+ "_ZTIN7android7String8E"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_8String16EEE",
+ "name" : "android::trait_trivial_move<android::String16>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/String16.h",
+ "template_args" :
+ [
+ "_ZTIN7android8String16E"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIbEE",
+ "name" : "android::trait_trivial_move<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIcEE",
+ "name" : "android::trait_trivial_move<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIdEE",
+ "name" : "android::trait_trivial_move<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIfEE",
+ "name" : "android::trait_trivial_move<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIhEE",
+ "name" : "android::trait_trivial_move<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIiEE",
+ "name" : "android::trait_trivial_move<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIjEE",
+ "name" : "android::trait_trivial_move<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIlEE",
+ "name" : "android::trait_trivial_move<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveImEE",
+ "name" : "android::trait_trivial_move<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIsEE",
+ "name" : "android::trait_trivial_move<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveItEE",
+ "name" : "android::trait_trivial_move<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIvEE",
+ "name" : "android::trait_trivial_move<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIxEE",
+ "name" : "android::trait_trivial_move<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIyEE",
+ "name" : "android::trait_trivial_move<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android19VirtualLightRefBaseE",
+ "name" : "android::VirtualLightRefBase",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android19VirtualLightRefBaseE",
+ "self_type" : "_ZTIN7android19VirtualLightRefBaseE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android19VirtualLightRefBaseE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android19VirtualLightRefBaseD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android19VirtualLightRefBaseD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android14LooperCallbackE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCallback",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPFiiiPvE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android20SimpleLooperCallbackE",
+ "name" : "android::SimpleLooperCallback",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android20SimpleLooperCallbackE",
+ "self_type" : "_ZTIN7android20SimpleLooperCallbackE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 16,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android20SimpleLooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android20SimpleLooperCallback11handleEventEiiPv"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -16,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -16,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android20SimpleLooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "name" : "android::sp<android::NativeHandle>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "self_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android12NativeHandleE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "name" : "android::sp<android::LooperCallback>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android14LooperCallbackE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android14MessageHandlerE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android20SimpleLooperCallbackE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android6LooperE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android6ThreadE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "m_refs",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "name" : "android::wp<android::MessageHandler>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android14MessageHandlerE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "m_refs",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "name" : "android::wp<android::Thread>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android6ThreadE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "fd_",
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android4base11borrowed_fdE",
+ "name" : "android::base::borrowed_fd",
+ "referenced_type" : "_ZTIN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIN7android4base11borrowed_fdE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android4base13DefaultCloserE",
+ "name" : "android::base::DefaultCloser",
+ "referenced_type" : "_ZTIN7android4base13DefaultCloserE",
+ "self_type" : "_ZTIN7android4base13DefaultCloserE",
+ "size" : 1,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "fd_",
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "android::base::unique_fd_impl<android::base::DefaultCloser>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h",
+ "template_args" :
+ [
+ "_ZTIN7android4base13DefaultCloserE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "referenced_type" : "_ZTIRN7android5MutexE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android5Mutex8AutolockE",
+ "name" : "android::Mutex::Autolock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android5Mutex8AutolockE",
+ "self_type" : "_ZTIN7android5Mutex8AutolockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mMutex",
+ "referenced_type" : "_ZTI15pthread_mutex_t"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android5MutexE",
+ "name" : "android::Mutex",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android5MutexE",
+ "self_type" : "_ZTIN7android5MutexE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "access" : "private",
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "uptime",
+ "referenced_type" : "_ZTIl"
+ },
+ {
+ "field_name" : "handler",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "field_name" : "message",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIN7android7MessageE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "name" : "android::Looper::MessageEnvelope",
+ "referenced_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "fd",
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "ident",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "events",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "callback",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE"
+ },
+ {
+ "field_name" : "data",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper7RequestE",
+ "name" : "android::Looper::Request",
+ "referenced_type" : "_ZTIN7android6Looper7RequestE",
+ "self_type" : "_ZTIN7android6Looper7RequestE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "seq",
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "field_name" : "events",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "request",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIN7android6Looper7RequestE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper8ResponseE",
+ "name" : "android::Looper::Response",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIN7android6Looper8ResponseE",
+ "size" : 48,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mAllowNonCallbacks",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIKb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mWakeEventFd",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIN7android5MutexE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mMessageEnvelopes",
+ "field_offset" : 512,
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mSendingMessage",
+ "field_offset" : 832,
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPolling",
+ "field_offset" : 840,
+ "referenced_type" : "_ZTIVb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mEpollFd",
+ "field_offset" : 864,
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mEpollRebuildRequired",
+ "field_offset" : 896,
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mRequests",
+ "field_offset" : 960,
+ "referenced_type" : "_ZTINSt3__113unordered_mapImN7android6Looper7RequestENS_4hashImEENS_8equal_toImEENS_9allocatorINS_4pairIKmS3_EEEEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mSequenceNumberByFd",
+ "field_offset" : 1280,
+ "referenced_type" : "_ZTINSt3__113unordered_mapIimNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKimEEEEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mNextRequestSeq",
+ "field_offset" : 1600,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mResponses",
+ "field_offset" : 1664,
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mResponseIndex",
+ "field_offset" : 1984,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mNextMessageUptime",
+ "field_offset" : 2048,
+ "referenced_type" : "_ZTIl"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6LooperE",
+ "name" : "android::Looper",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6LooperE",
+ "self_type" : "_ZTIN7android6LooperE",
+ "size" : 264,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6LooperE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6LooperD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6LooperD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "referenced_type" : "_ZTIRN7android6RWLockE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLock9AutoRLockE",
+ "name" : "android::RWLock::AutoRLock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoRLockE",
+ "self_type" : "_ZTIN7android6RWLock9AutoRLockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "referenced_type" : "_ZTIRN7android6RWLockE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLock9AutoWLockE",
+ "name" : "android::RWLock::AutoWLock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoWLockE",
+ "self_type" : "_ZTIN7android6RWLock9AutoWLockE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mRWLock",
+ "referenced_type" : "_ZTI16pthread_rwlock_t"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLockE",
+ "name" : "android::RWLock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6RWLockE",
+ "self_type" : "_ZTIN7android6RWLockE",
+ "size" : 56,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "is_virtual" : true,
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCanCallJava",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIKb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mThread",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIN7android5MutexE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mThreadExitedCondition",
+ "field_offset" : 512,
+ "referenced_type" : "_ZTIN7android9ConditionE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mStatus",
+ "field_offset" : 896,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mExitPending",
+ "field_offset" : 928,
+ "referenced_type" : "_ZTIVb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mRunning",
+ "field_offset" : 936,
+ "referenced_type" : "_ZTIVb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mHoldSelf",
+ "field_offset" : 960,
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mTid",
+ "field_offset" : 1024,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6ThreadE",
+ "name" : "android::Thread",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6ThreadE",
+ "self_type" : "_ZTIN7android6ThreadE",
+ "size" : 152,
+ "source_file" : "system/core/libutils/include/utils/Thread.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 136,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6ThreadE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6ThreadD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6ThreadD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android6Thread3runEPKcim"
+ },
+ {
+ "mangled_component_name" : "_ZN7android6Thread11requestExitEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android6Thread10readyToRunEv"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android6Thread10threadLoopEv"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -136,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -136,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6ThreadE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android6ThreadD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n24_N7android6ThreadD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::Vector<android::sysprop_change_callback_info>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_28sysprop_change_callback_infoEED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_28sysprop_change_callback_infoEED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE12do_constructEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE10do_destroyEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE7do_copyEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE8do_splatEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE15do_move_forwardEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE16do_move_backwardEPvPKvm"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::Vector<android::Looper::MessageEnvelope>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper15MessageEnvelopeEED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper15MessageEnvelopeEED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE12do_constructEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE10do_destroyEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE7do_copyEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE8do_splatEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE15do_move_forwardEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE16do_move_backwardEPvPKvm"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "android::Vector<android::Looper::Response>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper8ResponseEED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper8ResponseEED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE12do_constructEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE10do_destroyEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE7do_copyEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE8do_splatEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE15do_move_forwardEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE16do_move_backwardEPvPKvm"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_7String8EEE",
+ "name" : "android::Vector<android::String8>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android7String8E"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_7String8EEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_7String8EED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_7String8EED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE12do_constructEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE10do_destroyEPvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE7do_copyEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE8do_splatEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE15do_move_forwardEPvPKvm"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE16do_move_backwardEPvPKvm"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::traits<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::traits<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper8ResponseEEE",
+ "name" : "android::traits<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFileName",
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mBasePtr",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mBaseLength",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mDataOffset",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIl"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mDataPtr",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mDataLength",
+ "field_offset" : 320,
+ "referenced_type" : "_ZTIm"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7FileMapE",
+ "name" : "android::FileMap",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIN7android7FileMapE",
+ "size" : 48,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "what",
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7MessageE",
+ "name" : "android::Message",
+ "referenced_type" : "_ZTIN7android7MessageE",
+ "self_type" : "_ZTIN7android7MessageE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTIN7android7PrinterE",
+ "name" : "android::Printer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7PrinterE",
+ "self_type" : "_ZTIN7android7PrinterE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android7PrinterE"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android7Printer9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7PrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7PrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android7RefBase12weakref_typeE",
+ "name" : "android::RefBase::weakref_type",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mRefs",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIKPN7android7RefBase12weakref_implE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7RefBaseE",
+ "name" : "android::RefBase",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7RefBaseE",
+ "self_type" : "_ZTIN7android7RefBaseE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android7RefBaseE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7RefBaseD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7RefBaseD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mString",
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7String8E",
+ "name" : "android::String8",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIN7android7String8E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "size",
+ "referenced_type" : "_ZTIKj"
+ },
+ {
+ "field_name" : "data",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIA1_Ds"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android8String1610StaticDataILm1EEE",
+ "name" : "android::String16::StaticData<1>",
+ "referenced_type" : "_ZTIN7android8String1610StaticDataILm1EEE",
+ "self_type" : "_ZTIN7android8String1610StaticDataILm1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mString",
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android8String16E",
+ "name" : "android::String16",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIN7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android9CallStack12StackDeleterE",
+ "name" : "android::CallStack::StackDeleter",
+ "referenced_type" : "_ZTIN7android9CallStack12StackDeleterE",
+ "self_type" : "_ZTIN7android9CallStack12StackDeleterE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFrameLines",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9CallStackE",
+ "name" : "android::CallStack",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9CallStackE",
+ "self_type" : "_ZTIN7android9CallStackE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCond",
+ "referenced_type" : "_ZTI14pthread_cond_t"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9ConditionE",
+ "name" : "android::Condition",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9ConditionE",
+ "self_type" : "_ZTIN7android9ConditionE",
+ "size" : 48,
+ "source_file" : "system/core/libutils/include/utils/Condition.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFd",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mIndent",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mFormatString",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIA20_c"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9FdPrinterE",
+ "name" : "android::FdPrinter",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9FdPrinterE",
+ "self_type" : "_ZTIN7android9FdPrinterE",
+ "size" : 48,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android9FdPrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android9FdPrinter9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android9FdPrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android9FdPrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mName",
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mClock",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mStartTime",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIl"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9StopWatchE",
+ "name" : "android::StopWatch",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9StopWatchE",
+ "self_type" : "_ZTIN7android9StopWatchE",
+ "size" : 24,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFilename",
+ "referenced_type" : "_ZTIN7android7String8E"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mFileMap",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mBuffer",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mOwnBuffer",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLength",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIm"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mCurrent",
+ "field_offset" : 320,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLineNumber",
+ "field_offset" : 384,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9TokenizerE",
+ "name" : "android::Tokenizer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9TokenizerE",
+ "self_type" : "_ZTIN7android9TokenizerE",
+ "size" : 56,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "buf",
+ "referenced_type" : "_ZTIA5121_h"
+ },
+ {
+ "field_name" : "entry",
+ "referenced_type" : "_ZTI12logger_entry"
+ }
+ ],
+ "is_anonymous" : true,
+ "linker_set_key" : "_ZTIN7log_msgUt_E",
+ "name" : "log_msg::(anonymous)",
+ "record_kind" : "union",
+ "referenced_type" : "_ZTIN7log_msgUt_E",
+ "self_type" : "_ZTIN7log_msgUt_E",
+ "size" : 5124,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ }
+ ],
+ "rvalue_reference_types" :
+ [
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android2spINS_12NativeHandleEEE",
+ "name" : "android::sp<android::NativeHandle> &&",
+ "referenced_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "self_type" : "_ZTION7android2spINS_12NativeHandleEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler> &&",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTION7android2spINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback> &&",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTION7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper> &&",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTION7android2spINS_6LooperEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread> &&",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTION7android2spINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "android::base::unique_fd_impl<android::base::DefaultCloser> &&",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTION7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 8,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android7FileMapE",
+ "name" : "android::FileMap &&",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTION7android7FileMapE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTION7android8String16E",
+ "name" : "android::String16 &&",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTION7android8String16E",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ }
+ ]
+}
diff --git a/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump b/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump
new file mode 100644
index 0000000..f88da15
--- /dev/null
+++ b/libutils/abi-dumps/arm_arm64/source-based/libutils.so.lsdump
@@ -0,0 +1,15549 @@
+{
+ "array_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIA0_i",
+ "name" : "int[0]",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIA0_i",
+ "source_file" : "system/core/libcutils/include_outside_system/cutils/native_handle.h"
+ },
+ {
+ "alignment" : 2,
+ "linker_set_key" : "_ZTIA1_Ds",
+ "name" : "char16_t[1]",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIA1_Ds",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIA20_c",
+ "name" : "char[20]",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIA20_c",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIA5121_h",
+ "name" : "unsigned char[5121]",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIA5121_h",
+ "size" : 5121,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIA8_j",
+ "name" : "unsigned int[8]",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIA8_j",
+ "size" : 32,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "linker_set_key" : "_ZTIA_f",
+ "name" : "float[]",
+ "referenced_type" : "_ZTIf",
+ "self_type" : "_ZTIA_f",
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ }
+ ],
+ "builtin_types" :
+ [
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIDi",
+ "name" : "char32_t",
+ "referenced_type" : "_ZTIDi",
+ "self_type" : "_ZTIDi",
+ "size" : 4
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIDn",
+ "name" : "std::nullptr_t",
+ "referenced_type" : "_ZTIDn",
+ "self_type" : "_ZTIDn",
+ "size" : 4
+ },
+ {
+ "alignment" : 2,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIDs",
+ "name" : "char16_t",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIDs",
+ "size" : 2
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIa",
+ "name" : "signed char",
+ "referenced_type" : "_ZTIa",
+ "self_type" : "_ZTIa",
+ "size" : 1
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIb",
+ "name" : "bool",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIb",
+ "size" : 1
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIc",
+ "name" : "char",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIc",
+ "size" : 1
+ },
+ {
+ "alignment" : 8,
+ "linker_set_key" : "_ZTId",
+ "name" : "double",
+ "referenced_type" : "_ZTId",
+ "self_type" : "_ZTId",
+ "size" : 8
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIf",
+ "name" : "float",
+ "referenced_type" : "_ZTIf",
+ "self_type" : "_ZTIf",
+ "size" : 4
+ },
+ {
+ "alignment" : 1,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIh",
+ "name" : "unsigned char",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIh",
+ "size" : 1
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIi",
+ "name" : "int",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIi",
+ "size" : 4
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIj",
+ "name" : "unsigned int",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIj",
+ "size" : 4
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIl",
+ "name" : "long",
+ "referenced_type" : "_ZTIl",
+ "self_type" : "_ZTIl",
+ "size" : 4
+ },
+ {
+ "alignment" : 4,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIm",
+ "name" : "unsigned long",
+ "referenced_type" : "_ZTIm",
+ "self_type" : "_ZTIm",
+ "size" : 4
+ },
+ {
+ "alignment" : 2,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIs",
+ "name" : "short",
+ "referenced_type" : "_ZTIs",
+ "self_type" : "_ZTIs",
+ "size" : 2
+ },
+ {
+ "alignment" : 2,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIt",
+ "name" : "unsigned short",
+ "referenced_type" : "_ZTIt",
+ "self_type" : "_ZTIt",
+ "size" : 2
+ },
+ {
+ "linker_set_key" : "_ZTIv",
+ "name" : "void",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIv"
+ },
+ {
+ "alignment" : 8,
+ "is_integral" : true,
+ "linker_set_key" : "_ZTIx",
+ "name" : "long long",
+ "referenced_type" : "_ZTIx",
+ "self_type" : "_ZTIx",
+ "size" : 8
+ },
+ {
+ "alignment" : 8,
+ "is_integral" : true,
+ "is_unsigned" : true,
+ "linker_set_key" : "_ZTIy",
+ "name" : "unsigned long long",
+ "referenced_type" : "_ZTIy",
+ "self_type" : "_ZTIy",
+ "size" : 8
+ }
+ ],
+ "elf_functions" :
+ [
+ {
+ "name" : "_Z24androidCreateThreadGetIDPFiPvES_PS_"
+ },
+ {
+ "name" : "_ZN7android10LogPrinter8printRawEPKc"
+ },
+ {
+ "name" : "_ZN7android10LogPrinter9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android10LogPrinterC1EPKc19android_LogPriorityS2_b"
+ },
+ {
+ "name" : "_ZN7android10LogPrinterC2EPKc19android_LogPriorityS2_b"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl11appendArrayEPKvj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl11setCapacityEj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl12appendVectorERKS0_"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13editArrayImplEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13finish_vectorEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13insertArrayAtEPKvjj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl13removeItemsAtEjj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl14insertVectorAtERKS0_j"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl15release_storageEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl16editItemLocationEj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl3addEPKv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl3addEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl3popEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4pushEPKv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4pushEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4sortEPFiPKvS2_E"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl4sortEPFiPKvS2_PvES3_"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl5_growEjj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl5clearEv"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl6resizeEj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl7_shrinkEjj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl8insertAtEPKvjj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl8insertAtEjj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl9replaceAtEPKvj"
+ },
+ {
+ "name" : "_ZN7android10VectorImpl9replaceAtEj"
+ },
+ {
+ "name" : "_ZN7android10VectorImplC2ERKS0_"
+ },
+ {
+ "name" : "_ZN7android10VectorImplC2Ejj"
+ },
+ {
+ "name" : "_ZN7android10VectorImplD0Ev"
+ },
+ {
+ "name" : "_ZN7android10VectorImplD1Ev"
+ },
+ {
+ "name" : "_ZN7android10VectorImplD2Ev"
+ },
+ {
+ "name" : "_ZN7android10VectorImplaSERKS0_"
+ },
+ {
+ "name" : "_ZN7android11uptimeNanosEv"
+ },
+ {
+ "name" : "_ZN7android12NativeHandle6createEP13native_handleb"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleC1EP13native_handleb"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleC2EP13native_handleb"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleD1Ev"
+ },
+ {
+ "name" : "_ZN7android12NativeHandleD2Ev"
+ },
+ {
+ "name" : "_ZN7android12SharedBuffer5allocEj"
+ },
+ {
+ "name" : "_ZN7android12SharedBuffer7deallocEPKS0_"
+ },
+ {
+ "name" : "_ZN7android12uptimeMillisEv"
+ },
+ {
+ "name" : "_ZN7android13PrefixPrinter9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android13PrefixPrinterC1ERNS_7PrinterEPKc"
+ },
+ {
+ "name" : "_ZN7android13PrefixPrinterC2ERNS_7PrinterEPKc"
+ },
+ {
+ "name" : "_ZN7android14LooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZN7android14LooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZN7android14LooperCallbackD2Ev"
+ },
+ {
+ "name" : "_ZN7android14MessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZN7android14MessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZN7android14MessageHandlerD2Ev"
+ },
+ {
+ "name" : "_ZN7android14String8Printer9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android14String8PrinterC1EPNS_7String8EPKc"
+ },
+ {
+ "name" : "_ZN7android14String8PrinterC2EPNS_7String8EPKc"
+ },
+ {
+ "name" : "_ZN7android14sp_report_raceEv"
+ },
+ {
+ "name" : "_ZN7android14statusToStringEi"
+ },
+ {
+ "name" : "_ZN7android15elapsedRealtimeEv"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl3addEPKv"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl5mergeERKNS_10VectorImplE"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl5mergeERKS0_"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImpl6removeEPKv"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplC2ERKNS_10VectorImplE"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplC2Ejj"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplD0Ev"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplD1Ev"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplD2Ev"
+ },
+ {
+ "name" : "_ZN7android16SortedVectorImplaSERKS0_"
+ },
+ {
+ "name" : "_ZN7android17JenkinsHashWhitenEj"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandler13handleMessageERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerC1ERKNS_2wpINS_14MessageHandlerEEE"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerC2ERKNS_2wpINS_14MessageHandlerEEE"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZN7android18WeakMessageHandlerD2Ev"
+ },
+ {
+ "name" : "_ZN7android19JenkinsHashMixBytesEjPKhj"
+ },
+ {
+ "name" : "_ZN7android19elapsedRealtimeNanoEv"
+ },
+ {
+ "name" : "_ZN7android20JenkinsHashMixShortsEjPKtj"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallback11handleEventEiiPv"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackC1EPFiiiPvE"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackC2EPFiiiPvE"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZN7android20SimpleLooperCallbackD2Ev"
+ },
+ {
+ "name" : "_ZN7android21report_sysprop_changeEv"
+ },
+ {
+ "name" : "_ZN7android23sp_report_stack_pointerEv"
+ },
+ {
+ "name" : "_ZN7android27add_sysprop_change_callbackEPFvvEi"
+ },
+ {
+ "name" : "_ZN7android30get_report_sysprop_change_funcEv"
+ },
+ {
+ "name" : "_ZN7android47LightRefBase_reportIncStrongRequireStrongFailedEPKv"
+ },
+ {
+ "name" : "_ZN7android6Looper10initTLSKeyEv"
+ },
+ {
+ "name" : "_ZN7android6Looper11sendMessageERKNS_2spINS_14MessageHandlerEEERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android6Looper12getForThreadEv"
+ },
+ {
+ "name" : "_ZN7android6Looper12setForThreadERKNS_2spIS0_EE"
+ },
+ {
+ "name" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEE"
+ },
+ {
+ "name" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEEi"
+ },
+ {
+ "name" : "_ZN7android6Looper16threadDestructorEPv"
+ },
+ {
+ "name" : "_ZN7android6Looper17sendMessageAtTimeExRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android6Looper18rebuildEpollLockedEv"
+ },
+ {
+ "name" : "_ZN7android6Looper18sendMessageDelayedExRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE"
+ },
+ {
+ "name" : "_ZN7android6Looper26removeSequenceNumberLockedEy"
+ },
+ {
+ "name" : "_ZN7android6Looper26scheduleEpollRebuildLockedEv"
+ },
+ {
+ "name" : "_ZN7android6Looper4wakeEv"
+ },
+ {
+ "name" : "_ZN7android6Looper5addFdEiiiPFiiiPvES1_"
+ },
+ {
+ "name" : "_ZN7android6Looper5addFdEiiiRKNS_2spINS_14LooperCallbackEEEPv"
+ },
+ {
+ "name" : "_ZN7android6Looper6awokenEv"
+ },
+ {
+ "name" : "_ZN7android6Looper7pollAllEiPiS1_PPv"
+ },
+ {
+ "name" : "_ZN7android6Looper7prepareEi"
+ },
+ {
+ "name" : "_ZN7android6Looper8pollOnceEiPiS1_PPv"
+ },
+ {
+ "name" : "_ZN7android6Looper8removeFdEi"
+ },
+ {
+ "name" : "_ZN7android6Looper9pollInnerEi"
+ },
+ {
+ "name" : "_ZN7android6LooperC1Eb"
+ },
+ {
+ "name" : "_ZN7android6LooperC2Eb"
+ },
+ {
+ "name" : "_ZN7android6LooperD0Ev"
+ },
+ {
+ "name" : "_ZN7android6LooperD1Ev"
+ },
+ {
+ "name" : "_ZN7android6LooperD2Ev"
+ },
+ {
+ "name" : "_ZN7android6Thread10readyToRunEv"
+ },
+ {
+ "name" : "_ZN7android6Thread11_threadLoopEPv"
+ },
+ {
+ "name" : "_ZN7android6Thread11requestExitEv"
+ },
+ {
+ "name" : "_ZN7android6Thread18requestExitAndWaitEv"
+ },
+ {
+ "name" : "_ZN7android6Thread3runEPKcij"
+ },
+ {
+ "name" : "_ZN7android6Thread4joinEv"
+ },
+ {
+ "name" : "_ZN7android6ThreadC2Eb"
+ },
+ {
+ "name" : "_ZN7android6ThreadD0Ev"
+ },
+ {
+ "name" : "_ZN7android6ThreadD1Ev"
+ },
+ {
+ "name" : "_ZN7android6ThreadD2Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMap6adviseENS0_9MapAdviceE"
+ },
+ {
+ "name" : "_ZN7android7FileMap6createEPKcixjb"
+ },
+ {
+ "name" : "_ZN7android7FileMapC1EOS0_"
+ },
+ {
+ "name" : "_ZN7android7FileMapC1Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapC2EOS0_"
+ },
+ {
+ "name" : "_ZN7android7FileMapC2Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapD1Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapD2Ev"
+ },
+ {
+ "name" : "_ZN7android7FileMapaSEOS0_"
+ },
+ {
+ "name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "name" : "_ZN7android7PrinterC2Ev"
+ },
+ {
+ "name" : "_ZN7android7PrinterD0Ev"
+ },
+ {
+ "name" : "_ZN7android7PrinterD1Ev"
+ },
+ {
+ "name" : "_ZN7android7PrinterD2Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "name" : "_ZN7android7RefBase10renameRefsEjRKNS_16ReferenceRenamerE"
+ },
+ {
+ "name" : "_ZN7android7RefBase11renameRefIdEPNS0_12weakref_typeEPKvS4_"
+ },
+ {
+ "name" : "_ZN7android7RefBase11renameRefIdEPS0_PKvS3_"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type14attemptIncWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type16attemptIncStrongEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type18incWeakRequireWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type7decWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type7incWeakEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase12weakref_type7trackMeEbb"
+ },
+ {
+ "name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBase20extendObjectLifetimeEi"
+ },
+ {
+ "name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "name" : "_ZN7android7RefBaseC1Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseC2Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseD0Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseD1Ev"
+ },
+ {
+ "name" : "_ZN7android7RefBaseD2Ev"
+ },
+ {
+ "name" : "_ZN7android7String810appendPathEPKc"
+ },
+ {
+ "name" : "_ZN7android7String810lockBufferEj"
+ },
+ {
+ "name" : "_ZN7android7String811real_appendEPKcj"
+ },
+ {
+ "name" : "_ZN7android7String812appendFormatEPKcz"
+ },
+ {
+ "name" : "_ZN7android7String812unlockBufferEj"
+ },
+ {
+ "name" : "_ZN7android7String812unlockBufferEv"
+ },
+ {
+ "name" : "_ZN7android7String813appendFormatVEPKcSt9__va_list"
+ },
+ {
+ "name" : "_ZN7android7String816convertToResPathEv"
+ },
+ {
+ "name" : "_ZN7android7String85clearEv"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKDij"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKDsj"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKc"
+ },
+ {
+ "name" : "_ZN7android7String85setToEPKcj"
+ },
+ {
+ "name" : "_ZN7android7String85setToERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String86appendEPKc"
+ },
+ {
+ "name" : "_ZN7android7String86appendEPKcj"
+ },
+ {
+ "name" : "_ZN7android7String86appendERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String86formatEPKcz"
+ },
+ {
+ "name" : "_ZN7android7String87formatVEPKcSt9__va_list"
+ },
+ {
+ "name" : "_ZN7android7String87toLowerEv"
+ },
+ {
+ "name" : "_ZN7android7String89removeAllEPKc"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDi"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDij"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDs"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKDsj"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKc"
+ },
+ {
+ "name" : "_ZN7android7String8C1EPKcj"
+ },
+ {
+ "name" : "_ZN7android7String8C1ERKNS_8String16E"
+ },
+ {
+ "name" : "_ZN7android7String8C1ERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String8C1Ev"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDi"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDij"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDs"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKDsj"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKc"
+ },
+ {
+ "name" : "_ZN7android7String8C2EPKcj"
+ },
+ {
+ "name" : "_ZN7android7String8C2ERKNS_8String16E"
+ },
+ {
+ "name" : "_ZN7android7String8C2ERKS0_"
+ },
+ {
+ "name" : "_ZN7android7String8C2Ev"
+ },
+ {
+ "name" : "_ZN7android7String8D1Ev"
+ },
+ {
+ "name" : "_ZN7android7String8D2Ev"
+ },
+ {
+ "name" : "_ZN7android8String1610editResizeEj"
+ },
+ {
+ "name" : "_ZN7android8String1610replaceAllEDsDs"
+ },
+ {
+ "name" : "_ZN7android8String1613allocFromUTF8EPKcj"
+ },
+ {
+ "name" : "_ZN7android8String1614allocFromUTF16EPKDsj"
+ },
+ {
+ "name" : "_ZN7android8String164editEv"
+ },
+ {
+ "name" : "_ZN7android8String165allocEj"
+ },
+ {
+ "name" : "_ZN7android8String165setToEPKDs"
+ },
+ {
+ "name" : "_ZN7android8String165setToEPKDsj"
+ },
+ {
+ "name" : "_ZN7android8String165setToERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String165setToERKS0_jj"
+ },
+ {
+ "name" : "_ZN7android8String166appendEPKDsj"
+ },
+ {
+ "name" : "_ZN7android8String166appendERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String166insertEjPKDs"
+ },
+ {
+ "name" : "_ZN7android8String166insertEjPKDsj"
+ },
+ {
+ "name" : "_ZN7android8String167acquireEv"
+ },
+ {
+ "name" : "_ZN7android8String167releaseEv"
+ },
+ {
+ "name" : "_ZN7android8String16C1EOS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKDs"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKDsj"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKc"
+ },
+ {
+ "name" : "_ZN7android8String16C1EPKcj"
+ },
+ {
+ "name" : "_ZN7android8String16C1ERKNS_7String8E"
+ },
+ {
+ "name" : "_ZN7android8String16C1ERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C1ERKS0_jj"
+ },
+ {
+ "name" : "_ZN7android8String16C1Ev"
+ },
+ {
+ "name" : "_ZN7android8String16C2EOS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKDs"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKDsj"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKc"
+ },
+ {
+ "name" : "_ZN7android8String16C2EPKcj"
+ },
+ {
+ "name" : "_ZN7android8String16C2ERKNS_7String8E"
+ },
+ {
+ "name" : "_ZN7android8String16C2ERKS0_"
+ },
+ {
+ "name" : "_ZN7android8String16C2ERKS0_jj"
+ },
+ {
+ "name" : "_ZN7android8String16C2Ev"
+ },
+ {
+ "name" : "_ZN7android8String16D1Ev"
+ },
+ {
+ "name" : "_ZN7android8String16D2Ev"
+ },
+ {
+ "name" : "_ZN7android8String16aSEOS0_"
+ },
+ {
+ "name" : "_ZN7android9FdPrinter9printLineEPKc"
+ },
+ {
+ "name" : "_ZN7android9FdPrinterC1EijPKc"
+ },
+ {
+ "name" : "_ZN7android9FdPrinterC2EijPKc"
+ },
+ {
+ "name" : "_ZN7android9StopWatch5resetEv"
+ },
+ {
+ "name" : "_ZN7android9StopWatchC1EPKci"
+ },
+ {
+ "name" : "_ZN7android9StopWatchC2EPKci"
+ },
+ {
+ "name" : "_ZN7android9StopWatchD1Ev"
+ },
+ {
+ "name" : "_ZN7android9StopWatchD2Ev"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer12fromContentsERKNS_7String8EPKcPPS0_"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer14skipDelimitersEPKc"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer4openERKNS_7String8EPPS0_"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer8nextLineEv"
+ },
+ {
+ "name" : "_ZN7android9Tokenizer9nextTokenEPKc"
+ },
+ {
+ "name" : "_ZN7android9TokenizerC1ERKNS_7String8EPNS_7FileMapEPcbj"
+ },
+ {
+ "name" : "_ZN7android9TokenizerC2ERKNS_7String8EPNS_7FileMapEPcbj"
+ },
+ {
+ "name" : "_ZN7android9TokenizerD1Ev"
+ },
+ {
+ "name" : "_ZN7android9TokenizerD2Ev"
+ },
+ {
+ "name" : "_ZNK7android10VectorImpl12itemLocationEj"
+ },
+ {
+ "name" : "_ZNK7android10VectorImpl8capacityEv"
+ },
+ {
+ "name" : "_ZNK7android10VectorImpl8itemSizeEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer10editResizeEj"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer11attemptEditEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer4editEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer5resetEj"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer7acquireEv"
+ },
+ {
+ "name" : "_ZNK7android12SharedBuffer7releaseEj"
+ },
+ {
+ "name" : "_ZNK7android16SortedVectorImpl13_indexOrderOfEPKvPj"
+ },
+ {
+ "name" : "_ZNK7android16SortedVectorImpl7indexOfEPKv"
+ },
+ {
+ "name" : "_ZNK7android16SortedVectorImpl7orderOfEPKv"
+ },
+ {
+ "name" : "_ZNK7android6Looper20getAllowNonCallbacksEv"
+ },
+ {
+ "name" : "_ZNK7android6Looper7Request14getEpollEventsEv"
+ },
+ {
+ "name" : "_ZNK7android6Looper9isPollingEv"
+ },
+ {
+ "name" : "_ZNK7android6Thread11exitPendingEv"
+ },
+ {
+ "name" : "_ZNK7android6Thread6getTidEv"
+ },
+ {
+ "name" : "_ZNK7android6Thread9isRunningEv"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE10do_destroyEPvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE12do_constructEPvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE15do_move_forwardEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE16do_move_backwardEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE7do_copyEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE8do_splatEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE10do_destroyEPvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE12do_constructEPvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE15do_move_forwardEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE16do_move_backwardEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE7do_copyEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE8do_splatEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE10do_destroyEPvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE12do_constructEPvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE15do_move_forwardEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE16do_move_backwardEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE7do_copyEPvPKvj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNK7android6VectorINS_6Looper8ResponseEE8do_splatEPvPKvj"
+ },
+ {
+ "name" : "_ZNK7android7RefBase10createWeakEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase11getWeakRefsEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase12weakref_type12getWeakCountEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase12weakref_type7refBaseEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase12weakref_type9printRefsEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase14forceIncStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase14getStrongCountEv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase22incStrongRequireStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase9decStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7RefBase9incStrongEPKv"
+ },
+ {
+ "name" : "_ZNK7android7String810getPathDirEv"
+ },
+ {
+ "name" : "_ZNK7android7String811getBasePathEv"
+ },
+ {
+ "name" : "_ZNK7android7String811getPathLeafEv"
+ },
+ {
+ "name" : "_ZNK7android7String814find_extensionEv"
+ },
+ {
+ "name" : "_ZNK7android7String816getPathExtensionEv"
+ },
+ {
+ "name" : "_ZNK7android7String84findEPKcj"
+ },
+ {
+ "name" : "_ZNK7android7String86lengthEv"
+ },
+ {
+ "name" : "_ZNK7android7String88walkPathEPS0_"
+ },
+ {
+ "name" : "_ZNK7android8String1610startsWithEPKDs"
+ },
+ {
+ "name" : "_ZNK7android8String1610startsWithERKS0_"
+ },
+ {
+ "name" : "_ZNK7android8String1614isStaticStringEv"
+ },
+ {
+ "name" : "_ZNK7android8String1616staticStringSizeEv"
+ },
+ {
+ "name" : "_ZNK7android8String164sizeEv"
+ },
+ {
+ "name" : "_ZNK7android8String168containsEPKDs"
+ },
+ {
+ "name" : "_ZNK7android8String168findLastEDs"
+ },
+ {
+ "name" : "_ZNK7android8String169findFirstEDs"
+ },
+ {
+ "name" : "_ZNK7android9StopWatch11elapsedTimeEv"
+ },
+ {
+ "name" : "_ZNK7android9StopWatch4nameEv"
+ },
+ {
+ "name" : "_ZNK7android9Tokenizer11getLocationEv"
+ },
+ {
+ "name" : "_ZNK7android9Tokenizer19peekRemainderOfLineEv"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIiyEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE14__erase_uniqueIiEEjRKT_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIiyEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE25__emplace_unique_key_argsIiJRiRKyEEENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS2_PvEEEEbEERKT_DpOT0_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIiyEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE6rehashEj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIiyEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS2_PvEEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIiyEENS_22__unordered_map_hasherIiS2_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS2_NS_8equal_toIiEELb1EEENS_9allocatorIS2_EEE8__rehashEj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIyN7android6Looper7RequestEEENS_22__unordered_map_hasherIyS5_NS_4hashIyEELb1EEENS_21__unordered_map_equalIyS5_NS_8equal_toIyEELb1EEENS_9allocatorIS5_EEE25__emplace_unique_key_argsIyJRKyRS4_EEENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS5_PvEEEEbEERKT_DpOT0_"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIyN7android6Looper7RequestEEENS_22__unordered_map_hasherIyS5_NS_4hashIyEELb1EEENS_21__unordered_map_equalIyS5_NS_8equal_toIyEELb1EEENS_9allocatorIS5_EEE6rehashEj"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIyN7android6Looper7RequestEEENS_22__unordered_map_hasherIyS5_NS_4hashIyEELb1EEENS_21__unordered_map_equalIyS5_NS_8equal_toIyEELb1EEENS_9allocatorIS5_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS5_PvEEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZNSt3__112__hash_tableINS_17__hash_value_typeIyN7android6Looper7RequestEEENS_22__unordered_map_hasherIyS5_NS_4hashIyEELb1EEENS_21__unordered_map_equalIyS5_NS_8equal_toIyEELb1EEENS_9allocatorIS5_EEE8__rehashEj"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android14LooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android14LooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android14MessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android14MessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android6ThreadD0Ev"
+ },
+ {
+ "name" : "_ZTv0_n12_N7android6ThreadD1Ev"
+ },
+ {
+ "name" : "androidCreateRawThreadEtc"
+ },
+ {
+ "name" : "androidCreateThread"
+ },
+ {
+ "name" : "androidCreateThreadEtc"
+ },
+ {
+ "name" : "androidGetThreadId"
+ },
+ {
+ "name" : "androidGetThreadPriority"
+ },
+ {
+ "name" : "androidSetCreateThreadFunc"
+ },
+ {
+ "name" : "androidSetThreadName"
+ },
+ {
+ "name" : "androidSetThreadPriority"
+ },
+ {
+ "name" : "do_report_sysprop_change"
+ },
+ {
+ "name" : "strcmp16"
+ },
+ {
+ "name" : "strlen16"
+ },
+ {
+ "name" : "strncmp16"
+ },
+ {
+ "name" : "strnlen16"
+ },
+ {
+ "name" : "strstr16"
+ },
+ {
+ "name" : "strzcmp16"
+ },
+ {
+ "name" : "systemTime"
+ },
+ {
+ "name" : "toMillisecondTimeoutDelay"
+ },
+ {
+ "name" : "utf16_to_utf8"
+ },
+ {
+ "name" : "utf16_to_utf8_length"
+ },
+ {
+ "name" : "utf32_from_utf8_at"
+ },
+ {
+ "name" : "utf32_to_utf8"
+ },
+ {
+ "name" : "utf32_to_utf8_length"
+ },
+ {
+ "name" : "utf8_to_utf16"
+ },
+ {
+ "name" : "utf8_to_utf16_length"
+ },
+ {
+ "name" : "utf8_to_utf16_no_null_terminator"
+ }
+ ],
+ "elf_objects" :
+ [
+ {
+ "name" : "_ZN7android7FileMap9mPageSizeE"
+ },
+ {
+ "name" : "_ZTCN7android18WeakMessageHandlerE0_NS_14MessageHandlerE"
+ },
+ {
+ "name" : "_ZTCN7android20SimpleLooperCallbackE0_NS_14LooperCallbackE"
+ },
+ {
+ "name" : "_ZTTN7android14LooperCallbackE"
+ },
+ {
+ "name" : "_ZTTN7android14MessageHandlerE"
+ },
+ {
+ "name" : "_ZTTN7android18WeakMessageHandlerE"
+ },
+ {
+ "name" : "_ZTTN7android20SimpleLooperCallbackE"
+ },
+ {
+ "name" : "_ZTTN7android6ThreadE"
+ },
+ {
+ "name" : "_ZTVN7android10LogPrinterE"
+ },
+ {
+ "name" : "_ZTVN7android10VectorImplE"
+ },
+ {
+ "name" : "_ZTVN7android13PrefixPrinterE"
+ },
+ {
+ "name" : "_ZTVN7android14LooperCallbackE"
+ },
+ {
+ "name" : "_ZTVN7android14MessageHandlerE"
+ },
+ {
+ "name" : "_ZTVN7android14String8PrinterE"
+ },
+ {
+ "name" : "_ZTVN7android16SortedVectorImplE"
+ },
+ {
+ "name" : "_ZTVN7android18WeakMessageHandlerE"
+ },
+ {
+ "name" : "_ZTVN7android20SimpleLooperCallbackE"
+ },
+ {
+ "name" : "_ZTVN7android6LooperE"
+ },
+ {
+ "name" : "_ZTVN7android6ThreadE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZTVN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZTVN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "binding" : "weak",
+ "name" : "_ZTVN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "name" : "_ZTVN7android7PrinterE"
+ },
+ {
+ "name" : "_ZTVN7android7RefBaseE"
+ },
+ {
+ "name" : "_ZTVN7android9FdPrinterE"
+ }
+ ],
+ "enum_types" :
+ [
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : -1,
+ "name" : "SP_DEFAULT"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "SP_BACKGROUND"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "SP_FOREGROUND"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "SP_SYSTEM"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "SP_AUDIO_APP"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "SP_AUDIO_SYS"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "SP_TOP_APP"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "SP_RT_APP"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "SP_RESTRICTED"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "SP_CNT"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "SP_MAX"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "SP_SYSTEM_DEFAULT"
+ }
+ ],
+ "linker_set_key" : "_ZTI11SchedPolicy",
+ "name" : "SchedPolicy",
+ "referenced_type" : "_ZTI11SchedPolicy",
+ "self_type" : "_ZTI11SchedPolicy",
+ "size" : 4,
+ "source_file" : "system/core/libprocessgroup/include/processgroup/sched_policy.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_HDR_DOLBY_VISION"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_HDR_HDR10"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_HDR_HLG"
+ }
+ ],
+ "linker_set_key" : "_ZTI13android_hdr_t",
+ "name" : "android_hdr_t",
+ "referenced_type" : "_ZTI13android_hdr_t",
+ "self_type" : "_ZTI13android_hdr_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_HDR_HDR10_PLUS"
+ }
+ ],
+ "linker_set_key" : "_ZTI18android_hdr_v1_2_t",
+ "name" : "android_hdr_v1_2_t",
+ "referenced_type" : "_ZTI18android_hdr_v1_2_t",
+ "self_type" : "_ZTI18android_hdr_v1_2_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.2.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "ANDROID_LOG_UNKNOWN"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "ANDROID_LOG_DEFAULT"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "ANDROID_LOG_VERBOSE"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "ANDROID_LOG_DEBUG"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "ANDROID_LOG_INFO"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "ANDROID_LOG_WARN"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "ANDROID_LOG_ERROR"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "ANDROID_LOG_FATAL"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "ANDROID_LOG_SILENT"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_LogPriority",
+ "name" : "android_LogPriority",
+ "referenced_type" : "_ZTI19android_LogPriority",
+ "self_type" : "_ZTI19android_LogPriority",
+ "size" : 4,
+ "source_file" : "system/logging/liblog/include_vndk/android/log.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_UNKNOWN"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_DATASPACE_ARBITRARY"
+ },
+ {
+ "enum_field_value" : 16,
+ "name" : "HAL_DATASPACE_STANDARD_SHIFT"
+ },
+ {
+ "enum_field_value" : 4128768,
+ "name" : "HAL_DATASPACE_STANDARD_MASK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_STANDARD_UNSPECIFIED"
+ },
+ {
+ "enum_field_value" : 65536,
+ "name" : "HAL_DATASPACE_STANDARD_BT709"
+ },
+ {
+ "enum_field_value" : 131072,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_625"
+ },
+ {
+ "enum_field_value" : 196608,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_625_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 262144,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_525"
+ },
+ {
+ "enum_field_value" : 327680,
+ "name" : "HAL_DATASPACE_STANDARD_BT601_525_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 393216,
+ "name" : "HAL_DATASPACE_STANDARD_BT2020"
+ },
+ {
+ "enum_field_value" : 458752,
+ "name" : "HAL_DATASPACE_STANDARD_BT2020_CONSTANT_LUMINANCE"
+ },
+ {
+ "enum_field_value" : 524288,
+ "name" : "HAL_DATASPACE_STANDARD_BT470M"
+ },
+ {
+ "enum_field_value" : 589824,
+ "name" : "HAL_DATASPACE_STANDARD_FILM"
+ },
+ {
+ "enum_field_value" : 655360,
+ "name" : "HAL_DATASPACE_STANDARD_DCI_P3"
+ },
+ {
+ "enum_field_value" : 720896,
+ "name" : "HAL_DATASPACE_STANDARD_ADOBE_RGB"
+ },
+ {
+ "enum_field_value" : 22,
+ "name" : "HAL_DATASPACE_TRANSFER_SHIFT"
+ },
+ {
+ "enum_field_value" : 130023424,
+ "name" : "HAL_DATASPACE_TRANSFER_MASK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_TRANSFER_UNSPECIFIED"
+ },
+ {
+ "enum_field_value" : 4194304,
+ "name" : "HAL_DATASPACE_TRANSFER_LINEAR"
+ },
+ {
+ "enum_field_value" : 8388608,
+ "name" : "HAL_DATASPACE_TRANSFER_SRGB"
+ },
+ {
+ "enum_field_value" : 12582912,
+ "name" : "HAL_DATASPACE_TRANSFER_SMPTE_170M"
+ },
+ {
+ "enum_field_value" : 16777216,
+ "name" : "HAL_DATASPACE_TRANSFER_GAMMA2_2"
+ },
+ {
+ "enum_field_value" : 20971520,
+ "name" : "HAL_DATASPACE_TRANSFER_GAMMA2_6"
+ },
+ {
+ "enum_field_value" : 25165824,
+ "name" : "HAL_DATASPACE_TRANSFER_GAMMA2_8"
+ },
+ {
+ "enum_field_value" : 29360128,
+ "name" : "HAL_DATASPACE_TRANSFER_ST2084"
+ },
+ {
+ "enum_field_value" : 33554432,
+ "name" : "HAL_DATASPACE_TRANSFER_HLG"
+ },
+ {
+ "enum_field_value" : 27,
+ "name" : "HAL_DATASPACE_RANGE_SHIFT"
+ },
+ {
+ "enum_field_value" : 939524096,
+ "name" : "HAL_DATASPACE_RANGE_MASK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_DATASPACE_RANGE_UNSPECIFIED"
+ },
+ {
+ "enum_field_value" : 134217728,
+ "name" : "HAL_DATASPACE_RANGE_FULL"
+ },
+ {
+ "enum_field_value" : 268435456,
+ "name" : "HAL_DATASPACE_RANGE_LIMITED"
+ },
+ {
+ "enum_field_value" : 402653184,
+ "name" : "HAL_DATASPACE_RANGE_EXTENDED"
+ },
+ {
+ "enum_field_value" : 512,
+ "name" : "HAL_DATASPACE_SRGB_LINEAR"
+ },
+ {
+ "enum_field_value" : 138477568,
+ "name" : "HAL_DATASPACE_V0_SRGB_LINEAR"
+ },
+ {
+ "enum_field_value" : 406913024,
+ "name" : "HAL_DATASPACE_V0_SCRGB_LINEAR"
+ },
+ {
+ "enum_field_value" : 513,
+ "name" : "HAL_DATASPACE_SRGB"
+ },
+ {
+ "enum_field_value" : 142671872,
+ "name" : "HAL_DATASPACE_V0_SRGB"
+ },
+ {
+ "enum_field_value" : 411107328,
+ "name" : "HAL_DATASPACE_V0_SCRGB"
+ },
+ {
+ "enum_field_value" : 257,
+ "name" : "HAL_DATASPACE_JFIF"
+ },
+ {
+ "enum_field_value" : 146931712,
+ "name" : "HAL_DATASPACE_V0_JFIF"
+ },
+ {
+ "enum_field_value" : 258,
+ "name" : "HAL_DATASPACE_BT601_625"
+ },
+ {
+ "enum_field_value" : 281149440,
+ "name" : "HAL_DATASPACE_V0_BT601_625"
+ },
+ {
+ "enum_field_value" : 259,
+ "name" : "HAL_DATASPACE_BT601_525"
+ },
+ {
+ "enum_field_value" : 281280512,
+ "name" : "HAL_DATASPACE_V0_BT601_525"
+ },
+ {
+ "enum_field_value" : 260,
+ "name" : "HAL_DATASPACE_BT709"
+ },
+ {
+ "enum_field_value" : 281083904,
+ "name" : "HAL_DATASPACE_V0_BT709"
+ },
+ {
+ "enum_field_value" : 139067392,
+ "name" : "HAL_DATASPACE_DCI_P3_LINEAR"
+ },
+ {
+ "enum_field_value" : 155844608,
+ "name" : "HAL_DATASPACE_DCI_P3"
+ },
+ {
+ "enum_field_value" : 139067392,
+ "name" : "HAL_DATASPACE_DISPLAY_P3_LINEAR"
+ },
+ {
+ "enum_field_value" : 143261696,
+ "name" : "HAL_DATASPACE_DISPLAY_P3"
+ },
+ {
+ "enum_field_value" : 151715840,
+ "name" : "HAL_DATASPACE_ADOBE_RGB"
+ },
+ {
+ "enum_field_value" : 138805248,
+ "name" : "HAL_DATASPACE_BT2020_LINEAR"
+ },
+ {
+ "enum_field_value" : 147193856,
+ "name" : "HAL_DATASPACE_BT2020"
+ },
+ {
+ "enum_field_value" : 163971072,
+ "name" : "HAL_DATASPACE_BT2020_PQ"
+ },
+ {
+ "enum_field_value" : 4096,
+ "name" : "HAL_DATASPACE_DEPTH"
+ },
+ {
+ "enum_field_value" : 4097,
+ "name" : "HAL_DATASPACE_SENSOR"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_dataspace_t",
+ "name" : "android_dataspace_t",
+ "referenced_type" : "_ZTI19android_dataspace_t",
+ "self_type" : "_ZTI19android_dataspace_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "FLEX_FORMAT_INVALID"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "FLEX_FORMAT_Y"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "FLEX_FORMAT_YCbCr"
+ },
+ {
+ "enum_field_value" : 1073741831,
+ "name" : "FLEX_FORMAT_YCbCrA"
+ },
+ {
+ "enum_field_value" : 7168,
+ "name" : "FLEX_FORMAT_RGB"
+ },
+ {
+ "enum_field_value" : 1073748992,
+ "name" : "FLEX_FORMAT_RGBA"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_flex_format",
+ "name" : "android_flex_format",
+ "referenced_type" : "_ZTI19android_flex_format",
+ "self_type" : "_ZTI19android_flex_format",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_TRANSFORM_FLIP_H"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_TRANSFORM_FLIP_V"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_TRANSFORM_ROT_90"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_TRANSFORM_ROT_180"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "HAL_TRANSFORM_ROT_270"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_transform_t",
+ "name" : "android_transform_t",
+ "referenced_type" : "_ZTI19android_transform_t",
+ "self_type" : "_ZTI19android_transform_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_COLOR_MODE_NATIVE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_625"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_625_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_525"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT601_525_UNADJUSTED"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "HAL_COLOR_MODE_STANDARD_BT709"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "HAL_COLOR_MODE_DCI_P3"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "HAL_COLOR_MODE_SRGB"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "HAL_COLOR_MODE_ADOBE_RGB"
+ },
+ {
+ "enum_field_value" : 9,
+ "name" : "HAL_COLOR_MODE_DISPLAY_P3"
+ }
+ ],
+ "linker_set_key" : "_ZTI20android_color_mode_t",
+ "name" : "android_color_mode_t",
+ "referenced_type" : "_ZTI20android_color_mode_t",
+ "self_type" : "_ZTI20android_color_mode_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "SYSTEM_TIME_REALTIME"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "SYSTEM_TIME_MONOTONIC"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "SYSTEM_TIME_PROCESS"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "SYSTEM_TIME_THREAD"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "SYSTEM_TIME_BOOTTIME"
+ }
+ ],
+ "linker_set_key" : "_ZTI21$SYSTEM_TIME_BOOTTIME",
+ "name" : "(unnamed)",
+ "referenced_type" : "_ZTI21$SYSTEM_TIME_BOOTTIME",
+ "self_type" : "_ZTI21$SYSTEM_TIME_BOOTTIME",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Timers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "FLEX_COMPONENT_Y"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "FLEX_COMPONENT_Cb"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "FLEX_COMPONENT_Cr"
+ },
+ {
+ "enum_field_value" : 1024,
+ "name" : "FLEX_COMPONENT_R"
+ },
+ {
+ "enum_field_value" : 2048,
+ "name" : "FLEX_COMPONENT_G"
+ },
+ {
+ "enum_field_value" : 4096,
+ "name" : "FLEX_COMPONENT_B"
+ },
+ {
+ "enum_field_value" : 1073741824,
+ "name" : "FLEX_COMPONENT_A"
+ }
+ ],
+ "linker_set_key" : "_ZTI22android_flex_component",
+ "name" : "android_flex_component",
+ "referenced_type" : "_ZTI22android_flex_component",
+ "self_type" : "_ZTI22android_flex_component",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_PIXEL_FORMAT_RGBA_8888"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_PIXEL_FORMAT_RGBX_8888"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_PIXEL_FORMAT_RGB_888"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_PIXEL_FORMAT_RGB_565"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "HAL_PIXEL_FORMAT_BGRA_8888"
+ },
+ {
+ "enum_field_value" : 16,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_422_SP"
+ },
+ {
+ "enum_field_value" : 17,
+ "name" : "HAL_PIXEL_FORMAT_YCRCB_420_SP"
+ },
+ {
+ "enum_field_value" : 20,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_422_I"
+ },
+ {
+ "enum_field_value" : 22,
+ "name" : "HAL_PIXEL_FORMAT_RGBA_FP16"
+ },
+ {
+ "enum_field_value" : 32,
+ "name" : "HAL_PIXEL_FORMAT_RAW16"
+ },
+ {
+ "enum_field_value" : 33,
+ "name" : "HAL_PIXEL_FORMAT_BLOB"
+ },
+ {
+ "enum_field_value" : 34,
+ "name" : "HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED"
+ },
+ {
+ "enum_field_value" : 35,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_420_888"
+ },
+ {
+ "enum_field_value" : 36,
+ "name" : "HAL_PIXEL_FORMAT_RAW_OPAQUE"
+ },
+ {
+ "enum_field_value" : 37,
+ "name" : "HAL_PIXEL_FORMAT_RAW10"
+ },
+ {
+ "enum_field_value" : 38,
+ "name" : "HAL_PIXEL_FORMAT_RAW12"
+ },
+ {
+ "enum_field_value" : 43,
+ "name" : "HAL_PIXEL_FORMAT_RGBA_1010102"
+ },
+ {
+ "enum_field_value" : 538982489,
+ "name" : "HAL_PIXEL_FORMAT_Y8"
+ },
+ {
+ "enum_field_value" : 540422489,
+ "name" : "HAL_PIXEL_FORMAT_Y16"
+ },
+ {
+ "enum_field_value" : 842094169,
+ "name" : "HAL_PIXEL_FORMAT_YV12"
+ }
+ ],
+ "linker_set_key" : "_ZTI22android_pixel_format_t",
+ "name" : "android_pixel_format_t",
+ "referenced_type" : "_ZTI22android_pixel_format_t",
+ "self_type" : "_ZTI22android_pixel_format_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 19,
+ "name" : "ANDROID_PRIORITY_LOWEST"
+ },
+ {
+ "enum_field_value" : 10,
+ "name" : "ANDROID_PRIORITY_BACKGROUND"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "ANDROID_PRIORITY_NORMAL"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "ANDROID_PRIORITY_FOREGROUND"
+ },
+ {
+ "enum_field_value" : -4,
+ "name" : "ANDROID_PRIORITY_DISPLAY"
+ },
+ {
+ "enum_field_value" : -8,
+ "name" : "ANDROID_PRIORITY_URGENT_DISPLAY"
+ },
+ {
+ "enum_field_value" : -10,
+ "name" : "ANDROID_PRIORITY_VIDEO"
+ },
+ {
+ "enum_field_value" : -16,
+ "name" : "ANDROID_PRIORITY_AUDIO"
+ },
+ {
+ "enum_field_value" : -19,
+ "name" : "ANDROID_PRIORITY_URGENT_AUDIO"
+ },
+ {
+ "enum_field_value" : -20,
+ "name" : "ANDROID_PRIORITY_HIGHEST"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "ANDROID_PRIORITY_DEFAULT"
+ },
+ {
+ "enum_field_value" : -1,
+ "name" : "ANDROID_PRIORITY_MORE_FAVORABLE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "ANDROID_PRIORITY_LESS_FAVORABLE"
+ }
+ ],
+ "linker_set_key" : "_ZTI23$ANDROID_PRIORITY_AUDIO",
+ "name" : "(unnamed)",
+ "referenced_type" : "_ZTI23$ANDROID_PRIORITY_AUDIO",
+ "self_type" : "_ZTI23$ANDROID_PRIORITY_AUDIO",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/thread_defs.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 281411584,
+ "name" : "HAL_DATASPACE_BT2020_ITU"
+ },
+ {
+ "enum_field_value" : 298188800,
+ "name" : "HAL_DATASPACE_BT2020_ITU_PQ"
+ },
+ {
+ "enum_field_value" : 302383104,
+ "name" : "HAL_DATASPACE_BT2020_ITU_HLG"
+ },
+ {
+ "enum_field_value" : 168165376,
+ "name" : "HAL_DATASPACE_BT2020_HLG"
+ }
+ ],
+ "linker_set_key" : "_ZTI24android_dataspace_v1_1_t",
+ "name" : "android_dataspace_v1_1_t",
+ "referenced_type" : "_ZTI24android_dataspace_v1_1_t",
+ "self_type" : "_ZTI24android_dataspace_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 142999552,
+ "name" : "HAL_DATASPACE_DISPLAY_BT2020"
+ },
+ {
+ "enum_field_value" : 4098,
+ "name" : "HAL_DATASPACE_DYNAMIC_DEPTH"
+ },
+ {
+ "enum_field_value" : 4099,
+ "name" : "HAL_DATASPACE_JPEG_APP_SEGMENTS"
+ },
+ {
+ "enum_field_value" : 4100,
+ "name" : "HAL_DATASPACE_HEIF"
+ }
+ ],
+ "linker_set_key" : "_ZTI24android_dataspace_v1_2_t",
+ "name" : "android_dataspace_v1_2_t",
+ "referenced_type" : "_ZTI24android_dataspace_v1_2_t",
+ "self_type" : "_ZTI24android_dataspace_v1_2_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.2.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 10,
+ "name" : "HAL_COLOR_MODE_BT2020"
+ },
+ {
+ "enum_field_value" : 11,
+ "name" : "HAL_COLOR_MODE_BT2100_PQ"
+ },
+ {
+ "enum_field_value" : 12,
+ "name" : "HAL_COLOR_MODE_BT2100_HLG"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_color_mode_v1_1_t",
+ "name" : "android_color_mode_v1_1_t",
+ "referenced_type" : "_ZTI25android_color_mode_v1_1_t",
+ "self_type" : "_ZTI25android_color_mode_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_COLOR_TRANSFORM_IDENTITY"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_COLOR_TRANSFORM_ARBITRARY_MATRIX"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_COLOR_TRANSFORM_VALUE_INVERSE"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_COLOR_TRANSFORM_GRAYSCALE"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "HAL_COLOR_TRANSFORM_CORRECT_PROTANOPIA"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "HAL_COLOR_TRANSFORM_CORRECT_DEUTERANOPIA"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "HAL_COLOR_TRANSFORM_CORRECT_TRITANOPIA"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_color_transform_t",
+ "name" : "android_color_transform_t",
+ "referenced_type" : "_ZTI25android_color_transform_t",
+ "self_type" : "_ZTI25android_color_transform_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.0.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 39,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_422_888"
+ },
+ {
+ "enum_field_value" : 40,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_444_888"
+ },
+ {
+ "enum_field_value" : 41,
+ "name" : "HAL_PIXEL_FORMAT_FLEX_RGB_888"
+ },
+ {
+ "enum_field_value" : 42,
+ "name" : "HAL_PIXEL_FORMAT_FLEX_RGBA_8888"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_pixel_format_sw_t",
+ "name" : "android_pixel_format_sw_t",
+ "referenced_type" : "_ZTI25android_pixel_format_sw_t",
+ "self_type" : "_ZTI25android_pixel_format_sw_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-sw.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 48,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_16"
+ },
+ {
+ "enum_field_value" : 49,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_24"
+ },
+ {
+ "enum_field_value" : 50,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_24_STENCIL_8"
+ },
+ {
+ "enum_field_value" : 51,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_32F"
+ },
+ {
+ "enum_field_value" : 52,
+ "name" : "HAL_PIXEL_FORMAT_DEPTH_32F_STENCIL_8"
+ },
+ {
+ "enum_field_value" : 53,
+ "name" : "HAL_PIXEL_FORMAT_STENCIL_8"
+ },
+ {
+ "enum_field_value" : 54,
+ "name" : "HAL_PIXEL_FORMAT_YCBCR_P010"
+ }
+ ],
+ "linker_set_key" : "_ZTI27android_pixel_format_v1_1_t",
+ "name" : "android_pixel_format_v1_1_t",
+ "referenced_type" : "_ZTI27android_pixel_format_v1_1_t",
+ "self_type" : "_ZTI27android_pixel_format_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 55,
+ "name" : "HAL_PIXEL_FORMAT_HSV_888"
+ }
+ ],
+ "linker_set_key" : "_ZTI27android_pixel_format_v1_2_t",
+ "name" : "android_pixel_format_v1_2_t",
+ "referenced_type" : "_ZTI27android_pixel_format_v1_2_t",
+ "self_type" : "_ZTI27android_pixel_format_v1_2_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.2.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "HAL_RENDER_INTENT_COLORIMETRIC"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "HAL_RENDER_INTENT_ENHANCE"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "HAL_RENDER_INTENT_TONE_MAP_COLORIMETRIC"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "HAL_RENDER_INTENT_TONE_MAP_ENHANCE"
+ }
+ ],
+ "linker_set_key" : "_ZTI28android_render_intent_v1_1_t",
+ "name" : "android_render_intent_v1_1_t",
+ "referenced_type" : "_ZTI28android_render_intent_v1_1_t",
+ "self_type" : "_ZTI28android_render_intent_v1_1_t",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics-base-v1.1.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "LOG_ID_MIN"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "LOG_ID_MAIN"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "LOG_ID_RADIO"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "LOG_ID_EVENTS"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "LOG_ID_SYSTEM"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "LOG_ID_CRASH"
+ },
+ {
+ "enum_field_value" : 5,
+ "name" : "LOG_ID_STATS"
+ },
+ {
+ "enum_field_value" : 6,
+ "name" : "LOG_ID_SECURITY"
+ },
+ {
+ "enum_field_value" : 7,
+ "name" : "LOG_ID_KERNEL"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "LOG_ID_MAX"
+ },
+ {
+ "enum_field_value" : 2147483647,
+ "name" : "LOG_ID_DEFAULT"
+ }
+ ],
+ "linker_set_key" : "_ZTI6log_id",
+ "name" : "log_id",
+ "referenced_type" : "_ZTI6log_id",
+ "self_type" : "_ZTI6log_id",
+ "size" : 4,
+ "source_file" : "system/logging/liblog/include_vndk/android/log.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::VectorImpl::HAS_TRIVIAL_CTOR"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "android::VectorImpl::HAS_TRIVIAL_DTOR"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "android::VectorImpl::HAS_TRIVIAL_COPY"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android10VectorImpl17$HAS_TRIVIAL_COPYE",
+ "name" : "android::VectorImpl::(unnamed)",
+ "referenced_type" : "_ZTIN7android10VectorImpl17$HAS_TRIVIAL_COPYE",
+ "self_type" : "_ZTIN7android10VectorImpl17$HAS_TRIVIAL_COPYE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_pointer<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_pointer<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_pointer<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_pointer<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_pointer<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_pointer<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::OK"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::NO_ERROR"
+ },
+ {
+ "enum_field_value" : -2147483648,
+ "name" : "android::UNKNOWN_ERROR"
+ },
+ {
+ "enum_field_value" : -12,
+ "name" : "android::NO_MEMORY"
+ },
+ {
+ "enum_field_value" : -38,
+ "name" : "android::INVALID_OPERATION"
+ },
+ {
+ "enum_field_value" : -22,
+ "name" : "android::BAD_VALUE"
+ },
+ {
+ "enum_field_value" : -2147483647,
+ "name" : "android::BAD_TYPE"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "android::NAME_NOT_FOUND"
+ },
+ {
+ "enum_field_value" : -1,
+ "name" : "android::PERMISSION_DENIED"
+ },
+ {
+ "enum_field_value" : -19,
+ "name" : "android::NO_INIT"
+ },
+ {
+ "enum_field_value" : -17,
+ "name" : "android::ALREADY_EXISTS"
+ },
+ {
+ "enum_field_value" : -32,
+ "name" : "android::DEAD_OBJECT"
+ },
+ {
+ "enum_field_value" : -2147483646,
+ "name" : "android::FAILED_TRANSACTION"
+ },
+ {
+ "enum_field_value" : -75,
+ "name" : "android::BAD_INDEX"
+ },
+ {
+ "enum_field_value" : -61,
+ "name" : "android::NOT_ENOUGH_DATA"
+ },
+ {
+ "enum_field_value" : -11,
+ "name" : "android::WOULD_BLOCK"
+ },
+ {
+ "enum_field_value" : -110,
+ "name" : "android::TIMED_OUT"
+ },
+ {
+ "enum_field_value" : -74,
+ "name" : "android::UNKNOWN_TRANSACTION"
+ },
+ {
+ "enum_field_value" : -2147483641,
+ "name" : "android::FDS_NOT_ALLOWED"
+ },
+ {
+ "enum_field_value" : -2147483640,
+ "name" : "android::UNEXPECTED_NULL"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android15$ALREADY_EXISTSE",
+ "name" : "android::(unnamed)",
+ "referenced_type" : "_ZTIN7android15$ALREADY_EXISTSE",
+ "self_type" : "_ZTIN7android15$ALREADY_EXISTSE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Errors.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 19,
+ "name" : "android::PRIORITY_LOWEST"
+ },
+ {
+ "enum_field_value" : 10,
+ "name" : "android::PRIORITY_BACKGROUND"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::PRIORITY_NORMAL"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "android::PRIORITY_FOREGROUND"
+ },
+ {
+ "enum_field_value" : -4,
+ "name" : "android::PRIORITY_DISPLAY"
+ },
+ {
+ "enum_field_value" : -8,
+ "name" : "android::PRIORITY_URGENT_DISPLAY"
+ },
+ {
+ "enum_field_value" : -16,
+ "name" : "android::PRIORITY_AUDIO"
+ },
+ {
+ "enum_field_value" : -19,
+ "name" : "android::PRIORITY_URGENT_AUDIO"
+ },
+ {
+ "enum_field_value" : -20,
+ "name" : "android::PRIORITY_HIGHEST"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::PRIORITY_DEFAULT"
+ },
+ {
+ "enum_field_value" : -1,
+ "name" : "android::PRIORITY_MORE_FAVORABLE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::PRIORITY_LESS_FAVORABLE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android15$PRIORITY_AUDIOE",
+ "name" : "android::(unnamed)",
+ "referenced_type" : "_ZTIN7android15$PRIORITY_AUDIOE",
+ "self_type" : "_ZTIN7android15$PRIORITY_AUDIOE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/ThreadDefs.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_copy<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_copy<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_copy<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_copy<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_copy<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_copy<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIbE6$valueE",
+ "name" : "android::trait_trivial_copy<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIcE6$valueE",
+ "name" : "android::trait_trivial_copy<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIdE6$valueE",
+ "name" : "android::trait_trivial_copy<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIfE6$valueE",
+ "name" : "android::trait_trivial_copy<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIhE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIiE6$valueE",
+ "name" : "android::trait_trivial_copy<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIjE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIlE6$valueE",
+ "name" : "android::trait_trivial_copy<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyImE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIsE6$valueE",
+ "name" : "android::trait_trivial_copy<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyItE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIvE6$valueE",
+ "name" : "android::trait_trivial_copy<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIxE6$valueE",
+ "name" : "android::trait_trivial_copy<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_copy<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIyE6$valueE",
+ "name" : "android::trait_trivial_copy<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_ctor<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_ctor<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_ctor<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_ctor<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_ctor<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_ctor<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIbE6$valueE",
+ "name" : "android::trait_trivial_ctor<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIcE6$valueE",
+ "name" : "android::trait_trivial_ctor<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIdE6$valueE",
+ "name" : "android::trait_trivial_ctor<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIfE6$valueE",
+ "name" : "android::trait_trivial_ctor<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIhE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIiE6$valueE",
+ "name" : "android::trait_trivial_ctor<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIjE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIlE6$valueE",
+ "name" : "android::trait_trivial_ctor<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorImE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIsE6$valueE",
+ "name" : "android::trait_trivial_ctor<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorItE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIvE6$valueE",
+ "name" : "android::trait_trivial_ctor<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIxE6$valueE",
+ "name" : "android::trait_trivial_ctor<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_ctor<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIyE6$valueE",
+ "name" : "android::trait_trivial_ctor<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_dtor<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_dtor<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_dtor<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_dtor<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_dtor<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_dtor<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIbE6$valueE",
+ "name" : "android::trait_trivial_dtor<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIcE6$valueE",
+ "name" : "android::trait_trivial_dtor<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIdE6$valueE",
+ "name" : "android::trait_trivial_dtor<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIfE6$valueE",
+ "name" : "android::trait_trivial_dtor<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIhE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIiE6$valueE",
+ "name" : "android::trait_trivial_dtor<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIjE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIlE6$valueE",
+ "name" : "android::trait_trivial_dtor<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorImE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIsE6$valueE",
+ "name" : "android::trait_trivial_dtor<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorItE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIvE6$valueE",
+ "name" : "android::trait_trivial_dtor<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIxE6$valueE",
+ "name" : "android::trait_trivial_dtor<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_dtor<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIyE6$valueE",
+ "name" : "android::trait_trivial_dtor<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_move<android::sysprop_change_callback_info>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEE6$valueE",
+ "name" : "android::trait_trivial_move<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_move<android::Looper::MessageEnvelope>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEE6$valueE",
+ "name" : "android::trait_trivial_move<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::trait_trivial_move<android::Looper::Response>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEE6$valueE",
+ "name" : "android::trait_trivial_move<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<android::String8>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_7String8EE6$valueE",
+ "name" : "android::trait_trivial_move<android::String8>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<android::String16>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_8String16EE6$valueE",
+ "name" : "android::trait_trivial_move<android::String16>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<bool>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIbE6$valueE",
+ "name" : "android::trait_trivial_move<bool>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIbE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIbE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIcE6$valueE",
+ "name" : "android::trait_trivial_move<char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIcE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIcE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<double>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIdE6$valueE",
+ "name" : "android::trait_trivial_move<double>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIdE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIdE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<float>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIfE6$valueE",
+ "name" : "android::trait_trivial_move<float>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIfE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIfE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned char>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIhE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned char>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIhE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIhE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIiE6$valueE",
+ "name" : "android::trait_trivial_move<int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIiE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIiE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned int>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIjE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned int>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIjE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIjE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIlE6$valueE",
+ "name" : "android::trait_trivial_move<long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIlE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIlE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveImE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveImE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveImE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIsE6$valueE",
+ "name" : "android::trait_trivial_move<short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIsE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIsE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned short>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveItE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned short>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveItE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveItE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<void>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIvE6$valueE",
+ "name" : "android::trait_trivial_move<void>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIvE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIvE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIxE6$valueE",
+ "name" : "android::trait_trivial_move<long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIxE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIxE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::trait_trivial_move<unsigned long long>::value"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIyE6$valueE",
+ "name" : "android::trait_trivial_move<unsigned long long>::(unnamed)",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIyE6$valueE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIyE6$valueE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::Mutex::PRIVATE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Mutex::SHARED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android5Mutex8$PRIVATEE",
+ "name" : "android::Mutex::(unnamed)",
+ "referenced_type" : "_ZTIN7android5Mutex8$PRIVATEE",
+ "self_type" : "_ZTIN7android5Mutex8$PRIVATEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Looper::EVENT_INPUT"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "android::Looper::EVENT_OUTPUT"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "android::Looper::EVENT_ERROR"
+ },
+ {
+ "enum_field_value" : 8,
+ "name" : "android::Looper::EVENT_HANGUP"
+ },
+ {
+ "enum_field_value" : 16,
+ "name" : "android::Looper::EVENT_INVALID"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper12$EVENT_ERRORE",
+ "name" : "android::Looper::(unnamed)",
+ "referenced_type" : "_ZTIN7android6Looper12$EVENT_ERRORE",
+ "self_type" : "_ZTIN7android6Looper12$EVENT_ERRORE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : -1,
+ "name" : "android::Looper::POLL_WAKE"
+ },
+ {
+ "enum_field_value" : -2,
+ "name" : "android::Looper::POLL_CALLBACK"
+ },
+ {
+ "enum_field_value" : -3,
+ "name" : "android::Looper::POLL_TIMEOUT"
+ },
+ {
+ "enum_field_value" : -4,
+ "name" : "android::Looper::POLL_ERROR"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper14$POLL_CALLBACKE",
+ "name" : "android::Looper::(unnamed)",
+ "referenced_type" : "_ZTIN7android6Looper14$POLL_CALLBACKE",
+ "self_type" : "_ZTIN7android6Looper14$POLL_CALLBACKE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "underlying_type" : "_ZTIi"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Looper::PREPARE_ALLOW_NON_CALLBACKS"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper28$PREPARE_ALLOW_NON_CALLBACKSE",
+ "name" : "android::Looper::(unnamed)",
+ "referenced_type" : "_ZTIN7android6Looper28$PREPARE_ALLOW_NON_CALLBACKSE",
+ "self_type" : "_ZTIN7android6Looper28$PREPARE_ALLOW_NON_CALLBACKSE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::RWLock::PRIVATE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RWLock::SHARED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLock8$PRIVATEE",
+ "name" : "android::RWLock::(unnamed)",
+ "referenced_type" : "_ZTIN7android6RWLock8$PRIVATEE",
+ "self_type" : "_ZTIN7android6RWLock8$PRIVATEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::is_pointer"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_ctor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_dtor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_copy"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::sysprop_change_callback_info>::has_trivial_move"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEE17$has_trivial_copyE",
+ "name" : "android::traits<android::sysprop_change_callback_info>::(unnamed)",
+ "referenced_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEE17$has_trivial_copyE",
+ "self_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEE17$has_trivial_copyE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::is_pointer"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_ctor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_dtor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_copy"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::MessageEnvelope>::has_trivial_move"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEE17$has_trivial_copyE",
+ "name" : "android::traits<android::Looper::MessageEnvelope>::(unnamed)",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEE17$has_trivial_copyE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEE17$has_trivial_copyE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::is_pointer"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_ctor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_dtor"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_copy"
+ },
+ {
+ "enum_field_value" : 0,
+ "name" : "android::traits<android::Looper::Response>::has_trivial_move"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper8ResponseEE17$has_trivial_copyE",
+ "name" : "android::traits<android::Looper::Response>::(unnamed)",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEE17$has_trivial_copyE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEE17$has_trivial_copyE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::FileMap::NORMAL"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::FileMap::RANDOM"
+ },
+ {
+ "enum_field_value" : 2,
+ "name" : "android::FileMap::SEQUENTIAL"
+ },
+ {
+ "enum_field_value" : 3,
+ "name" : "android::FileMap::WILLNEED"
+ },
+ {
+ "enum_field_value" : 4,
+ "name" : "android::FileMap::DONTNEED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7FileMap9MapAdviceE",
+ "name" : "android::FileMap::MapAdvice",
+ "referenced_type" : "_ZTIN7android7FileMap9MapAdviceE",
+ "self_type" : "_ZTIN7android7FileMap9MapAdviceE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "access" : "protected",
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RefBase::FIRST_INC_STRONG"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7RefBase17$FIRST_INC_STRONGE",
+ "name" : "android::RefBase::(unnamed)",
+ "referenced_type" : "_ZTIN7android7RefBase17$FIRST_INC_STRONGE",
+ "self_type" : "_ZTIN7android7RefBase17$FIRST_INC_STRONGE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "access" : "protected",
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::RefBase::OBJECT_LIFETIME_STRONG"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RefBase::OBJECT_LIFETIME_WEAK"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::RefBase::OBJECT_LIFETIME_MASK"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7RefBase21$OBJECT_LIFETIME_MASKE",
+ "name" : "android::RefBase::(unnamed)",
+ "referenced_type" : "_ZTIN7android7RefBase21$OBJECT_LIFETIME_MASKE",
+ "self_type" : "_ZTIN7android7RefBase21$OBJECT_LIFETIME_MASKE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::Condition::WAKE_UP_ONE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Condition::WAKE_UP_ALL"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9Condition10WakeUpTypeE",
+ "name" : "android::Condition::WakeUpType",
+ "referenced_type" : "_ZTIN7android9Condition10WakeUpTypeE",
+ "self_type" : "_ZTIN7android9Condition10WakeUpTypeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Condition.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 0,
+ "name" : "android::Condition::PRIVATE"
+ },
+ {
+ "enum_field_value" : 1,
+ "name" : "android::Condition::SHARED"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9Condition8$PRIVATEE",
+ "name" : "android::Condition::(unnamed)",
+ "referenced_type" : "_ZTIN7android9Condition8$PRIVATEE",
+ "self_type" : "_ZTIN7android9Condition8$PRIVATEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Condition.h",
+ "underlying_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "alignment" : 4,
+ "enum_fields" :
+ [
+ {
+ "enum_field_value" : 20,
+ "name" : "android::FdPrinter::MAX_FORMAT_STRING"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9FdPrinter18$MAX_FORMAT_STRINGE",
+ "name" : "android::FdPrinter::(unnamed)",
+ "referenced_type" : "_ZTIN7android9FdPrinter18$MAX_FORMAT_STRINGE",
+ "self_type" : "_ZTIN7android9FdPrinter18$MAX_FORMAT_STRINGE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "underlying_type" : "_ZTIj"
+ }
+ ],
+ "function_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPFiPvES_PKcijPS_E",
+ "name" : "int (int (*)(void *), void *, const char *, int, unsigned int, void **)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPFiPvES_PKcijPS_E",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPFiPvES_PKcijPS_E",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPKvS0_E",
+ "name" : "int (const void *, const void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPKvS0_E",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPKvS0_E",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPKvS0_PvE",
+ "name" : "int (const void *, const void *, void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPKvS0_PvE",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPKvS0_PvE",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiPvE",
+ "name" : "int (void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiPvE",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiPvE",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFiiiPvE",
+ "name" : "int (int, int, void *)",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "referenced_type" : "_ZTIFiiiPvE",
+ "return_type" : "_ZTIi",
+ "self_type" : "_ZTIFiiiPvE",
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIFvvE",
+ "name" : "void ()",
+ "referenced_type" : "_ZTIFvvE",
+ "return_type" : "_ZTIv",
+ "self_type" : "_ZTIFvvE",
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ }
+ ],
+ "functions" :
+ [
+ {
+ "access" : "private",
+ "function_name" : "android::LogPrinter::printRaw",
+ "linker_set_key" : "_ZN7android10LogPrinter8printRawEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::LogPrinter::printLine",
+ "linker_set_key" : "_ZN7android10LogPrinter9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::LogPrinter::LogPrinter",
+ "linker_set_key" : "_ZN7android10LogPrinterC1EPKc19android_LogPriorityS2_b",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTI19android_LogPriority"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::LogPrinter::LogPrinter",
+ "linker_set_key" : "_ZN7android10LogPrinterC2EPKc19android_LogPriorityS2_b",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10LogPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTI19android_LogPriority"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::appendArray",
+ "linker_set_key" : "_ZN7android10VectorImpl11appendArrayEPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::setCapacity",
+ "linker_set_key" : "_ZN7android10VectorImpl11setCapacityEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::appendVector",
+ "linker_set_key" : "_ZN7android10VectorImpl12appendVectorERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::editArrayImpl",
+ "linker_set_key" : "_ZN7android10VectorImpl13editArrayImplEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::finish_vector",
+ "linker_set_key" : "_ZN7android10VectorImpl13finish_vectorEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertArrayAt",
+ "linker_set_key" : "_ZN7android10VectorImpl13insertArrayAtEPKvjj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::removeItemsAt",
+ "linker_set_key" : "_ZN7android10VectorImpl13removeItemsAtEjj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertVectorAt",
+ "linker_set_key" : "_ZN7android10VectorImpl14insertVectorAtERKS0_j",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::VectorImpl::release_storage",
+ "linker_set_key" : "_ZN7android10VectorImpl15release_storageEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::editItemLocation",
+ "linker_set_key" : "_ZN7android10VectorImpl16editItemLocationEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::add",
+ "linker_set_key" : "_ZN7android10VectorImpl3addEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::add",
+ "linker_set_key" : "_ZN7android10VectorImpl3addEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::pop",
+ "linker_set_key" : "_ZN7android10VectorImpl3popEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::push",
+ "linker_set_key" : "_ZN7android10VectorImpl4pushEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::push",
+ "linker_set_key" : "_ZN7android10VectorImpl4pushEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::sort",
+ "linker_set_key" : "_ZN7android10VectorImpl4sortEPFiPKvS2_E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiPKvS0_E"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::sort",
+ "linker_set_key" : "_ZN7android10VectorImpl4sortEPFiPKvS2_PvES3_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiPKvS0_PvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::VectorImpl::_grow",
+ "linker_set_key" : "_ZN7android10VectorImpl5_growEjj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::clear",
+ "linker_set_key" : "_ZN7android10VectorImpl5clearEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::resize",
+ "linker_set_key" : "_ZN7android10VectorImpl6resizeEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::VectorImpl::_shrink",
+ "linker_set_key" : "_ZN7android10VectorImpl7_shrinkEjj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertAt",
+ "linker_set_key" : "_ZN7android10VectorImpl8insertAtEPKvjj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::insertAt",
+ "linker_set_key" : "_ZN7android10VectorImpl8insertAtEjj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::replaceAt",
+ "linker_set_key" : "_ZN7android10VectorImpl9replaceAtEPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::replaceAt",
+ "linker_set_key" : "_ZN7android10VectorImpl9replaceAtEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplC2ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplC2Ejj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::~VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::~VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::~VectorImpl",
+ "linker_set_key" : "_ZN7android10VectorImplD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::operator=",
+ "linker_set_key" : "_ZN7android10VectorImplaSERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIRN7android10VectorImplE",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::uptimeNanos",
+ "linker_set_key" : "_ZN7android11uptimeNanosEv",
+ "return_type" : "_ZTIx",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::NativeHandle::create",
+ "linker_set_key" : "_ZN7android12NativeHandle6createEP13native_handleb",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleC1EP13native_handleb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ },
+ {
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleC2EP13native_handleb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ },
+ {
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::~NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::NativeHandle::~NativeHandle",
+ "linker_set_key" : "_ZN7android12NativeHandleD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "function_name" : "android::uptimeMillis",
+ "linker_set_key" : "_ZN7android12uptimeMillisEv",
+ "return_type" : "_ZTIx",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::PrefixPrinter::printLine",
+ "linker_set_key" : "_ZN7android13PrefixPrinter9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android13PrefixPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::PrefixPrinter::PrefixPrinter",
+ "linker_set_key" : "_ZN7android13PrefixPrinterC1ERNS_7PrinterEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android13PrefixPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIRN7android7PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::PrefixPrinter::PrefixPrinter",
+ "linker_set_key" : "_ZN7android13PrefixPrinterC2ERNS_7PrinterEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android13PrefixPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIRN7android7PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::LooperCallback::~LooperCallback",
+ "linker_set_key" : "_ZN7android14LooperCallbackD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::LooperCallback::~LooperCallback",
+ "linker_set_key" : "_ZN7android14LooperCallbackD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::LooperCallback::~LooperCallback",
+ "linker_set_key" : "_ZN7android14LooperCallbackD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::MessageHandler::~MessageHandler",
+ "linker_set_key" : "_ZN7android14MessageHandlerD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::MessageHandler::~MessageHandler",
+ "linker_set_key" : "_ZN7android14MessageHandlerD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::MessageHandler::~MessageHandler",
+ "linker_set_key" : "_ZN7android14MessageHandlerD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::String8Printer::printLine",
+ "linker_set_key" : "_ZN7android14String8Printer9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14String8PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::String8Printer::String8Printer",
+ "linker_set_key" : "_ZN7android14String8PrinterC1EPNS_7String8EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14String8PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::String8Printer::String8Printer",
+ "linker_set_key" : "_ZN7android14String8PrinterC2EPNS_7String8EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android14String8PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::statusToString",
+ "linker_set_key" : "_ZN7android14statusToStringEi",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTINSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE",
+ "source_file" : "system/core/libutils/include/utils/Errors.h"
+ },
+ {
+ "function_name" : "android::elapsedRealtime",
+ "linker_set_key" : "_ZN7android15elapsedRealtimeEv",
+ "return_type" : "_ZTIx",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::add",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl3addEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::merge",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl5mergeERKNS_10VectorImplE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::merge",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl5mergeERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::remove",
+ "linker_set_key" : "_ZN7android16SortedVectorImpl6removeEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplC2ERKNS_10VectorImplE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplC2Ejj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::~SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::~SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::~SortedVectorImpl",
+ "linker_set_key" : "_ZN7android16SortedVectorImplD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::operator=",
+ "linker_set_key" : "_ZN7android16SortedVectorImplaSERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android16SortedVectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIRN7android16SortedVectorImplE",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::JenkinsHashWhiten",
+ "linker_set_key" : "_ZN7android17JenkinsHashWhitenEj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "function_name" : "android::WeakMessageHandler::handleMessage",
+ "linker_set_key" : "_ZN7android18WeakMessageHandler13handleMessageERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::WeakMessageHandler::WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerC1ERKNS_2wpINS_14MessageHandlerEEE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::WeakMessageHandler::WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerC2ERKNS_2wpINS_14MessageHandlerEEE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::WeakMessageHandler::~WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::WeakMessageHandler::~WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::WeakMessageHandler::~WeakMessageHandler",
+ "linker_set_key" : "_ZN7android18WeakMessageHandlerD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android18WeakMessageHandlerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::JenkinsHashMixBytes",
+ "linker_set_key" : "_ZN7android19JenkinsHashMixBytesEjPKhj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "function_name" : "android::elapsedRealtimeNano",
+ "linker_set_key" : "_ZN7android19elapsedRealtimeNanoEv",
+ "return_type" : "_ZTIx",
+ "source_file" : "system/core/libutils/include/utils/SystemClock.h"
+ },
+ {
+ "function_name" : "android::JenkinsHashMixShorts",
+ "linker_set_key" : "_ZN7android20JenkinsHashMixShortsEjPKtj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKt"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "function_name" : "android::SimpleLooperCallback::handleEvent",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallback11handleEventEiiPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::SimpleLooperCallback::SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackC1EPFiiiPvE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiiiPvE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::SimpleLooperCallback::SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackC2EPFiiiPvE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ },
+ {
+ "referenced_type" : "_ZTIPFiiiPvE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::SimpleLooperCallback::~SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::SimpleLooperCallback::~SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::SimpleLooperCallback::~SimpleLooperCallback",
+ "linker_set_key" : "_ZN7android20SimpleLooperCallbackD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::report_sysprop_change",
+ "linker_set_key" : "_ZN7android21report_sysprop_changeEv",
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ },
+ {
+ "function_name" : "android::add_sysprop_change_callback",
+ "linker_set_key" : "_ZN7android27add_sysprop_change_callbackEPFvvEi",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFvvE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ },
+ {
+ "function_name" : "android::LightRefBase_reportIncStrongRequireStrongFailed",
+ "linker_set_key" : "_ZN7android47LightRefBase_reportIncStrongRequireStrongFailedEPKv",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::initTLSKey",
+ "linker_set_key" : "_ZN7android6Looper10initTLSKeyEv",
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::sendMessage",
+ "linker_set_key" : "_ZN7android6Looper11sendMessageERKNS_2spINS_14MessageHandlerEEERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::getForThread",
+ "linker_set_key" : "_ZN7android6Looper12getForThreadEv",
+ "return_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::setForThread",
+ "linker_set_key" : "_ZN7android6Looper12setForThreadERKNS_2spIS0_EE",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_6LooperEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::removeMessages",
+ "linker_set_key" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::removeMessages",
+ "linker_set_key" : "_ZN7android6Looper14removeMessagesERKNS_2spINS_14MessageHandlerEEEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::threadDestructor",
+ "linker_set_key" : "_ZN7android6Looper16threadDestructorEPv",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::sendMessageAtTime",
+ "linker_set_key" : "_ZN7android6Looper17sendMessageAtTimeExRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIx"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::rebuildEpollLocked",
+ "linker_set_key" : "_ZN7android6Looper18rebuildEpollLockedEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::sendMessageDelayed",
+ "linker_set_key" : "_ZN7android6Looper18sendMessageDelayedExRKNS_2spINS_14MessageHandlerEEERKNS_7MessageE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIx"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7MessageE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::removeSequenceNumberLocked",
+ "linker_set_key" : "_ZN7android6Looper26removeSequenceNumberLockedEy",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIy"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::scheduleEpollRebuildLocked",
+ "linker_set_key" : "_ZN7android6Looper26scheduleEpollRebuildLockedEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::wake",
+ "linker_set_key" : "_ZN7android6Looper4wakeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::addFd",
+ "linker_set_key" : "_ZN7android6Looper5addFdEiiiPFiiiPvES1_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPFiiiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::addFd",
+ "linker_set_key" : "_ZN7android6Looper5addFdEiiiRKNS_2spINS_14LooperCallbackEEEPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android2spINS_14LooperCallbackEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::awoken",
+ "linker_set_key" : "_ZN7android6Looper6awokenEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::pollAll",
+ "linker_set_key" : "_ZN7android6Looper7pollAllEiPiS1_PPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::prepare",
+ "linker_set_key" : "_ZN7android6Looper7prepareEi",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::pollOnce",
+ "linker_set_key" : "_ZN7android6Looper8pollOnceEiPiS1_PPv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPi"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::removeFd",
+ "linker_set_key" : "_ZN7android6Looper8removeFdEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Looper::pollInner",
+ "linker_set_key" : "_ZN7android6Looper9pollInnerEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::Looper",
+ "linker_set_key" : "_ZN7android6LooperC1Eb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::Looper",
+ "linker_set_key" : "_ZN7android6LooperC2Eb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Looper::~Looper",
+ "linker_set_key" : "_ZN7android6LooperD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Looper::~Looper",
+ "linker_set_key" : "_ZN7android6LooperD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Looper::~Looper",
+ "linker_set_key" : "_ZN7android6LooperD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Thread::readyToRun",
+ "linker_set_key" : "_ZN7android6Thread10readyToRunEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Thread::_threadLoop",
+ "linker_set_key" : "_ZN7android6Thread11_threadLoopEPv",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::requestExit",
+ "linker_set_key" : "_ZN7android6Thread11requestExitEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::requestExitAndWait",
+ "linker_set_key" : "_ZN7android6Thread18requestExitAndWaitEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::run",
+ "linker_set_key" : "_ZN7android6Thread3runEPKcij",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::join",
+ "linker_set_key" : "_ZN7android6Thread4joinEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::Thread",
+ "linker_set_key" : "_ZN7android6ThreadC2Eb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::~Thread",
+ "linker_set_key" : "_ZN7android6ThreadD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::~Thread",
+ "linker_set_key" : "_ZN7android6ThreadD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::~Thread",
+ "linker_set_key" : "_ZN7android6ThreadD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::FileMap::advise",
+ "linker_set_key" : "_ZN7android7FileMap6adviseENS0_9MapAdviceE",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIN7android7FileMap9MapAdviceE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::create",
+ "linker_set_key" : "_ZN7android7FileMap6createEPKcixjb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIx"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC1EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTION7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC2EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTION7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::FileMap",
+ "linker_set_key" : "_ZN7android7FileMapC2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::~FileMap",
+ "linker_set_key" : "_ZN7android7FileMapD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::~FileMap",
+ "linker_set_key" : "_ZN7android7FileMapD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::FileMap::operator=",
+ "linker_set_key" : "_ZN7android7FileMapaSEOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTION7android7FileMapE"
+ }
+ ],
+ "return_type" : "_ZTIRN7android7FileMapE",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "function_name" : "android::Printer::printFormatLine",
+ "linker_set_key" : "_ZN7android7Printer15printFormatLineEPKcz",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::Printer",
+ "linker_set_key" : "_ZN7android7PrinterC2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::~Printer",
+ "linker_set_key" : "_ZN7android7PrinterD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::~Printer",
+ "linker_set_key" : "_ZN7android7PrinterD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Printer::~Printer",
+ "linker_set_key" : "_ZN7android7PrinterD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7PrinterE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onFirstRef",
+ "linker_set_key" : "_ZN7android7RefBase10onFirstRefEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::RefBase::renameRefs",
+ "linker_set_key" : "_ZN7android7RefBase10renameRefsEjRKNS_16ReferenceRenamerE",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android16ReferenceRenamerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::RefBase::renameRefId",
+ "linker_set_key" : "_ZN7android7RefBase11renameRefIdEPNS0_12weakref_typeEPKvS4_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::RefBase::renameRefId",
+ "linker_set_key" : "_ZN7android7RefBase11renameRefIdEPS0_PKvS3_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::attemptIncWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type14attemptIncWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::attemptIncStrong",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type16attemptIncStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::incWeakRequireWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type18incWeakRequireWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::decWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type7decWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::incWeak",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type7incWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::trackMe",
+ "linker_set_key" : "_ZN7android7RefBase12weakref_type7trackMeEbb",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onLastWeakRef",
+ "linker_set_key" : "_ZN7android7RefBase13onLastWeakRefEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onLastStrongRef",
+ "linker_set_key" : "_ZN7android7RefBase15onLastStrongRefEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::extendObjectLifetime",
+ "linker_set_key" : "_ZN7android7RefBase20extendObjectLifetimeEi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::onIncStrongAttempted",
+ "linker_set_key" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseC1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseC2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::~RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseD0Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::~RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::RefBase::~RefBase",
+ "linker_set_key" : "_ZN7android7RefBaseD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::String8::appendPath",
+ "linker_set_key" : "_ZN7android7String810appendPathEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIRN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::lockBuffer",
+ "linker_set_key" : "_ZN7android7String810lockBufferEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPc",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String8::real_append",
+ "linker_set_key" : "_ZN7android7String811real_appendEPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::appendFormat",
+ "linker_set_key" : "_ZN7android7String812appendFormatEPKcz",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::unlockBuffer",
+ "linker_set_key" : "_ZN7android7String812unlockBufferEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::unlockBuffer",
+ "linker_set_key" : "_ZN7android7String812unlockBufferEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::appendFormatV",
+ "linker_set_key" : "_ZN7android7String813appendFormatVEPKcSt9__va_list",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTISt9__va_list"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::convertToResPath",
+ "linker_set_key" : "_ZN7android7String816convertToResPathEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIRN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::clear",
+ "linker_set_key" : "_ZN7android7String85clearEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKDij",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToEPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::setTo",
+ "linker_set_key" : "_ZN7android7String85setToERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::append",
+ "linker_set_key" : "_ZN7android7String86appendEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::append",
+ "linker_set_key" : "_ZN7android7String86appendEPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::append",
+ "linker_set_key" : "_ZN7android7String86appendERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::format",
+ "linker_set_key" : "_ZN7android7String86formatEPKcz",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::formatV",
+ "linker_set_key" : "_ZN7android7String87formatVEPKcSt9__va_list",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTISt9__va_list"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::toLower",
+ "linker_set_key" : "_ZN7android7String87toLowerEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::removeAll",
+ "linker_set_key" : "_ZN7android7String89removeAllEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDij",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1EPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1ERKNS_8String16E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDi",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDij",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2EPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2ERKNS_8String16E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::String8",
+ "linker_set_key" : "_ZN7android7String8C2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::~String8",
+ "linker_set_key" : "_ZN7android7String8D1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::~String8",
+ "linker_set_key" : "_ZN7android7String8D2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::editResize",
+ "linker_set_key" : "_ZN7android8String1610editResizeEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::replaceAll",
+ "linker_set_key" : "_ZN7android8String1610replaceAllEDsDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::allocFromUTF8",
+ "linker_set_key" : "_ZN7android8String1613allocFromUTF8EPKcj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::allocFromUTF16",
+ "linker_set_key" : "_ZN7android8String1614allocFromUTF16EPKDsj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::edit",
+ "linker_set_key" : "_ZN7android8String164editEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::alloc",
+ "linker_set_key" : "_ZN7android8String165allocEj",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToEPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToEPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::setTo",
+ "linker_set_key" : "_ZN7android8String165setToERKS0_jj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::append",
+ "linker_set_key" : "_ZN7android8String166appendEPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::append",
+ "linker_set_key" : "_ZN7android8String166appendERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::insert",
+ "linker_set_key" : "_ZN7android8String166insertEjPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::insert",
+ "linker_set_key" : "_ZN7android8String166insertEjPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::acquire",
+ "linker_set_key" : "_ZN7android8String167acquireEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::release",
+ "linker_set_key" : "_ZN7android8String167releaseEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTION7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1EPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1ERKNS_7String8E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1ERKS0_jj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTION7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKDsj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2EPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2ERKNS_7String8E",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2ERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2ERKS0_jj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::String16",
+ "linker_set_key" : "_ZN7android8String16C2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::~String16",
+ "linker_set_key" : "_ZN7android8String16D1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::~String16",
+ "linker_set_key" : "_ZN7android8String16D2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::operator=",
+ "linker_set_key" : "_ZN7android8String16aSEOS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTION7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIRN7android8String16E",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::FdPrinter::printLine",
+ "linker_set_key" : "_ZN7android9FdPrinter9printLineEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9FdPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::FdPrinter::FdPrinter",
+ "linker_set_key" : "_ZN7android9FdPrinterC1EijPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9FdPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::FdPrinter::FdPrinter",
+ "linker_set_key" : "_ZN7android9FdPrinterC2EijPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9FdPrinterE"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "function_name" : "android::StopWatch::reset",
+ "linker_set_key" : "_ZN7android9StopWatch5resetEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchC1EPKci",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchC2EPKci",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::~StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::~StopWatch",
+ "linker_set_key" : "_ZN7android9StopWatchD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::fromContents",
+ "linker_set_key" : "_ZN7android9Tokenizer12fromContentsERKNS_7String8EPKcPPS0_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIPPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::skipDelimiters",
+ "linker_set_key" : "_ZN7android9Tokenizer14skipDelimitersEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::open",
+ "linker_set_key" : "_ZN7android9Tokenizer4openERKNS_7String8EPPS0_",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::nextLine",
+ "linker_set_key" : "_ZN7android9Tokenizer8nextLineEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::nextToken",
+ "linker_set_key" : "_ZN7android9Tokenizer9nextTokenEPKc",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Tokenizer::Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerC1ERKNS_7String8EPNS_7FileMapEPcbj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::Tokenizer::Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerC2ERKNS_7String8EPNS_7FileMapEPcbj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::~Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerD1Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::~Tokenizer",
+ "linker_set_key" : "_ZN7android9TokenizerD2Ev",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::itemLocation",
+ "linker_set_key" : "_ZNK7android10VectorImpl12itemLocationEj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android10VectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPKv",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::VectorImpl::capacity",
+ "linker_set_key" : "_ZNK7android10VectorImpl8capacityEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::VectorImpl::itemSize",
+ "linker_set_key" : "_ZNK7android10VectorImpl8itemSizeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android10VectorImplE"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::SortedVectorImpl::_indexOrderOf",
+ "linker_set_key" : "_ZNK7android16SortedVectorImpl13_indexOrderOfEPKvPj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::indexOf",
+ "linker_set_key" : "_ZNK7android16SortedVectorImpl7indexOfEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::SortedVectorImpl::orderOf",
+ "linker_set_key" : "_ZNK7android16SortedVectorImpl7orderOfEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android16SortedVectorImplE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "function_name" : "android::Looper::getAllowNonCallbacks",
+ "linker_set_key" : "_ZNK7android6Looper20getAllowNonCallbacksEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::Request::getEpollEvents",
+ "linker_set_key" : "_ZNK7android6Looper7Request14getEpollEventsEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6Looper7RequestE"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "function_name" : "android::Looper::isPolling",
+ "linker_set_key" : "_ZNK7android6Looper9isPollingEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6LooperE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Thread::exitPending",
+ "linker_set_key" : "_ZNK7android6Thread11exitPendingEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::getTid",
+ "linker_set_key" : "_ZNK7android6Thread6getTidEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "function_name" : "android::Thread::isRunning",
+ "linker_set_key" : "_ZNK7android6Thread9isRunningEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6ThreadE"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_destroy",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE10do_destroyEPvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_construct",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE12do_constructEPvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_move_forward",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE15do_move_forwardEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_move_backward",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE16do_move_backwardEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_copy",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE7do_copyEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::sysprop_change_callback_info>::do_splat",
+ "linker_set_key" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE8do_splatEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_destroy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE10do_destroyEPvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_construct",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE12do_constructEPvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_move_forward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE15do_move_forwardEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_move_backward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE16do_move_backwardEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_copy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE7do_copyEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::MessageEnvelope>::do_splat",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE8do_splatEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_destroy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE10do_destroyEPvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_construct",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE12do_constructEPvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_move_forward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE15do_move_forwardEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_move_backward",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE16do_move_backwardEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_copy",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE7do_copyEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "access" : "protected",
+ "function_name" : "android::Vector<android::Looper::Response>::do_splat",
+ "linker_set_key" : "_ZNK7android6VectorINS_6Looper8ResponseEE8do_splatEPvPKvj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "function_name" : "android::RefBase::createWeak",
+ "linker_set_key" : "_ZNK7android7RefBase10createWeakEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::getWeakRefs",
+ "linker_set_key" : "_ZNK7android7RefBase11getWeakRefsEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::getWeakCount",
+ "linker_set_key" : "_ZNK7android7RefBase12weakref_type12getWeakCountEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::refBase",
+ "linker_set_key" : "_ZNK7android7RefBase12weakref_type7refBaseEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "return_type" : "_ZTIPN7android7RefBaseE",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::weakref_type::printRefs",
+ "linker_set_key" : "_ZNK7android7RefBase12weakref_type9printRefsEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::forceIncStrong",
+ "linker_set_key" : "_ZNK7android7RefBase14forceIncStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::getStrongCount",
+ "linker_set_key" : "_ZNK7android7RefBase14getStrongCountEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::incStrongRequireStrong",
+ "linker_set_key" : "_ZNK7android7RefBase22incStrongRequireStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::decStrong",
+ "linker_set_key" : "_ZNK7android7RefBase9decStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::RefBase::incStrong",
+ "linker_set_key" : "_ZNK7android7RefBase9incStrongEPKv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7RefBaseE"
+ },
+ {
+ "referenced_type" : "_ZTIPKv"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "function_name" : "android::String8::getPathDir",
+ "linker_set_key" : "_ZNK7android7String810getPathDirEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::getBasePath",
+ "linker_set_key" : "_ZNK7android7String811getBasePathEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::getPathLeaf",
+ "linker_set_key" : "_ZNK7android7String811getPathLeafEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String8::find_extension",
+ "linker_set_key" : "_ZNK7android7String814find_extensionEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIPc",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::getPathExtension",
+ "linker_set_key" : "_ZNK7android7String816getPathExtensionEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::find",
+ "linker_set_key" : "_ZNK7android7String84findEPKcj",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::length",
+ "linker_set_key" : "_ZNK7android7String86lengthEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String8::walkPath",
+ "linker_set_key" : "_ZNK7android7String88walkPathEPS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android7String8E"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "function_name" : "android::String16::startsWith",
+ "linker_set_key" : "_ZNK7android8String1610startsWithEPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::startsWith",
+ "linker_set_key" : "_ZNK7android8String1610startsWithERKS0_",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIRKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::isStaticString",
+ "linker_set_key" : "_ZNK7android8String1614isStaticStringEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "access" : "private",
+ "function_name" : "android::String16::staticStringSize",
+ "linker_set_key" : "_ZNK7android8String1616staticStringSizeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::size",
+ "linker_set_key" : "_ZNK7android8String164sizeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::contains",
+ "linker_set_key" : "_ZNK7android8String168containsEPKDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIb",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::findLast",
+ "linker_set_key" : "_ZNK7android8String168findLastEDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::String16::findFirst",
+ "linker_set_key" : "_ZNK7android8String169findFirstEDs",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android8String16E"
+ },
+ {
+ "referenced_type" : "_ZTIDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "function_name" : "android::StopWatch::elapsedTime",
+ "linker_set_key" : "_ZNK7android9StopWatch11elapsedTimeEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIx",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::StopWatch::name",
+ "linker_set_key" : "_ZNK7android9StopWatch4nameEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9StopWatchE"
+ }
+ ],
+ "return_type" : "_ZTIPKc",
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::getLocation",
+ "linker_set_key" : "_ZNK7android9Tokenizer11getLocationEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "android::Tokenizer::peekRemainderOfLine",
+ "linker_set_key" : "_ZNK7android9Tokenizer19peekRemainderOfLineEv",
+ "parameters" :
+ [
+ {
+ "is_this_ptr" : true,
+ "referenced_type" : "_ZTIPKN7android9TokenizerE"
+ }
+ ],
+ "return_type" : "_ZTIN7android7String8E",
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "function_name" : "androidCreateRawThreadEtc",
+ "linker_set_key" : "androidCreateRawThreadEtc",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidCreateThread",
+ "linker_set_key" : "androidCreateThread",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidCreateThreadEtc",
+ "linker_set_key" : "androidCreateThreadEtc",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPvE"
+ },
+ {
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPPv"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidGetThreadId",
+ "linker_set_key" : "androidGetThreadId",
+ "return_type" : "_ZTIPv",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidGetThreadPriority",
+ "linker_set_key" : "androidGetThreadPriority",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidSetCreateThreadFunc",
+ "linker_set_key" : "androidSetCreateThreadFunc",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPFiPFiPvES_PKcijPS_E"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidSetThreadName",
+ "linker_set_key" : "androidSetThreadName",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "androidSetThreadPriority",
+ "linker_set_key" : "androidSetThreadPriority",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "function_name" : "strcmp16",
+ "linker_set_key" : "strcmp16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strlen16",
+ "linker_set_key" : "strlen16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strncmp16",
+ "linker_set_key" : "strncmp16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strnlen16",
+ "linker_set_key" : "strnlen16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIj",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strstr16",
+ "linker_set_key" : "strstr16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "strzcmp16",
+ "linker_set_key" : "strzcmp16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "systemTime",
+ "linker_set_key" : "systemTime",
+ "parameters" :
+ [
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "return_type" : "_ZTIx",
+ "source_file" : "system/core/libutils/include/utils/Timers.h"
+ },
+ {
+ "function_name" : "toMillisecondTimeoutDelay",
+ "linker_set_key" : "toMillisecondTimeoutDelay",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIx"
+ },
+ {
+ "referenced_type" : "_ZTIx"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Timers.h"
+ },
+ {
+ "function_name" : "utf16_to_utf8",
+ "linker_set_key" : "utf16_to_utf8",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf16_to_utf8_length",
+ "linker_set_key" : "utf16_to_utf8_length",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf32_from_utf8_at",
+ "linker_set_key" : "utf32_from_utf8_at",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf32_to_utf8",
+ "linker_set_key" : "utf32_to_utf8",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIv",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf32_to_utf8_length",
+ "linker_set_key" : "utf32_to_utf8_length",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKDi"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf8_to_utf16",
+ "linker_set_key" : "utf8_to_utf16",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf8_to_utf16_length",
+ "linker_set_key" : "utf8_to_utf16_length",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "default_arg" : true,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "return_type" : "_ZTIi",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "function_name" : "utf8_to_utf16_no_null_terminator",
+ "linker_set_key" : "utf8_to_utf16_no_null_terminator",
+ "parameters" :
+ [
+ {
+ "referenced_type" : "_ZTIPKh"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "referenced_type" : "_ZTIPDs"
+ },
+ {
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "return_type" : "_ZTIPDs",
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ }
+ ],
+ "global_vars" :
+ [
+ {
+ "access" : "private",
+ "linker_set_key" : "_ZN7android7FileMap9mPageSizeE",
+ "name" : "android::FileMap::mPageSize",
+ "referenced_type" : "_ZTIl",
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ }
+ ],
+ "lvalue_reference_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRA1_KDs",
+ "name" : "const char16_t (&)[1]",
+ "referenced_type" : "_ZTIA1_KDs",
+ "self_type" : "_ZTIRA1_KDs",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android10VectorImplE",
+ "name" : "const android::VectorImpl &",
+ "referenced_type" : "_ZTIKN7android10VectorImplE",
+ "self_type" : "_ZTIRKN7android10VectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android16ReferenceRenamerE",
+ "name" : "const android::ReferenceRenamer &",
+ "referenced_type" : "_ZTIKN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIRKN7android16ReferenceRenamerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android16SortedVectorImplE",
+ "name" : "const android::SortedVectorImpl &",
+ "referenced_type" : "_ZTIKN7android16SortedVectorImplE",
+ "self_type" : "_ZTIRKN7android16SortedVectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android28sysprop_change_callback_infoE",
+ "name" : "const android::sysprop_change_callback_info &",
+ "referenced_type" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIRKN7android28sysprop_change_callback_infoE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android2spINS_14LooperCallbackEEE",
+ "name" : "const android::sp<android::LooperCallback> &",
+ "referenced_type" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIRKN7android2spINS_14LooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android2spINS_14MessageHandlerEEE",
+ "name" : "const android::sp<android::MessageHandler> &",
+ "referenced_type" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIRKN7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "const android::sp<android::SimpleLooperCallback> &",
+ "referenced_type" : "_ZTIKN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIRKN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android2spINS_6LooperEEE",
+ "name" : "const android::sp<android::Looper> &",
+ "referenced_type" : "_ZTIKN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIRKN7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android2spINS_6ThreadEEE",
+ "name" : "const android::sp<android::Thread> &",
+ "referenced_type" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIRKN7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE",
+ "name" : "const android::wp<android::MessageHandler> &",
+ "referenced_type" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIRKN7android2wpINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android6Looper15MessageEnvelopeE",
+ "name" : "const android::Looper::MessageEnvelope &",
+ "referenced_type" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIRKN7android6Looper15MessageEnvelopeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android6Looper8ResponseE",
+ "name" : "const android::Looper::Response &",
+ "referenced_type" : "_ZTIKN7android6Looper8ResponseE",
+ "self_type" : "_ZTIRKN7android6Looper8ResponseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "const android::Vector<android::sysprop_change_callback_info> &",
+ "referenced_type" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIRKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android7MessageE",
+ "name" : "const android::Message &",
+ "referenced_type" : "_ZTIKN7android7MessageE",
+ "self_type" : "_ZTIRKN7android7MessageE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android7String8E",
+ "name" : "const android::String8 &",
+ "referenced_type" : "_ZTIKN7android7String8E",
+ "self_type" : "_ZTIRKN7android7String8E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android8String1610StaticDataILj1EEE",
+ "name" : "const android::String16::StaticData<1> &",
+ "referenced_type" : "_ZTIKN7android8String1610StaticDataILj1EEE",
+ "self_type" : "_ZTIRKN7android8String1610StaticDataILj1EEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKN7android8String16E",
+ "name" : "const android::String16 &",
+ "referenced_type" : "_ZTIKN7android8String16E",
+ "self_type" : "_ZTIRKN7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKa",
+ "name" : "const signed char &",
+ "referenced_type" : "_ZTIKa",
+ "self_type" : "_ZTIRKa",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKb",
+ "name" : "const bool &",
+ "referenced_type" : "_ZTIKb",
+ "self_type" : "_ZTIRKb",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKd",
+ "name" : "const double &",
+ "referenced_type" : "_ZTIKd",
+ "self_type" : "_ZTIRKd",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKf",
+ "name" : "const float &",
+ "referenced_type" : "_ZTIKf",
+ "self_type" : "_ZTIRKf",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKh",
+ "name" : "const unsigned char &",
+ "referenced_type" : "_ZTIKh",
+ "self_type" : "_ZTIRKh",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKi",
+ "name" : "const int &",
+ "referenced_type" : "_ZTIKi",
+ "self_type" : "_ZTIRKi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKj",
+ "name" : "const unsigned int &",
+ "referenced_type" : "_ZTIKj",
+ "self_type" : "_ZTIRKj",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKs",
+ "name" : "const short &",
+ "referenced_type" : "_ZTIKs",
+ "self_type" : "_ZTIRKs",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKt",
+ "name" : "const unsigned short &",
+ "referenced_type" : "_ZTIKt",
+ "self_type" : "_ZTIRKt",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKx",
+ "name" : "const long long &",
+ "referenced_type" : "_ZTIKx",
+ "self_type" : "_ZTIRKx",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRKy",
+ "name" : "const unsigned long long &",
+ "referenced_type" : "_ZTIKy",
+ "self_type" : "_ZTIRKy",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android10VectorImplE",
+ "name" : "android::VectorImpl &",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIRN7android10VectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android16SortedVectorImplE",
+ "name" : "android::SortedVectorImpl &",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIRN7android16SortedVectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android2spINS_14LooperCallbackEEE",
+ "name" : "android::sp<android::LooperCallback> &",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIRN7android2spINS_14LooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler> &",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIRN7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback> &",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIRN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper> &",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIRN7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread> &",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIRN7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android5MutexE",
+ "name" : "android::Mutex &",
+ "referenced_type" : "_ZTIN7android5MutexE",
+ "self_type" : "_ZTIRN7android5MutexE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android6Looper8ResponseE",
+ "name" : "android::Looper::Response &",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIRN7android6Looper8ResponseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android6RWLockE",
+ "name" : "android::RWLock &",
+ "referenced_type" : "_ZTIN7android6RWLockE",
+ "self_type" : "_ZTIRN7android6RWLockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::Vector<android::sysprop_change_callback_info> &",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIRN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android7FileMapE",
+ "name" : "android::FileMap &",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIRN7android7FileMapE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android7PrinterE",
+ "name" : "android::Printer &",
+ "referenced_type" : "_ZTIN7android7PrinterE",
+ "self_type" : "_ZTIRN7android7PrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android7String8E",
+ "name" : "android::String8 &",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIRN7android7String8E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRN7android8String16E",
+ "name" : "android::String16 &",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIRN7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRP13native_handle",
+ "name" : "native_handle *&",
+ "referenced_type" : "_ZTIP13native_handle",
+ "self_type" : "_ZTIRP13native_handle",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRPFiiiPvE",
+ "name" : "int (*&)(int, int, void *)",
+ "referenced_type" : "_ZTIPFiiiPvE",
+ "self_type" : "_ZTIRPFiiiPvE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIRb",
+ "name" : "bool &",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIRb",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ }
+ ],
+ "pointer_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIP13native_handle",
+ "name" : "native_handle *",
+ "referenced_type" : "_ZTI13native_handle",
+ "self_type" : "_ZTIP13native_handle",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIP18android_flex_plane",
+ "name" : "android_flex_plane *",
+ "referenced_type" : "_ZTI18android_flex_plane",
+ "self_type" : "_ZTIP18android_flex_plane",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIP3DIR",
+ "name" : "DIR *",
+ "referenced_type" : "_ZTI3DIR",
+ "self_type" : "_ZTIP3DIR",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIP7__sFILE",
+ "name" : "__sFILE *",
+ "referenced_type" : "_ZTI7__sFILE",
+ "self_type" : "_ZTIP7__sFILE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIP7log_msg",
+ "name" : "log_msg *",
+ "referenced_type" : "_ZTI7log_msg",
+ "self_type" : "_ZTIP7log_msg",
+ "size" : 4,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPDs",
+ "name" : "char16_t *",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIPDs",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPFiPFiPvES_PKcijPS_E",
+ "name" : "int (*)(int (*)(void *), void *, const char *, int, unsigned int, void **)",
+ "referenced_type" : "_ZTIFiPFiPvES_PKcijPS_E",
+ "self_type" : "_ZTIPFiPFiPvES_PKcijPS_E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPFiPKvS0_E",
+ "name" : "int (*)(const void *, const void *)",
+ "referenced_type" : "_ZTIFiPKvS0_E",
+ "self_type" : "_ZTIPFiPKvS0_E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPFiPKvS0_PvE",
+ "name" : "int (*)(const void *, const void *, void *)",
+ "referenced_type" : "_ZTIFiPKvS0_PvE",
+ "self_type" : "_ZTIPFiPKvS0_PvE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPFiPvE",
+ "name" : "int (*)(void *)",
+ "referenced_type" : "_ZTIFiPvE",
+ "self_type" : "_ZTIPFiPvE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPFiiiPvE",
+ "name" : "int (*)(int, int, void *)",
+ "referenced_type" : "_ZTIFiiiPvE",
+ "self_type" : "_ZTIPFiiiPvE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPFvvE",
+ "name" : "void (*)()",
+ "referenced_type" : "_ZTIFvvE",
+ "self_type" : "_ZTIPFvvE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/misc.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPK13native_handle",
+ "name" : "const native_handle *",
+ "referenced_type" : "_ZTIK13native_handle",
+ "self_type" : "_ZTIPK13native_handle",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPK7log_msg",
+ "name" : "const log_msg *",
+ "referenced_type" : "_ZTIK7log_msg",
+ "self_type" : "_ZTIPK7log_msg",
+ "size" : 4,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKDi",
+ "name" : "const char32_t *",
+ "referenced_type" : "_ZTIKDi",
+ "self_type" : "_ZTIPKDi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKDs",
+ "name" : "const char16_t *",
+ "referenced_type" : "_ZTIKDs",
+ "self_type" : "_ZTIPKDs",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android10VectorImplE",
+ "name" : "const android::VectorImpl *",
+ "referenced_type" : "_ZTIKN7android10VectorImplE",
+ "self_type" : "_ZTIPKN7android10VectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "const android::LightRefBase<android::NativeHandle> *",
+ "referenced_type" : "_ZTIKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIPKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android12NativeHandleE",
+ "name" : "const android::NativeHandle *",
+ "referenced_type" : "_ZTIKN7android12NativeHandleE",
+ "self_type" : "_ZTIPKN7android12NativeHandleE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android16SortedVectorImplE",
+ "name" : "const android::SortedVectorImpl *",
+ "referenced_type" : "_ZTIKN7android16SortedVectorImplE",
+ "self_type" : "_ZTIPKN7android16SortedVectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android28sysprop_change_callback_infoE",
+ "name" : "const android::sysprop_change_callback_info *",
+ "referenced_type" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIPKN7android28sysprop_change_callback_infoE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android2spINS_14LooperCallbackEEE",
+ "name" : "const android::sp<android::LooperCallback> *",
+ "referenced_type" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIPKN7android2spINS_14LooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android2spINS_14MessageHandlerEEE",
+ "name" : "const android::sp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPKN7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android2spINS_6LooperEEE",
+ "name" : "const android::sp<android::Looper> *",
+ "referenced_type" : "_ZTIKN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIPKN7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android2spINS_6ThreadEEE",
+ "name" : "const android::sp<android::Thread> *",
+ "referenced_type" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIPKN7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android2wpINS_14MessageHandlerEEE",
+ "name" : "const android::wp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPKN7android2wpINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android2wpINS_6ThreadEEE",
+ "name" : "const android::wp<android::Thread> *",
+ "referenced_type" : "_ZTIKN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIPKN7android2wpINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android4base11borrowed_fdE",
+ "name" : "const android::base::borrowed_fd *",
+ "referenced_type" : "_ZTIKN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIPKN7android4base11borrowed_fdE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "const android::base::unique_fd_impl<android::base::DefaultCloser> *",
+ "referenced_type" : "_ZTIKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIPKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6Looper15MessageEnvelopeE",
+ "name" : "const android::Looper::MessageEnvelope *",
+ "referenced_type" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIPKN7android6Looper15MessageEnvelopeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6Looper7RequestE",
+ "name" : "const android::Looper::Request *",
+ "referenced_type" : "_ZTIKN7android6Looper7RequestE",
+ "self_type" : "_ZTIPKN7android6Looper7RequestE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6Looper8ResponseE",
+ "name" : "const android::Looper::Response *",
+ "referenced_type" : "_ZTIKN7android6Looper8ResponseE",
+ "self_type" : "_ZTIPKN7android6Looper8ResponseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6LooperE",
+ "name" : "const android::Looper *",
+ "referenced_type" : "_ZTIKN7android6LooperE",
+ "self_type" : "_ZTIPKN7android6LooperE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6ThreadE",
+ "name" : "const android::Thread *",
+ "referenced_type" : "_ZTIKN7android6ThreadE",
+ "self_type" : "_ZTIPKN7android6ThreadE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "const android::Vector<android::sysprop_change_callback_info> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "const android::Vector<android::Looper::MessageEnvelope> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "const android::Vector<android::Looper::Response> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android6VectorINS_7String8EEE",
+ "name" : "const android::Vector<android::String8> *",
+ "referenced_type" : "_ZTIKN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIPKN7android6VectorINS_7String8EEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android7FileMapE",
+ "name" : "const android::FileMap *",
+ "referenced_type" : "_ZTIKN7android7FileMapE",
+ "self_type" : "_ZTIPKN7android7FileMapE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android7RefBase12weakref_typeE",
+ "name" : "const android::RefBase::weakref_type *",
+ "referenced_type" : "_ZTIKN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIPKN7android7RefBase12weakref_typeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android7RefBaseE",
+ "name" : "const android::RefBase *",
+ "referenced_type" : "_ZTIKN7android7RefBaseE",
+ "self_type" : "_ZTIPKN7android7RefBaseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android7String8E",
+ "name" : "const android::String8 *",
+ "referenced_type" : "_ZTIKN7android7String8E",
+ "self_type" : "_ZTIPKN7android7String8E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android8String16E",
+ "name" : "const android::String16 *",
+ "referenced_type" : "_ZTIKN7android8String16E",
+ "self_type" : "_ZTIPKN7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android9CallStackE",
+ "name" : "const android::CallStack *",
+ "referenced_type" : "_ZTIKN7android9CallStackE",
+ "self_type" : "_ZTIPKN7android9CallStackE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android9StopWatchE",
+ "name" : "const android::StopWatch *",
+ "referenced_type" : "_ZTIKN7android9StopWatchE",
+ "self_type" : "_ZTIPKN7android9StopWatchE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKN7android9TokenizerE",
+ "name" : "const android::Tokenizer *",
+ "referenced_type" : "_ZTIKN7android9TokenizerE",
+ "self_type" : "_ZTIPKN7android9TokenizerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKc",
+ "name" : "const char *",
+ "referenced_type" : "_ZTIKc",
+ "self_type" : "_ZTIPKc",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKh",
+ "name" : "const unsigned char *",
+ "referenced_type" : "_ZTIKh",
+ "self_type" : "_ZTIPKh",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKt",
+ "name" : "const unsigned short *",
+ "referenced_type" : "_ZTIKt",
+ "self_type" : "_ZTIPKt",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/JenkinsHash.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPKv",
+ "name" : "const void *",
+ "referenced_type" : "_ZTIKv",
+ "self_type" : "_ZTIPKv",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android10LogPrinterE",
+ "name" : "android::LogPrinter *",
+ "referenced_type" : "_ZTIN7android10LogPrinterE",
+ "self_type" : "_ZTIPN7android10LogPrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android10VectorImplE",
+ "name" : "android::VectorImpl *",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIPN7android10VectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android11ScopedTraceE",
+ "name" : "android::ScopedTrace *",
+ "referenced_type" : "_ZTIN7android11ScopedTraceE",
+ "self_type" : "_ZTIPN7android11ScopedTraceE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Trace.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "android::LightRefBase<android::NativeHandle> *",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIPN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android12NativeHandleE",
+ "name" : "android::NativeHandle *",
+ "referenced_type" : "_ZTIN7android12NativeHandleE",
+ "self_type" : "_ZTIPN7android12NativeHandleE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android13PrefixPrinterE",
+ "name" : "android::PrefixPrinter *",
+ "referenced_type" : "_ZTIN7android13PrefixPrinterE",
+ "self_type" : "_ZTIPN7android13PrefixPrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android14LooperCallbackE",
+ "name" : "android::LooperCallback *",
+ "referenced_type" : "_ZTIN7android14LooperCallbackE",
+ "self_type" : "_ZTIPN7android14LooperCallbackE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android14MessageHandlerE",
+ "name" : "android::MessageHandler *",
+ "referenced_type" : "_ZTIN7android14MessageHandlerE",
+ "self_type" : "_ZTIPN7android14MessageHandlerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android14StaticString16ILj1EEE",
+ "name" : "android::StaticString16<1> *",
+ "referenced_type" : "_ZTIN7android14StaticString16ILj1EEE",
+ "self_type" : "_ZTIPN7android14StaticString16ILj1EEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android14String8PrinterE",
+ "name" : "android::String8Printer *",
+ "referenced_type" : "_ZTIN7android14String8PrinterE",
+ "self_type" : "_ZTIPN7android14String8PrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android16ReferenceRenamerE",
+ "name" : "android::ReferenceRenamer *",
+ "referenced_type" : "_ZTIN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIPN7android16ReferenceRenamerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android16SortedVectorImplE",
+ "name" : "android::SortedVectorImpl *",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIPN7android16SortedVectorImplE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android18WeakMessageHandlerE",
+ "name" : "android::WeakMessageHandler *",
+ "referenced_type" : "_ZTIN7android18WeakMessageHandlerE",
+ "self_type" : "_ZTIPN7android18WeakMessageHandlerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android19VirtualLightRefBaseE",
+ "name" : "android::VirtualLightRefBase *",
+ "referenced_type" : "_ZTIN7android19VirtualLightRefBaseE",
+ "self_type" : "_ZTIPN7android19VirtualLightRefBaseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android20SimpleLooperCallbackE",
+ "name" : "android::SimpleLooperCallback *",
+ "referenced_type" : "_ZTIN7android20SimpleLooperCallbackE",
+ "self_type" : "_ZTIPN7android20SimpleLooperCallbackE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android28sysprop_change_callback_infoE",
+ "name" : "android::sysprop_change_callback_info *",
+ "referenced_type" : "_ZTIN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIPN7android28sysprop_change_callback_infoE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2spINS_12NativeHandleEEE",
+ "name" : "android::sp<android::NativeHandle> *",
+ "referenced_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "self_type" : "_ZTIPN7android2spINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2spINS_14LooperCallbackEEE",
+ "name" : "android::sp<android::LooperCallback> *",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIPN7android2spINS_14LooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPN7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback> *",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIPN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper> *",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIPN7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread> *",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIPN7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2wpINS_14MessageHandlerEEE",
+ "name" : "android::wp<android::MessageHandler> *",
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIPN7android2wpINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android2wpINS_6ThreadEEE",
+ "name" : "android::wp<android::Thread> *",
+ "referenced_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIPN7android2wpINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android4base11borrowed_fdE",
+ "name" : "android::base::borrowed_fd *",
+ "referenced_type" : "_ZTIN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIPN7android4base11borrowed_fdE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "android::base::unique_fd_impl<android::base::DefaultCloser> *",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIPN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android5Mutex8AutolockE",
+ "name" : "android::Mutex::Autolock *",
+ "referenced_type" : "_ZTIN7android5Mutex8AutolockE",
+ "self_type" : "_ZTIPN7android5Mutex8AutolockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android5MutexE",
+ "name" : "android::Mutex *",
+ "referenced_type" : "_ZTIN7android5MutexE",
+ "self_type" : "_ZTIPN7android5MutexE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6Looper15MessageEnvelopeE",
+ "name" : "android::Looper::MessageEnvelope *",
+ "referenced_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIPN7android6Looper15MessageEnvelopeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6Looper8ResponseE",
+ "name" : "android::Looper::Response *",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIPN7android6Looper8ResponseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6LooperE",
+ "name" : "android::Looper *",
+ "referenced_type" : "_ZTIN7android6LooperE",
+ "self_type" : "_ZTIPN7android6LooperE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6RWLock9AutoRLockE",
+ "name" : "android::RWLock::AutoRLock *",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoRLockE",
+ "self_type" : "_ZTIPN7android6RWLock9AutoRLockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6RWLock9AutoWLockE",
+ "name" : "android::RWLock::AutoWLock *",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoWLockE",
+ "self_type" : "_ZTIPN7android6RWLock9AutoWLockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6RWLockE",
+ "name" : "android::RWLock *",
+ "referenced_type" : "_ZTIN7android6RWLockE",
+ "self_type" : "_ZTIPN7android6RWLockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6ThreadE",
+ "name" : "android::Thread *",
+ "referenced_type" : "_ZTIN7android6ThreadE",
+ "self_type" : "_ZTIPN7android6ThreadE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::Vector<android::sysprop_change_callback_info> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIPN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::Vector<android::Looper::MessageEnvelope> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIPN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "android::Vector<android::Looper::Response> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIPN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android6VectorINS_7String8EEE",
+ "name" : "android::Vector<android::String8> *",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIPN7android6VectorINS_7String8EEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7FileMapE",
+ "name" : "android::FileMap *",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIPN7android7FileMapE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7MessageE",
+ "name" : "android::Message *",
+ "referenced_type" : "_ZTIN7android7MessageE",
+ "self_type" : "_ZTIPN7android7MessageE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7PrinterE",
+ "name" : "android::Printer *",
+ "referenced_type" : "_ZTIN7android7PrinterE",
+ "self_type" : "_ZTIPN7android7PrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7RefBase12weakref_implE",
+ "name" : "android::RefBase::weakref_impl *",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_implE",
+ "self_type" : "_ZTIPN7android7RefBase12weakref_implE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "name" : "android::RefBase::weakref_type *",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIPN7android7RefBase12weakref_typeE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7RefBaseE",
+ "name" : "android::RefBase *",
+ "referenced_type" : "_ZTIN7android7RefBaseE",
+ "self_type" : "_ZTIPN7android7RefBaseE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android7String8E",
+ "name" : "android::String8 *",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIPN7android7String8E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android8String1610StaticDataILj1EEE",
+ "name" : "android::String16::StaticData<1> *",
+ "referenced_type" : "_ZTIN7android8String1610StaticDataILj1EEE",
+ "self_type" : "_ZTIPN7android8String1610StaticDataILj1EEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android8String16E",
+ "name" : "android::String16 *",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIPN7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android9CallStack12StackDeleterE",
+ "name" : "android::CallStack::StackDeleter *",
+ "referenced_type" : "_ZTIN7android9CallStack12StackDeleterE",
+ "self_type" : "_ZTIPN7android9CallStack12StackDeleterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android9CallStackE",
+ "name" : "android::CallStack *",
+ "referenced_type" : "_ZTIN7android9CallStackE",
+ "self_type" : "_ZTIPN7android9CallStackE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android9ConditionE",
+ "name" : "android::Condition *",
+ "referenced_type" : "_ZTIN7android9ConditionE",
+ "self_type" : "_ZTIPN7android9ConditionE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Condition.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android9FdPrinterE",
+ "name" : "android::FdPrinter *",
+ "referenced_type" : "_ZTIN7android9FdPrinterE",
+ "self_type" : "_ZTIPN7android9FdPrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android9StopWatchE",
+ "name" : "android::StopWatch *",
+ "referenced_type" : "_ZTIN7android9StopWatchE",
+ "self_type" : "_ZTIPN7android9StopWatchE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPN7android9TokenizerE",
+ "name" : "android::Tokenizer *",
+ "referenced_type" : "_ZTIN7android9TokenizerE",
+ "self_type" : "_ZTIPN7android9TokenizerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPPN7android9TokenizerE",
+ "name" : "android::Tokenizer **",
+ "referenced_type" : "_ZTIPN7android9TokenizerE",
+ "self_type" : "_ZTIPPN7android9TokenizerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPPv",
+ "name" : "void **",
+ "referenced_type" : "_ZTIPv",
+ "self_type" : "_ZTIPPv",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/AndroidThreads.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPc",
+ "name" : "char *",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIPc",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPh",
+ "name" : "unsigned char *",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIPh",
+ "size" : 4,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPi",
+ "name" : "int *",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIPi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPj",
+ "name" : "unsigned int *",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIPj",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Unicode.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIPv",
+ "name" : "void *",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIPv",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ }
+ ],
+ "qualified_types" :
+ [
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIA1_KDs",
+ "name" : "const char16_t[1]",
+ "referenced_type" : "_ZTIA1_Ds",
+ "self_type" : "_ZTIA1_KDs",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK13native_handle",
+ "name" : "const native_handle",
+ "referenced_type" : "_ZTI13native_handle",
+ "self_type" : "_ZTIK13native_handle",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIK7log_msg",
+ "name" : "const log_msg",
+ "referenced_type" : "_ZTI7log_msg",
+ "self_type" : "_ZTIK7log_msg",
+ "size" : 5124,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKDi",
+ "name" : "const char32_t",
+ "referenced_type" : "_ZTIDi",
+ "self_type" : "_ZTIKDi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKDs",
+ "name" : "const char16_t",
+ "referenced_type" : "_ZTIDs",
+ "self_type" : "_ZTIKDs",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android10VectorImplE",
+ "name" : "const android::VectorImpl",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIKN7android10VectorImplE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "const android::LightRefBase<android::NativeHandle>",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIKN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android12NativeHandleE",
+ "name" : "const android::NativeHandle",
+ "referenced_type" : "_ZTIN7android12NativeHandleE",
+ "self_type" : "_ZTIKN7android12NativeHandleE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android16ReferenceRenamerE",
+ "name" : "const android::ReferenceRenamer",
+ "referenced_type" : "_ZTIN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIKN7android16ReferenceRenamerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android16SortedVectorImplE",
+ "name" : "const android::SortedVectorImpl",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIKN7android16SortedVectorImplE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "name" : "const android::sysprop_change_callback_info",
+ "referenced_type" : "_ZTIN7android28sysprop_change_callback_infoE",
+ "self_type" : "_ZTIKN7android28sysprop_change_callback_infoE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "name" : "const android::sp<android::LooperCallback>",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIKN7android2spINS_14LooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "name" : "const android::sp<android::MessageHandler>",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIKN7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "const android::sp<android::SimpleLooperCallback>",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIKN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_6LooperEEE",
+ "name" : "const android::sp<android::Looper>",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIKN7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "name" : "const android::sp<android::Thread>",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIKN7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "name" : "const android::wp<android::MessageHandler>",
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIKN7android2wpINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android2wpINS_6ThreadEEE",
+ "name" : "const android::wp<android::Thread>",
+ "referenced_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIKN7android2wpINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android4base11borrowed_fdE",
+ "name" : "const android::base::borrowed_fd",
+ "referenced_type" : "_ZTIN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIKN7android4base11borrowed_fdE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "const android::base::unique_fd_impl<android::base::DefaultCloser>",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIKN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "name" : "const android::Looper::MessageEnvelope",
+ "referenced_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIKN7android6Looper15MessageEnvelopeE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6Looper7RequestE",
+ "name" : "const android::Looper::Request",
+ "referenced_type" : "_ZTIN7android6Looper7RequestE",
+ "self_type" : "_ZTIKN7android6Looper7RequestE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6Looper8ResponseE",
+ "name" : "const android::Looper::Response",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIKN7android6Looper8ResponseE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6LooperE",
+ "name" : "const android::Looper",
+ "referenced_type" : "_ZTIN7android6LooperE",
+ "self_type" : "_ZTIKN7android6LooperE",
+ "size" : 136,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6ThreadE",
+ "name" : "const android::Thread",
+ "referenced_type" : "_ZTIN7android6ThreadE",
+ "self_type" : "_ZTIKN7android6ThreadE",
+ "size" : 44,
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "const android::Vector<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIKN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "const android::Vector<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIKN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "const android::Vector<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIKN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android6VectorINS_7String8EEE",
+ "name" : "const android::Vector<android::String8>",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIKN7android6VectorINS_7String8EEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7FileMapE",
+ "name" : "const android::FileMap",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIKN7android7FileMapE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7MessageE",
+ "name" : "const android::Message",
+ "referenced_type" : "_ZTIN7android7MessageE",
+ "self_type" : "_ZTIKN7android7MessageE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7RefBase12weakref_typeE",
+ "name" : "const android::RefBase::weakref_type",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIKN7android7RefBase12weakref_typeE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7RefBaseE",
+ "name" : "const android::RefBase",
+ "referenced_type" : "_ZTIN7android7RefBaseE",
+ "self_type" : "_ZTIKN7android7RefBaseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android7String8E",
+ "name" : "const android::String8",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIKN7android7String8E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android8String1610StaticDataILj1EEE",
+ "name" : "const android::String16::StaticData<1>",
+ "referenced_type" : "_ZTIN7android8String1610StaticDataILj1EEE",
+ "self_type" : "_ZTIKN7android8String1610StaticDataILj1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android8String16E",
+ "name" : "const android::String16",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIKN7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android9CallStackE",
+ "name" : "const android::CallStack",
+ "referenced_type" : "_ZTIN7android9CallStackE",
+ "self_type" : "_ZTIKN7android9CallStackE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android9StopWatchE",
+ "name" : "const android::StopWatch",
+ "referenced_type" : "_ZTIN7android9StopWatchE",
+ "self_type" : "_ZTIKN7android9StopWatchE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKN7android9TokenizerE",
+ "name" : "const android::Tokenizer",
+ "referenced_type" : "_ZTIN7android9TokenizerE",
+ "self_type" : "_ZTIKN7android9TokenizerE",
+ "size" : 28,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKPKc",
+ "name" : "const char *const",
+ "referenced_type" : "_ZTIPKc",
+ "self_type" : "_ZTIKPKc",
+ "size" : 4,
+ "source_file" : "system/core/libprocessgroup/include/processgroup/processgroup.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKPN7android7RefBase12weakref_implE",
+ "name" : "android::RefBase::weakref_impl *const",
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_implE",
+ "self_type" : "_ZTIKPN7android7RefBase12weakref_implE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKa",
+ "name" : "const signed char",
+ "referenced_type" : "_ZTIa",
+ "self_type" : "_ZTIKa",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKb",
+ "name" : "const bool",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIKb",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKc",
+ "name" : "const char",
+ "referenced_type" : "_ZTIc",
+ "self_type" : "_ZTIKc",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKd",
+ "name" : "const double",
+ "referenced_type" : "_ZTId",
+ "self_type" : "_ZTIKd",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKf",
+ "name" : "const float",
+ "referenced_type" : "_ZTIf",
+ "self_type" : "_ZTIKf",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKh",
+ "name" : "const unsigned char",
+ "referenced_type" : "_ZTIh",
+ "self_type" : "_ZTIKh",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKi",
+ "name" : "const int",
+ "referenced_type" : "_ZTIi",
+ "self_type" : "_ZTIKi",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 4,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKj",
+ "name" : "const unsigned int",
+ "referenced_type" : "_ZTIj",
+ "self_type" : "_ZTIKj",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKs",
+ "name" : "const short",
+ "referenced_type" : "_ZTIs",
+ "self_type" : "_ZTIKs",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 2,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKt",
+ "name" : "const unsigned short",
+ "referenced_type" : "_ZTIt",
+ "self_type" : "_ZTIKt",
+ "size" : 2,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKv",
+ "name" : "const void",
+ "referenced_type" : "_ZTIv",
+ "self_type" : "_ZTIKv",
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKx",
+ "name" : "const long long",
+ "referenced_type" : "_ZTIx",
+ "self_type" : "_ZTIKx",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 8,
+ "is_const" : true,
+ "linker_set_key" : "_ZTIKy",
+ "name" : "const unsigned long long",
+ "referenced_type" : "_ZTIy",
+ "self_type" : "_ZTIKy",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h"
+ },
+ {
+ "alignment" : 1,
+ "is_volatile" : true,
+ "linker_set_key" : "_ZTIVb",
+ "name" : "volatile bool",
+ "referenced_type" : "_ZTIb",
+ "self_type" : "_ZTIVb",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/Thread.h"
+ }
+ ],
+ "record_types" :
+ [
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "len",
+ "referenced_type" : "_ZTIt"
+ },
+ {
+ "field_name" : "hdr_size",
+ "field_offset" : 16,
+ "referenced_type" : "_ZTIt"
+ },
+ {
+ "field_name" : "pid",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "tid",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "sec",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "nsec",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "lid",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "uid",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "linker_set_key" : "_ZTI12logger_entry",
+ "name" : "logger_entry",
+ "referenced_type" : "_ZTI12logger_entry",
+ "self_type" : "_ZTI12logger_entry",
+ "size" : 28,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "y",
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "field_name" : "cb",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "field_name" : "cr",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "field_name" : "ystride",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "cstride",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "chroma_step",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "reserved",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIA8_j"
+ }
+ ],
+ "linker_set_key" : "_ZTI13android_ycbcr",
+ "name" : "android_ycbcr",
+ "referenced_type" : "_ZTI13android_ycbcr",
+ "self_type" : "_ZTI13android_ycbcr",
+ "size" : 56,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "version",
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "numFds",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "numInts",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "data",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIA0_i"
+ }
+ ],
+ "linker_set_key" : "_ZTI13native_handle",
+ "name" : "native_handle",
+ "referenced_type" : "_ZTI13native_handle",
+ "self_type" : "_ZTI13native_handle",
+ "size" : 12,
+ "source_file" : "system/core/libcutils/include_outside_system/cutils/native_handle.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "x",
+ "referenced_type" : "_ZTIf"
+ },
+ {
+ "field_name" : "y",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIf"
+ }
+ ],
+ "linker_set_key" : "_ZTI16android_xy_color",
+ "name" : "android_xy_color",
+ "referenced_type" : "_ZTI16android_xy_color",
+ "self_type" : "_ZTI16android_xy_color",
+ "size" : 8,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "top_left",
+ "referenced_type" : "_ZTIPh"
+ },
+ {
+ "field_name" : "component",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTI22android_flex_component"
+ },
+ {
+ "field_name" : "bits_per_component",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "bits_used",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "h_increment",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "v_increment",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "h_subsampling",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "v_subsampling",
+ "field_offset" : 224,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTI18android_flex_plane",
+ "name" : "android_flex_plane",
+ "referenced_type" : "_ZTI18android_flex_plane",
+ "self_type" : "_ZTI18android_flex_plane",
+ "size" : 32,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "format",
+ "referenced_type" : "_ZTI19android_flex_format"
+ },
+ {
+ "field_name" : "num_planes",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "planes",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIP18android_flex_plane"
+ }
+ ],
+ "linker_set_key" : "_ZTI19android_flex_layout",
+ "name" : "android_flex_layout",
+ "referenced_type" : "_ZTI19android_flex_layout",
+ "self_type" : "_ZTI19android_flex_layout",
+ "size" : 12,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "num_points",
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "reserved",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIA8_j"
+ },
+ {
+ "field_name" : "xyzc_points",
+ "field_offset" : 288,
+ "referenced_type" : "_ZTIA_f"
+ }
+ ],
+ "linker_set_key" : "_ZTI20android_depth_points",
+ "name" : "android_depth_points",
+ "referenced_type" : "_ZTI20android_depth_points",
+ "self_type" : "_ZTI20android_depth_points",
+ "size" : 36,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "struct_size",
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "buffer_id",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "priority",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "tag",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "field_name" : "file",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "field_name" : "line",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "message",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTI21__android_log_message",
+ "name" : "__android_log_message",
+ "referenced_type" : "_ZTI21__android_log_message",
+ "self_type" : "_ZTI21__android_log_message",
+ "size" : 28,
+ "source_file" : "system/logging/liblog/include_vndk/android/log.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "maxContentLightLevel",
+ "referenced_type" : "_ZTIf"
+ },
+ {
+ "field_name" : "maxFrameAverageLightLevel",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIf"
+ }
+ ],
+ "linker_set_key" : "_ZTI25android_cta861_3_metadata",
+ "name" : "android_cta861_3_metadata",
+ "referenced_type" : "_ZTI25android_cta861_3_metadata",
+ "self_type" : "_ZTI25android_cta861_3_metadata",
+ "size" : 8,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "displayPrimaryRed",
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "displayPrimaryGreen",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "displayPrimaryBlue",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "whitePoint",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTI16android_xy_color"
+ },
+ {
+ "field_name" : "maxLuminance",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIf"
+ },
+ {
+ "field_name" : "minLuminance",
+ "field_offset" : 288,
+ "referenced_type" : "_ZTIf"
+ }
+ ],
+ "linker_set_key" : "_ZTI26android_smpte2086_metadata",
+ "name" : "android_smpte2086_metadata",
+ "referenced_type" : "_ZTI26android_smpte2086_metadata",
+ "self_type" : "_ZTI26android_smpte2086_metadata",
+ "size" : 40,
+ "source_file" : "system/core/libsystem/include/system/graphics.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "referenced_type" : "_ZTIN7log_msgUt_E"
+ }
+ ],
+ "linker_set_key" : "_ZTI7log_msg",
+ "name" : "log_msg",
+ "referenced_type" : "_ZTI7log_msg",
+ "self_type" : "_ZTI7log_msg",
+ "size" : 5124,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ },
+ {
+ "alignment" : 1,
+ "fields" :
+ [
+ {
+ "field_name" : "tv_sec",
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "field_name" : "tv_nsec",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "linker_set_key" : "_ZTI8log_time",
+ "name" : "log_time",
+ "referenced_type" : "_ZTI8log_time",
+ "self_type" : "_ZTI8log_time",
+ "size" : 8,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_time.h"
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLogTag",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPriority",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTI19android_LogPriority"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mIgnoreBlankLines",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android10LogPrinterE",
+ "name" : "android::LogPrinter",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android10LogPrinterE",
+ "self_type" : "_ZTIN7android10LogPrinterE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android10LogPrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android10LogPrinter9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10LogPrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10LogPrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mStorage",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mCount",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mFlags",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIKj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mItemSize",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIKj"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android10VectorImplE",
+ "name" : "android::VectorImpl",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android10VectorImplE",
+ "self_type" : "_ZTIN7android10VectorImplE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android10VectorImplE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10VectorImplD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android10VectorImplD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl12do_constructEPvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl10do_destroyEPvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl7do_copyEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl8do_splatEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl15do_move_forwardEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl16do_move_backwardEPvPKvj"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mTag",
+ "referenced_type" : "_ZTIy"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android11ScopedTraceE",
+ "name" : "android::ScopedTrace",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android11ScopedTraceE",
+ "self_type" : "_ZTIN7android11ScopedTraceE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/Trace.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCount",
+ "referenced_type" : "_ZTINSt3__16atomicIiEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "name" : "android::LightRefBase<android::NativeHandle>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "self_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android12NativeHandleE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCount",
+ "referenced_type" : "_ZTINSt3__16atomicIiEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE",
+ "name" : "android::LightRefBase<android::VirtualLightRefBase>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE",
+ "self_type" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android19VirtualLightRefBaseE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_12NativeHandleEEE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mHandle",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIP13native_handle"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mOwnsHandle",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIb"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android12NativeHandleE",
+ "name" : "android::NativeHandle",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android12NativeHandleE",
+ "self_type" : "_ZTIN7android12NativeHandleE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/NativeHandle.h"
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mPrinter",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIRN7android7PrinterE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android13PrefixPrinterE",
+ "name" : "android::PrefixPrinter",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android13PrefixPrinterE",
+ "self_type" : "_ZTIN7android13PrefixPrinterE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android13PrefixPrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android13PrefixPrinter9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android13PrefixPrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android13PrefixPrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_pointer<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_pointer<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEEE",
+ "name" : "android::trait_pointer<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android13trait_pointerINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "is_virtual" : true,
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14LooperCallbackE",
+ "name" : "android::LooperCallback",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14LooperCallbackE",
+ "self_type" : "_ZTIN7android14LooperCallbackE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 4,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14LooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14LooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14LooperCallbackD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android14LooperCallback11handleEventEiiPv"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -4,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -4,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14LooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android14LooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android14LooperCallbackD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "is_virtual" : true,
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14MessageHandlerE",
+ "name" : "android::MessageHandler",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14MessageHandlerE",
+ "self_type" : "_ZTIN7android14MessageHandlerE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 4,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14MessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14MessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14MessageHandlerD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android14MessageHandler13handleMessageERKNS_7MessageE"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -4,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -4,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14MessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android14MessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android14MessageHandlerD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android14ReferenceMoverE",
+ "name" : "android::ReferenceMover",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14ReferenceMoverE",
+ "self_type" : "_ZTIN7android14ReferenceMoverE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android8String16E"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mData",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIKN7android8String1610StaticDataILj1EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14StaticString16ILj1EEE",
+ "name" : "android::StaticString16<1>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14StaticString16ILj1EEE",
+ "self_type" : "_ZTIN7android14StaticString16ILj1EEE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mTarget",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPN7android7String8E"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android14String8PrinterE",
+ "name" : "android::String8Printer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android14String8PrinterE",
+ "self_type" : "_ZTIN7android14String8PrinterE",
+ "size" : 12,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android14String8PrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android14String8Printer9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14String8PrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android14String8PrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIN7android16ReferenceRenamerE",
+ "name" : "android::ReferenceRenamer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android16ReferenceRenamerE",
+ "self_type" : "_ZTIN7android16ReferenceRenamerE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android16ReferenceRenamerE"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android16ReferenceRenamerclEj"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16SortedVectorImplE",
+ "name" : "android::SortedVectorImpl",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android16SortedVectorImplE",
+ "self_type" : "_ZTIN7android16SortedVectorImplE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/VectorImpl.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android16SortedVectorImplE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android16SortedVectorImplD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android16SortedVectorImplD0Ev"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl12do_constructEPvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl10do_destroyEPvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl7do_copyEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl8do_splatEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl15do_move_forwardEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android10VectorImpl16do_move_backwardEPvPKvj"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZNK7android16SortedVectorImpl10do_compareEPKvS2_"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTINSt3__117integral_constantIbLb0EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16use_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::use_trivial_move<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android16use_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android16use_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTINSt3__117integral_constantIbLb0EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16use_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::use_trivial_move<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android16use_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android16use_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTINSt3__117integral_constantIbLb0EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android16use_trivial_moveINS_6Looper8ResponseEEE",
+ "name" : "android::use_trivial_move<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android16use_trivial_moveINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android16use_trivial_moveINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android14MessageHandlerE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mHandler",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android18WeakMessageHandlerE",
+ "name" : "android::WeakMessageHandler",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android18WeakMessageHandlerE",
+ "self_type" : "_ZTIN7android18WeakMessageHandlerE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 12,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android18WeakMessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android18WeakMessageHandler13handleMessageERKNS_7MessageE"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -12,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -12,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android18WeakMessageHandlerE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android18WeakMessageHandlerD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android18WeakMessageHandlerD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_copy<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_copy<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_copy<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIbEE",
+ "name" : "android::trait_trivial_copy<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIcEE",
+ "name" : "android::trait_trivial_copy<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIdEE",
+ "name" : "android::trait_trivial_copy<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIfEE",
+ "name" : "android::trait_trivial_copy<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIhEE",
+ "name" : "android::trait_trivial_copy<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIiEE",
+ "name" : "android::trait_trivial_copy<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIjEE",
+ "name" : "android::trait_trivial_copy<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIlEE",
+ "name" : "android::trait_trivial_copy<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyImEE",
+ "name" : "android::trait_trivial_copy<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIsEE",
+ "name" : "android::trait_trivial_copy<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyItEE",
+ "name" : "android::trait_trivial_copy<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIvEE",
+ "name" : "android::trait_trivial_copy<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIxEE",
+ "name" : "android::trait_trivial_copy<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_copyIyEE",
+ "name" : "android::trait_trivial_copy<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_copyIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_copyIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_ctor<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_ctor<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_ctor<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIbEE",
+ "name" : "android::trait_trivial_ctor<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIcEE",
+ "name" : "android::trait_trivial_ctor<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIdEE",
+ "name" : "android::trait_trivial_ctor<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIfEE",
+ "name" : "android::trait_trivial_ctor<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIhEE",
+ "name" : "android::trait_trivial_ctor<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIiEE",
+ "name" : "android::trait_trivial_ctor<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIjEE",
+ "name" : "android::trait_trivial_ctor<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIlEE",
+ "name" : "android::trait_trivial_ctor<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorImEE",
+ "name" : "android::trait_trivial_ctor<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIsEE",
+ "name" : "android::trait_trivial_ctor<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorItEE",
+ "name" : "android::trait_trivial_ctor<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIvEE",
+ "name" : "android::trait_trivial_ctor<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIxEE",
+ "name" : "android::trait_trivial_ctor<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_ctorIyEE",
+ "name" : "android::trait_trivial_ctor<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_ctorIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_ctorIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_dtor<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_dtor<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_dtor<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIbEE",
+ "name" : "android::trait_trivial_dtor<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIcEE",
+ "name" : "android::trait_trivial_dtor<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIdEE",
+ "name" : "android::trait_trivial_dtor<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIfEE",
+ "name" : "android::trait_trivial_dtor<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIhEE",
+ "name" : "android::trait_trivial_dtor<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIiEE",
+ "name" : "android::trait_trivial_dtor<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIjEE",
+ "name" : "android::trait_trivial_dtor<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIlEE",
+ "name" : "android::trait_trivial_dtor<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorImEE",
+ "name" : "android::trait_trivial_dtor<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIsEE",
+ "name" : "android::trait_trivial_dtor<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorItEE",
+ "name" : "android::trait_trivial_dtor<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIvEE",
+ "name" : "android::trait_trivial_dtor<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIxEE",
+ "name" : "android::trait_trivial_dtor<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_dtorIyEE",
+ "name" : "android::trait_trivial_dtor<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_dtorIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_dtorIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::trait_trivial_move<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::trait_trivial_move<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEEE",
+ "name" : "android::trait_trivial_move<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_7String8EEE",
+ "name" : "android::trait_trivial_move<android::String8>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_7String8EEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/String8.h",
+ "template_args" :
+ [
+ "_ZTIN7android7String8E"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveINS_8String16EEE",
+ "name" : "android::trait_trivial_move<android::String16>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveINS_8String16EEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/String16.h",
+ "template_args" :
+ [
+ "_ZTIN7android8String16E"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIbEE",
+ "name" : "android::trait_trivial_move<bool>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIbEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIbEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIb"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIcEE",
+ "name" : "android::trait_trivial_move<char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIcEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIcEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIc"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIdEE",
+ "name" : "android::trait_trivial_move<double>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIdEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIdEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTId"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIfEE",
+ "name" : "android::trait_trivial_move<float>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIfEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIfEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIf"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIhEE",
+ "name" : "android::trait_trivial_move<unsigned char>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIhEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIhEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIh"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIiEE",
+ "name" : "android::trait_trivial_move<int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIiEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIiEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIi"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIjEE",
+ "name" : "android::trait_trivial_move<unsigned int>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIjEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIjEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIj"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIlEE",
+ "name" : "android::trait_trivial_move<long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIlEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIlEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIl"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveImEE",
+ "name" : "android::trait_trivial_move<unsigned long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveImEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveImEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIm"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIsEE",
+ "name" : "android::trait_trivial_move<short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIsEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIsEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIs"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveItEE",
+ "name" : "android::trait_trivial_move<unsigned short>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveItEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveItEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIt"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIvEE",
+ "name" : "android::trait_trivial_move<void>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIvEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIvEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIv"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIxEE",
+ "name" : "android::trait_trivial_move<long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIxEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIxEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIx"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android18trait_trivial_moveIyEE",
+ "name" : "android::trait_trivial_move<unsigned long long>",
+ "referenced_type" : "_ZTIN7android18trait_trivial_moveIyEE",
+ "self_type" : "_ZTIN7android18trait_trivial_moveIyEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIy"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android12LightRefBaseINS_19VirtualLightRefBaseEEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android19VirtualLightRefBaseE",
+ "name" : "android::VirtualLightRefBase",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android19VirtualLightRefBaseE",
+ "self_type" : "_ZTIN7android19VirtualLightRefBaseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/LightRefBase.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android19VirtualLightRefBaseE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android19VirtualLightRefBaseD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android19VirtualLightRefBaseD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android14LooperCallbackE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCallback",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPFiiiPvE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android20SimpleLooperCallbackE",
+ "name" : "android::SimpleLooperCallback",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android20SimpleLooperCallbackE",
+ "self_type" : "_ZTIN7android20SimpleLooperCallbackE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 8,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android20SimpleLooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android20SimpleLooperCallback11handleEventEiiPv"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -8,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -8,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android20SimpleLooperCallbackE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android20SimpleLooperCallbackD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android20SimpleLooperCallbackD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android12NativeHandleE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "name" : "android::sp<android::NativeHandle>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "self_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android12NativeHandleE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android14LooperCallbackE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "name" : "android::sp<android::LooperCallback>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "self_type" : "_ZTIN7android2spINS_14LooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android14LooperCallbackE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android14MessageHandlerE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android20SimpleLooperCallbackE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android20SimpleLooperCallbackE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android6LooperE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android6LooperE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h",
+ "template_args" :
+ [
+ "_ZTIN7android6ThreadE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android14MessageHandlerE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "m_refs",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "name" : "android::wp<android::MessageHandler>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "self_type" : "_ZTIN7android2wpINS_14MessageHandlerEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android14MessageHandlerE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "m_ptr",
+ "referenced_type" : "_ZTIPN7android6ThreadE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "m_refs",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPN7android7RefBase12weakref_typeE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "name" : "android::wp<android::Thread>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "self_type" : "_ZTIN7android2wpINS_6ThreadEEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "template_args" :
+ [
+ "_ZTIN7android6ThreadE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "fd_",
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android4base11borrowed_fdE",
+ "name" : "android::base::borrowed_fd",
+ "referenced_type" : "_ZTIN7android4base11borrowed_fdE",
+ "self_type" : "_ZTIN7android4base11borrowed_fdE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android4base13DefaultCloserE",
+ "name" : "android::base::DefaultCloser",
+ "referenced_type" : "_ZTIN7android4base13DefaultCloserE",
+ "self_type" : "_ZTIN7android4base13DefaultCloserE",
+ "size" : 1,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "fd_",
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "android::base::unique_fd_impl<android::base::DefaultCloser>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h",
+ "template_args" :
+ [
+ "_ZTIN7android4base13DefaultCloserE"
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "referenced_type" : "_ZTIRN7android5MutexE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android5Mutex8AutolockE",
+ "name" : "android::Mutex::Autolock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android5Mutex8AutolockE",
+ "self_type" : "_ZTIN7android5Mutex8AutolockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mMutex",
+ "referenced_type" : "_ZTI15pthread_mutex_t"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android5MutexE",
+ "name" : "android::Mutex",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android5MutexE",
+ "self_type" : "_ZTIN7android5MutexE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Mutex.h"
+ },
+ {
+ "access" : "private",
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "uptime",
+ "referenced_type" : "_ZTIx"
+ },
+ {
+ "field_name" : "handler",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE"
+ },
+ {
+ "field_name" : "message",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIN7android7MessageE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "name" : "android::Looper::MessageEnvelope",
+ "referenced_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "self_type" : "_ZTIN7android6Looper15MessageEnvelopeE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "fd",
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "ident",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "events",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "callback",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIN7android2spINS_14LooperCallbackEEE"
+ },
+ {
+ "field_name" : "data",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIPv"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper7RequestE",
+ "name" : "android::Looper::Request",
+ "referenced_type" : "_ZTIN7android6Looper7RequestE",
+ "self_type" : "_ZTIN7android6Looper7RequestE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "access" : "private",
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "field_name" : "seq",
+ "referenced_type" : "_ZTIy"
+ },
+ {
+ "field_name" : "events",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "field_name" : "request",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIN7android6Looper7RequestE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6Looper8ResponseE",
+ "name" : "android::Looper::Response",
+ "referenced_type" : "_ZTIN7android6Looper8ResponseE",
+ "self_type" : "_ZTIN7android6Looper8ResponseE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 8,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mAllowNonCallbacks",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIKb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mWakeEventFd",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIN7android5MutexE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mMessageEnvelopes",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mSendingMessage",
+ "field_offset" : 320,
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPolling",
+ "field_offset" : 328,
+ "referenced_type" : "_ZTIVb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mEpollFd",
+ "field_offset" : 352,
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mEpollRebuildRequired",
+ "field_offset" : 384,
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mRequests",
+ "field_offset" : 416,
+ "referenced_type" : "_ZTINSt3__113unordered_mapIyN7android6Looper7RequestENS_4hashIyEENS_8equal_toIyEENS_9allocatorINS_4pairIKyS3_EEEEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mSequenceNumberByFd",
+ "field_offset" : 576,
+ "referenced_type" : "_ZTINSt3__113unordered_mapIiyNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiyEEEEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mNextRequestSeq",
+ "field_offset" : 768,
+ "referenced_type" : "_ZTIy"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mResponses",
+ "field_offset" : 832,
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mResponseIndex",
+ "field_offset" : 992,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mNextMessageUptime",
+ "field_offset" : 1024,
+ "referenced_type" : "_ZTIx"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6LooperE",
+ "name" : "android::Looper",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6LooperE",
+ "self_type" : "_ZTIN7android6LooperE",
+ "size" : 136,
+ "source_file" : "system/core/libutils/include/utils/Looper.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6LooperE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6LooperD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6LooperD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "referenced_type" : "_ZTIRN7android6RWLockE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLock9AutoRLockE",
+ "name" : "android::RWLock::AutoRLock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoRLockE",
+ "self_type" : "_ZTIN7android6RWLock9AutoRLockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "referenced_type" : "_ZTIRN7android6RWLockE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLock9AutoWLockE",
+ "name" : "android::RWLock::AutoWLock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6RWLock9AutoWLockE",
+ "self_type" : "_ZTIN7android6RWLock9AutoWLockE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mRWLock",
+ "referenced_type" : "_ZTI16pthread_rwlock_t"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6RWLockE",
+ "name" : "android::RWLock",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6RWLockE",
+ "self_type" : "_ZTIN7android6RWLockE",
+ "size" : 40,
+ "source_file" : "system/core/libutils/include/utils/RWLock.h"
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "is_virtual" : true,
+ "referenced_type" : "_ZTIN7android7RefBaseE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCanCallJava",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIKb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mThread",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLock",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIN7android5MutexE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mThreadExitedCondition",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIN7android9ConditionE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mStatus",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mExitPending",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIVb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mRunning",
+ "field_offset" : 200,
+ "referenced_type" : "_ZTIVb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mHoldSelf",
+ "field_offset" : 224,
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mTid",
+ "field_offset" : 256,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6ThreadE",
+ "name" : "android::Thread",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6ThreadE",
+ "self_type" : "_ZTIN7android6ThreadE",
+ "size" : 44,
+ "source_file" : "system/core/libutils/include/utils/Thread.h",
+ "vtable_components" :
+ [
+ {
+ "component_value" : 36,
+ "kind" : "vbase_offset"
+ },
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6ThreadE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6ThreadD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6ThreadD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android6Thread3runEPKcij"
+ },
+ {
+ "mangled_component_name" : "_ZN7android6Thread11requestExitEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android6Thread10readyToRunEv"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android6Thread10threadLoopEv"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -36,
+ "kind" : "vcall_offset"
+ },
+ {
+ "component_value" : -36,
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6ThreadE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android6ThreadD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZTv0_n12_N7android6ThreadD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::Vector<android::sysprop_change_callback_info>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_28sysprop_change_callback_infoEEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_28sysprop_change_callback_infoEED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_28sysprop_change_callback_infoEED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE12do_constructEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE10do_destroyEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE7do_copyEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE8do_splatEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE15do_move_forwardEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_28sysprop_change_callback_infoEE16do_move_backwardEPvPKvj"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::Vector<android::Looper::MessageEnvelope>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_6Looper15MessageEnvelopeEEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper15MessageEnvelopeEED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper15MessageEnvelopeEED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE12do_constructEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE10do_destroyEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE7do_copyEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE8do_splatEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE15do_move_forwardEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper15MessageEnvelopeEE16do_move_backwardEPvPKvj"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "name" : "android::Vector<android::Looper::Response>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_6Looper8ResponseEEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper8ResponseEED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_6Looper8ResponseEED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE12do_constructEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE10do_destroyEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE7do_copyEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE8do_splatEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE15do_move_forwardEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_6Looper8ResponseEE16do_move_backwardEPvPKvj"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "access" : "private",
+ "referenced_type" : "_ZTIN7android10VectorImplE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android6VectorINS_7String8EEE",
+ "name" : "android::Vector<android::String8>",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "self_type" : "_ZTIN7android6VectorINS_7String8EEE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/Vector.h",
+ "template_args" :
+ [
+ "_ZTIN7android7String8E"
+ ],
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android6VectorINS_7String8EEE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_7String8EED1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android6VectorINS_7String8EED0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE12do_constructEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE10do_destroyEPvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE7do_copyEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE8do_splatEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE15do_move_forwardEPvPKvj"
+ },
+ {
+ "mangled_component_name" : "_ZNK7android6VectorINS_7String8EE16do_move_backwardEPvPKvj"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEEE",
+ "name" : "android::traits<android::sysprop_change_callback_info>",
+ "referenced_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEEE",
+ "self_type" : "_ZTIN7android6traitsINS_28sysprop_change_callback_infoEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android28sysprop_change_callback_infoE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEEE",
+ "name" : "android::traits<android::Looper::MessageEnvelope>",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEEE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper15MessageEnvelopeEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper15MessageEnvelopeE"
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android6traitsINS_6Looper8ResponseEEE",
+ "name" : "android::traits<android::Looper::Response>",
+ "referenced_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEEE",
+ "self_type" : "_ZTIN7android6traitsINS_6Looper8ResponseEEE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/TypeHelpers.h",
+ "template_args" :
+ [
+ "_ZTIN7android6Looper8ResponseE"
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFileName",
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mBasePtr",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mBaseLength",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mDataOffset",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIx"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mDataPtr",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIPv"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mDataLength",
+ "field_offset" : 224,
+ "referenced_type" : "_ZTIj"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7FileMapE",
+ "name" : "android::FileMap",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTIN7android7FileMapE",
+ "size" : 32,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "what",
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7MessageE",
+ "name" : "android::Message",
+ "referenced_type" : "_ZTIN7android7MessageE",
+ "self_type" : "_ZTIN7android7MessageE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Looper.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTIN7android7PrinterE",
+ "name" : "android::Printer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7PrinterE",
+ "self_type" : "_ZTIN7android7PrinterE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android7PrinterE"
+ },
+ {
+ "is_pure" : true,
+ "mangled_component_name" : "_ZN7android7Printer9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7PrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7PrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android7RefBase12weakref_typeE",
+ "name" : "android::RefBase::weakref_type",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "self_type" : "_ZTIN7android7RefBase12weakref_typeE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mRefs",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIKPN7android7RefBase12weakref_implE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7RefBaseE",
+ "name" : "android::RefBase",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7RefBaseE",
+ "self_type" : "_ZTIN7android7RefBaseE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/RefBase.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android7RefBaseE"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7RefBaseD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android7RefBaseD0Ev"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase10onFirstRefEv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase15onLastStrongRefEPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase20onIncStrongAttemptedEjPKv"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7RefBase13onLastWeakRefEPKv"
+ }
+ ]
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mString",
+ "referenced_type" : "_ZTIPKc"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android7String8E",
+ "name" : "android::String8",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android7String8E",
+ "self_type" : "_ZTIN7android7String8E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String8.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "size",
+ "referenced_type" : "_ZTIKj"
+ },
+ {
+ "field_name" : "data",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIA1_Ds"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android8String1610StaticDataILj1EEE",
+ "name" : "android::String16::StaticData<1>",
+ "referenced_type" : "_ZTIN7android8String1610StaticDataILj1EEE",
+ "self_type" : "_ZTIN7android8String1610StaticDataILj1EEE",
+ "size" : 8,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mString",
+ "referenced_type" : "_ZTIPKDs"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android8String16E",
+ "name" : "android::String16",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTIN7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ },
+ {
+ "alignment" : 1,
+ "linker_set_key" : "_ZTIN7android9CallStack12StackDeleterE",
+ "name" : "android::CallStack::StackDeleter",
+ "referenced_type" : "_ZTIN7android9CallStack12StackDeleterE",
+ "self_type" : "_ZTIN7android9CallStack12StackDeleterE",
+ "size" : 1,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFrameLines",
+ "referenced_type" : "_ZTIN7android6VectorINS_7String8EEE"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9CallStackE",
+ "name" : "android::CallStack",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9CallStackE",
+ "self_type" : "_ZTIN7android9CallStackE",
+ "size" : 20,
+ "source_file" : "system/core/libutils/include/utils/CallStack.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mCond",
+ "referenced_type" : "_ZTI14pthread_cond_t"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9ConditionE",
+ "name" : "android::Condition",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9ConditionE",
+ "self_type" : "_ZTIN7android9ConditionE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/Condition.h"
+ },
+ {
+ "alignment" : 4,
+ "base_specifiers" :
+ [
+ {
+ "referenced_type" : "_ZTIN7android7PrinterE"
+ }
+ ],
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFd",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mIndent",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mPrefix",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mFormatString",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIA20_c"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9FdPrinterE",
+ "name" : "android::FdPrinter",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9FdPrinterE",
+ "self_type" : "_ZTIN7android9FdPrinterE",
+ "size" : 36,
+ "source_file" : "system/core/libutils/include/utils/Printer.h",
+ "vtable_components" :
+ [
+ {
+ "kind" : "offset_to_top"
+ },
+ {
+ "kind" : "rtti",
+ "mangled_component_name" : "_ZTIN7android9FdPrinterE"
+ },
+ {
+ "mangled_component_name" : "_ZN7android9FdPrinter9printLineEPKc"
+ },
+ {
+ "mangled_component_name" : "_ZN7android7Printer15printFormatLineEPKcz"
+ },
+ {
+ "kind" : "complete_dtor_pointer",
+ "mangled_component_name" : "_ZN7android9FdPrinterD1Ev"
+ },
+ {
+ "kind" : "deleting_dtor_pointer",
+ "mangled_component_name" : "_ZN7android9FdPrinterD0Ev"
+ }
+ ]
+ },
+ {
+ "alignment" : 8,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mName",
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mClock",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIi"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mStartTime",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIx"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9StopWatchE",
+ "name" : "android::StopWatch",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9StopWatchE",
+ "self_type" : "_ZTIN7android9StopWatchE",
+ "size" : 16,
+ "source_file" : "system/core/libutils/include/utils/StopWatch.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "access" : "private",
+ "field_name" : "mFilename",
+ "referenced_type" : "_ZTIN7android7String8E"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mFileMap",
+ "field_offset" : 32,
+ "referenced_type" : "_ZTIPN7android7FileMapE"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mBuffer",
+ "field_offset" : 64,
+ "referenced_type" : "_ZTIPc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mOwnBuffer",
+ "field_offset" : 96,
+ "referenced_type" : "_ZTIb"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLength",
+ "field_offset" : 128,
+ "referenced_type" : "_ZTIj"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mCurrent",
+ "field_offset" : 160,
+ "referenced_type" : "_ZTIPKc"
+ },
+ {
+ "access" : "private",
+ "field_name" : "mLineNumber",
+ "field_offset" : 192,
+ "referenced_type" : "_ZTIi"
+ }
+ ],
+ "linker_set_key" : "_ZTIN7android9TokenizerE",
+ "name" : "android::Tokenizer",
+ "record_kind" : "class",
+ "referenced_type" : "_ZTIN7android9TokenizerE",
+ "self_type" : "_ZTIN7android9TokenizerE",
+ "size" : 28,
+ "source_file" : "system/core/libutils/include/utils/Tokenizer.h"
+ },
+ {
+ "alignment" : 4,
+ "fields" :
+ [
+ {
+ "field_name" : "buf",
+ "referenced_type" : "_ZTIA5121_h"
+ },
+ {
+ "field_name" : "entry",
+ "referenced_type" : "_ZTI12logger_entry"
+ }
+ ],
+ "is_anonymous" : true,
+ "linker_set_key" : "_ZTIN7log_msgUt_E",
+ "name" : "log_msg::(anonymous)",
+ "record_kind" : "union",
+ "referenced_type" : "_ZTIN7log_msgUt_E",
+ "self_type" : "_ZTIN7log_msgUt_E",
+ "size" : 5124,
+ "source_file" : "system/logging/liblog/include_vndk/log/log_read.h"
+ }
+ ],
+ "rvalue_reference_types" :
+ [
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android2spINS_12NativeHandleEEE",
+ "name" : "android::sp<android::NativeHandle> &&",
+ "referenced_type" : "_ZTIN7android2spINS_12NativeHandleEEE",
+ "self_type" : "_ZTION7android2spINS_12NativeHandleEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android2spINS_14MessageHandlerEEE",
+ "name" : "android::sp<android::MessageHandler> &&",
+ "referenced_type" : "_ZTIN7android2spINS_14MessageHandlerEEE",
+ "self_type" : "_ZTION7android2spINS_14MessageHandlerEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android2spINS_20SimpleLooperCallbackEEE",
+ "name" : "android::sp<android::SimpleLooperCallback> &&",
+ "referenced_type" : "_ZTIN7android2spINS_20SimpleLooperCallbackEEE",
+ "self_type" : "_ZTION7android2spINS_20SimpleLooperCallbackEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android2spINS_6LooperEEE",
+ "name" : "android::sp<android::Looper> &&",
+ "referenced_type" : "_ZTIN7android2spINS_6LooperEEE",
+ "self_type" : "_ZTION7android2spINS_6LooperEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android2spINS_6ThreadEEE",
+ "name" : "android::sp<android::Thread> &&",
+ "referenced_type" : "_ZTIN7android2spINS_6ThreadEEE",
+ "self_type" : "_ZTION7android2spINS_6ThreadEEE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/StrongPointer.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "name" : "android::base::unique_fd_impl<android::base::DefaultCloser> &&",
+ "referenced_type" : "_ZTIN7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "self_type" : "_ZTION7android4base14unique_fd_implINS0_13DefaultCloserEEE",
+ "size" : 4,
+ "source_file" : "system/libbase/include/android-base/unique_fd.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android7FileMapE",
+ "name" : "android::FileMap &&",
+ "referenced_type" : "_ZTIN7android7FileMapE",
+ "self_type" : "_ZTION7android7FileMapE",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/FileMap.h"
+ },
+ {
+ "alignment" : 4,
+ "linker_set_key" : "_ZTION7android8String16E",
+ "name" : "android::String16 &&",
+ "referenced_type" : "_ZTIN7android8String16E",
+ "self_type" : "_ZTION7android8String16E",
+ "size" : 4,
+ "source_file" : "system/core/libutils/include/utils/String16.h"
+ }
+ ]
+}
diff --git a/libutils/include/utils/RefBase.h b/libutils/include/utils/RefBase.h
index f3acd6f..5e3fa7d 100644
--- a/libutils/include/utils/RefBase.h
+++ b/libutils/include/utils/RefBase.h
@@ -210,6 +210,7 @@
#include <atomic>
#include <functional>
+#include <memory>
#include <type_traits> // for common_type.
#include <stdint.h>
diff --git a/property_service/libpropertyinfoserializer/property_info_serializer_test.cpp b/property_service/libpropertyinfoserializer/property_info_serializer_test.cpp
index 77cbdd4..a484441 100644
--- a/property_service/libpropertyinfoserializer/property_info_serializer_test.cpp
+++ b/property_service/libpropertyinfoserializer/property_info_serializer_test.cpp
@@ -399,7 +399,6 @@
{"dalvik.vm.lockprof.threshold", "u:object_r:dalvik_prop:s0"},
{"dalvik.vm.stack-trace-file", "u:object_r:dalvik_prop:s0"},
{"dalvik.vm.usejit", "u:object_r:dalvik_prop:s0"},
- {"dalvik.vm.usejitprofiles", "u:object_r:dalvik_prop:s0"},
{"debug.atrace.tags.enableflags", "u:object_r:debug_prop:s0"},
{"debug.force_rtl", "u:object_r:debug_prop:s0"},
{"dev.bootcomplete", "u:object_r:system_prop:s0"},
diff --git a/rootdir/etc/linker.config.json b/rootdir/etc/linker.config.json
index c88c7ff..47f77b1 100644
--- a/rootdir/etc/linker.config.json
+++ b/rootdir/etc/linker.config.json
@@ -22,8 +22,6 @@
"libnetd_resolv.so",
// netd
"libnetd_updatable.so",
- // nn
- "libneuralnetworks.so",
// statsd
"libstatspull.so",
"libstatssocket.so",
@@ -31,6 +29,9 @@
"libadb_pairing_auth.so",
"libadb_pairing_connection.so",
"libadb_pairing_server.so"
+
+ // LLNDK libraries in APEXes will be added automatically from the build,
+ // using build variable LLNDK_MOVED_TO_APEX_LIBRARIES.
],
"provideLibs": [
"libaptX_encoder.so",
diff --git a/rootdir/init.rc b/rootdir/init.rc
index ec760d3..881564c 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -55,10 +55,11 @@
# Read more in b/136247322
write /sys/module/dm_verity/parameters/prefetch_cluster 0
- # Generate ld.config.txt for early executed processes
- exec -- /system/bin/bootstrap/linkerconfig --target /linkerconfig/bootstrap
+ # Generate empty ld.config.txt for early executed processes which rely on
+ # /system/lib libraries.
+ write /linkerconfig/bootstrap/ld.config.txt \#
+ write /linkerconfig/default/ld.config.txt \#
chmod 644 /linkerconfig/bootstrap/ld.config.txt
- copy /linkerconfig/bootstrap/ld.config.txt /linkerconfig/default/ld.config.txt
chmod 644 /linkerconfig/default/ld.config.txt
# Mount bootstrap linker configuration as current
@@ -489,18 +490,26 @@
service boringssl_self_test32 /system/bin/boringssl_self_test32
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
+ # Explicitly specify that boringssl_self_test32 doesn't require any capabilities
+ capabilities
service boringssl_self_test64 /system/bin/boringssl_self_test64
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
+ # Explicitly specify that boringssl_self_test64 doesn't require any capabilities
+ capabilities
service boringssl_self_test_apex32 /apex/com.android.conscrypt/bin/boringssl_self_test32
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
+ # Explicitly specify that boringssl_self_test_apex32 doesn't require any capabilities
+ capabilities
service boringssl_self_test_apex64 /apex/com.android.conscrypt/bin/boringssl_self_test64
reboot_on_failure reboot,boringssl-self-check-failed
stdio_to_kmsg
+ # Explicitly specify that boringssl_self_test_apex64 doesn't require any capabilities
+ capabilities
# Healthd can trigger a full boot from charger mode by signaling this
@@ -535,10 +544,6 @@
# /data, which in turn can only be loaded when system properties are present.
trigger post-fs-data
- # APEXes are ready to use. apex-ready is a public trigger similar to apexd.status=ready which
- # is a system-private property.
- trigger apex-ready
-
# Should be before netd, but after apex, properties and logging is available.
trigger load_bpf_programs
@@ -842,7 +847,7 @@
# Delete any stale files owned by the old virtualizationservice uid (b/230056726).
chmod 0770 /data/misc/virtualizationservice
exec - virtualizationservice system -- /bin/rm -rf /data/misc/virtualizationservice
- mkdir /data/misc/virtualizationservice 0770 system system
+ mkdir /data/misc/virtualizationservice 0771 system system
# /data/preloads uses encryption=None because it only contains preloaded
# files that are public information, similar to the system image.
@@ -940,22 +945,29 @@
restorecon /data/media
exec - media_rw media_rw -- /system/bin/chattr +F /data/media
- # A tmpfs directory, which will contain all apps CE DE data directory that
- # bind mount from the original source.
+ # A tmpfs directory, which will contain all apps and sdk sandbox CE and DE
+ # data directory that bind mount from the original source.
mount tmpfs tmpfs /data_mirror nodev noexec nosuid mode=0700,uid=0,gid=1000
restorecon /data_mirror
mkdir /data_mirror/data_ce 0700 root root
mkdir /data_mirror/data_de 0700 root root
+ mkdir /data_mirror/misc_ce 0700 root root
+ mkdir /data_mirror/misc_de 0700 root root
# Create CE and DE data directory for default volume
mkdir /data_mirror/data_ce/null 0700 root root
mkdir /data_mirror/data_de/null 0700 root root
+ mkdir /data_mirror/misc_ce/null 0700 root root
+ mkdir /data_mirror/misc_de/null 0700 root root
# Bind mount CE and DE data directory to mirror's default volume directory.
- # The 'slave' option (MS_SLAVE) is needed to cause the later bind mount of
- # /data/data onto /data/user/0 to propagate to /data_mirror/data_ce/null/0.
- mount none /data/user /data_mirror/data_ce/null bind rec slave
+ # Note that because the /data mount has the "shared" propagation type, the
+ # later bind mount of /data/data onto /data/user/0 will automatically
+ # propagate to /data_mirror/data_ce/null/0 as well.
+ mount none /data/user /data_mirror/data_ce/null bind rec
mount none /data/user_de /data_mirror/data_de/null bind rec
+ mount none /data/misc_ce /data_mirror/misc_ce/null bind rec
+ mount none /data/misc_de /data_mirror/misc_de/null bind rec
# Create mirror directory for jit profiles
mkdir /data_mirror/cur_profiles 0700 root root
@@ -1037,6 +1049,9 @@
# Enable FUSE by default
setprop persist.sys.fuse true
+ # Update dm-verity state and set partition.*.verified properties.
+ verity_update_state
+
# It is recommended to put unnecessary data/ initialization from post-fs-data
# to start-zygote in device's init.rc to unblock zygote start.
on zygote-start && property:ro.crypto.state=unencrypted
@@ -1108,6 +1123,7 @@
# are not aware of using fsync()/sync() to prepare sudden power-cut.
write /dev/sys/fs/by-name/userdata/cp_interval 200
write /dev/sys/fs/by-name/userdata/gc_urgent_sleep_time 50
+ write /dev/sys/fs/by-name/userdata/iostat_period_ms 1000
write /dev/sys/fs/by-name/userdata/iostat_enable 1
# set readahead multiplier for POSIX_FADV_SEQUENTIAL files
@@ -1175,9 +1191,6 @@
# Define default initial receive window size in segments.
setprop net.tcp_def_init_rwnd 60
- # Update dm-verity state and set partition.*.verified properties.
- verity_update_state
-
# Start standard binderized HAL daemons
class_start hal
@@ -1222,7 +1235,7 @@
# controlling access. On older kernels, the paranoid value is the only means of
# controlling access. It is normally 3 (allow only root), but the shell user
# can lower it to 1 (allowing thread-scoped pofiling) via security.perf_harden.
-on property:sys.init.perf_lsm_hooks=1
+on load_bpf_programs && property:sys.init.perf_lsm_hooks=1
write /proc/sys/kernel/perf_event_paranoid -1
on property:security.perf_harden=0 && property:sys.init.perf_lsm_hooks=""
write /proc/sys/kernel/perf_event_paranoid 1
@@ -1314,7 +1327,6 @@
on userspace-reboot-resume
trigger userspace-reboot-fs-remount
trigger post-fs-data
- trigger apex-ready
trigger zygote-start
trigger early-boot
trigger boot
diff --git a/rootdir/init.zygote32.rc b/rootdir/init.zygote32.rc
index 63b09c0..2f0ec8a 100644
--- a/rootdir/init.zygote32.rc
+++ b/rootdir/init.zygote32.rc
@@ -7,6 +7,9 @@
socket usap_pool_primary stream 660 root system
onrestart exec_background - system system -- /system/bin/vdc volume abort_fuse
onrestart write /sys/power/state on
+ # NOTE: If the wakelock name here is changed, then also
+ # update it in SystemSuspend.cpp
+ onrestart write /sys/power/wake_lock zygote_kwl
onrestart restart audioserver
onrestart restart cameraserver
onrestart restart media
diff --git a/rootdir/init.zygote64.rc b/rootdir/init.zygote64.rc
index b6ca5c0..74a64c8 100644
--- a/rootdir/init.zygote64.rc
+++ b/rootdir/init.zygote64.rc
@@ -7,6 +7,9 @@
socket usap_pool_primary stream 660 root system
onrestart exec_background - system system -- /system/bin/vdc volume abort_fuse
onrestart write /sys/power/state on
+ # NOTE: If the wakelock name here is changed, then also
+ # update it in SystemSuspend.cpp
+ onrestart write /sys/power/wake_lock zygote_kwl
onrestart restart audioserver
onrestart restart cameraserver
onrestart restart media
diff --git a/rootdir/ueventd.rc b/rootdir/ueventd.rc
index 4ec59af..0b7ffb8 100644
--- a/rootdir/ueventd.rc
+++ b/rootdir/ueventd.rc
@@ -69,8 +69,8 @@
# CDMA radio interface MUX
/dev/ppp 0660 radio vpn
-/dev/kvm 0600 system system
-/dev/vhost-vsock 0600 system system
+/dev/kvm 0666 root root
+/dev/vhost-vsock 0666 root root
# sysfs properties
/sys/devices/platform/trusty.* trusty_version 0440 root log
diff --git a/trusty/confirmationui/Android.bp b/trusty/confirmationui/Android.bp
index 0922415..c5c5012 100644
--- a/trusty/confirmationui/Android.bp
+++ b/trusty/confirmationui/Android.bp
@@ -24,21 +24,23 @@
}
cc_binary {
- name: "android.hardware.confirmationui@1.0-service.trusty",
+ name: "android.hardware.confirmationui-service.trusty",
relative_install_path: "hw",
vendor: true,
shared_libs: [
- "android.hardware.confirmationui@1.0",
+ "android.hardware.confirmationui-V1-ndk",
"android.hardware.confirmationui.not-so-secure-input",
- "android.hardware.confirmationui@1.0-lib.trusty",
+ "android.hardware.confirmationui-lib.trusty",
+ "libbinder_ndk",
+ "libteeui_hal_support",
"libbase",
"libhidlbase",
"libutils",
],
- init_rc: ["android.hardware.confirmationui@1.0-service.trusty.rc"],
+ init_rc: ["android.hardware.confirmationui-service.trusty.rc"],
- vintf_fragments: ["android.hardware.confirmationui@1.0-service.trusty.xml"],
+ vintf_fragments: ["android.hardware.confirmationui-service.trusty.xml"],
srcs: [
"service.cpp",
@@ -51,18 +53,39 @@
],
}
-cc_library {
- name: "android.hardware.confirmationui@1.0-lib.trusty",
+cc_fuzz {
+ name: "android.hardware.confirmationui-service.trusty_fuzzer",
+ defaults: ["service_fuzzer_defaults"],
vendor: true,
shared_libs: [
- "android.hardware.confirmationui@1.0",
- "android.hardware.keymaster@4.0",
+ "android.hardware.confirmationui-V1-ndk",
+ "android.hardware.confirmationui.not-so-secure-input",
+ "android.hardware.confirmationui-lib.trusty",
+ "liblog",
+ ],
+ srcs: ["fuzzer.cpp"],
+ fuzz_config: {
+ cc: [
+ "nyamagoud@google.com",
+ ],
+ },
+}
+
+cc_library {
+ name: "android.hardware.confirmationui-lib.trusty",
+ defaults: [
+ "keymint_use_latest_hal_aidl_ndk_shared",
+ ],
+ vendor: true,
+ shared_libs: [
+ "android.hardware.confirmationui-V1-ndk",
"libbase",
+ "libcutils",
"libdmabufheap",
- "libhidlbase",
"libteeui_hal_support",
"libtrusty",
"libutils",
+ "libbinder_ndk",
],
export_include_dirs: ["include"],
diff --git a/trusty/confirmationui/TrustyConfirmationUI.cpp b/trusty/confirmationui/TrustyConfirmationUI.cpp
index c6625e0..f01a4e1 100644
--- a/trusty/confirmationui/TrustyConfirmationUI.cpp
+++ b/trusty/confirmationui/TrustyConfirmationUI.cpp
@@ -18,8 +18,6 @@
#include "TrustyConfirmationUI.h"
#include <android-base/logging.h>
-#include <android/hardware/confirmationui/1.0/types.h>
-#include <android/hardware/keymaster/4.0/types.h>
#include <fcntl.h>
#include <linux/input.h>
#include <poll.h>
@@ -42,12 +40,7 @@
#include <tuple>
#include <vector>
-namespace android {
-namespace hardware {
-namespace confirmationui {
-namespace V1_0 {
-namespace implementation {
-
+namespace aidl::android::hardware::confirmationui {
using namespace secure_input;
using ::android::trusty::confirmationui::TrustyAppError;
@@ -64,8 +57,6 @@
using ::secure_input::createSecureInput;
-using ::android::hardware::keymaster::V4_0::HardwareAuthToken;
-
using ::std::tie;
using TeeuiRc = ::teeui::ResponseCode;
@@ -87,46 +78,47 @@
void release() { f_ = {}; }
};
-ResponseCode convertRc(TeeuiRc trc) {
+int convertRc(TeeuiRc trc) {
static_assert(
- uint32_t(TeeuiRc::OK) == uint32_t(ResponseCode::OK) &&
- uint32_t(TeeuiRc::Canceled) == uint32_t(ResponseCode::Canceled) &&
- uint32_t(TeeuiRc::Aborted) == uint32_t(ResponseCode::Aborted) &&
- uint32_t(TeeuiRc::OperationPending) == uint32_t(ResponseCode::OperationPending) &&
- uint32_t(TeeuiRc::Ignored) == uint32_t(ResponseCode::Ignored) &&
- uint32_t(TeeuiRc::SystemError) == uint32_t(ResponseCode::SystemError) &&
- uint32_t(TeeuiRc::Unimplemented) == uint32_t(ResponseCode::Unimplemented) &&
- uint32_t(TeeuiRc::Unexpected) == uint32_t(ResponseCode::Unexpected) &&
- uint32_t(TeeuiRc::UIError) == uint32_t(ResponseCode::UIError) &&
- uint32_t(TeeuiRc::UIErrorMissingGlyph) == uint32_t(ResponseCode::UIErrorMissingGlyph) &&
+ uint32_t(TeeuiRc::OK) == uint32_t(IConfirmationUI::OK) &&
+ uint32_t(TeeuiRc::Canceled) == uint32_t(IConfirmationUI::CANCELED) &&
+ uint32_t(TeeuiRc::Aborted) == uint32_t(IConfirmationUI::ABORTED) &&
+ uint32_t(TeeuiRc::OperationPending) == uint32_t(IConfirmationUI::OPERATION_PENDING) &&
+ uint32_t(TeeuiRc::Ignored) == uint32_t(IConfirmationUI::IGNORED) &&
+ uint32_t(TeeuiRc::SystemError) == uint32_t(IConfirmationUI::SYSTEM_ERROR) &&
+ uint32_t(TeeuiRc::Unimplemented) == uint32_t(IConfirmationUI::UNIMPLEMENTED) &&
+ uint32_t(TeeuiRc::Unexpected) == uint32_t(IConfirmationUI::UNEXPECTED) &&
+ uint32_t(TeeuiRc::UIError) == uint32_t(IConfirmationUI::UI_ERROR) &&
+ uint32_t(TeeuiRc::UIErrorMissingGlyph) ==
+ uint32_t(IConfirmationUI::UI_ERROR_MISSING_GLYPH) &&
uint32_t(TeeuiRc::UIErrorMessageTooLong) ==
- uint32_t(ResponseCode::UIErrorMessageTooLong) &&
+ uint32_t(IConfirmationUI::UI_ERROR_MESSAGE_TOO_LONG) &&
uint32_t(TeeuiRc::UIErrorMalformedUTF8Encoding) ==
- uint32_t(ResponseCode::UIErrorMalformedUTF8Encoding),
+ uint32_t(IConfirmationUI::UI_ERROR_MALFORMED_UTF8ENCODING),
"teeui::ResponseCode and "
"::android::hardware::confirmationui::V1_0::Responsecude are out of "
"sync");
- return ResponseCode(trc);
+ return static_cast<int>(trc);
}
teeui::UIOption convertUIOption(UIOption uio) {
- static_assert(uint32_t(UIOption::AccessibilityInverted) ==
+ static_assert(uint32_t(UIOption::ACCESSIBILITY_INVERTED) ==
uint32_t(teeui::UIOption::AccessibilityInverted) &&
- uint32_t(UIOption::AccessibilityMagnified) ==
+ uint32_t(UIOption::ACCESSIBILITY_MAGNIFIED) ==
uint32_t(teeui::UIOption::AccessibilityMagnified),
"teeui::UIOPtion and ::android::hardware::confirmationui::V1_0::UIOption "
- "anre out of sync");
+ "are out of sync");
return teeui::UIOption(uio);
}
-inline MsgString hidl2MsgString(const hidl_string& s) {
+inline MsgString stdString2MsgString(const string& s) {
return {s.c_str(), s.c_str() + s.size()};
}
-template <typename T> inline MsgVector<T> hidl2MsgVector(const hidl_vec<T>& v) {
+template <typename T> inline MsgVector<T> stdVector2MsgVector(const vector<T>& v) {
return {v};
}
-inline MsgVector<teeui::UIOption> hidl2MsgVector(const hidl_vec<UIOption>& v) {
+inline MsgVector<teeui::UIOption> stdVector2MsgVector(const vector<UIOption>& v) {
MsgVector<teeui::UIOption> result(v.size());
for (unsigned int i = 0; i < v.size(); ++i) {
result[i] = convertUIOption(v[i]);
@@ -137,7 +129,7 @@
} // namespace
TrustyConfirmationUI::TrustyConfirmationUI()
- : listener_state_(ListenerState::None), prompt_result_(ResponseCode::Ignored) {}
+ : listener_state_(ListenerState::None), prompt_result_(IConfirmationUI::IGNORED) {}
TrustyConfirmationUI::~TrustyConfirmationUI() {
ListenerState state = listener_state_;
@@ -385,15 +377,16 @@
// ############################## Start 4th Phase - cleanup ##################################
}
-// Methods from ::android::hardware::confirmationui::V1_0::IConfirmationUI
+// Methods from ::aidl::android::hardware::confirmationui::IConfirmationUI
// follow.
-Return<ResponseCode> TrustyConfirmationUI::promptUserConfirmation(
- const sp<IConfirmationResultCallback>& resultCB, const hidl_string& promptText,
- const hidl_vec<uint8_t>& extraData, const hidl_string& locale,
- const hidl_vec<UIOption>& uiOptions) {
+::ndk::ScopedAStatus TrustyConfirmationUI::promptUserConfirmation(
+ const shared_ptr<IConfirmationResultCallback>& resultCB, const vector<uint8_t>& promptTextBytes,
+ const vector<uint8_t>& extraData, const string& locale, const vector<UIOption>& uiOptions) {
std::unique_lock<std::mutex> stateLock(listener_state_lock_, std::defer_lock);
+ string promptText(promptTextBytes.begin(), promptTextBytes.end());
if (!stateLock.try_lock()) {
- return ResponseCode::OperationPending;
+ return ndk::ScopedAStatus(
+ AStatus_fromServiceSpecificError(IConfirmationUI::OPERATION_PENDING));
}
switch (listener_state_) {
case ListenerState::None:
@@ -401,23 +394,25 @@
case ListenerState::Starting:
case ListenerState::SetupDone:
case ListenerState::Interactive:
- return ResponseCode::OperationPending;
+ return ndk::ScopedAStatus(
+ AStatus_fromServiceSpecificError(IConfirmationUI::OPERATION_PENDING));
case ListenerState::Terminating:
callback_thread_.join();
listener_state_ = ListenerState::None;
break;
default:
- return ResponseCode::Unexpected;
+ return ndk::ScopedAStatus(AStatus_fromServiceSpecificError(IConfirmationUI::UNEXPECTED));
}
assert(listener_state_ == ListenerState::None);
callback_thread_ = std::thread(
- [this](sp<IConfirmationResultCallback> resultCB, hidl_string promptText,
- hidl_vec<uint8_t> extraData, hidl_string locale, hidl_vec<UIOption> uiOptions) {
- auto [trc, msg, token] =
- promptUserConfirmation_(hidl2MsgString(promptText), hidl2MsgVector(extraData),
- hidl2MsgString(locale), hidl2MsgVector(uiOptions));
+ [this](const shared_ptr<IConfirmationResultCallback>& resultCB, const string& promptText,
+ const vector<uint8_t>& extraData, const string& locale,
+ const vector<UIOption>& uiOptions) {
+ auto [trc, msg, token] = promptUserConfirmation_(
+ stdString2MsgString(promptText), stdVector2MsgVector(extraData),
+ stdString2MsgString(locale), stdVector2MsgVector(uiOptions));
bool do_callback = (listener_state_ == ListenerState::Interactive ||
listener_state_ == ListenerState::SetupDone) &&
resultCB;
@@ -426,7 +421,7 @@
if (do_callback) {
auto error = resultCB->result(prompt_result_, msg, token);
if (!error.isOk()) {
- LOG(ERROR) << "Result callback failed " << error.description();
+ LOG(ERROR) << "Result callback failed " << error.getDescription();
}
} else {
listener_state_condv_.notify_all();
@@ -442,14 +437,14 @@
if (listener_state_ == ListenerState::Terminating) {
callback_thread_.join();
listener_state_ = ListenerState::None;
- return prompt_result_;
+ return ndk::ScopedAStatus(AStatus_fromServiceSpecificError(prompt_result_));
}
- return ResponseCode::OK;
+ return ndk::ScopedAStatus::ok();
}
-Return<ResponseCode>
+::ndk::ScopedAStatus
TrustyConfirmationUI::deliverSecureInputEvent(const HardwareAuthToken& secureInputToken) {
- ResponseCode rc = ResponseCode::Ignored;
+ int rc = IConfirmationUI::IGNORED;
{
/*
* deliverSecureInputEvent is only used by the VTS test to mock human input. A correct
@@ -467,13 +462,17 @@
listener_state_condv_.wait(stateLock,
[this] { return listener_state_ != ListenerState::SetupDone; });
- if (listener_state_ != ListenerState::Interactive) return ResponseCode::Ignored;
+ if (listener_state_ != ListenerState::Interactive)
+ return ndk::ScopedAStatus(AStatus_fromServiceSpecificError(IConfirmationUI::IGNORED));
auto sapp = app_.lock();
- if (!sapp) return ResponseCode::Ignored;
+ if (!sapp)
+ return ndk::ScopedAStatus(AStatus_fromServiceSpecificError(IConfirmationUI::IGNORED));
auto [error, response] =
sapp->issueCmd<DeliverTestCommandMessage, DeliverTestCommandResponse>(
static_cast<teeui::TestModeCommands>(secureInputToken.challenge));
- if (error != TrustyAppError::OK) return ResponseCode::SystemError;
+ if (error != TrustyAppError::OK)
+ return ndk::ScopedAStatus(
+ AStatus_fromServiceSpecificError(IConfirmationUI::SYSTEM_ERROR));
auto& [trc] = response;
if (trc != TeeuiRc::Ignored) secureInputDelivered_ = true;
rc = convertRc(trc);
@@ -484,11 +483,14 @@
// Canceled into OK. Canceled is only returned if the delivered event canceled
// the operation, which means that the event was successfully delivered. Thus
// we return OK.
- if (rc == ResponseCode::Canceled) return ResponseCode::OK;
- return rc;
+ if (rc == IConfirmationUI::CANCELED) return ndk::ScopedAStatus::ok();
+ if (rc != IConfirmationUI::OK) {
+ return ndk::ScopedAStatus(AStatus_fromServiceSpecificError(rc));
+ }
+ return ndk::ScopedAStatus::ok();
}
-Return<void> TrustyConfirmationUI::abort() {
+::ndk::ScopedAStatus TrustyConfirmationUI::abort() {
{
std::unique_lock<std::mutex> stateLock(listener_state_lock_);
if (listener_state_ == ListenerState::SetupDone ||
@@ -499,15 +501,11 @@
}
}
listener_state_condv_.notify_all();
- return Void();
+ return ndk::ScopedAStatus::ok();
}
-android::sp<IConfirmationUI> createTrustyConfirmationUI() {
- return new TrustyConfirmationUI();
+std::shared_ptr<IConfirmationUI> createTrustyConfirmationUI() {
+ return ndk::SharedRefBase::make<TrustyConfirmationUI>();
}
-} // namespace implementation
-} // namespace V1_0
-} // namespace confirmationui
-} // namespace hardware
-} // namespace android
+} // namespace aidl::android::hardware::confirmationui
diff --git a/trusty/confirmationui/TrustyConfirmationUI.h b/trusty/confirmationui/TrustyConfirmationUI.h
index 0bd703c..6e85704 100644
--- a/trusty/confirmationui/TrustyConfirmationUI.h
+++ b/trusty/confirmationui/TrustyConfirmationUI.h
@@ -17,9 +17,11 @@
#ifndef ANDROID_HARDWARE_CONFIRMATIONUI_V1_0_TRUSTY_CONFIRMATIONUI_H
#define ANDROID_HARDWARE_CONFIRMATIONUI_V1_0_TRUSTY_CONFIRMATIONUI_H
-#include <android/hardware/confirmationui/1.0/IConfirmationUI.h>
-#include <android/hardware/keymaster/4.0/types.h>
-#include <hidl/Status.h>
+#include <aidl/android/hardware/confirmationui/BnConfirmationUI.h>
+#include <aidl/android/hardware/confirmationui/IConfirmationResultCallback.h>
+#include <aidl/android/hardware/confirmationui/UIOption.h>
+#include <aidl/android/hardware/security/keymint/HardwareAuthToken.h>
+#include <android/binder_manager.h>
#include <atomic>
#include <condition_variable>
@@ -30,35 +32,29 @@
#include "TrustyApp.h"
-namespace android {
-namespace hardware {
-namespace confirmationui {
-namespace V1_0 {
-namespace implementation {
+namespace aidl::android::hardware::confirmationui {
-using ::android::sp;
-using ::android::hardware::hidl_array;
-using ::android::hardware::hidl_string;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
+using std::shared_ptr;
+using std::string;
+using std::vector;
+using ::aidl::android::hardware::security::keymint::HardwareAuthToken;
using ::android::trusty::confirmationui::TrustyApp;
-class TrustyConfirmationUI : public IConfirmationUI {
+class TrustyConfirmationUI : public BnConfirmationUI {
public:
TrustyConfirmationUI();
virtual ~TrustyConfirmationUI();
- // Methods from ::android::hardware::confirmationui::V1_0::IConfirmationUI
+ // Methods from ::aidl::android::hardware::confirmationui::IConfirmationUI
// follow.
- Return<ResponseCode> promptUserConfirmation(const sp<IConfirmationResultCallback>& resultCB,
- const hidl_string& promptText,
- const hidl_vec<uint8_t>& extraData,
- const hidl_string& locale,
- const hidl_vec<UIOption>& uiOptions) override;
- Return<ResponseCode> deliverSecureInputEvent(
- const ::android::hardware::keymaster::V4_0::HardwareAuthToken& secureInputToken) override;
- Return<void> abort() override;
+ ::ndk::ScopedAStatus
+ promptUserConfirmation(const shared_ptr<IConfirmationResultCallback>& resultCB,
+ const vector<uint8_t>& promptText, const vector<uint8_t>& extraData,
+ const string& locale, const vector<UIOption>& uiOptions) override;
+ ::ndk::ScopedAStatus
+ deliverSecureInputEvent(const HardwareAuthToken& secureInputToken) override;
+
+ ::ndk::ScopedAStatus abort() override;
private:
std::weak_ptr<TrustyApp> app_;
@@ -85,7 +81,7 @@
bool abort_called_;
std::mutex listener_state_lock_;
std::condition_variable listener_state_condv_;
- ResponseCode prompt_result_;
+ int prompt_result_;
bool secureInputDelivered_;
std::tuple<teeui::ResponseCode, teeui::MsgVector<uint8_t>, teeui::MsgVector<uint8_t>>
@@ -95,10 +91,6 @@
const teeui::MsgVector<teeui::UIOption>& uiOptions);
};
-} // namespace implementation
-} // namespace V1_0
-} // namespace confirmationui
-} // namespace hardware
-} // namespace android
+} // namespace aidl::android::hardware::confirmationui
#endif // ANDROID_HARDWARE_CONFIRMATIONUI_V1_0_TRUSTY_CONFIRMATIONUI_H
diff --git a/trusty/confirmationui/android.hardware.confirmationui-service.trusty.rc b/trusty/confirmationui/android.hardware.confirmationui-service.trusty.rc
new file mode 100644
index 0000000..b5c3159
--- /dev/null
+++ b/trusty/confirmationui/android.hardware.confirmationui-service.trusty.rc
@@ -0,0 +1,5 @@
+service vendor.confirmationui_default /vendor/bin/hw/android.hardware.confirmationui-service.trusty
+ interface aidl android.hardware.confirmationui.IConfirmationUI/default
+ class hal
+ user system
+ group drmrpc input system
diff --git a/trusty/confirmationui/android.hardware.confirmationui@1.0-service.trusty.xml b/trusty/confirmationui/android.hardware.confirmationui-service.trusty.xml
similarity index 71%
rename from trusty/confirmationui/android.hardware.confirmationui@1.0-service.trusty.xml
rename to trusty/confirmationui/android.hardware.confirmationui-service.trusty.xml
index 9008b87..afa2e8e 100644
--- a/trusty/confirmationui/android.hardware.confirmationui@1.0-service.trusty.xml
+++ b/trusty/confirmationui/android.hardware.confirmationui-service.trusty.xml
@@ -1,8 +1,7 @@
<manifest version="1.0" type="device">
- <hal format="hidl">
+ <hal format="aidl">
<name>android.hardware.confirmationui</name>
- <transport>hwbinder</transport>
- <version>1.0</version>
+ <version>1</version>
<interface>
<name>IConfirmationUI</name>
<instance>default</instance>
diff --git a/trusty/confirmationui/android.hardware.confirmationui@1.0-service.trusty.rc b/trusty/confirmationui/android.hardware.confirmationui@1.0-service.trusty.rc
deleted file mode 100644
index 3ba6fc0..0000000
--- a/trusty/confirmationui/android.hardware.confirmationui@1.0-service.trusty.rc
+++ /dev/null
@@ -1,4 +0,0 @@
-service confirmationui-1-0 /vendor/bin/hw/android.hardware.confirmationui@1.0-service.trusty
- class hal
- user system
- group drmrpc input system
diff --git a/trusty/confirmationui/fuzzer.cpp b/trusty/confirmationui/fuzzer.cpp
new file mode 100644
index 0000000..4446b79
--- /dev/null
+++ b/trusty/confirmationui/fuzzer.cpp
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <TrustyConfirmationuiHal.h>
+#include <android-base/logging.h>
+#include <fuzzbinder/libbinder_ndk_driver.h>
+#include <fuzzer/FuzzedDataProvider.h>
+
+using aidl::android::hardware::confirmationui::createTrustyConfirmationUI;
+using aidl::android::hardware::confirmationui::IConfirmationUI;
+using android::fuzzService;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+ auto confirmationui = createTrustyConfirmationUI();
+
+ fuzzService(confirmationui->asBinder().get(), FuzzedDataProvider(data, size));
+
+ return 0;
+}
diff --git a/trusty/confirmationui/include/TrustyConfirmationuiHal.h b/trusty/confirmationui/include/TrustyConfirmationuiHal.h
index 2ab9389..8000ee2 100644
--- a/trusty/confirmationui/include/TrustyConfirmationuiHal.h
+++ b/trusty/confirmationui/include/TrustyConfirmationuiHal.h
@@ -16,18 +16,10 @@
#pragma once
-#include <android/hardware/confirmationui/1.0/IConfirmationUI.h>
+#include <aidl/android/hardware/confirmationui/IConfirmationUI.h>
-namespace android {
-namespace hardware {
-namespace confirmationui {
-namespace V1_0 {
-namespace implementation {
+namespace aidl::android::hardware::confirmationui {
-android::sp<IConfirmationUI> createTrustyConfirmationUI();
+std::shared_ptr<IConfirmationUI> createTrustyConfirmationUI();
-} // namespace implementation
-} // namespace V1_0
-} // namespace confirmationui
-} // namespace hardware
-} // namespace android
+} // namespace aidl::android::hardware::confirmationui
diff --git a/trusty/confirmationui/service.cpp b/trusty/confirmationui/service.cpp
index dd7e84b..44fa3a6 100644
--- a/trusty/confirmationui/service.cpp
+++ b/trusty/confirmationui/service.cpp
@@ -15,21 +15,24 @@
*/
#include <android-base/logging.h>
-#include <hidl/HidlTransportSupport.h>
+#include <android/binder_manager.h>
+#include <android/binder_process.h>
#include <TrustyConfirmationuiHal.h>
-using android::sp;
-using android::hardware::confirmationui::V1_0::implementation::createTrustyConfirmationUI;
+using ::aidl::android::hardware::confirmationui::createTrustyConfirmationUI;
+using ::aidl::android::hardware::confirmationui::IConfirmationUI;
int main() {
- ::android::hardware::configureRpcThreadpool(1, true /*willJoinThreadpool*/);
- auto service = createTrustyConfirmationUI();
- auto status = service->registerAsService();
- if (status != android::OK) {
- LOG(FATAL) << "Could not register service for ConfirmationUI 1.0 (" << status << ")";
- return -1;
- }
- ::android::hardware::joinRpcThreadpool();
- return -1;
+ ABinderProcess_setThreadPoolMaxThreadCount(0);
+
+ auto confirmationui = createTrustyConfirmationUI();
+
+ const auto instance = std::string(IConfirmationUI::descriptor) + "/default";
+ binder_status_t status =
+ AServiceManager_addService(confirmationui->asBinder().get(), instance.c_str());
+ CHECK_EQ(status, STATUS_OK) << "Could not register " << instance;
+
+ ABinderProcess_joinThreadPool();
+ return EXIT_FAILURE;
}
diff --git a/trusty/gatekeeper/TEST_MAPPING b/trusty/gatekeeper/TEST_MAPPING
new file mode 100644
index 0000000..da6c769
--- /dev/null
+++ b/trusty/gatekeeper/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "presubmit": [
+ {
+ "name": "VtsHalGatekeeperTargetTest"
+ }
+ ]
+}
diff --git a/trusty/keymaster/Android.bp b/trusty/keymaster/Android.bp
index adc9fdf..31f0a72 100644
--- a/trusty/keymaster/Android.bp
+++ b/trusty/keymaster/Android.bp
@@ -109,6 +109,7 @@
"keymint_use_latest_hal_aidl_ndk_shared",
],
shared_libs: [
+ "android.hardware.security.rkp-V3-ndk",
"android.hardware.security.secureclock-V1-ndk",
"android.hardware.security.sharedsecret-V1-ndk",
"lib_android_keymaster_keymint_utils",
diff --git a/trusty/keymaster/TEST_MAPPING b/trusty/keymaster/TEST_MAPPING
new file mode 100644
index 0000000..ae48327
--- /dev/null
+++ b/trusty/keymaster/TEST_MAPPING
@@ -0,0 +1,13 @@
+{
+ "presubmit": [
+ {
+ "name": "RemoteProvisionerUnitTests"
+ },
+ {
+ "name": "VtsAidlKeyMintTargetTest"
+ },
+ {
+ "name": "VtsHalRemotelyProvisionedComponentTargetTest"
+ }
+ ]
+}
diff --git a/trusty/keymaster/TrustyKeymaster.cpp b/trusty/keymaster/TrustyKeymaster.cpp
index e77940a..ac98695 100644
--- a/trusty/keymaster/TrustyKeymaster.cpp
+++ b/trusty/keymaster/TrustyKeymaster.cpp
@@ -178,6 +178,11 @@
ForwardCommand(KM_GENERATE_CSR, request, response);
}
+void TrustyKeymaster::GenerateCsrV2(const GenerateCsrV2Request& request,
+ GenerateCsrV2Response* response) {
+ ForwardCommand(KM_GENERATE_CSR_V2, request, response);
+}
+
void TrustyKeymaster::GetKeyCharacteristics(const GetKeyCharacteristicsRequest& request,
GetKeyCharacteristicsResponse* response) {
ForwardCommand(KM_GET_KEY_CHARACTERISTICS, request, response);
@@ -285,4 +290,10 @@
return response;
}
+GetHwInfoResponse TrustyKeymaster::GetHwInfo() {
+ GetHwInfoResponse response(message_version());
+ ForwardCommand(KM_GET_HW_INFO, GetHwInfoRequest(message_version()), &response);
+ return response;
+}
+
} // namespace keymaster
diff --git a/trusty/keymaster/include/trusty_keymaster/TrustyKeymaster.h b/trusty/keymaster/include/trusty_keymaster/TrustyKeymaster.h
index 9f4f39b..60d3f87 100644
--- a/trusty/keymaster/include/trusty_keymaster/TrustyKeymaster.h
+++ b/trusty/keymaster/include/trusty_keymaster/TrustyKeymaster.h
@@ -44,6 +44,7 @@
void GenerateKey(const GenerateKeyRequest& request, GenerateKeyResponse* response);
void GenerateRkpKey(const GenerateRkpKeyRequest& request, GenerateRkpKeyResponse* response);
void GenerateCsr(const GenerateCsrRequest& request, GenerateCsrResponse* response);
+ void GenerateCsrV2(const GenerateCsrV2Request& request, GenerateCsrV2Response* response);
void GetKeyCharacteristics(const GetKeyCharacteristicsRequest& request,
GetKeyCharacteristicsResponse* response);
void ImportKey(const ImportKeyRequest& request, ImportKeyResponse* response);
@@ -67,6 +68,7 @@
ConfigureVendorPatchlevelResponse ConfigureVendorPatchlevel(
const ConfigureVendorPatchlevelRequest& request);
GetRootOfTrustResponse GetRootOfTrust(const GetRootOfTrustRequest& request);
+ GetHwInfoResponse GetHwInfo();
uint32_t message_version() const { return message_version_; }
diff --git a/trusty/keymaster/include/trusty_keymaster/TrustyRemotelyProvisionedComponentDevice.h b/trusty/keymaster/include/trusty_keymaster/TrustyRemotelyProvisionedComponentDevice.h
index d544b51..dbb7fff 100644
--- a/trusty/keymaster/include/trusty_keymaster/TrustyRemotelyProvisionedComponentDevice.h
+++ b/trusty/keymaster/include/trusty_keymaster/TrustyRemotelyProvisionedComponentDevice.h
@@ -46,6 +46,10 @@
DeviceInfo* deviceInfo, ProtectedData* protectedData,
std::vector<uint8_t>* keysToSignMac) override;
+ ScopedAStatus generateCertificateRequestV2(const std::vector<MacedPublicKey>& keysToSign,
+ const std::vector<uint8_t>& challenge,
+ std::vector<uint8_t>* csr) override;
+
private:
std::shared_ptr<::keymaster::TrustyKeymaster> impl_;
};
diff --git a/trusty/keymaster/include/trusty_keymaster/ipc/keymaster_ipc.h b/trusty/keymaster/include/trusty_keymaster/ipc/keymaster_ipc.h
index bf0cb70..f767d40 100644
--- a/trusty/keymaster/include/trusty_keymaster/ipc/keymaster_ipc.h
+++ b/trusty/keymaster/include/trusty_keymaster/ipc/keymaster_ipc.h
@@ -60,6 +60,8 @@
KM_GENERATE_CSR = (32 << KEYMASTER_REQ_SHIFT),
KM_CONFIGURE_VENDOR_PATCHLEVEL = (33 << KEYMASTER_REQ_SHIFT),
KM_GET_ROOT_OF_TRUST = (34 << KEYMASTER_REQ_SHIFT),
+ KM_GET_HW_INFO = (35 << KEYMASTER_REQ_SHIFT),
+ KM_GENERATE_CSR_V2 = (36 << KEYMASTER_REQ_SHIFT),
// Bootloader/provisioning calls.
KM_SET_BOOT_PARAMS = (0x1000 << KEYMASTER_REQ_SHIFT),
diff --git a/trusty/keymaster/keymint/TrustyKeyMintDevice.cpp b/trusty/keymaster/keymint/TrustyKeyMintDevice.cpp
index 7d58162..b696ff9 100644
--- a/trusty/keymaster/keymint/TrustyKeyMintDevice.cpp
+++ b/trusty/keymaster/keymint/TrustyKeyMintDevice.cpp
@@ -91,7 +91,7 @@
} // namespace
ScopedAStatus TrustyKeyMintDevice::getHardwareInfo(KeyMintHardwareInfo* info) {
- info->versionNumber = 2;
+ info->versionNumber = 3;
info->securityLevel = kSecurityLevel;
info->keyMintName = "TrustyKeyMintDevice";
info->keyMintAuthorName = "Google";
diff --git a/trusty/keymaster/keymint/TrustyRemotelyProvisionedComponentDevice.cpp b/trusty/keymaster/keymint/TrustyRemotelyProvisionedComponentDevice.cpp
index 099f189..710be3e 100644
--- a/trusty/keymaster/keymint/TrustyRemotelyProvisionedComponentDevice.cpp
+++ b/trusty/keymaster/keymint/TrustyRemotelyProvisionedComponentDevice.cpp
@@ -28,9 +28,14 @@
using keymaster::GenerateCsrRequest;
using keymaster::GenerateCsrResponse;
+using keymaster::GenerateCsrV2Request;
+using keymaster::GenerateCsrV2Response;
using keymaster::GenerateRkpKeyRequest;
using keymaster::GenerateRkpKeyResponse;
+using keymaster::GetHwInfoRequest;
+using keymaster::GetHwInfoResponse;
using keymaster::KeymasterBlob;
+using km_utils::kmError2ScopedAStatus;
using ::std::string;
using ::std::unique_ptr;
using ::std::vector;
@@ -71,10 +76,16 @@
} // namespace
ScopedAStatus TrustyRemotelyProvisionedComponentDevice::getHardwareInfo(RpcHardwareInfo* info) {
- info->versionNumber = 2;
- info->rpcAuthorName = "Google";
- info->supportedEekCurve = RpcHardwareInfo::CURVE_25519;
- info->uniqueId = "Trusty: My password is ******";
+ GetHwInfoResponse response = impl_->GetHwInfo();
+ if (response.error != KM_ERROR_OK) {
+ return Status(-static_cast<int32_t>(response.error), "Failed to get hardware info.");
+ }
+
+ info->versionNumber = response.version;
+ info->rpcAuthorName = std::move(response.rpcAuthorName);
+ info->supportedEekCurve = response.supportedEekCurve;
+ info->uniqueId = std::move(response.uniqueId);
+ info->supportedNumKeysInCsr = response.supportedNumKeysInCsr;
return ScopedAStatus::ok();
}
@@ -118,4 +129,25 @@
return ScopedAStatus::ok();
}
+ScopedAStatus TrustyRemotelyProvisionedComponentDevice::generateCertificateRequestV2(
+ const std::vector<MacedPublicKey>& keysToSign, const std::vector<uint8_t>& challenge,
+ std::vector<uint8_t>* csr) {
+ GenerateCsrV2Request request(impl_->message_version());
+ if (!request.InitKeysToSign(keysToSign.size())) {
+ return kmError2ScopedAStatus(static_cast<keymaster_error_t>(STATUS_FAILED));
+ }
+ for (size_t i = 0; i < keysToSign.size(); i++) {
+ request.SetKeyToSign(i, keysToSign[i].macedKey.data(), keysToSign[i].macedKey.size());
+ }
+ request.SetChallenge(challenge.data(), challenge.size());
+ GenerateCsrV2Response response(impl_->message_version());
+ impl_->GenerateCsrV2(request, &response);
+
+ if (response.error != KM_ERROR_OK) {
+ return Status(-static_cast<int32_t>(response.error), "Failure in CSR v2 generation.");
+ }
+ *csr = km_utils::kmBlob2vector(response.csr);
+ return ScopedAStatus::ok();
+}
+
} // namespace aidl::android::hardware::security::keymint::trusty
diff --git a/trusty/keymaster/keymint/android.hardware.security.keymint-service.trusty.xml b/trusty/keymaster/keymint/android.hardware.security.keymint-service.trusty.xml
index 0b995a2..3dc9c88 100644
--- a/trusty/keymaster/keymint/android.hardware.security.keymint-service.trusty.xml
+++ b/trusty/keymaster/keymint/android.hardware.security.keymint-service.trusty.xml
@@ -1,7 +1,7 @@
<manifest version="1.0" type="device">
<hal format="aidl">
<name>android.hardware.security.keymint</name>
- <version>2</version>
+ <version>3</version>
<fqname>IKeyMintDevice/default</fqname>
</hal>
<hal format="aidl">
@@ -14,7 +14,7 @@
</hal>
<hal format="aidl">
<name>android.hardware.security.keymint</name>
- <version>2</version>
+ <version>3</version>
<fqname>IRemotelyProvisionedComponent/default</fqname>
</hal>
</manifest>
diff --git a/trusty/keymaster/keymint/service.cpp b/trusty/keymaster/keymint/service.cpp
index 3447b27..14549d2 100644
--- a/trusty/keymaster/keymint/service.cpp
+++ b/trusty/keymaster/keymint/service.cpp
@@ -41,7 +41,7 @@
int main() {
auto trustyKeymaster = std::make_shared<keymaster::TrustyKeymaster>();
- int err = trustyKeymaster->Initialize(keymaster::KmVersion::KEYMINT_2);
+ int err = trustyKeymaster->Initialize(keymaster::KmVersion::KEYMINT_3);
if (err != 0) {
LOG(FATAL) << "Could not initialize TrustyKeymaster for KeyMint (" << err << ")";
return -1;
diff --git a/trusty/keymint/Android.bp b/trusty/keymint/Android.bp
new file mode 100644
index 0000000..c19ebbd
--- /dev/null
+++ b/trusty/keymint/Android.bp
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2022 The Android Open-Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+rust_binary {
+ name: "android.hardware.security.keymint-service.rust.trusty",
+ relative_install_path: "hw",
+ vendor: true,
+ init_rc: ["android.hardware.security.keymint-service.rust.trusty.rc"],
+ vintf_fragments: ["android.hardware.security.keymint-service.rust.trusty.xml"],
+ srcs: [
+ "src/keymint_hal_main.rs"
+ ],
+ rustlibs: [
+ "libandroid_logger",
+ "libbinder_rs",
+ "libkmr_wire",
+ "libkmr_hal",
+ "libtrusty-rs",
+ "liblibc",
+ "liblog_rust",
+ ],
+ required: [
+ "android.hardware.hardware_keystore.xml",
+ ],
+}
diff --git a/trusty/keymint/android.hardware.hardware_keystore.rust.trusty-keymint.xml b/trusty/keymint/android.hardware.hardware_keystore.rust.trusty-keymint.xml
new file mode 100644
index 0000000..cd656b2
--- /dev/null
+++ b/trusty/keymint/android.hardware.hardware_keystore.rust.trusty-keymint.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2021 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<permissions>
+ <feature name="android.hardware.hardware_keystore" version="300" />
+</permissions>
diff --git a/trusty/keymint/android.hardware.security.keymint-service.rust.trusty.rc b/trusty/keymint/android.hardware.security.keymint-service.rust.trusty.rc
new file mode 100644
index 0000000..e3d94c6
--- /dev/null
+++ b/trusty/keymint/android.hardware.security.keymint-service.rust.trusty.rc
@@ -0,0 +1,7 @@
+service vendor.keymint.rust-trusty /vendor/bin/hw/android.hardware.security.keymint-service.rust.trusty
+ class early_hal
+ user nobody
+ group drmrpc
+ # The keymint service is not allowed to restart.
+ # If it crashes, a device restart is required.
+ oneshot
\ No newline at end of file
diff --git a/trusty/keymint/android.hardware.security.keymint-service.rust.trusty.xml b/trusty/keymint/android.hardware.security.keymint-service.rust.trusty.xml
new file mode 100644
index 0000000..3dc9c88
--- /dev/null
+++ b/trusty/keymint/android.hardware.security.keymint-service.rust.trusty.xml
@@ -0,0 +1,20 @@
+<manifest version="1.0" type="device">
+ <hal format="aidl">
+ <name>android.hardware.security.keymint</name>
+ <version>3</version>
+ <fqname>IKeyMintDevice/default</fqname>
+ </hal>
+ <hal format="aidl">
+ <name>android.hardware.security.secureclock</name>
+ <fqname>ISecureClock/default</fqname>
+ </hal>
+ <hal format="aidl">
+ <name>android.hardware.security.sharedsecret</name>
+ <fqname>ISharedSecret/default</fqname>
+ </hal>
+ <hal format="aidl">
+ <name>android.hardware.security.keymint</name>
+ <version>3</version>
+ <fqname>IRemotelyProvisionedComponent/default</fqname>
+ </hal>
+</manifest>
diff --git a/trusty/keymint/src/keymint_hal_main.rs b/trusty/keymint/src/keymint_hal_main.rs
new file mode 100644
index 0000000..cfa859f
--- /dev/null
+++ b/trusty/keymint/src/keymint_hal_main.rs
@@ -0,0 +1,164 @@
+//
+// Copyright (C) 2022 The Android Open-Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! This module implements the HAL service for Keymint (Rust) in Trusty.
+use kmr_hal::{
+ extract_rsp, keymint, rpc, secureclock, send_hal_info, sharedsecret, SerializedChannel,
+};
+use log::{error, info};
+use std::{
+ ffi::CString,
+ ops::DerefMut,
+ panic,
+ sync::{Arc, Mutex},
+};
+use trusty::DEFAULT_DEVICE;
+
+const TRUSTY_KEYMINT_RUST_SERVICE_NAME: &str = "com.android.trusty.keymint";
+
+static SERVICE_INSTANCE: &str = "default";
+
+static KM_SERVICE_NAME: &str = "android.hardware.security.keymint.IKeyMintDevice";
+static RPC_SERVICE_NAME: &str = "android.hardware.security.keymint.IRemotelyProvisionedComponent";
+static SECURE_CLOCK_SERVICE_NAME: &str = "android.hardware.security.secureclock.ISecureClock";
+static SHARED_SECRET_SERVICE_NAME: &str = "android.hardware.security.sharedsecret.ISharedSecret";
+
+/// Local error type for failures in the HAL service.
+#[derive(Debug, Clone)]
+struct HalServiceError(String);
+
+#[derive(Debug)]
+struct TipcChannel(trusty::TipcChannel);
+
+impl SerializedChannel for TipcChannel {
+ const MAX_SIZE: usize = 4000;
+ fn execute(&mut self, serialized_req: &[u8]) -> binder::Result<Vec<u8>> {
+ self.0.send(serialized_req).map_err(|e| {
+ binder::Status::new_exception(
+ binder::ExceptionCode::TRANSACTION_FAILED,
+ Some(
+ &CString::new(format!(
+ "Failed to send the request via tipc channel because of {:?}",
+ e
+ ))
+ .unwrap(),
+ ),
+ )
+ })?;
+ let mut expect_more_msgs = true;
+ let mut full_rsp = Vec::new();
+ while expect_more_msgs {
+ let mut recv_buf = Vec::new();
+ self.0.recv(&mut recv_buf).map_err(|e| {
+ binder::Status::new_exception(
+ binder::ExceptionCode::TRANSACTION_FAILED,
+ Some(
+ &CString::new(format!(
+ "Failed to receive the response via tipc channel because of {:?}",
+ e
+ ))
+ .unwrap(),
+ ),
+ )
+ })?;
+ let current_rsp_content;
+ (expect_more_msgs, current_rsp_content) = extract_rsp(&recv_buf)?;
+ full_rsp.extend_from_slice(current_rsp_content);
+ }
+ Ok(full_rsp)
+ }
+}
+
+fn main() {
+ if let Err(e) = inner_main() {
+ panic!("HAL service failed: {:?}", e);
+ }
+}
+
+fn inner_main() -> Result<(), HalServiceError> {
+ // Initialize Android logging.
+ android_logger::init_once(
+ android_logger::Config::default()
+ .with_tag("keymint-hal-trusty")
+ .with_min_level(log::Level::Info)
+ .with_log_id(android_logger::LogId::System),
+ );
+ // Redirect panic messages to logcat.
+ panic::set_hook(Box::new(|panic_info| {
+ error!("{}", panic_info);
+ }));
+
+ info!("Trusty KM HAL service is starting.");
+
+ info!("Starting thread pool now.");
+ binder::ProcessState::start_thread_pool();
+
+ // Create connection to the TA
+ let connection = trusty::TipcChannel::connect(DEFAULT_DEVICE, TRUSTY_KEYMINT_RUST_SERVICE_NAME)
+ .map_err(|e| {
+ HalServiceError(format!("Failed to connect to Trusty Keymint TA because of {:?}.", e))
+ })?;
+ let tipc_channel = Arc::new(Mutex::new(TipcChannel(connection)));
+
+ // Register the Keymint service
+ let km_service = keymint::Device::new_as_binder(tipc_channel.clone());
+ let km_service_name = format!("{}/{}", KM_SERVICE_NAME, SERVICE_INSTANCE);
+ binder::add_service(&km_service_name, km_service.as_binder()).map_err(|e| {
+ HalServiceError(format!(
+ "Failed to register service {} because of {:?}.",
+ km_service_name, e
+ ))
+ })?;
+
+ // Register the Remotely Provisioned Component service
+ let rpc_service = rpc::Device::new_as_binder(tipc_channel.clone());
+ let rpc_service_name = format!("{}/{}", RPC_SERVICE_NAME, SERVICE_INSTANCE);
+ binder::add_service(&rpc_service_name, rpc_service.as_binder()).map_err(|e| {
+ HalServiceError(format!(
+ "Failed to register service {} because of {:?}.",
+ rpc_service_name, e
+ ))
+ })?;
+
+ // Register the Secure Clock service
+ let sclock_service = secureclock::Device::new_as_binder(tipc_channel.clone());
+ let sclock_service_name = format!("{}/{}", SECURE_CLOCK_SERVICE_NAME, SERVICE_INSTANCE);
+ binder::add_service(&sclock_service_name, sclock_service.as_binder()).map_err(|e| {
+ HalServiceError(format!(
+ "Failed to register service {} because of {:?}.",
+ sclock_service_name, e
+ ))
+ })?;
+
+ // Register the Shared Secret service
+ let ssecret_service = sharedsecret::Device::new_as_binder(tipc_channel.clone());
+ let ssecret_service_name = format!("{}/{}", SHARED_SECRET_SERVICE_NAME, SERVICE_INSTANCE);
+ binder::add_service(&ssecret_service_name, ssecret_service.as_binder()).map_err(|e| {
+ HalServiceError(format!(
+ "Failed to register service {} because of {:?}.",
+ ssecret_service_name, e
+ ))
+ })?;
+
+ // Send the HAL service information to the TA
+ send_hal_info(tipc_channel.lock().unwrap().deref_mut())
+ .map_err(|e| HalServiceError(format!("Failed to populate HAL info: {:?}", e)))?;
+
+ info!("Successfully registered KeyMint HAL services.");
+ info!("Joining thread pool now.");
+ binder::ProcessState::join_thread_pool();
+ info!("KeyMint HAL service is terminating."); // should not reach here
+ Ok(())
+}
diff --git a/trusty/storage/proxy/Android.bp b/trusty/storage/proxy/Android.bp
index 94f26d8..e952ee0 100644
--- a/trusty/storage/proxy/Android.bp
+++ b/trusty/storage/proxy/Android.bp
@@ -32,11 +32,11 @@
shared_libs: [
"libbase",
+ "libcutils",
"liblog",
"libhardware_legacy",
],
header_libs: [
- "libcutils_headers",
"libgsi_headers",
],
diff --git a/trusty/storage/proxy/proxy.c b/trusty/storage/proxy/proxy.c
index b970406..4f77fa2 100644
--- a/trusty/storage/proxy/proxy.c
+++ b/trusty/storage/proxy/proxy.c
@@ -136,6 +136,10 @@
rc = storage_file_set_size(msg, req, req_len);
break;
+ case STORAGE_FILE_GET_MAX_SIZE:
+ rc = storage_file_get_max_size(msg, req, req_len);
+ break;
+
case STORAGE_RPMB_SEND:
rc = rpmb_send(msg, req, req_len);
break;
diff --git a/trusty/storage/proxy/rpmb.c b/trusty/storage/proxy/rpmb.c
index f059935..b1b8232 100644
--- a/trusty/storage/proxy/rpmb.c
+++ b/trusty/storage/proxy/rpmb.c
@@ -322,9 +322,9 @@
}
static int send_mmc_rpmb_req(int mmc_fd, const struct storage_rpmb_send_req* req) {
- struct {
+ union {
struct mmc_ioc_multi_cmd multi;
- struct mmc_ioc_cmd cmd_buf[3];
+ uint8_t raw[sizeof(struct mmc_ioc_multi_cmd) + sizeof(struct mmc_ioc_cmd) * 3];
} mmc = {};
struct mmc_ioc_cmd* cmd = mmc.multi.cmds;
int rc;
diff --git a/trusty/storage/proxy/storage.c b/trusty/storage/proxy/storage.c
index c531cfd..a96ddcb 100644
--- a/trusty/storage/proxy/storage.c
+++ b/trusty/storage/proxy/storage.c
@@ -13,10 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#include <cutils/properties.h>
#include <errno.h>
#include <fcntl.h>
#include <inttypes.h>
#include <libgen.h>
+#include <linux/fs.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
@@ -35,6 +37,9 @@
#define ALTERNATE_DATA_DIR "alternate/"
+/* Maximum file size for filesystem backed storage (i.e. not block dev backed storage) */
+#define MAX_FILE_SIZE (0x10000000000)
+
enum sync_state {
SS_UNUSED = -1,
SS_CLEAN = 0,
@@ -43,6 +48,22 @@
static const char *ssdir_name;
+/*
+ * Property set to 1 after we have opened a file under ssdir_name. The backing
+ * files for both TD and TDP are currently located under /data/vendor/ss and can
+ * only be opened once userdata is mounted. This storageproxyd service is
+ * restarted when userdata is available, which causes the Trusty storage service
+ * to reconnect and attempt to open the backing files for TD and TDP. Once we
+ * set this property, other users can expect that the Trusty storage service
+ * ports will be available (although they may block if still being initialized),
+ * and connections will not be reset after this point (assuming the
+ * storageproxyd service stays running).
+ */
+#define FS_READY_PROPERTY "ro.vendor.trusty.storage.fs_ready"
+
+/* has FS_READY_PROPERTY been set? */
+static bool fs_ready_initialized = false;
+
static enum sync_state fs_state;
static enum sync_state fd_state[FD_TBL_SIZE];
@@ -336,6 +357,16 @@
ALOGV("%s: \"%s\": fd = %u: handle = %d\n",
__func__, path, rc, resp.handle);
+ /* a backing file has been opened, notify any waiting init steps */
+ if (!fs_ready_initialized) {
+ rc = property_set(FS_READY_PROPERTY, "1");
+ if (rc == 0) {
+ fs_ready_initialized = true;
+ } else {
+ ALOGE("Could not set property %s, rc: %d\n", FS_READY_PROPERTY, rc);
+ }
+ }
+
return ipc_respond(msg, &resp, sizeof(resp));
err_response:
@@ -522,6 +553,45 @@
return ipc_respond(msg, NULL, 0);
}
+int storage_file_get_max_size(struct storage_msg* msg, const void* r, size_t req_len) {
+ const struct storage_file_get_max_size_req* req = r;
+ struct storage_file_get_max_size_resp resp = {0};
+ uint64_t max_size = 0;
+
+ if (req_len != sizeof(*req)) {
+ ALOGE("%s: invalid request length (%zd != %zd)\n", __func__, req_len, sizeof(*req));
+ msg->result = STORAGE_ERR_NOT_VALID;
+ goto err_response;
+ }
+
+ struct stat stat;
+ int fd = lookup_fd(req->handle, false);
+ int rc = fstat(fd, &stat);
+ if (rc < 0) {
+ ALOGE("%s: error stat'ing file (fd=%d): %s\n", __func__, fd, strerror(errno));
+ goto err_response;
+ }
+
+ if ((stat.st_mode & S_IFMT) == S_IFBLK) {
+ rc = ioctl(fd, BLKGETSIZE64, &max_size);
+ if (rc < 0) {
+ rc = errno;
+ ALOGE("%s: error calling ioctl on file (fd=%d): %s\n", __func__, fd, strerror(errno));
+ msg->result = translate_errno(rc);
+ goto err_response;
+ }
+ } else {
+ max_size = MAX_FILE_SIZE;
+ }
+
+ resp.max_size = max_size;
+ msg->result = STORAGE_NO_ERROR;
+ return ipc_respond(msg, &resp, sizeof(resp));
+
+err_response:
+ return ipc_respond(msg, NULL, 0);
+}
+
int storage_init(const char *dirname)
{
/* If there is an active DSU image, use the alternate fs mode. */
diff --git a/trusty/storage/proxy/storage.h b/trusty/storage/proxy/storage.h
index 5a670d4..77bfa13 100644
--- a/trusty/storage/proxy/storage.h
+++ b/trusty/storage/proxy/storage.h
@@ -39,6 +39,8 @@
int storage_file_set_size(struct storage_msg *msg,
const void *req, size_t req_len);
+int storage_file_get_max_size(struct storage_msg* msg, const void* req, size_t req_len);
+
int storage_init(const char *dirname);
int storage_sync_checkpoint(void);
diff --git a/trusty/test/binder/aidl/ByteEnum.aidl b/trusty/test/binder/aidl/com/android/trusty/binder/test/ByteEnum.aidl
similarity index 94%
rename from trusty/test/binder/aidl/ByteEnum.aidl
rename to trusty/test/binder/aidl/com/android/trusty/binder/test/ByteEnum.aidl
index d3a13ac..9c712c0 100644
--- a/trusty/test/binder/aidl/ByteEnum.aidl
+++ b/trusty/test/binder/aidl/com/android/trusty/binder/test/ByteEnum.aidl
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+package com.android.trusty.binder.test;
+
/*
* Hello, world!
*/
diff --git a/trusty/test/binder/aidl/ITestService.aidl b/trusty/test/binder/aidl/com/android/trusty/binder/test/ITestService.aidl
similarity index 93%
rename from trusty/test/binder/aidl/ITestService.aidl
rename to trusty/test/binder/aidl/com/android/trusty/binder/test/ITestService.aidl
index c6a99c8..cfbb246 100644
--- a/trusty/test/binder/aidl/ITestService.aidl
+++ b/trusty/test/binder/aidl/com/android/trusty/binder/test/ITestService.aidl
@@ -14,10 +14,11 @@
* limitations under the License.
*/
+package com.android.trusty.binder.test;
-import ByteEnum;
-import IntEnum;
-import LongEnum;
+import com.android.trusty.binder.test.ByteEnum;
+import com.android.trusty.binder.test.IntEnum;
+import com.android.trusty.binder.test.LongEnum;
interface ITestService {
const @utf8InCpp String PORT = "com.android.trusty.binder.test.service";
diff --git a/trusty/test/binder/aidl/IntEnum.aidl b/trusty/test/binder/aidl/com/android/trusty/binder/test/IntEnum.aidl
similarity index 94%
rename from trusty/test/binder/aidl/IntEnum.aidl
rename to trusty/test/binder/aidl/com/android/trusty/binder/test/IntEnum.aidl
index 120e44f..4055b25 100644
--- a/trusty/test/binder/aidl/IntEnum.aidl
+++ b/trusty/test/binder/aidl/com/android/trusty/binder/test/IntEnum.aidl
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+package com.android.trusty.binder.test;
+
@JavaDerive(toString=true)
@Backing(type="int")
enum IntEnum {
diff --git a/trusty/test/binder/aidl/LongEnum.aidl b/trusty/test/binder/aidl/com/android/trusty/binder/test/LongEnum.aidl
similarity index 94%
rename from trusty/test/binder/aidl/LongEnum.aidl
rename to trusty/test/binder/aidl/com/android/trusty/binder/test/LongEnum.aidl
index 0e9e933..20c64af 100644
--- a/trusty/test/binder/aidl/LongEnum.aidl
+++ b/trusty/test/binder/aidl/com/android/trusty/binder/test/LongEnum.aidl
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+package com.android.trusty.binder.test;
+
@Backing(type="long")
enum LongEnum {
FOO = 100000000000,
diff --git a/trusty/test/binder/aidl/rules.mk b/trusty/test/binder/aidl/rules.mk
index 6154abb..546a370 100644
--- a/trusty/test/binder/aidl/rules.mk
+++ b/trusty/test/binder/aidl/rules.mk
@@ -17,10 +17,12 @@
MODULE := $(LOCAL_DIR)
+MODULE_AIDL_PACKAGE := com/android/trusty/binder/test
+
MODULE_AIDLS := \
- $(LOCAL_DIR)/ByteEnum.aidl \
- $(LOCAL_DIR)/IntEnum.aidl \
- $(LOCAL_DIR)/ITestService.aidl \
- $(LOCAL_DIR)/LongEnum.aidl \
+ $(LOCAL_DIR)/$(MODULE_AIDL_PACKAGE)/ByteEnum.aidl \
+ $(LOCAL_DIR)/$(MODULE_AIDL_PACKAGE)/IntEnum.aidl \
+ $(LOCAL_DIR)/$(MODULE_AIDL_PACKAGE)/ITestService.aidl \
+ $(LOCAL_DIR)/$(MODULE_AIDL_PACKAGE)/LongEnum.aidl \
include make/aidl.mk
diff --git a/trusty/trusty-base.mk b/trusty/trusty-base.mk
index 0609709..7b4aa26 100644
--- a/trusty/trusty-base.mk
+++ b/trusty/trusty-base.mk
@@ -22,8 +22,21 @@
# For gatekeeper, we include the generic -service and -impl to use legacy
# HAL loading of gatekeeper.trusty.
+# Allow the KeyMint HAL service implementation to be selected at build time. This needs to be
+# done in sync with the TA implementation included in Trusty. Possible values are:
+#
+# - Rust implementation: export TRUSTY_KEYMINT_IMPL=rust
+# - C++ implementation: (any other value of TRUSTY_KEYMINT_IMPL)
+
+ifeq ($(TRUSTY_KEYMINT_IMPL),rust)
+ LOCAL_KEYMINT_PRODUCT_PACKAGE := android.hardware.security.keymint-service.rust.trusty
+else
+ # Default to the C++ implementation
+ LOCAL_KEYMINT_PRODUCT_PACKAGE := android.hardware.security.keymint-service.trusty
+endif
+
PRODUCT_PACKAGES += \
- android.hardware.security.keymint-service.trusty \
+ $(LOCAL_KEYMINT_PRODUCT_PACKAGE) \
android.hardware.gatekeeper@1.0-service.trusty \
trusty_apploader \
RemoteProvisioner