Loading cmds/dumpstate/dumpstate.cpp +91 −18 Original line number Diff line number Diff line Loading @@ -2195,6 +2195,74 @@ static void DumpstateOnboardingOnly() { ds.AddDir(LOGPERSIST_DATA_DIR, false); } static std::string GetTimestamp(const timespec& ts) { tm tm; localtime_r(&ts.tv_sec, &tm); // Reserve enough space for the entire time string, includes the space // for the '\0' to make the calculations below easier by using size for // the total string size. std::string str(sizeof("1970-01-01 00:00:00.123456789+0830"), '\0'); size_t n = strftime(str.data(), str.size(), "%F %H:%M", &tm); if (n == 0) { return "TIMESTAMP FAILURE"; } int num_chars = snprintf(&str[n], str.size() - n, ":%02d.%09ld", tm.tm_sec, ts.tv_nsec); if (num_chars > str.size() - n) { return "TIMESTAMP FAILURE"; } n += static_cast<size_t>(num_chars); if (strftime(&str[n], str.size() - n, "%z", &tm) == 0) { return "TIMESTAMP FAILURE"; } return str; } static std::string GetCmdline(pid_t pid) { std::string cmdline; if (!android::base::ReadFileToString(android::base::StringPrintf("/proc/%d/cmdline", pid), &cmdline)) { return "UNKNOWN"; } // There are '\0' terminators between arguments, convert them to spaces. // But start by skipping all trailing '\0' values. size_t cur = cmdline.size() - 1; while (cur != 0 && cmdline[cur] == '\0') { cur--; } if (cur == 0) { return "UNKNOWN"; } while ((cur = cmdline.rfind('\0', cur)) != std::string::npos) { cmdline[cur] = ' '; } return cmdline; } static void DumpPidHeader(int fd, pid_t pid, const timespec& ts) { // For consistency, the header to this message matches the one // dumped by debuggerd. dprintf(fd, "\n----- pid %d at %s -----\n", pid, GetTimestamp(ts).c_str()); dprintf(fd, "Cmd line: %s\n", GetCmdline(pid).c_str()); } static void DumpPidFooter(int fd, pid_t pid) { // For consistency, the footer to this message matches the one // dumped by debuggerd. dprintf(fd, "----- end %d -----\n", pid); } static bool DumpBacktrace(int fd, pid_t pid, bool is_java_process) { int ret = dump_backtrace_to_file_timeout( pid, is_java_process ? kDebuggerdJavaBacktrace : kDebuggerdNativeBacktrace, 3, fd); if (ret == -1 && is_java_process) { // Tried to unwind as a java process, try a native unwind. dprintf(fd, "Java unwind failed for pid %d, trying a native unwind.\n", pid); ret = dump_backtrace_to_file_timeout(pid, kDebuggerdNativeBacktrace, 3, fd); } return ret != -1; } Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { const std::string temp_file_pattern = ds.bugreport_internal_dir_ + "/dumptrace_XXXXXX"; const size_t buf_size = temp_file_pattern.length() + 1; Loading Loading @@ -2243,16 +2311,6 @@ Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { continue; } // Skip cached processes. if (IsCached(pid)) { // For consistency, the header and footer to this message match those // dumped by debuggerd in the success case. dprintf(fd, "\n---- pid %d at [unknown] ----\n", pid); dprintf(fd, "Dump skipped for cached process.\n"); dprintf(fd, "---- end %d ----", pid); continue; } const std::string link_name = android::base::StringPrintf("/proc/%d/exe", pid); std::string exe; if (!android::base::Readlink(link_name, &exe)) { Loading Loading @@ -2281,16 +2339,31 @@ Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { break; } timespec start_timespec; clock_gettime(CLOCK_REALTIME, &start_timespec); if (IsCached(pid)) { DumpPidHeader(fd, pid, start_timespec); dprintf(fd, "Process is cached, skipping backtrace due to high chance of timeout.\n"); DumpPidFooter(fd, pid); continue; } const uint64_t start = Nanotime(); const int ret = dump_backtrace_to_file_timeout( pid, is_java_process ? kDebuggerdJavaBacktrace : kDebuggerdNativeBacktrace, 3, fd); if (!DumpBacktrace(fd, pid, is_java_process)) { if (IsCached(pid)) { DumpPidHeader(fd, pid, start_timespec); dprintf(fd, "Backtrace failed, but process has become cached.\n"); DumpPidFooter(fd, pid); continue; } if (ret == -1) { // For consistency, the header and footer to this message match those // dumped by debuggerd in the success case. dprintf(fd, "\n---- pid %d at [unknown] ----\n", pid); dprintf(fd, "Dump failed, likely due to a timeout.\n"); dprintf(fd, "---- end %d ----", pid); DumpPidHeader(fd, pid, start_timespec); dprintf(fd, "Backtrace gathering failed, likely due to a timeout.\n"); DumpPidFooter(fd, pid); dprintf(fd, "\n[dump %s stack %d: %.3fs elapsed]\n", is_java_process ? "dalvik" : "native", pid, (float)(Nanotime() - start) / NANOS_PER_SEC); timeout_failures++; continue; } Loading libs/binder/Android.bp +154 −10 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ cc_library_headers { recovery_available: true, host_supported: true, native_bridge_supported: true, cmake_snapshot_supported: true, header_libs: [ "libbinder_headers_platform_shared", Loading Loading @@ -83,6 +84,124 @@ cc_library_headers { }, } cc_cmake_snapshot { name: "binder_sdk", modules: [ "libbinder_sdk", "libbinder_sdk_single_threaded", "libbinder_ndk_sdk", "binderRpcTestNoKernel", ], prebuilts: [ // to enable arm64 host support, build with musl - e.g. on aosp_cf_arm64_phone "aidl", "libc++", ], include_sources: true, cflags: [ "-DNDEBUG", "-DBINDER_ENABLE_LIBLOG_ASSERT", "-DBINDER_DISABLE_NATIVE_HANDLE", "-DBINDER_DISABLE_BLOB", "-DBINDER_NO_LIBBASE", "-DBINDER_NO_KERNEL_IPC_TESTING", // from Soong's global.go commonGlobalCflags and noOverrideGlobalCflags "-Wno-c99-designator", "-Wno-missing-field-initializers", // warnings that only pop up on gcc "-Wno-unknown-pragmas", // "pragma clang" "-Wno-attributes", // attributes on compound-statements "-Wno-psabi", // reminders about old ABI changes ], cflags_ignored: [ // gcc requires all header constexprs to be used in all dependent compilatinon units "-Wunused-const-variable", ], library_mapping: [ { android_name: "libssl", mapped_name: "ssl", package_pregenerated: "external/boringssl", }, { android_name: "libcrypto", mapped_name: "crypto", package_pregenerated: "external/boringssl", }, { android_name: "libgtest", mapped_name: "GTest::gtest", package_system: "GTest", }, { android_name: "libgtest_main", mapped_name: "GTest::gtest", package_system: "GTest", }, // use libbinder_sdk and friends instead of full Android's libbinder { android_name: "libbinder_rpc_no_kernel", mapped_name: "android::libbinder_sdk", }, { android_name: "libbinder_rpc_single_threaded_no_kernel", mapped_name: "android::libbinder_sdk_single_threaded", }, { android_name: "libbinder_headers", mapped_name: "android::libbinder_headers_base", }, { android_name: "libbinder", mapped_name: "android::libbinder_sdk", }, { android_name: "libbinder_ndk", mapped_name: "android::libbinder_ndk_sdk", }, { android_name: "liblog", mapped_name: "android::liblog_stub", }, // explicitly included by Binder tests, but not needed outside of Android { android_name: "libbase", }, { android_name: "libcutils", }, { android_name: "libutils", }, // disable tests that don't work outside of Android yet { android_name: "binder_rpc_test_service", }, { android_name: "binder_rpc_test_service_single_threaded", }, // trusty mocks are artificially triggered and not needed outside of Android build { android_name: "libbinder_on_trusty_mock", }, { android_name: "libbinder_ndk_on_trusty_mock", }, { android_name: "binderRpcTestService_on_trusty_mock", }, { android_name: "binderRpcTest_on_trusty_mock", }, ], } // These interfaces are android-specific implementation unrelated to binder // transport itself and should be moved to AIDL or in domain-specific libs. // Loading Loading @@ -126,6 +245,9 @@ cc_defaults { header_libs: [ "libbinder_headers_base", ], export_header_lib_headers: [ "libbinder_headers_base", ], cflags: [ "-Wextra", Loading Loading @@ -369,6 +491,7 @@ cc_library { double_loadable: true, // TODO(b/153609531): remove when no longer needed. native_bridge_supported: true, cmake_snapshot_supported: false, // libbinder does not offer a stable wire protocol. // if a second copy of it is installed, then it may break after security Loading Loading @@ -408,16 +531,8 @@ cc_library { afdo: true, } cc_library_host_shared { name: "libbinder_sdk", defaults: [ "libbinder_common_defaults", ], shared_libs: [ "libutils_binder_sdk", ], cc_defaults { name: "binder_sdk_defaults", cflags: [ "-DBINDER_ENABLE_LIBLOG_ASSERT", Loading @@ -429,6 +544,21 @@ cc_library_host_shared { header_libs: [ "liblog_stub", ], } cc_defaults { name: "libbinder_sdk_defaults", cmake_snapshot_supported: true, defaults: [ "libbinder_common_defaults", "binder_sdk_defaults", ], shared_libs: [ "libutils_binder_sdk", ], srcs: [ "OS_non_android_linux.cpp", Loading @@ -446,6 +576,19 @@ cc_library_host_shared { }, } cc_library_host_shared { name: "libbinder_sdk", defaults: ["libbinder_sdk_defaults"], } cc_library_host_shared { name: "libbinder_sdk_single_threaded", defaults: ["libbinder_sdk_defaults"], cflags: [ "-DBINDER_RPC_SINGLE_THREADED", ], } cc_library { name: "libbinder_rpc_no_kernel", vendor_available: true, Loading Loading @@ -535,6 +678,7 @@ cc_defaults { defaults: ["libbinder_tls_shared_deps"], vendor_available: true, host_supported: true, cmake_snapshot_supported: true, header_libs: [ "libbinder_headers", Loading libs/binder/liblog_stub/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ cc_library_headers { product_available: true, recovery_available: true, vendor_available: true, cmake_snapshot_supported: true, target: { windows: { Loading libs/binder/ndk/Android.bp +40 −12 Original line number Diff line number Diff line Loading @@ -32,17 +32,11 @@ license { ], } cc_library { name: "libbinder_ndk", cc_defaults { name: "libbinder_ndk_common_defaults", host_supported: true, recovery_available: true, llndk: { symbol_file: "libbinder_ndk.map.txt", export_llndk_headers: ["libvendorsupport_llndk_headers"], }, export_include_dirs: [ "include_cpp", "include_ndk", Loading @@ -50,7 +44,6 @@ cc_library { ], cflags: [ "-DBINDER_WITH_KERNEL_IPC", "-Wall", "-Wextra", "-Wextra-semi", Loading @@ -59,14 +52,48 @@ cc_library { srcs: [ "ibinder.cpp", "ibinder_jni.cpp", "libbinder.cpp", "parcel.cpp", "stability.cpp", "status.cpp", ], } cc_library_host_shared { name: "libbinder_ndk_sdk", defaults: [ "libbinder_ndk_common_defaults", "binder_sdk_defaults", ], cmake_snapshot_supported: true, shared_libs: [ "libbinder_sdk", "libutils_binder_sdk", ], } cc_library { name: "libbinder_ndk", defaults: ["libbinder_ndk_common_defaults"], cmake_snapshot_supported: false, llndk: { symbol_file: "libbinder_ndk.map.txt", export_llndk_headers: ["libvendorsupport_llndk_headers"], }, cflags: [ "-DBINDER_WITH_KERNEL_IPC", ], srcs: [ "ibinder_jni.cpp", "parcel_jni.cpp", "persistable_bundle.cpp", "process.cpp", "stability.cpp", "status.cpp", "service_manager.cpp", ], Loading Loading @@ -195,6 +222,7 @@ cc_library_headers { host_supported: true, // TODO(b/153609531): remove when no longer needed. native_bridge_supported: true, cmake_snapshot_supported: true, target: { darwin: { enabled: false, Loading libs/binder/rust/tests/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ rust_bindgen { crate_name: "binder_rs_serialization_bindgen", wrapper_src: "serialization.hpp", source_stem: "bindings", cpp_std: "gnu++17", bindgen_flags: [ "--allowlist-type", "Transaction", "--allowlist-var", "TESTDATA_.*", Loading Loading
cmds/dumpstate/dumpstate.cpp +91 −18 Original line number Diff line number Diff line Loading @@ -2195,6 +2195,74 @@ static void DumpstateOnboardingOnly() { ds.AddDir(LOGPERSIST_DATA_DIR, false); } static std::string GetTimestamp(const timespec& ts) { tm tm; localtime_r(&ts.tv_sec, &tm); // Reserve enough space for the entire time string, includes the space // for the '\0' to make the calculations below easier by using size for // the total string size. std::string str(sizeof("1970-01-01 00:00:00.123456789+0830"), '\0'); size_t n = strftime(str.data(), str.size(), "%F %H:%M", &tm); if (n == 0) { return "TIMESTAMP FAILURE"; } int num_chars = snprintf(&str[n], str.size() - n, ":%02d.%09ld", tm.tm_sec, ts.tv_nsec); if (num_chars > str.size() - n) { return "TIMESTAMP FAILURE"; } n += static_cast<size_t>(num_chars); if (strftime(&str[n], str.size() - n, "%z", &tm) == 0) { return "TIMESTAMP FAILURE"; } return str; } static std::string GetCmdline(pid_t pid) { std::string cmdline; if (!android::base::ReadFileToString(android::base::StringPrintf("/proc/%d/cmdline", pid), &cmdline)) { return "UNKNOWN"; } // There are '\0' terminators between arguments, convert them to spaces. // But start by skipping all trailing '\0' values. size_t cur = cmdline.size() - 1; while (cur != 0 && cmdline[cur] == '\0') { cur--; } if (cur == 0) { return "UNKNOWN"; } while ((cur = cmdline.rfind('\0', cur)) != std::string::npos) { cmdline[cur] = ' '; } return cmdline; } static void DumpPidHeader(int fd, pid_t pid, const timespec& ts) { // For consistency, the header to this message matches the one // dumped by debuggerd. dprintf(fd, "\n----- pid %d at %s -----\n", pid, GetTimestamp(ts).c_str()); dprintf(fd, "Cmd line: %s\n", GetCmdline(pid).c_str()); } static void DumpPidFooter(int fd, pid_t pid) { // For consistency, the footer to this message matches the one // dumped by debuggerd. dprintf(fd, "----- end %d -----\n", pid); } static bool DumpBacktrace(int fd, pid_t pid, bool is_java_process) { int ret = dump_backtrace_to_file_timeout( pid, is_java_process ? kDebuggerdJavaBacktrace : kDebuggerdNativeBacktrace, 3, fd); if (ret == -1 && is_java_process) { // Tried to unwind as a java process, try a native unwind. dprintf(fd, "Java unwind failed for pid %d, trying a native unwind.\n", pid); ret = dump_backtrace_to_file_timeout(pid, kDebuggerdNativeBacktrace, 3, fd); } return ret != -1; } Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { const std::string temp_file_pattern = ds.bugreport_internal_dir_ + "/dumptrace_XXXXXX"; const size_t buf_size = temp_file_pattern.length() + 1; Loading Loading @@ -2243,16 +2311,6 @@ Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { continue; } // Skip cached processes. if (IsCached(pid)) { // For consistency, the header and footer to this message match those // dumped by debuggerd in the success case. dprintf(fd, "\n---- pid %d at [unknown] ----\n", pid); dprintf(fd, "Dump skipped for cached process.\n"); dprintf(fd, "---- end %d ----", pid); continue; } const std::string link_name = android::base::StringPrintf("/proc/%d/exe", pid); std::string exe; if (!android::base::Readlink(link_name, &exe)) { Loading Loading @@ -2281,16 +2339,31 @@ Dumpstate::RunStatus Dumpstate::DumpTraces(const char** path) { break; } timespec start_timespec; clock_gettime(CLOCK_REALTIME, &start_timespec); if (IsCached(pid)) { DumpPidHeader(fd, pid, start_timespec); dprintf(fd, "Process is cached, skipping backtrace due to high chance of timeout.\n"); DumpPidFooter(fd, pid); continue; } const uint64_t start = Nanotime(); const int ret = dump_backtrace_to_file_timeout( pid, is_java_process ? kDebuggerdJavaBacktrace : kDebuggerdNativeBacktrace, 3, fd); if (!DumpBacktrace(fd, pid, is_java_process)) { if (IsCached(pid)) { DumpPidHeader(fd, pid, start_timespec); dprintf(fd, "Backtrace failed, but process has become cached.\n"); DumpPidFooter(fd, pid); continue; } if (ret == -1) { // For consistency, the header and footer to this message match those // dumped by debuggerd in the success case. dprintf(fd, "\n---- pid %d at [unknown] ----\n", pid); dprintf(fd, "Dump failed, likely due to a timeout.\n"); dprintf(fd, "---- end %d ----", pid); DumpPidHeader(fd, pid, start_timespec); dprintf(fd, "Backtrace gathering failed, likely due to a timeout.\n"); DumpPidFooter(fd, pid); dprintf(fd, "\n[dump %s stack %d: %.3fs elapsed]\n", is_java_process ? "dalvik" : "native", pid, (float)(Nanotime() - start) / NANOS_PER_SEC); timeout_failures++; continue; } Loading
libs/binder/Android.bp +154 −10 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ cc_library_headers { recovery_available: true, host_supported: true, native_bridge_supported: true, cmake_snapshot_supported: true, header_libs: [ "libbinder_headers_platform_shared", Loading Loading @@ -83,6 +84,124 @@ cc_library_headers { }, } cc_cmake_snapshot { name: "binder_sdk", modules: [ "libbinder_sdk", "libbinder_sdk_single_threaded", "libbinder_ndk_sdk", "binderRpcTestNoKernel", ], prebuilts: [ // to enable arm64 host support, build with musl - e.g. on aosp_cf_arm64_phone "aidl", "libc++", ], include_sources: true, cflags: [ "-DNDEBUG", "-DBINDER_ENABLE_LIBLOG_ASSERT", "-DBINDER_DISABLE_NATIVE_HANDLE", "-DBINDER_DISABLE_BLOB", "-DBINDER_NO_LIBBASE", "-DBINDER_NO_KERNEL_IPC_TESTING", // from Soong's global.go commonGlobalCflags and noOverrideGlobalCflags "-Wno-c99-designator", "-Wno-missing-field-initializers", // warnings that only pop up on gcc "-Wno-unknown-pragmas", // "pragma clang" "-Wno-attributes", // attributes on compound-statements "-Wno-psabi", // reminders about old ABI changes ], cflags_ignored: [ // gcc requires all header constexprs to be used in all dependent compilatinon units "-Wunused-const-variable", ], library_mapping: [ { android_name: "libssl", mapped_name: "ssl", package_pregenerated: "external/boringssl", }, { android_name: "libcrypto", mapped_name: "crypto", package_pregenerated: "external/boringssl", }, { android_name: "libgtest", mapped_name: "GTest::gtest", package_system: "GTest", }, { android_name: "libgtest_main", mapped_name: "GTest::gtest", package_system: "GTest", }, // use libbinder_sdk and friends instead of full Android's libbinder { android_name: "libbinder_rpc_no_kernel", mapped_name: "android::libbinder_sdk", }, { android_name: "libbinder_rpc_single_threaded_no_kernel", mapped_name: "android::libbinder_sdk_single_threaded", }, { android_name: "libbinder_headers", mapped_name: "android::libbinder_headers_base", }, { android_name: "libbinder", mapped_name: "android::libbinder_sdk", }, { android_name: "libbinder_ndk", mapped_name: "android::libbinder_ndk_sdk", }, { android_name: "liblog", mapped_name: "android::liblog_stub", }, // explicitly included by Binder tests, but not needed outside of Android { android_name: "libbase", }, { android_name: "libcutils", }, { android_name: "libutils", }, // disable tests that don't work outside of Android yet { android_name: "binder_rpc_test_service", }, { android_name: "binder_rpc_test_service_single_threaded", }, // trusty mocks are artificially triggered and not needed outside of Android build { android_name: "libbinder_on_trusty_mock", }, { android_name: "libbinder_ndk_on_trusty_mock", }, { android_name: "binderRpcTestService_on_trusty_mock", }, { android_name: "binderRpcTest_on_trusty_mock", }, ], } // These interfaces are android-specific implementation unrelated to binder // transport itself and should be moved to AIDL or in domain-specific libs. // Loading Loading @@ -126,6 +245,9 @@ cc_defaults { header_libs: [ "libbinder_headers_base", ], export_header_lib_headers: [ "libbinder_headers_base", ], cflags: [ "-Wextra", Loading Loading @@ -369,6 +491,7 @@ cc_library { double_loadable: true, // TODO(b/153609531): remove when no longer needed. native_bridge_supported: true, cmake_snapshot_supported: false, // libbinder does not offer a stable wire protocol. // if a second copy of it is installed, then it may break after security Loading Loading @@ -408,16 +531,8 @@ cc_library { afdo: true, } cc_library_host_shared { name: "libbinder_sdk", defaults: [ "libbinder_common_defaults", ], shared_libs: [ "libutils_binder_sdk", ], cc_defaults { name: "binder_sdk_defaults", cflags: [ "-DBINDER_ENABLE_LIBLOG_ASSERT", Loading @@ -429,6 +544,21 @@ cc_library_host_shared { header_libs: [ "liblog_stub", ], } cc_defaults { name: "libbinder_sdk_defaults", cmake_snapshot_supported: true, defaults: [ "libbinder_common_defaults", "binder_sdk_defaults", ], shared_libs: [ "libutils_binder_sdk", ], srcs: [ "OS_non_android_linux.cpp", Loading @@ -446,6 +576,19 @@ cc_library_host_shared { }, } cc_library_host_shared { name: "libbinder_sdk", defaults: ["libbinder_sdk_defaults"], } cc_library_host_shared { name: "libbinder_sdk_single_threaded", defaults: ["libbinder_sdk_defaults"], cflags: [ "-DBINDER_RPC_SINGLE_THREADED", ], } cc_library { name: "libbinder_rpc_no_kernel", vendor_available: true, Loading Loading @@ -535,6 +678,7 @@ cc_defaults { defaults: ["libbinder_tls_shared_deps"], vendor_available: true, host_supported: true, cmake_snapshot_supported: true, header_libs: [ "libbinder_headers", Loading
libs/binder/liblog_stub/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ cc_library_headers { product_available: true, recovery_available: true, vendor_available: true, cmake_snapshot_supported: true, target: { windows: { Loading
libs/binder/ndk/Android.bp +40 −12 Original line number Diff line number Diff line Loading @@ -32,17 +32,11 @@ license { ], } cc_library { name: "libbinder_ndk", cc_defaults { name: "libbinder_ndk_common_defaults", host_supported: true, recovery_available: true, llndk: { symbol_file: "libbinder_ndk.map.txt", export_llndk_headers: ["libvendorsupport_llndk_headers"], }, export_include_dirs: [ "include_cpp", "include_ndk", Loading @@ -50,7 +44,6 @@ cc_library { ], cflags: [ "-DBINDER_WITH_KERNEL_IPC", "-Wall", "-Wextra", "-Wextra-semi", Loading @@ -59,14 +52,48 @@ cc_library { srcs: [ "ibinder.cpp", "ibinder_jni.cpp", "libbinder.cpp", "parcel.cpp", "stability.cpp", "status.cpp", ], } cc_library_host_shared { name: "libbinder_ndk_sdk", defaults: [ "libbinder_ndk_common_defaults", "binder_sdk_defaults", ], cmake_snapshot_supported: true, shared_libs: [ "libbinder_sdk", "libutils_binder_sdk", ], } cc_library { name: "libbinder_ndk", defaults: ["libbinder_ndk_common_defaults"], cmake_snapshot_supported: false, llndk: { symbol_file: "libbinder_ndk.map.txt", export_llndk_headers: ["libvendorsupport_llndk_headers"], }, cflags: [ "-DBINDER_WITH_KERNEL_IPC", ], srcs: [ "ibinder_jni.cpp", "parcel_jni.cpp", "persistable_bundle.cpp", "process.cpp", "stability.cpp", "status.cpp", "service_manager.cpp", ], Loading Loading @@ -195,6 +222,7 @@ cc_library_headers { host_supported: true, // TODO(b/153609531): remove when no longer needed. native_bridge_supported: true, cmake_snapshot_supported: true, target: { darwin: { enabled: false, Loading
libs/binder/rust/tests/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ rust_bindgen { crate_name: "binder_rs_serialization_bindgen", wrapper_src: "serialization.hpp", source_stem: "bindings", cpp_std: "gnu++17", bindgen_flags: [ "--allowlist-type", "Transaction", "--allowlist-var", "TESTDATA_.*", Loading