diff options
author | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2024-04-10 21:05:14 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-04-10 21:05:14 +0000 |
commit | ab2daeca28b23a164a8bb5100e3e39a4092a7689 (patch) | |
tree | 9d3dac68b79970902103ed4025a04f16c6b1d8b6 /libs | |
parent | 9ecd5a2566ba9b2aaec7678e26f80fd38706122e (diff) | |
parent | 6dfa8c92b7e3006393e4888776bdcd354fc3fa91 (diff) | |
download | native-ab2daeca28b23a164a8bb5100e3e39a4092a7689.tar.gz |
Merge "libbinder_rs: Add libbinder_rs_on_trusty_mock" into main
Diffstat (limited to 'libs')
-rw-r--r-- | libs/binder/Android.bp | 7 | ||||
-rw-r--r-- | libs/binder/rust/Android.bp | 57 | ||||
-rw-r--r-- | libs/binder/rust/src/lib.rs | 8 | ||||
-rw-r--r-- | libs/binder/rust/src/native.rs | 4 | ||||
-rw-r--r-- | libs/binder/rust/sys/lib.rs | 4 | ||||
-rw-r--r-- | libs/binder/tests/Android.bp | 1 | ||||
-rw-r--r-- | libs/binder/trusty/rust/binder_ndk_sys/rules.mk | 4 | ||||
-rw-r--r-- | libs/binder/trusty/rust/rules.mk | 1 |
8 files changed, 79 insertions, 7 deletions
diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index 9c24dc590c..57a48d7e92 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -229,6 +229,7 @@ cc_defaults { cc_library_headers { name: "trusty_mock_headers", host_supported: true, + vendor_available: true, export_include_dirs: [ "trusty/include", @@ -243,12 +244,18 @@ cc_library_headers { cc_defaults { name: "trusty_mock_defaults", host_supported: true, + vendor_available: true, header_libs: [ "libbinder_headers_base", "liblog_stub", "trusty_mock_headers", ], + export_header_lib_headers: [ + "libbinder_headers_base", + "liblog_stub", + "trusty_mock_headers", + ], shared_libs: [ "libutils_binder_sdk", diff --git a/libs/binder/rust/Android.bp b/libs/binder/rust/Android.bp index 57a38dc480..ef556d7f5f 100644 --- a/libs/binder/rust/Android.bp +++ b/libs/binder/rust/Android.bp @@ -35,6 +35,21 @@ rust_library { } rust_library { + name: "libbinder_rs_on_trusty_mock", + crate_name: "binder", + srcs: ["src/lib.rs"], + cfgs: [ + "trusty", + ], + rustlibs: [ + "libbinder_ndk_sys_on_trusty_mock", + "libdowncast_rs", + "liblibc", + ], + vendor: true, +} + +rust_library { name: "libbinder_tokio_rs", crate_name: "binder_tokio", srcs: ["binder_tokio/lib.rs"], @@ -89,6 +104,26 @@ rust_library { visibility: [":__subpackages__"], } +rust_library { + name: "libbinder_ndk_sys_on_trusty_mock", + crate_name: "binder_ndk_sys", + srcs: [ + "sys/lib.rs", + ":libbinder_ndk_bindgen_on_trusty_mock", + ], + cfgs: [ + "trusty", + ], + shared_libs: [ + "libbinder_ndk_on_trusty_mock", + ], + vendor: true, + // Lints are checked separately for libbinder_ndk_sys. + // The Trusty mock copy pulls in extra headers that + // don't pass the lints for the bindgen output. + lints: "none", +} + rust_bindgen { name: "libbinder_ndk_bindgen", crate_name: "binder_ndk_bindgen", @@ -125,6 +160,28 @@ rust_bindgen { min_sdk_version: "Tiramisu", } +rust_bindgen { + name: "libbinder_ndk_bindgen_on_trusty_mock", + crate_name: "binder_ndk_bindgen", + wrapper_src: "sys/BinderBindings.hpp", + source_stem: "bindings", + defaults: [ + "trusty_mock_defaults", + ], + + bindgen_flag_files: [ + // Unfortunately the only way to specify the rust_non_exhaustive enum + // style for a type is to make it the default + // and then specify constified enums for the enums we don't want + // rustified + "libbinder_ndk_bindgen_flags.txt", + ], + shared_libs: [ + "libbinder_ndk_on_trusty_mock", + "libc++", + ], +} + rust_test { name: "libbinder_rs-internal_test", crate_name: "binder", diff --git a/libs/binder/rust/src/lib.rs b/libs/binder/rust/src/lib.rs index 0540ed379b..0f9c58c0a2 100644 --- a/libs/binder/rust/src/lib.rs +++ b/libs/binder/rust/src/lib.rs @@ -100,9 +100,9 @@ mod error; mod native; mod parcel; mod proxy; -#[cfg(not(target_os = "trusty"))] +#[cfg(not(trusty))] mod service; -#[cfg(not(target_os = "trusty"))] +#[cfg(not(trusty))] mod state; use binder_ndk_sys as sys; @@ -112,13 +112,13 @@ pub use binder::{BinderFeatures, FromIBinder, IBinder, Interface, Strong, Weak}; pub use error::{ExceptionCode, IntoBinderResult, Status, StatusCode}; pub use parcel::{ParcelFileDescriptor, Parcelable, ParcelableHolder}; pub use proxy::{DeathRecipient, SpIBinder, WpIBinder}; -#[cfg(not(target_os = "trusty"))] +#[cfg(not(trusty))] pub use service::{ add_service, force_lazy_services_persist, get_declared_instances, get_interface, get_service, is_declared, is_handling_transaction, register_lazy_service, wait_for_interface, wait_for_service, LazyServiceGuard, }; -#[cfg(not(target_os = "trusty"))] +#[cfg(not(trusty))] pub use state::{ProcessState, ThreadState}; /// Binder result containing a [`Status`] on error. diff --git a/libs/binder/rust/src/native.rs b/libs/binder/rust/src/native.rs index da9d7dc948..c87cc94973 100644 --- a/libs/binder/rust/src/native.rs +++ b/libs/binder/rust/src/native.rs @@ -327,7 +327,7 @@ impl<T: Remotable> InterfaceClassMethods for Binder<T> { /// contains a `T` pointer in its user data. fd should be a non-owned file /// descriptor, and args must be an array of null-terminated string /// pointers with length num_args. - #[cfg(not(target_os = "trusty"))] + #[cfg(not(trusty))] unsafe extern "C" fn on_dump( binder: *mut sys::AIBinder, fd: i32, @@ -374,7 +374,7 @@ impl<T: Remotable> InterfaceClassMethods for Binder<T> { } /// Called to handle the `dump` transaction. - #[cfg(target_os = "trusty")] + #[cfg(trusty)] unsafe extern "C" fn on_dump( _binder: *mut sys::AIBinder, _fd: i32, diff --git a/libs/binder/rust/sys/lib.rs b/libs/binder/rust/sys/lib.rs index c5c847b874..5352473272 100644 --- a/libs/binder/rust/sys/lib.rs +++ b/libs/binder/rust/sys/lib.rs @@ -25,7 +25,9 @@ mod bindings { } // Trusty puts the full path to the auto-generated file in BINDGEN_INC_FILE -// and builds it with warnings-as-errors, so we need to use #[allow(bad_style)] +// and builds it with warnings-as-errors, so we need to use #[allow(bad_style)]. +// We need to use cfg(target_os) instead of cfg(trusty) here because of +// the difference between the two build systems, which we cannot mock. #[cfg(target_os = "trusty")] #[allow(bad_style)] mod bindings { diff --git a/libs/binder/tests/Android.bp b/libs/binder/tests/Android.bp index 424ff8448c..35002eb3c5 100644 --- a/libs/binder/tests/Android.bp +++ b/libs/binder/tests/Android.bp @@ -436,6 +436,7 @@ cc_test { required: [ "libbinder_on_trusty_mock", "libbinder_ndk_on_trusty_mock", + "libbinder_rs_on_trusty_mock", "binderRpcTestService_on_trusty_mock", "binderRpcTest_on_trusty_mock", ], diff --git a/libs/binder/trusty/rust/binder_ndk_sys/rules.mk b/libs/binder/trusty/rust/binder_ndk_sys/rules.mk index 672d9b75ec..2aaa061ddf 100644 --- a/libs/binder/trusty/rust/binder_ndk_sys/rules.mk +++ b/libs/binder/trusty/rust/binder_ndk_sys/rules.mk @@ -29,6 +29,10 @@ MODULE_LIBRARY_DEPS += \ $(LIBBINDER_DIR)/trusty/ndk \ trusty/user/base/lib/trusty-sys \ +MODULE_RUSTFLAGS += \ + --cfg 'android_vendor' \ + --cfg 'trusty' \ + MODULE_BINDGEN_SRC_HEADER := $(LIBBINDER_DIR)/rust/sys/BinderBindings.hpp # Add the flags from the flag file diff --git a/libs/binder/trusty/rust/rules.mk b/libs/binder/trusty/rust/rules.mk index d343f14240..c5e671a4f5 100644 --- a/libs/binder/trusty/rust/rules.mk +++ b/libs/binder/trusty/rust/rules.mk @@ -32,6 +32,7 @@ MODULE_LIBRARY_DEPS += \ MODULE_RUSTFLAGS += \ --cfg 'android_vendor' \ + --cfg 'trusty' \ # Trusty does not have `ProcessState`, so there are a few # doc links in `IBinder` that are still broken. |