Add libfieldnull static target.
Getting everything setup so jvmti agents can reach libbase can be
tricky. Get libfieldnull building statically.
Test: manual. Install agent
Change-Id: Id889636fd40bc39cca438bbb0d1e678dd0e1110f
diff --git a/tools/jvmti-agents/field-null-percent/Android.bp b/tools/jvmti-agents/field-null-percent/Android.bp
index 26bb1dc..52b4d89 100644
--- a/tools/jvmti-agents/field-null-percent/Android.bp
+++ b/tools/jvmti-agents/field-null-percent/Android.bp
@@ -16,18 +16,13 @@
// Build variants {target,host} x {debug,ndebug} x {32,64}
cc_defaults {
- name: "fieldnull-defaults",
- host_supported: true,
+ name: "fieldnull-base-defaults",
srcs: ["fieldnull.cc"],
defaults: ["art_defaults"],
// Note that this tool needs to be built for both 32-bit and 64-bit since it requires
// to be same ISA as what it is attached to.
compile_multilib: "both",
-
- shared_libs: [
- "libbase",
- ],
header_libs: [
"libopenjdkjvmti_headers",
],
@@ -42,6 +37,35 @@
symlink_preferred_arch: true,
}
+cc_defaults {
+ name: "fieldnull-defaults",
+ host_supported: true,
+ shared_libs: [
+ "libbase",
+ ],
+ defaults: ["fieldnull-base-defaults"],
+}
+
+cc_defaults {
+ name: "fieldnull-static-defaults",
+ host_supported: false,
+ defaults: ["fieldnull-base-defaults"],
+
+ shared_libs: [
+ "liblog",
+ ],
+ static_libs: [
+ "libbase_ndk",
+ ],
+ sdk_version: "current",
+ stl: "c++_static",
+}
+
+cc_library {
+ name: "libfieldnulls",
+ defaults: ["fieldnull-static-defaults"],
+}
+
art_cc_library {
name: "libfieldnull",
defaults: ["fieldnull-defaults"],
diff --git a/tools/jvmti-agents/field-null-percent/README.md b/tools/jvmti-agents/field-null-percent/README.md
index d8bc65d..c07c163 100644
--- a/tools/jvmti-agents/field-null-percent/README.md
+++ b/tools/jvmti-agents/field-null-percent/README.md
@@ -7,7 +7,7 @@
# Usage
### Build
-> `make libfieldnull`
+> `make libfieldnull libfieldnulls`
The libraries will be built for 32-bit, 64-bit, host and target. Below examples
assume you want to use the 64-bit version.
@@ -26,9 +26,9 @@
> `adb shell setenforce 0`
>
-> `adb push $ANDROID_PRODUCT_OUT/system/lib64/libfieldnull.so /data/local/tmp/`
+> `adb push $ANDROID_PRODUCT_OUT/system/lib64/libfieldnulls.so /data/local/tmp/`
>
-> `adb shell am start-activity --attach-agent '/data/local/tmp/libfieldnull.so=Ljava/lang/Class;.name:Ljava/lang/String;' some.debuggable.apps/.the.app.MainActivity`
+> `adb shell am start-activity --attach-agent '/data/local/tmp/libfieldnulls.so=Ljava/lang/Class;.name:Ljava/lang/String;' some.debuggable.apps/.the.app.MainActivity`
#### RI
> `java '-agentpath:libfieldnull.so=Lname/of/class;.nameOfField:Ltype/of/field;' -cp tmp/helloworld/classes helloworld`