1//
2// Copyright (C) 2016 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17// ART gtests.
18
19package {
20    // See: http://go/android-license-faq
21    // A large-scale-change added 'default_applicable_licenses' to import
22    // all of the 'license_kinds' from "art_license"
23    // to get the below license kinds:
24    //   SPDX-license-identifier-Apache-2.0
25    default_applicable_licenses: ["art_license"],
26    default_team: "trendy_team_art_performance",
27}
28
29// Properties common to `art_test_defaults` and `art_standalone_test_defaults`.
30cc_defaults {
31    name: "art_test_common_defaults",
32    defaults: ["art_defaults"],
33
34    // Override flags from art_defaults:
35    cflags: [
36        // gmock.h has incorrect unused markers.
37        "-Wno-used-but-marked-unused",
38        // gtest.h compares signed and unsigned.
39        "-Wno-sign-compare",
40        // gtest.h includes cxxabi.h which fails on this check.
41        "-Wno-deprecated-dynamic-exception-spec",
42    ],
43
44    target: {
45        darwin: {
46            enabled: false,
47        },
48        // This has to be duplicated for android and host to make sure it
49        // comes after the -Wframe-larger-than warnings inserted by art.go
50        // target-specific properties
51        android: {
52            cflags: ["-Wno-frame-larger-than="],
53        },
54        host: {
55            cflags: [
56                "-Wno-frame-larger-than=",
57                "-fsanitize-address-use-after-return=never",
58                "-Wno-unused-command-line-argument",
59            ],
60        },
61    },
62}
63
64cc_defaults {
65    name: "art_test_defaults",
66    defaults: [
67        "art_test_common_defaults",
68    ],
69    host_supported: true,
70    target: {
71        // The following set of relative_install_paths installs the library in a
72        // location that will be available as java.library.path in run tests.
73        android_arm: {
74            relative_install_path: "art/arm",
75        },
76        android_arm64: {
77            relative_install_path: "art/arm64",
78        },
79        android_riscv64: {
80            relative_install_path: "art/riscv64",
81        },
82        android_x86: {
83            relative_install_path: "art/x86",
84        },
85        android_x86_64: {
86            relative_install_path: "art/x86_64",
87        },
88        android: {
89            test_for: [
90                "com.android.art",
91                "com.android.art.debug",
92            ],
93        },
94    },
95    // Tests aren't generally included in any APEX, but this is necessary to
96    // avoid duplicate install rules for them by making them unavailable to platform.
97    apex_available: [
98        "com.android.art.debug",
99    ],
100}
101
102// Variant of art_test_defaults for test libraries that installs them in a
103// location which will be added to the default namespace, and hence also the
104// com_android_art namespace. That allows them to have shared_libs
105// dependencies on all ART internal libraries.
106//
107// Currently this only works for run tests where run-test-jar sets
108// LD_LIBRARY_PATH and NATIVELOADER_DEFAULT_NAMESPACE_LIBS.
109art_cc_defaults {
110    name: "art_test_internal_library_defaults",
111    defaults: ["art_test_defaults"],
112    target: {
113        android: {
114            test_for: [
115                "com.android.art",
116                "com.android.art.debug",
117            ],
118        },
119        android_arm: {
120            relative_install_path: "com.android.art/lib",
121        },
122        android_arm64: {
123            relative_install_path: "com.android.art/lib64",
124        },
125        android_riscv64: {
126            relative_install_path: "com.android.art/lib64",
127        },
128        android_x86: {
129            relative_install_path: "com.android.art/lib",
130        },
131        android_x86_64: {
132            relative_install_path: "com.android.art/lib64",
133        },
134    },
135}
136
137// Test configuration template for standalone ART gtests on target (not bundled with the ART APEX).
138filegroup {
139    name: "art-gtests-target-standalone-template",
140    srcs: ["art-gtests-target-standalone-template.xml"],
141}
142
143// Test configuration template for standalone ART gtests on target (not bundled with the ART APEX)
144// which are part of CTS.
145filegroup {
146    name: "art-gtests-target-standalone-cts-template",
147    srcs: ["art-gtests-target-standalone-cts-template.xml"],
148}
149
150// Test configuration template for standalone ART gtests run with a boot image on target (not
151// bundled with the ART APEX).
152filegroup {
153    name: "art-gtests-target-standalone-with-boot-image-template",
154    srcs: ["art-gtests-target-standalone-with-boot-image-template.xml"],
155}
156
157// Version script for `art_standalone_test_defaults`.
158filegroup {
159    name: "art-standalone-test-version",
160    srcs: ["art-standalone-test-version.map"],
161}
162
163// Version script for `art_standalone_gtest_defaults`. In particular, it adds
164// libsigchain's libc.so interceptors.
165filegroup {
166    name: "art-standalone-gtest-version",
167    srcs: ["art-standalone-gtest-version.map"],
168}
169
170// When soong builds the tests in a sandbox, the targets of symlinks
171// must be declared as inputs to soong modules that use them, or else
172// it will be a dangling symlink in the sandbox.
173filegroup {
174    name: "test_build_symlink_targets",
175    srcs: [
176        "jvmti-common/*.java",
177        "1953-pop-frame/src/art/SuspendEvents.java",
178        "1953-pop-frame/src/art/Test1953.java",
179        "993-breakpoints/src/art/Test993.java",
180        "988-method-trace/src/art/Test988.java",
181        "988-method-trace/src/art/Test988Intrinsics.java",
182    ],
183    visibility: [
184        "//art/test:__subpackages__",
185    ],
186}
187
188cc_library_static {
189    name: "standalone_test_lib_check",
190    srcs: ["standalone_test_lib_check.cc"],
191    static_libs: [
192        "libbase",
193        "libelf",
194        "libgmock",
195        "libgtest",
196    ],
197}
198
199// Defaults for tests that can run using atest against an ART APEX installed on
200// any supported platform. These tests can only depend on NDK libraries from
201// platform and exported module libraries. Any other libraries must be pushed
202// with the test or linked statically.
203art_cc_defaults {
204    name: "art_standalone_test_defaults",
205    defaults: [
206        "art_test_common_defaults",
207        "elfutils_transitive_defaults", // For libelf
208    ],
209    // Standalone ART gtests are only supported on device for now.
210    // TODO: Add support for host standalone ART gtests. Note that they should not differ much
211    // from the original ("non-standalone") host gtests, as the latter are not really bundled with
212    // the host ART APEX / artifacts (unlike their device counterparts); but as we plan to remove
213    // the ART gtests bundled with the ART APEX, we'll have to support the host case here
214    // eventually.
215    host_supported: false,
216    test_config_template: ":art-gtests-target-standalone-template",
217
218    // Support multilib variants (using different suffix per sub-architecture),
219    // which is needed on build targets with secondary architectures, as the
220    // CTS/MTS/etc test suite packaging logic flattens all test artifacts into a
221    // single `testcases` directory. Also, there is CI testing that expects
222    // 64-bit multilib test suites to work for 32-bit devices (b/233550842).
223    compile_multilib: "both",
224    multilib: {
225        lib32: {
226            suffix: "32",
227        },
228        lib64: {
229            suffix: "64",
230        },
231    },
232
233    min_sdk_version: "31", // Same as the ART APEX.
234
235    // Link libc++ statically to avoid needing the system libc++.so, which may
236    // be incompatible. The linker exports symbols from an executable that are
237    // referenced in the .dynsym tables of shared object dependencies, so use a
238    // version script to restrict exports. The version script is needed for
239    // hiding symbols from libc++ (either libc++_static.a or vaguely-linked
240    // symbols in other object files) and from other libraries, such as libbase.
241    stl: "libc++_static",
242    version_script: ":art-standalone-test-version",
243
244    // Make standalone tests check their own NEEDED dependencies for disallowed
245    // libraries. Add standalone_test_lib_check and its dependencies, except
246    // libgtest which is expected to be added by the tests.
247    whole_static_libs: [
248        "libbase",
249        "libelf",
250        "libgmock",
251        "standalone_test_lib_check",
252    ],
253}
254
255// Properties common to `art_gtest_defaults` and `art_standalone_gtest_defaults`.
256art_cc_defaults {
257    name: "art_gtest_common_defaults",
258    // These really are gtests, but the gtest library comes from `libart(d)-gtest.so`.
259    gtest: false,
260
261    header_libs: [
262        "libnativeloader-headers",
263        // The full libnativehelper library has wrappers for the JNI APIs (e.g.
264        // `JNI_CreateJavaVM`) that are implemented in libart(d), so it
265        // shouldn't be linked into the tests where libart(d) is linked
266        // statically.
267        "libnativehelper_header_only",
268    ],
269    target: {
270        android: {
271            shared_libs: [
272                // Dependencies of `libart(d)`, that are not included in *static_defaults.
273                "libdl_android",
274                "libstatspull",
275                "libstatssocket",
276                "heapprofd_client_api",
277            ],
278        },
279        host: {
280            cflags: [
281                "-fsanitize-address-use-after-return=never",
282                "-Wno-unused-command-line-argument",
283            ],
284        },
285        linux: {
286            ldflags: [
287                // Allow jni_compiler_test to find Java_MyClassNatives_bar
288                // within itself using dlopen(NULL, ...).
289                // Mac OS linker doesn't understand --export-dynamic.
290                "-Wl,--export-dynamic",
291                "-Wl,-u,Java_MyClassNatives_bar",
292                "-Wl,-u,Java_MyClassNatives_sbar",
293            ],
294            cflags: [
295                // gtest issue
296                "-Wno-used-but-marked-unused",
297                "-Wno-deprecated",
298                "-Wno-missing-noreturn",
299            ],
300        },
301        // Library search path needed for running host tests in CI (from testcases directory).
302        linux_glibc_x86: {
303            ldflags: [
304                "-Wl,-rpath,$ORIGIN/../../art_common/out/host/linux-x86/lib",
305                "-Wl,--enable-new-dtags",
306            ],
307        },
308        linux_glibc_x86_64: {
309            ldflags: [
310                "-Wl,-rpath,$ORIGIN/../../art_common/out/host/linux-x86/lib64",
311                "-Wl,--enable-new-dtags",
312            ],
313        },
314    },
315    static_libs: [
316        "libartbase-testing",
317        // `libsigchain` must be static linked into gtests, otherwise some tests fail under
318        // ASAN. ASAN init uses sigaction, which makes `libsigchain.so` initialize earlier than
319        // required and breaks `environ` variable in gtest.
320        // `libsigchain` is not whole-static-linked into `libart(d)-gtest`, because hiding its
321        // symbols with `--exclude-libs` breaks art_standalone_sigchain_tests.
322        "libsigchain",
323    ],
324}
325
326art_cc_defaults {
327    name: "art_gtest_defaults",
328    defaults: [
329        "art_test_defaults",
330        "art_gtest_common_defaults",
331        "art_debug_defaults",
332    ],
333    test_suites: ["art-host-tests"],
334    test_options: {
335        test_suite_tag: ["art-host-gtest"],
336    },
337    static_libs: [
338        "libartd-gtest",
339    ],
340    // Reduce test executable size by disabling automatic export of static lib symbols.
341    // Don't use --exclude-libs=ALL, because it breaks tests under ASAN by hiding __asan* symbols.
342    ldflags: [
343        "-Wl,--exclude-libs=libartd-gtest.a",
344    ],
345}
346
347art_cc_defaults {
348    name: "art_standalone_gtest_defaults",
349    defaults: [
350        // Note: We don't include "art_debug_defaults" here, as standalone ART
351        // gtests link with the "non-d" versions of the libraries contained in
352        // the ART APEX, so that they can be used with all ART APEX flavors
353        // (including the Release ART APEX).
354        "art_standalone_test_defaults",
355        "art_gtest_common_defaults",
356    ],
357    test_suites: [
358        "general-tests",
359        "mts-art",
360    ],
361    // Support multilib variants (using different suffix per sub-architecture), which is needed on
362    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
363    // all test artifacts into a single `testcases` directory.
364    compile_multilib: "both",
365    multilib: {
366        lib32: {
367            suffix: "32",
368        },
369        lib64: {
370            suffix: "64",
371        },
372    },
373    static_libs: [
374        "libart-gtest",
375    ],
376    version_script: ":art-standalone-gtest-version",
377}
378
379art_cc_defaults {
380    name: "libart-gtest-defaults",
381    defaults: [
382        "art_defaults",
383    ],
384    host_supported: true,
385    shared_libs: [
386        "liblog",
387    ],
388    static_libs: [
389        "libgtest_isolated",
390    ],
391    target: {
392        host: {
393            cflags: [
394                "-fsanitize-address-use-after-return=never",
395                "-Wno-unused-command-line-argument",
396            ],
397        },
398        android32: {
399            cflags: ["-DART_TARGET_NATIVETEST_DIR=/data/nativetest/art"],
400        },
401        android64: {
402            cflags: ["-DART_TARGET_NATIVETEST_DIR=/data/nativetest64/art"],
403        },
404        linux: {
405            cflags: [
406                // gtest issue
407                "-Wno-used-but-marked-unused",
408                "-Wno-deprecated",
409                "-Wno-missing-noreturn",
410            ],
411        },
412        darwin: {
413            enabled: false,
414        },
415    },
416}
417
418// Properties common to `libart-gtest` and `libartd-gtest`.
419art_cc_defaults {
420    name: "libart-gtest-common",
421    defaults: [
422        "art_defaults",
423    ],
424    host_supported: true,
425    srcs: [
426        "common/gtest_main.cc",
427    ],
428    whole_static_libs: [
429        "libgtest_isolated",
430    ],
431    shared_libs: [
432        "liblog",
433    ],
434    target: {
435        host: {
436            cflags: [
437                "-fsanitize-address-use-after-return=never",
438                "-Wno-unused-command-line-argument",
439            ],
440        },
441        darwin: {
442            enabled: false,
443        },
444    },
445}
446
447art_cc_library_static {
448    name: "libart-gtest",
449    defaults: [
450        "libart-gtest-common",
451    ],
452    whole_static_libs: [
453        "libart-compiler-gtest",
454        "libart-runtime-gtest",
455        "libartbase-art-gtest",
456    ],
457}
458
459art_cc_library_static {
460    name: "libartd-gtest",
461    defaults: [
462        "art_debug_defaults",
463        "libart-gtest-common",
464    ],
465    whole_static_libs: [
466        "libartd-compiler-gtest",
467        "libartd-runtime-gtest",
468        "libartbased-art-gtest",
469    ],
470}
471
472// ART run-tests.
473
474// Test configuration template for ART run-tests on target expected to run
475// successfully, and as such tagged as part of TradeFed's `art-target-run-test`
476// test suite via the `test-suite-tag`.
477filegroup {
478    name: "art-run-test-target-template",
479    srcs: [
480        "art-run-test-target-template.xml",
481    ],
482}
483
484// Same as `art-run-test-target-template`, but with a longer timeout.
485filegroup {
486    name: "art-run-test-target-slow-template",
487    srcs: [
488        "art-run-test-target-slow-template.xml",
489    ],
490}
491
492// Same as `art-run-test-target-template`, but contains additional
493// options to also make the test part of ART CTS.
494filegroup {
495    name: "art-run-test-target-cts-template",
496    srcs: [
497        "art-run-test-target-cts-template.xml",
498    ],
499}
500
501// Test configuration template for ART run-tests on target expected to run
502// successfully, and as such *not* tagged as part of TradeFed's
503// `art-target-run-test` test suite via the `test-suite-tag`. This is as
504// temporary measure, while we add proper support for all ART (target) run-tests
505// to TradeFed (b/147818031).
506filegroup {
507    name: "art-run-test-target-no-test-suite-tag-template",
508    srcs: [
509        "art-run-test-target-no-test-suite-tag-template.xml",
510    ],
511}
512
513java_defaults {
514    name: "art-run-test-defaults",
515
516    // Compile against the "core" bootclasspath, not the "default" one (current
517    // platform) -- use the same settings as Libcore tests (see e.g. the
518    // definition of module `core-tests` in libcore/JavaLibrary.bp).
519    //
520    // Note: The legacy way to build ART run-tests uses the
521    // `javac_with_bootclasspath` function defined in `test/etc/default-build`.
522    // See also `tools/javac-helper.sh`.
523    sdk_version: "none",
524    system_modules: "core-all-system-modules",
525
526    // Some ART run-tests contain constructs which break ErrorProne checks;
527    // disable `errorprone` builds.
528    errorprone: {
529        enabled: false,
530    },
531    test_suites: [
532        "general-tests",
533        "mts-art",
534    ],
535    host_required: [
536        "art-run-test-checker",
537    ],
538    min_sdk_version: "31",
539
540    compile_data: [
541        ":test_build_symlink_targets",
542    ],
543}
544
545art_cc_test_library {
546    name: "libarttest",
547    defaults: ["libarttest-defaults"],
548    shared_libs: [
549        "libart",
550        "libdexfile",
551        "libprofile",
552        "libartbase",
553    ],
554}
555
556art_cc_test_library {
557    name: "libarttestd",
558    defaults: [
559        "art_debug_defaults",
560        "libarttest-defaults",
561    ],
562    shared_libs: [
563        "libartd",
564        "libdexfiled",
565        "libprofiled",
566        "libartbased",
567    ],
568}
569
570art_cc_defaults {
571    name: "libnativebridgetest-defaults",
572    defaults: ["art_test_defaults"],
573    header_libs: ["libnativebridge-headers"],
574    srcs: ["115-native-bridge/nativebridge.cc"],
575}
576
577art_cc_test_library {
578    name: "libnativebridgetest",
579    shared_libs: ["libart"],
580    defaults: [
581        "libnativebridgetest-defaults",
582    ],
583}
584
585art_cc_test_library {
586    name: "libnativebridgetestd",
587    shared_libs: ["libartd"],
588    defaults: [
589        "libnativebridgetest-defaults",
590        "art_debug_defaults",
591    ],
592}
593
594// ART JVMTI run-tests.
595
596cc_defaults {
597    name: "libartagent-defaults",
598    defaults: ["art_test_internal_library_defaults"],
599    shared_libs: [
600        "libbase",
601        "liblog",
602        "libnativehelper",
603    ],
604}
605
606art_cc_test_library {
607    name: "libartagent",
608    srcs: ["900-hello-plugin/load_unload.cc"],
609    defaults: ["libartagent-defaults"],
610    shared_libs: [
611        "libart",
612        "libdexfile",
613        "libprofile",
614        "libartbase",
615    ],
616}
617
618art_cc_test_library {
619    name: "libartagentd",
620    srcs: ["900-hello-plugin/load_unload.cc"],
621    defaults: [
622        "art_debug_defaults",
623        "libartagent-defaults",
624    ],
625    shared_libs: [
626        "libartd",
627        "libdexfiled",
628        "libprofiled",
629        "libartbased",
630    ],
631}
632
633art_cc_defaults {
634    name: "libtiagent-base-defaults",
635    defaults: ["art_test_internal_library_defaults"],
636    srcs: [
637        // These are the ART-independent parts.
638        "ti-agent/agent_common.cc",
639        "ti-agent/agent_startup.cc",
640        "ti-agent/jni_binder.cc",
641        "ti-agent/jvmti_helper.cc",
642        "ti-agent/test_env.cc",
643        "ti-agent/breakpoint_helper.cc",
644        "ti-agent/common_helper.cc",
645        "ti-agent/early_return_helper.cc",
646        "ti-agent/frame_pop_helper.cc",
647        "ti-agent/locals_helper.cc",
648        "ti-agent/monitors_helper.cc",
649        "ti-agent/redefinition_helper.cc",
650        "ti-agent/suspension_helper.cc",
651        "ti-agent/suspend_event_helper.cc",
652        "ti-agent/stack_trace_helper.cc",
653        "ti-agent/threads_helper.cc",
654        "ti-agent/trace_helper.cc",
655        "ti-agent/exceptions_helper.cc",
656        // This is the list of non-special OnLoad things and excludes BCI and anything that depends
657        // on ART internals.
658        "903-hello-tagging/tagging.cc",
659        "904-object-allocation/tracking.cc",
660        "905-object-free/tracking_free.cc",
661        "906-iterate-heap/iterate_heap.cc",
662        "907-get-loaded-classes/get_loaded_classes.cc",
663        "908-gc-start-finish/gc_callbacks.cc",
664        "910-methods/methods.cc",
665        "911-get-stack-trace/stack_trace.cc",
666        "912-classes/classes.cc",
667        "913-heaps/heaps.cc",
668        "918-fields/fields.cc",
669        "920-objects/objects.cc",
670        "922-properties/properties.cc",
671        "923-monitors/monitors.cc",
672        "924-threads/threads.cc",
673        "925-threadgroups/threadgroups.cc",
674        "927-timers/timers.cc",
675        "928-jni-table/jni_table.cc",
676        "929-search/search.cc",
677        "931-agent-thread/agent_thread.cc",
678        "933-misc-events/misc_events.cc",
679        "945-obsolete-native/obsolete_native.cc",
680        "983-source-transform-verify/source_transform.cc",
681        "984-obsolete-invoke/obsolete_invoke.cc",
682        "986-native-method-bind/native_bind.cc",
683        "987-agent-bind/agent_bind.cc",
684        "988-method-trace/trace_fib.cc",
685        "989-method-trace-throw/method_trace.cc",
686        "991-field-trace-2/field_trace.cc",
687        "992-source-data/source_file.cc",
688        "993-breakpoints/breakpoints.cc",
689        "993-breakpoints-non-debuggable/onload.cc",
690        "996-breakpoint-obsolete/obsolete_breakpoints.cc",
691        "1900-track-alloc/alloc.cc",
692        "1901-get-bytecodes/bytecodes.cc",
693        "1905-suspend-native/native_suspend.cc",
694        "1908-suspend-native-resume-self/native_suspend_resume.cc",
695        "1909-per-agent-tls/agent_tls.cc",
696        "1914-get-local-instance/local_instance.cc",
697        "1919-vminit-thread-start-timing/vminit.cc",
698        "1920-suspend-native-monitor/native_suspend_monitor.cc",
699        "1921-suspend-native-recursive-monitor/native_suspend_recursive_monitor.cc",
700        "1922-owned-monitors-info/owned_monitors.cc",
701        "1924-frame-pop-toggle/frame_pop_toggle.cc",
702        "1926-missed-frame-pop/frame_pop_missed.cc",
703        "1927-exception-event/exception_event.cc",
704        "1930-monitor-info/monitor.cc",
705        "1932-monitor-events-misc/monitor_misc.cc",
706        "1934-jvmti-signal-thread/signal_threads.cc",
707        "1939-proxy-frames/local_instance.cc",
708        "1940-ddms-ext/ddm_ext.cc",
709        "1941-dispose-stress/dispose_stress.cc",
710        "1942-suspend-raw-monitor-exit/native_suspend_monitor.cc",
711        "1943-suspend-raw-monitor-wait/native_suspend_monitor.cc",
712        "1946-list-descriptors/descriptors.cc",
713        "1950-unprepared-transform/unprepared_transform.cc",
714        "1951-monitor-enter-no-suspend/raw_monitor.cc",
715        "1953-pop-frame/pop_frame.cc",
716        "1957-error-ext/lasterror.cc",
717        // TODO Renumber
718        "1962-multi-thread-events/multi_thread_events.cc",
719        "1963-add-to-dex-classloader-in-memory/add_to_loader.cc",
720        "1968-force-early-return/force_early_return.cc",
721        "1969-force-early-return-void/force_early_return_void.cc",
722        "1970-force-early-return-long/force_early_return_long.cc",
723        "1974-resize-array/resize_array.cc",
724        "1975-hello-structural-transformation/structural_transform.cc",
725        "1976-hello-structural-static-methods/structural_transform_methods.cc",
726        "2005-pause-all-redefine-multithreaded/pause-all.cc",
727        "2009-structural-local-ref/local-ref.cc",
728        "2035-structural-native-method/structural-native.cc",
729        "2243-single-step-default/single_step_helper.cc",
730    ],
731    // Use NDK-compatible headers for ctstiagent.
732    header_libs: [
733        "libopenjdkjvmti_headers",
734    ],
735    local_include_dirs: ["ti-agent"],
736}
737
738art_cc_defaults {
739    name: "libtiagent-defaults",
740    defaults: [
741        "libtiagent-base-defaults",
742        "libartagent-defaults",
743    ],
744    srcs: [
745        // This is to get the IsInterpreted native method.
746        "common/stack_inspect.cc",
747        "common/runtime_state.cc",
748        "ti-agent/common_load.cc",
749        // This includes the remaining test functions. We should try to refactor things to
750        // make this list smaller.
751        "901-hello-ti-agent/basics.cc",
752        "909-attach-agent/attach.cc",
753        "912-classes/classes_art.cc",
754        "936-search-onload/search_onload.cc",
755        "980-redefine-object/redef_object.cc",
756        "983-source-transform-verify/source_transform_art.cc",
757        "993-breakpoints-non-debuggable/native_attach_agent.cc",
758        // "1952-pop-frame-jit/pop_frame.cc",
759        "1959-redefine-object-instrument/fake_redef_object.cc",
760        "1960-obsolete-jit-multithread-native/native_say_hi.cc",
761        "1964-add-to-dex-classloader-file/add_to_loader.cc",
762        "1963-add-to-dex-classloader-in-memory/check_memfd_create.cc",
763        "2012-structural-redefinition-failures-jni-id/set-jni-id-used.cc",
764        "2031-zygote-compiled-frame-deopt/native-wait.cc",
765        "2038-hiddenapi-jvmti-ext/hiddenapi_ext.cc",
766    ],
767    static_libs: [
768        "libz",
769        "slicer_no_rtti",
770    ],
771}
772
773art_cc_test_library {
774    name: "libtiagent",
775    defaults: ["libtiagent-defaults"],
776    shared_libs: [
777        "libart",
778        "libdexfile",
779        "libprofile",
780        "libartbase",
781    ],
782}
783
784art_cc_test_library {
785    name: "libtiagentd",
786    defaults: [
787        "art_debug_defaults",
788        "libtiagent-defaults",
789    ],
790    shared_libs: [
791        "libartd",
792        "libdexfiled",
793        "libprofiled",
794        "libartbased",
795    ],
796}
797
798cc_library_static {
799    name: "libctstiagent",
800    defaults: ["libtiagent-base-defaults"],
801
802    // TODO(b/187288515): Providing this as a prebuilt introduces an issue with
803    // sdk_version propagation. Temporarily use the source library instead,
804    // which means we need to override the logic inherited from art_defaults and
805    // art_test_internal_library_defaults that disables sources when not
806    // building ART from sources.
807    enabled: true,
808
809    visibility: [
810        "//cts/hostsidetests/jvmti:__subpackages__",
811    ],
812    host_supported: false,
813    srcs: [
814        "983-source-transform-verify/source_transform_slicer.cc",
815    ],
816    whole_static_libs: [
817        "slicer_ndk_no_rtti",
818    ],
819    static_libs: [
820        "libbase_ndk",
821    ],
822    shared_libs: [
823        "libz", // for slicer (using adler32).
824    ],
825    sdk_version: "current",
826    stl: "c++_static",
827    header_libs: ["jni_headers"],
828    export_include_dirs: ["ti-agent"],
829}
830
831art_cc_defaults {
832    name: "libtistress-srcs",
833    defaults: ["libartagent-defaults"],
834    srcs: [
835        "ti-stress/stress.cc",
836    ],
837    header_libs: ["libopenjdkjvmti_headers"],
838}
839
840art_cc_defaults {
841    name: "libtistress-defaults",
842    defaults: ["libtistress-srcs"],
843    shared_libs: [
844        "slicer_no_rtti",
845        "libz", // for slicer (using adler32).
846    ],
847}
848
849art_cc_test_library {
850    name: "libtistress",
851    defaults: ["libtistress-defaults"],
852    shared_libs: [
853        "libartbase",
854        "libz",
855    ],
856}
857
858art_cc_test_library {
859    name: "libtistressd",
860    defaults: [
861        "art_debug_defaults",
862        "libtistress-defaults",
863    ],
864    shared_libs: [
865        "libartbased",
866        "libz",
867    ],
868}
869
870art_cc_defaults {
871    name: "libtistress-shared-defaults",
872    defaults: [
873        "libtistress-srcs",
874    ],
875    static_libs: ["slicer_no_rtti"],
876}
877
878art_cc_test_library {
879    name: "libtistresss",
880    defaults: ["libtistress-shared-defaults"],
881    shared_libs: [
882        "libartbase",
883        "libz",
884    ],
885}
886
887art_cc_test_library {
888    name: "libtistressds",
889    defaults: [
890        "libtistress-shared-defaults",
891    ],
892    shared_libs: [
893        "libartbased",
894        "libz",
895    ],
896}
897
898cc_defaults {
899    name: "libarttest-defaults",
900    defaults: ["art_test_internal_library_defaults"],
901    srcs: [
902        "004-JniTest/jni_test.cc",
903        "004-ReferenceMap/stack_walk_refmap_jni.cc",
904        "004-SignalTest/signaltest.cc",
905        "004-StackWalk/stack_walk_jni.cc",
906        "004-ThreadStress/thread_stress.cc",
907        "004-UnsafeTest/unsafe_test.cc",
908        "044-proxy/native_proxy.cc",
909        "051-thread/thread_test.cc",
910        "1337-gc-coverage/gc_coverage.cc",
911        "136-daemon-jni-shutdown/daemon_jni_shutdown.cc",
912        "137-cfi/cfi.cc",
913        "139-register-natives/regnative.cc",
914        "141-class-unload/jni_unload.cc",
915        "148-multithread-gc-annotations/gc_coverage.cc",
916        "149-suspend-all-stress/suspend_all.cc",
917        "154-gc-loop/heap_interface.cc",
918        "167-visit-locks/visit_locks.cc",
919        "169-threadgroup-jni/jni_daemon_thread.cc",
920        "172-app-image-twice/debug_print_class.cc",
921        "177-visibly-initialized-deadlock/visibly_initialized.cc",
922        "178-app-image-native-method/native_methods.cc",
923        "179-nonvirtual-jni/nonvirtual-call.cc",
924        "1945-proxy-method-arguments/get_args.cc",
925        "203-multi-checkpoint/multi_checkpoint.cc",
926        "305-other-fault-handler/fault_handler.cc",
927        "454-get-vreg/get_vreg_jni.cc",
928        "457-regs/regs_jni.cc",
929        "461-get-reference-vreg/get_reference_vreg_jni.cc",
930        "466-get-live-vreg/get_live_vreg_jni.cc",
931        "497-inlining-and-class-loader/clear_dex_cache.cc",
932        "543-env-long-ref/env_long_ref.cc",
933        "566-polymorphic-inlining/polymorphic_inline.cc",
934        "570-checker-osr/osr.cc",
935        "595-profile-saving/profile-saving.cc",
936        "596-app-images/app_images.cc",
937        "596-monitor-inflation/monitor_inflation.cc",
938        "597-deopt-new-string/deopt.cc",
939        "616-cha-unloading/cha_unload.cc",
940        "626-const-class-linking/clear_dex_cache_types.cc",
941        "642-fp-callees/fp_callees.cc",
942        "647-jni-get-field-id/get_field_id.cc",
943        "656-annotation-lookup-generic-jni/test.cc",
944        "661-oat-writer-layout/oat_writer_layout.cc",
945        "664-aget-verifier/aget-verifier.cc",
946        "667-jit-jni-stub/jit_jni_stub_test.cc",
947        "674-hiddenapi/hiddenapi.cc",
948        "692-vdex-inmem-loader/vdex_inmem_loader.cc",
949        "720-thread-priority/thread_priority.cc",
950        "800-smali/jni.cc",
951        "817-hiddenapi/test_native.cc",
952        "855-native/throws_exception.cc",
953        "909-attach-agent/disallow_debugging.cc",
954        "993-breakpoints-non-debuggable/native_attach_agent.cc",
955        "1001-app-image-regions/app_image_regions.cc",
956        "1002-notify-startup/startup_interface.cc",
957        "1947-breakpoint-redefine-deopt/check_deopt.cc",
958        "1972-jni-id-swap-indices/jni_id.cc",
959        "1985-structural-redefine-stack-scope/stack_scope.cc",
960        "2011-stack-walk-concurrent-instrument/stack_walk_concurrent.cc",
961        "2031-zygote-compiled-frame-deopt/native-wait.cc",
962        "2033-shutdown-mechanics/native_shutdown.cc",
963        "2036-jni-filechannel/jni_filechannel.cc",
964        "2037-thread-name-inherit/thread_name_inherit.cc",
965        "2040-huge-native-alloc/huge_native_buf.cc",
966        "2048-bad-native-registry/native_finalizer.cc",
967        "2235-JdkUnsafeTest/unsafe_test.cc",
968        "2246-trace-v2/dump_trace.cc",
969        "2262-miranda-methods/jni_invoke.cc",
970        "2270-mh-internal-hiddenapi-use/mh-internal-hidden-api.cc",
971        "common/runtime_state.cc",
972        "common/stack_inspect.cc",
973    ],
974    shared_libs: [
975        "libbase",
976        "liblog",
977        "libnativehelper",
978        "libunwindstack",
979    ],
980}
981
982java_library {
983    name: "art_cts_jvmti_test_library",
984    visibility: [
985        "//art:__subpackages__",
986        "//cts/hostsidetests/jvmti:__subpackages__",
987    ],
988    javacflags: ["-g"],
989    srcs: [
990        // shim classes. We use one that exposes the common functionality.
991        "jvmti-common/Redefinition.java",
992        "jvmti-common/Main.java",
993        "jvmti-common/Trace.java",
994        "jvmti-common/Breakpoint.java",
995        "jvmti-common/Suspension.java",
996        "jvmti-common/Locals.java",
997        "jvmti-common/StackTrace.java",
998        "jvmti-common/FramePop.java",
999        "jvmti-common/Exceptions.java",
1000        "jvmti-common/Monitors.java",
1001        "jvmti-common/NonStandardExit.java",
1002        "jvmti-common/Threads.java",
1003        "jvmti-common/SuspendEvents.java",
1004
1005        // Actual test classes.
1006        "901-hello-ti-agent/src/art/Test901.java",
1007        "902-hello-transformation/src/art/Test902.java",
1008        "903-hello-tagging/src/art/Test903.java",
1009        "904-object-allocation/src/art/Test904.java",
1010        "905-object-free/src/art/Test905.java",
1011        "906-iterate-heap/src/art/Test906.java",
1012        "907-get-loaded-classes/src/art/Test907.java",
1013        "907-get-loaded-classes/src/art/Cerr.java",
1014        "908-gc-start-finish/src/art/Test908.java",
1015        "910-methods/src/art/Test910.java",
1016        "911-get-stack-trace/src/art/Test911.java",
1017        "911-get-stack-trace/src/art/AllTraces.java",
1018        "911-get-stack-trace/src/art/ControlData.java",
1019        "911-get-stack-trace/src/art/Frames.java",
1020        "911-get-stack-trace/src/art/OtherThread.java",
1021        "911-get-stack-trace/src/art/PrintThread.java",
1022        "911-get-stack-trace/src/art/Recurse.java",
1023        "911-get-stack-trace/src/art/SameThread.java",
1024        "911-get-stack-trace/src/art/ThreadListTraces.java",
1025        "912-classes/src-art/art/Test912.java",
1026        "912-classes/src-art/art/DexData.java",
1027        "913-heaps/src/art/Test913.java",
1028        "914-hello-obsolescence/src/art/Test914.java",
1029        "915-obsolete-2/src/art/Test915.java",
1030        "917-fields-transformation/src/art/Test917.java",
1031        "918-fields/src/art/Test918.java",
1032        "919-obsolete-fields/src/art/Test919.java",
1033        "920-objects/src/art/Test920.java",
1034        "922-properties/src/art/Test922.java",
1035        "923-monitors/src/art/Test923.java",
1036        "924-threads/src/art/Test924.java",
1037        "925-threadgroups/src/art/Test925.java",
1038        "926-multi-obsolescence/src/art/Test926.java",
1039        "927-timers/src/art/Test927.java",
1040        "928-jni-table/src/art/Test928.java",
1041        "930-hello-retransform/src/art/Test930.java",
1042        "931-agent-thread/src/art/Test931.java",
1043        "932-transform-saves/src/art/Test932.java",
1044        "933-misc-events/src/art/Test933.java",
1045        "940-recursive-obsolete/src/art/Test940.java",
1046        "942-private-recursive/src/art/Test942.java",
1047        "944-transform-classloaders/src/art/Test944.java",
1048        "945-obsolete-native/src/art/Test945.java",
1049        "947-reflect-method/src/art/Test947.java",
1050        "951-threaded-obsolete/src/art/Test951.java",
1051        "982-ok-no-retransform/src/art/Test982.java",
1052        "983-source-transform-verify/src/art/Test983.java",
1053        "984-obsolete-invoke/src/art/Test984.java",
1054        "985-re-obsolete/src/art/Test985.java",
1055        "986-native-method-bind/src/art/Test986.java",
1056        "988-method-trace/src/art/Test988.java",
1057        "988-method-trace/src/art/Test988Intrinsics.java",
1058        "989-method-trace-throw/src/art/Test989.java",
1059        "990-field-trace/src/art/Test990.java",
1060        "991-field-trace-2/src/art/Test991.java",
1061        "992-source-data/src/art/Test992.java",
1062        "992-source-data/src/art/Target2.java",
1063        "993-breakpoints/src/art/Test993.java",
1064        "993-breakpoints-non-debuggable/src/art/Test993AttachAgent.java",
1065        "994-breakpoint-line/src/art/Test994.java",
1066        "995-breakpoints-throw/src/art/Test995.java",
1067        "996-breakpoint-obsolete/src/art/Test996.java",
1068        "997-single-step/src/art/Test997.java",
1069        "1900-track-alloc/src/art/Test1900.java",
1070        "1901-get-bytecodes/src/art/Test1901.java",
1071        "1902-suspend/src/art/Test1902.java",
1072        "1903-suspend-self/src/art/Test1903.java",
1073        "1904-double-suspend/src/art/Test1904.java",
1074        "1906-suspend-list-me-first/src/art/Test1906.java",
1075        "1907-suspend-list-self-twice/src/art/Test1907.java",
1076        "1908-suspend-native-resume-self/src/art/Test1908.java",
1077        "1909-per-agent-tls/src/art/Test1909.java",
1078        "1910-transform-with-default/src/art/Test1910.java",
1079        "1911-get-local-var-table/src/art/Test1911.java",
1080        "1912-get-set-local-primitive/src/art/Test1912.java",
1081        "1913-get-set-local-objects/src/art/Test1913.java",
1082        "1914-get-local-instance/src/art/Test1914.java",
1083        "1915-get-set-local-current-thread/src/art/Test1915.java",
1084        "1916-get-set-current-frame/src/art/Test1916.java",
1085        "1917-get-stack-frame/src/art/Test1917.java",
1086        "1920-suspend-native-monitor/src/art/Test1920.java",
1087        "1921-suspend-native-recursive-monitor/src/art/Test1921.java",
1088        "1922-owned-monitors-info/src/art/Test1922.java",
1089        "1923-frame-pop/src/art/Test1923.java",
1090        "1924-frame-pop-toggle/src/art/Test1924.java",
1091        "1925-self-frame-pop/src/art/Test1925.java",
1092        "1926-missed-frame-pop/src/art/Test1926.java",
1093        "1927-exception-event/src/art/Test1927.java",
1094        "1928-exception-event-exception/src/art/Test1928.java",
1095        "1930-monitor-info/src/art/Test1930.java",
1096        "1931-monitor-events/src/art/Test1931.java",
1097        "1932-monitor-events-misc/src/art/Test1932.java",
1098        "1933-monitor-current-contended/src/art/Test1933.java",
1099        "1934-jvmti-signal-thread/src/art/Test1934.java",
1100        "1936-thread-end-events/src/art/Test1936.java",
1101        "1937-transform-soft-fail/src/art/Test1937.java",
1102        "1939-proxy-frames/src/art/Test1939.java",
1103        "1940-ddms-ext/src-art/art/Test1940.java",
1104        "1941-dispose-stress/src/art/Test1941.java",
1105        "1942-suspend-raw-monitor-exit/src/art/Test1942.java",
1106        "1943-suspend-raw-monitor-wait/src/art/Test1943.java",
1107        "1953-pop-frame/src/art/Test1953.java",
1108        "1958-transform-try-jit/src/art/Test1958.java",
1109        "1962-multi-thread-events/src/art/Test1962.java",
1110        "1963-add-to-dex-classloader-in-memory/src/art/Test1963.java",
1111        "1967-get-set-local-bad-slot/src/art/Test1967.java",
1112        "1968-force-early-return/src/art/Test1968.java",
1113        "1969-force-early-return-void/src/art/Test1969.java",
1114        "1970-force-early-return-long/src/art/Test1970.java",
1115        "1971-multi-force-early-return/src/art/Test1971.java",
1116        "1974-resize-array/src/art/Test1974.java",
1117        "1975-hello-structural-transformation/src/art/Test1975.java",
1118        "1975-hello-structural-transformation/src/art/Transform1975.java",
1119        "1976-hello-structural-static-methods/src/art/Test1976.java",
1120        "1976-hello-structural-static-methods/src/art/Transform1976.java",
1121        "1977-hello-structural-obsolescence/src/art/Test1977.java",
1122        "1978-regular-obsolete-then-structural-obsolescence/src/art/Test1978.java",
1123        "1979-threaded-structural-transformation/src/art/Test1979.java",
1124        "1981-structural-redef-private-method-handles/src/art/Test1981.java",
1125        // TODO Requires VarHandles to be un-@hide. See b/64382372
1126        // "1981-structural-redef-private-method-handles/src/art/Test1981_Varhandles.java",
1127        "1982-no-virtuals-structural-redefinition/src/art/Test1982.java",
1128        "1983-structural-redefinition-failures/src/art/Test1983.java",
1129        "1984-structural-redefine-field-trace/src/art/Test1984.java",
1130        "1988-multi-structural-redefine/src/art/Test1988.java",
1131        "1989-transform-bad-monitor/src/art/Test1989.java",
1132        "1990-structural-bad-verify/src/art/Test1990.java",
1133        "1991-hello-structural-retransform/src/art/Test1991.java",
1134        "1992-retransform-no-such-field/src/art/Test1992.java",
1135        "1994-final-virtual-structural/src/art/Test1994.java",
1136        "1995-final-virtual-structural-multithread/src/art/Test1995.java",
1137        "1996-final-override-virtual-structural/src/art/Test1996.java",
1138        "1997-structural-shadow-method/src/art/Test1997.java",
1139        "1998-structural-shadow-field/src/art/Test1998.java",
1140        "1999-virtual-structural/src/art/Test1999.java",
1141        "2001-virtual-structural-multithread/src-art/art/Test2001.java",
1142        "2002-virtual-structural-initializing/src-art/art/Test2002.java",
1143        "2003-double-virtual-structural/src/art/Test2003.java",
1144        "2004-double-virtual-structural-abstract/src/art/Test2004.java",
1145        "2005-pause-all-redefine-multithreaded/src/art/Test2005.java",
1146        "2006-virtual-structural-finalizing/src-art/art/Test2006.java",
1147        "2007-virtual-structural-finalizable/src-art/art/Test2007.java",
1148    ],
1149    sdk_version: "core_platform",
1150    // Make sure that this will be added to the sdk snapshot for S.
1151    min_sdk_version: "S",
1152    // Some ART run-tests contain constructs which break ErrorProne checks;
1153    // disable `errorprone` builds.
1154    errorprone: {
1155        enabled: false,
1156    },
1157}
1158
1159// CTS test runner in cts/hostsidetests/jvmti looks for an expected test
1160// result for the test NN in the file results.NN.expected.txt while in the
1161// source tree each expected test result is in the NN-xxxx/expected-stdout.txt.
1162// Copy+rename them them to a temporary directory and them zip them.
1163java_genrule {
1164    name: "expected_cts_outputs_gen",
1165    srcs: [
1166        "901-hello-ti-agent/expected-stdout.txt",
1167        "902-hello-transformation/expected-stdout.txt",
1168        "903-hello-tagging/expected-stdout.txt",
1169        "904-object-allocation/expected-stdout.txt",
1170        "905-object-free/expected-stdout.txt",
1171        "906-iterate-heap/expected-stdout.txt",
1172        "907-get-loaded-classes/expected-stdout.txt",
1173        "908-gc-start-finish/expected-stdout.txt",
1174        "910-methods/expected-stdout.txt",
1175        "911-get-stack-trace/expected-cts-version.txt",
1176        "912-classes/expected-stdout.txt",
1177        "913-heaps/expected-stdout.txt",
1178        "914-hello-obsolescence/expected-stdout.txt",
1179        "915-obsolete-2/expected-stdout.txt",
1180        "917-fields-transformation/expected-stdout.txt",
1181        "918-fields/expected-stdout.txt",
1182        "919-obsolete-fields/expected-stdout.txt",
1183        "920-objects/expected-stdout.txt",
1184        "922-properties/expected-stdout.txt",
1185        "923-monitors/expected-stdout.txt",
1186        "924-threads/expected-stdout.txt",
1187        "925-threadgroups/expected-stdout.txt",
1188        "926-multi-obsolescence/expected-stdout.txt",
1189        "927-timers/expected-stdout.txt",
1190        "928-jni-table/expected-stdout.txt",
1191        "930-hello-retransform/expected-stdout.txt",
1192        "931-agent-thread/expected-stdout.txt",
1193        "932-transform-saves/expected-stdout.txt",
1194        "933-misc-events/expected-stdout.txt",
1195        "940-recursive-obsolete/expected-stdout.txt",
1196        "942-private-recursive/expected-stdout.txt",
1197        "944-transform-classloaders/expected-stdout.txt",
1198        "945-obsolete-native/expected-stdout.txt",
1199        "947-reflect-method/expected-stdout.txt",
1200        "951-threaded-obsolete/expected-stdout.txt",
1201        "982-ok-no-retransform/expected-stdout.txt",
1202        "983-source-transform-verify/expected-stdout.txt",
1203        "984-obsolete-invoke/expected-stdout.txt",
1204        "985-re-obsolete/expected-stdout.txt",
1205        "986-native-method-bind/expected-stdout.txt",
1206        "988-method-trace/expected-stdout.txt",
1207        "989-method-trace-throw/expected-stdout.txt",
1208        "990-field-trace/expected-stdout.txt",
1209        "991-field-trace-2/expected-stdout.txt",
1210        "992-source-data/expected-stdout.txt",
1211        // Need to avoid using hidden-apis
1212        "993-breakpoints/expected_cts.txt",
1213        "993-breakpoints-non-debuggable/expected_cts.txt",
1214        "994-breakpoint-line/expected-stdout.txt",
1215        "995-breakpoints-throw/expected-stdout.txt",
1216        "996-breakpoint-obsolete/expected-stdout.txt",
1217        "997-single-step/expected-stdout.txt",
1218        "1900-track-alloc/expected-stdout.txt",
1219        "1901-get-bytecodes/expected-stdout.txt",
1220        "1902-suspend/expected-stdout.txt",
1221        "1903-suspend-self/expected-stdout.txt",
1222        "1904-double-suspend/expected-stdout.txt",
1223        "1906-suspend-list-me-first/expected-stdout.txt",
1224        "1907-suspend-list-self-twice/expected-stdout.txt",
1225        "1908-suspend-native-resume-self/expected-stdout.txt",
1226        "1909-per-agent-tls/expected-stdout.txt",
1227        "1910-transform-with-default/expected-stdout.txt",
1228        "1911-get-local-var-table/expected-stdout.txt",
1229        "1912-get-set-local-primitive/expected-stdout.txt",
1230        "1913-get-set-local-objects/expected-stdout.txt",
1231        "1914-get-local-instance/expected-stdout.txt",
1232        "1915-get-set-local-current-thread/expected-stdout.txt",
1233        "1916-get-set-current-frame/expected-stdout.txt",
1234        "1917-get-stack-frame/expected-stdout.txt",
1235        "1920-suspend-native-monitor/expected-stdout.txt",
1236        "1921-suspend-native-recursive-monitor/expected-stdout.txt",
1237        "1922-owned-monitors-info/expected-stdout.txt",
1238        "1923-frame-pop/expected-stdout.txt",
1239        "1924-frame-pop-toggle/expected-stdout.txt",
1240        "1925-self-frame-pop/expected-stdout.txt",
1241        "1926-missed-frame-pop/expected-stdout.txt",
1242        "1927-exception-event/expected-stdout.txt",
1243        "1928-exception-event-exception/expected-stdout.txt",
1244        "1930-monitor-info/expected-stdout.txt",
1245        "1931-monitor-events/expected-stdout.txt",
1246        "1932-monitor-events-misc/expected-stdout.txt",
1247        "1933-monitor-current-contended/expected-stdout.txt",
1248        "1934-jvmti-signal-thread/expected-stdout.txt",
1249        "1936-thread-end-events/expected-stdout.txt",
1250        "1937-transform-soft-fail/expected-stdout.txt",
1251        "1939-proxy-frames/expected-stdout.txt",
1252        "1940-ddms-ext/expected-stdout.txt",
1253        "1941-dispose-stress/expected-stdout.txt",
1254        "1942-suspend-raw-monitor-exit/expected-stdout.txt",
1255        "1943-suspend-raw-monitor-wait/expected-stdout.txt",
1256        "1953-pop-frame/expected-stdout.txt",
1257        "1958-transform-try-jit/expected-stdout.txt",
1258        "1962-multi-thread-events/expected-stdout.txt",
1259        "1963-add-to-dex-classloader-in-memory/expected-stdout.txt",
1260        "1967-get-set-local-bad-slot/expected-stdout.txt",
1261        "1968-force-early-return/expected-stdout.txt",
1262        "1969-force-early-return-void/expected-stdout.txt",
1263        "1970-force-early-return-long/expected-stdout.txt",
1264        "1971-multi-force-early-return/expected-stdout.txt",
1265        "1974-resize-array/expected-stdout.txt",
1266        "1975-hello-structural-transformation/expected-stdout.txt",
1267        "1976-hello-structural-static-methods/expected-stdout.txt",
1268        "1977-hello-structural-obsolescence/expected-stdout.txt",
1269        "1978-regular-obsolete-then-structural-obsolescence/expected-stdout.txt",
1270        "1979-threaded-structural-transformation/expected-stdout.txt",
1271        // TODO Requires VarHandles to be un-@hide. See b/64382372
1272        // "test/1981-structural-redef-private-method-handles/expected-stdout.txt",
1273        "1981-structural-redef-private-method-handles/expected_no_mh.txt",
1274        "1982-no-virtuals-structural-redefinition/expected-stdout.txt",
1275        // JNI-id use can change the outcome of this test on device.
1276        "1983-structural-redefinition-failures/expected-cts.txt",
1277        "1984-structural-redefine-field-trace/expected-stdout.txt",
1278        "1988-multi-structural-redefine/expected-stdout.txt",
1279        "1989-transform-bad-monitor/expected-stdout.txt",
1280        "1990-structural-bad-verify/expected-stdout.txt",
1281        "1991-hello-structural-retransform/expected-stdout.txt",
1282        "1992-retransform-no-such-field/expected-stdout.txt",
1283        "1994-final-virtual-structural/expected-stdout.txt",
1284        "1995-final-virtual-structural-multithread/expected-stdout.txt",
1285        "1996-final-override-virtual-structural/expected-stdout.txt",
1286        "1997-structural-shadow-method/expected-stdout.txt",
1287        "1998-structural-shadow-field/expected-stdout.txt",
1288        "1999-virtual-structural/expected-stdout.txt",
1289        "2001-virtual-structural-multithread/expected-stdout.txt",
1290        "2002-virtual-structural-initializing/expected-stdout.txt",
1291        "2003-double-virtual-structural/expected-stdout.txt",
1292        "2004-double-virtual-structural-abstract/expected-stdout.txt",
1293        "2005-pause-all-redefine-multithreaded/expected-stdout.txt",
1294        "2006-virtual-structural-finalizing/expected-stdout.txt",
1295        "2007-virtual-structural-finalizable/expected-stdout.txt",
1296    ],
1297    out: ["expected_cts_outputs.jar"],
1298    tools: ["soong_zip"],
1299    cmd: "rm -rf $(genDir)/res && mkdir -p $(genDir)/res && " +
1300        "for f in $(in); do x=$${f#art/test/}; " +
1301        "cp $$f $(genDir)/res/results.$${x%%-*}.expected.txt; done && " +
1302        "$(location soong_zip) -o $(out) -C $(genDir)/res -D $(genDir)/res",
1303}
1304
1305// Wrap the expected_cts_outputs_gen inside a java library to make it easy
1306// to export as a member of a module_exports.
1307java_library {
1308    name: "expected_cts_outputs",
1309    visibility: [
1310        "//art/build/sdk",
1311        "//cts/hostsidetests/jvmti:__subpackages__",
1312    ],
1313    static_libs: [
1314        "expected_cts_outputs_gen",
1315    ],
1316    sdk_version: "core_current",
1317    // Make sure that this will be added to the sdk snapshot for S.
1318    min_sdk_version: "S",
1319}
1320
1321art_cc_test {
1322    name: "ArtGtestsTargetInstallApex",
1323    data: [
1324        // We need the ART testing apex, which contains all gtest binaries.
1325        // Note that due to build system and linker constraints the gtests must be in the apex.
1326        ":com.android.art.testing",
1327    ],
1328    // It seems that only device-tests build can create a valid apex.
1329    test_suites: [
1330        "device-tests",
1331        "mts-art",
1332    ],
1333    test_config: "art-gtests-target-install-apex.xml",
1334
1335    // Support multilib variants (using different suffix per sub-architecture), which is needed on
1336    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
1337    // all test artifacts into a single `testcases` directory.
1338    compile_multilib: "both",
1339    multilib: {
1340        lib32: {
1341            suffix: "32",
1342        },
1343        lib64: {
1344            suffix: "64",
1345        },
1346    },
1347    test_for: [
1348        "com.android.art",
1349        "com.android.art.debug",
1350    ],
1351}
1352
1353art_cc_test {
1354    name: "ArtGtestsTargetChroot",
1355    data: [
1356        // We need the ART testing apex, which contains all gtest binaries.
1357        // Note that due to build system and linker constraints the gtests must be in the apex.
1358        ":com.android.art.testing",
1359        ":generate-boot-image",
1360    ],
1361    test_suites: ["general-tests"],
1362    test_config: "art-gtests-target-chroot.xml",
1363    test_for: [
1364        "com.android.art",
1365        "com.android.art.debug",
1366    ],
1367}
1368
1369csuite_test {
1370    name: "csuite-app-compile-launch",
1371    test_config_template: "csuite-app-compile-launch.xml",
1372}
1373
1374filegroup {
1375    name: "art-gtest-jars",
1376    srcs: [
1377        ":art-gtest-jars-AbstractMethod",
1378        ":art-gtest-jars-AllFields",
1379        ":art-gtest-jars-ArrayClassWithUnresolvedComponent",
1380        ":art-gtest-jars-DefaultMethods",
1381        ":art-gtest-jars-ErroneousA",
1382        ":art-gtest-jars-ErroneousB",
1383        ":art-gtest-jars-ErroneousInit",
1384        ":art-gtest-jars-Extension1",
1385        ":art-gtest-jars-Extension2",
1386        ":art-gtest-jars-ForClassLoaderA",
1387        ":art-gtest-jars-ForClassLoaderB",
1388        ":art-gtest-jars-ForClassLoaderC",
1389        ":art-gtest-jars-ForClassLoaderD",
1390        ":art-gtest-jars-ExceptionHandle",
1391        ":art-gtest-jars-GetMethodSignature",
1392        ":art-gtest-jars-HiddenApi",
1393        ":art-gtest-jars-HiddenApiSignatures",
1394        ":art-gtest-jars-HiddenApiStubs",
1395        ":art-gtest-jars-ImageLayoutA",
1396        ":art-gtest-jars-ImageLayoutB",
1397        ":art-gtest-jars-IMTA",
1398        ":art-gtest-jars-IMTB",
1399        ":art-gtest-jars-Instrumentation",
1400        ":art-gtest-jars-Interfaces",
1401        ":art-gtest-jars-Lookup",
1402        ":art-gtest-jars-Main",
1403        ":art-gtest-jars-ManyMethods",
1404        ":art-gtest-jars-MethodTypes",
1405        ":art-gtest-jars-MultiDex",
1406        ":art-gtest-jars-MultiDexModifiedSecondary",
1407        ":art-gtest-jars-MyClass",
1408        ":art-gtest-jars-MyClassNatives",
1409        ":art-gtest-jars-Nested",
1410        ":art-gtest-jars-NonStaticLeafMethods",
1411        ":art-gtest-jars-Packages",
1412        ":art-gtest-jars-ProtoCompare",
1413        ":art-gtest-jars-ProtoCompare2",
1414        ":art-gtest-jars-ProfileTestMultiDex",
1415        ":art-gtest-jars-StaticLeafMethods",
1416        ":art-gtest-jars-Statics",
1417        ":art-gtest-jars-StaticsFromCode",
1418        ":art-gtest-jars-StringLiterals",
1419        ":art-gtest-jars-Transaction",
1420        ":art-gtest-jars-XandY",
1421        ":art-gtest-jars-MainEmptyUncompressed",
1422        ":art-gtest-jars-MainEmptyUncompressedAligned",
1423        ":art-gtest-jars-MainStripped",
1424        ":art-gtest-jars-MainUncompressedAligned",
1425        ":art-gtest-jars-MultiDexUncompressedAligned",
1426        ":art-gtest-jars-SuperWithAccessChecks",
1427        ":art-gtest-jars-VerifierDeps",
1428        ":art-gtest-jars-VerifierDepsMulti",
1429        ":art-gtest-jars-VerifySoftFailDuringClinit",
1430    ],
1431}
1432
1433java_defaults {
1434    name: "art-gtest-jars-defaults",
1435    installable: true,
1436    dex_preopt: {
1437        enabled: false,
1438    },
1439    sdk_version: "core_platform",
1440    uncompress_dex: false,
1441}
1442
1443// The following modules are just trivial compilations (non-trivial cases are the end).
1444
1445java_library {
1446    name: "art-gtest-jars-AbstractMethod",
1447    srcs: ["AbstractMethod/**/*.java"],
1448    defaults: ["art-gtest-jars-defaults"],
1449}
1450
1451java_library {
1452    name: "art-gtest-jars-AllFields",
1453    srcs: ["AllFields/**/*.java"],
1454    defaults: ["art-gtest-jars-defaults"],
1455}
1456
1457java_library {
1458    name: "art-gtest-jars-DefaultMethods",
1459    srcs: ["DefaultMethods/**/*.java"],
1460    defaults: ["art-gtest-jars-defaults"],
1461}
1462
1463java_library {
1464    name: "art-gtest-jars-ErroneousA",
1465    srcs: ["ErroneousA/**/*.java"],
1466    defaults: ["art-gtest-jars-defaults"],
1467}
1468
1469java_library {
1470    name: "art-gtest-jars-ErroneousB",
1471    srcs: ["ErroneousB/**/*.java"],
1472    defaults: ["art-gtest-jars-defaults"],
1473}
1474
1475java_library {
1476    name: "art-gtest-jars-ErroneousInit",
1477    srcs: ["ErroneousInit/**/*.java"],
1478    defaults: ["art-gtest-jars-defaults"],
1479}
1480
1481java_library {
1482    name: "art-gtest-jars-Extension1",
1483    srcs: ["Extension1/**/*.java"],
1484    defaults: ["art-gtest-jars-defaults"],
1485}
1486
1487java_library {
1488    name: "art-gtest-jars-Extension2",
1489    srcs: ["Extension2/**/*.java"],
1490    defaults: ["art-gtest-jars-defaults"],
1491}
1492
1493java_library {
1494    name: "art-gtest-jars-ForClassLoaderA",
1495    srcs: ["ForClassLoaderA/**/*.java"],
1496    defaults: ["art-gtest-jars-defaults"],
1497}
1498
1499java_library {
1500    name: "art-gtest-jars-ForClassLoaderB",
1501    srcs: ["ForClassLoaderB/**/*.java"],
1502    defaults: ["art-gtest-jars-defaults"],
1503}
1504
1505java_library {
1506    name: "art-gtest-jars-ForClassLoaderC",
1507    srcs: ["ForClassLoaderC/**/*.java"],
1508    defaults: ["art-gtest-jars-defaults"],
1509}
1510
1511java_library {
1512    name: "art-gtest-jars-ForClassLoaderD",
1513    srcs: ["ForClassLoaderD/**/*.java"],
1514    defaults: ["art-gtest-jars-defaults"],
1515}
1516
1517java_library {
1518    name: "art-gtest-jars-ExceptionHandle",
1519    srcs: ["ExceptionHandle/**/*.java"],
1520    defaults: ["art-gtest-jars-defaults"],
1521}
1522
1523java_library {
1524    name: "art-gtest-jars-GetMethodSignature",
1525    srcs: ["GetMethodSignature/**/*.java"],
1526    defaults: ["art-gtest-jars-defaults"],
1527}
1528
1529java_library {
1530    name: "art-gtest-jars-HiddenApi",
1531    srcs: ["HiddenApi/**/*.java"],
1532    defaults: ["art-gtest-jars-defaults"],
1533}
1534
1535java_library {
1536    name: "art-gtest-jars-HiddenApiSignatures",
1537    srcs: ["HiddenApiSignatures/**/*.java"],
1538    defaults: ["art-gtest-jars-defaults"],
1539}
1540
1541java_library {
1542    name: "art-gtest-jars-HiddenApiStubs",
1543    srcs: ["HiddenApiStubs/**/*.java"],
1544    defaults: ["art-gtest-jars-defaults"],
1545}
1546
1547java_library {
1548    name: "art-gtest-jars-ImageLayoutA",
1549    srcs: ["ImageLayoutA/**/*.java"],
1550    defaults: ["art-gtest-jars-defaults"],
1551}
1552
1553java_library {
1554    name: "art-gtest-jars-ImageLayoutB",
1555    srcs: ["ImageLayoutB/**/*.java"],
1556    defaults: ["art-gtest-jars-defaults"],
1557}
1558
1559java_library {
1560    name: "art-gtest-jars-IMTA",
1561    srcs: ["IMTA/**/*.java"],
1562    defaults: ["art-gtest-jars-defaults"],
1563}
1564
1565java_library {
1566    name: "art-gtest-jars-IMTB",
1567    srcs: ["IMTB/**/*.java"],
1568    defaults: ["art-gtest-jars-defaults"],
1569}
1570
1571java_library {
1572    name: "art-gtest-jars-Instrumentation",
1573    srcs: ["Instrumentation/**/*.java"],
1574    defaults: ["art-gtest-jars-defaults"],
1575}
1576
1577java_library {
1578    name: "art-gtest-jars-Interfaces",
1579    srcs: ["Interfaces/**/*.java"],
1580    defaults: ["art-gtest-jars-defaults"],
1581}
1582
1583java_library {
1584    name: "art-gtest-jars-Lookup",
1585    srcs: ["Lookup/**/*.java"],
1586    defaults: ["art-gtest-jars-defaults"],
1587}
1588
1589java_library {
1590    name: "art-gtest-jars-Main",
1591    srcs: ["Main/**/*.java"],
1592    defaults: ["art-gtest-jars-defaults"],
1593}
1594
1595java_library {
1596    name: "art-gtest-jars-ManyMethods",
1597    srcs: ["ManyMethods/**/*.java"],
1598    defaults: ["art-gtest-jars-defaults"],
1599}
1600
1601java_library {
1602    name: "art-gtest-jars-MethodTypes",
1603    srcs: ["MethodTypes/**/*.java"],
1604    defaults: ["art-gtest-jars-defaults"],
1605}
1606
1607java_library {
1608    name: "art-gtest-jars-MyClass",
1609    srcs: ["MyClass/**/*.java"],
1610    defaults: ["art-gtest-jars-defaults"],
1611}
1612
1613java_library {
1614    name: "art-gtest-jars-MyClassNatives",
1615    srcs: ["MyClassNatives/**/*.java"],
1616    defaults: ["art-gtest-jars-defaults"],
1617}
1618
1619java_library {
1620    name: "art-gtest-jars-Nested",
1621    srcs: ["Nested/**/*.java"],
1622    defaults: ["art-gtest-jars-defaults"],
1623}
1624
1625java_library {
1626    name: "art-gtest-jars-NonStaticLeafMethods",
1627    srcs: ["NonStaticLeafMethods/**/*.java"],
1628    defaults: ["art-gtest-jars-defaults"],
1629}
1630
1631java_library {
1632    name: "art-gtest-jars-Packages",
1633    srcs: ["Packages/**/*.java"],
1634    defaults: ["art-gtest-jars-defaults"],
1635}
1636
1637java_library {
1638    name: "art-gtest-jars-ProtoCompare",
1639    srcs: ["ProtoCompare/**/*.java"],
1640    defaults: ["art-gtest-jars-defaults"],
1641}
1642
1643java_library {
1644    name: "art-gtest-jars-ProtoCompare2",
1645    srcs: ["ProtoCompare2/**/*.java"],
1646    defaults: ["art-gtest-jars-defaults"],
1647}
1648
1649java_library {
1650    name: "art-gtest-jars-StaticLeafMethods",
1651    srcs: ["StaticLeafMethods/**/*.java"],
1652    defaults: ["art-gtest-jars-defaults"],
1653}
1654
1655java_library {
1656    name: "art-gtest-jars-Statics",
1657    srcs: ["Statics/**/*.java"],
1658    defaults: ["art-gtest-jars-defaults"],
1659}
1660
1661java_library {
1662    name: "art-gtest-jars-StaticsFromCode",
1663    srcs: ["StaticsFromCode/**/*.java"],
1664    defaults: ["art-gtest-jars-defaults"],
1665}
1666
1667java_library {
1668    name: "art-gtest-jars-StringLiterals",
1669    srcs: ["StringLiterals/**/*.java"],
1670    defaults: ["art-gtest-jars-defaults"],
1671}
1672
1673java_library {
1674    name: "art-gtest-jars-Transaction",
1675    srcs: ["Transaction/**/*.java"],
1676    defaults: ["art-gtest-jars-defaults"],
1677}
1678
1679java_library {
1680    name: "art-gtest-jars-XandY",
1681    srcs: ["XandY/**/*.java"],
1682    defaults: ["art-gtest-jars-defaults"],
1683}
1684
1685java_library {
1686    name: "art-gtest-jars-Dex2oatVdexTestDex",
1687    srcs: ["Dex2oatVdexTestDex/**/*.java"],
1688    defaults: ["art-gtest-jars-defaults"],
1689}
1690
1691// The following cases are non-trivial.
1692
1693// Uncompress classes.dex files in the jar file.
1694genrule_defaults {
1695    name: "art-gtest-jars-uncompress-defaults",
1696    cmd: "$(location zip2zip) -i $(in) -o $(out) -0 'classes*.dex'",
1697    tools: ["zip2zip"],
1698}
1699
1700// Ensure the files are at least 4 byte aligned.
1701genrule_defaults {
1702    name: "art-gtest-jars-align-defaults",
1703    cmd: "$(location zipalign) 4 $(in) $(out)",
1704    tools: ["zipalign"],
1705}
1706
1707// Assemble jar file from smali source.
1708genrule_defaults {
1709    name: "art-gtest-jars-smali-defaults",
1710    cmd: "$(location android-smali) assemble --output $(out) $(in)",
1711    tools: ["android-smali"],
1712}
1713
1714// A copy of Main with the classes.dex stripped for the oat file assistant tests.
1715genrule {
1716    name: "art-gtest-jars-MainStripped",
1717    srcs: [":art-gtest-jars-Main"],
1718    cmd: "$(location zip2zip) -i $(in) -o $(out) -x 'classes*.dex'",
1719    out: ["art-gtest-jars-MainStripped.jar"],
1720    tools: ["zip2zip"],
1721}
1722
1723// An empty.dex that is empty and uncompressed for the dex2oat tests.
1724genrule {
1725    name: "art-gtest-jars-MainEmptyUncompressed",
1726    srcs: ["Main/empty.dex"],
1727    cmd: "$(location soong_zip) -j -L 0 -o $(out) -f $(in)",
1728    out: ["art-gtest-jars-MainEmptyUncompressed.jar"],
1729    tools: ["soong_zip"],
1730}
1731
1732// An empty.dex that is empty and uncompressed and aligned for the dex2oat tests.
1733genrule {
1734    name: "art-gtest-jars-MainEmptyUncompressedAligned",
1735    defaults: ["art-gtest-jars-align-defaults"],
1736    srcs: [":art-gtest-jars-MainEmptyUncompressed"],
1737    out: ["art-gtest-jars-MainEmptyUncompressedAligned.jar"],
1738}
1739
1740// A copy of Main with the classes.dex uncompressed for the dex2oat tests.
1741genrule {
1742    name: "art-gtest-jars-MainUncompressed",
1743    defaults: ["art-gtest-jars-uncompress-defaults"],
1744    srcs: [":art-gtest-jars-Main"],
1745    out: ["art-gtest-jars-MainUncompressed.jar"],
1746}
1747
1748// A copy of Main with the classes.dex uncompressed and aligned for the dex2oat tests.
1749genrule {
1750    name: "art-gtest-jars-MainUncompressedAligned",
1751    defaults: ["art-gtest-jars-align-defaults"],
1752    srcs: [":art-gtest-jars-MainUncompressed"],
1753    out: ["art-gtest-jars-MainUncompressedAligned.jar"],
1754}
1755
1756java_library {
1757    name: "art-gtest-jars-MultiDex",
1758    srcs: ["MultiDex/**/*.java"],
1759    defaults: ["art-gtest-jars-defaults"],
1760    min_sdk_version: "19",
1761    dxflags: [
1762        "--main-dex-list",
1763        "art/test/MultiDex/main.list",
1764    ],
1765}
1766
1767// A copy of MultiDex with the classes.dex uncompressed for the OatFile tests.
1768genrule {
1769    name: "art-gtest-jars-MultiDexUncompressed",
1770    defaults: ["art-gtest-jars-uncompress-defaults"],
1771    srcs: [":art-gtest-jars-MultiDex"],
1772    out: ["art-gtest-jars-MultiDexUncompressed.jar"],
1773}
1774
1775// A copy of MultiDex with the classes.dex uncompressed and aligned for the OatFile tests.
1776genrule {
1777    name: "art-gtest-jars-MultiDexUncompressedAligned",
1778    defaults: ["art-gtest-jars-align-defaults"],
1779    srcs: [":art-gtest-jars-MultiDexUncompressed"],
1780    out: ["art-gtest-jars-MultiDexUncompressedAligned.jar"],
1781}
1782
1783java_library {
1784    name: "art-gtest-jars-MultiDexModifiedSecondary",
1785    srcs: ["MultiDexModifiedSecondary/**/*.java"],
1786    defaults: ["art-gtest-jars-defaults"],
1787    min_sdk_version: "19",
1788    dxflags: [
1789        "--main-dex-list",
1790        "art/test/MultiDexModifiedSecondary/main.list",
1791    ],
1792}
1793
1794java_library {
1795    name: "art-gtest-jars-ProfileTestMultiDex",
1796    srcs: ["ProfileTestMultiDex/**/*.java"],
1797    defaults: ["art-gtest-jars-defaults"],
1798    min_sdk_version: "19",
1799    dxflags: [
1800        "--main-dex-list",
1801        "art/test/ProfileTestMultiDex/main.list",
1802    ],
1803}
1804
1805// Smali compiled files.
1806// Since they are not compiled by javac, we use different extension for them.
1807// The .jar extension for them would cause subtle failures in the test infra,
1808// which finds and opens all jar files and expects them to be valid zip files.
1809
1810genrule {
1811    name: "art-gtest-jars-VerifierDeps",
1812    defaults: ["art-gtest-jars-smali-defaults"],
1813    srcs: ["VerifierDeps/**/*.smali"],
1814    out: ["art-gtest-jars-VerifierDeps.dex"],
1815}
1816
1817genrule {
1818    name: "art-gtest-jars-VerifierDepsMulti",
1819    defaults: ["art-gtest-jars-smali-defaults"],
1820    srcs: ["VerifierDepsMulti/**/*.smali"],
1821    out: ["art-gtest-jars-VerifierDepsMulti.dex"],
1822}
1823
1824genrule {
1825    name: "art-gtest-jars-VerifySoftFailDuringClinit",
1826    defaults: ["art-gtest-jars-smali-defaults"],
1827    srcs: ["VerifySoftFailDuringClinit/**/*.smali"],
1828    out: ["art-gtest-jars-VerifySoftFailDuringClinit.dex"],
1829}
1830
1831genrule {
1832    name: "art-gtest-jars-ArrayClassWithUnresolvedComponent",
1833    defaults: ["art-gtest-jars-smali-defaults"],
1834    srcs: ["ArrayClassWithUnresolvedComponent/*.smali"],
1835    out: ["art-gtest-jars-ArrayClassWithUnresolvedComponent.dex"],
1836}
1837
1838genrule {
1839    name: "art-gtest-jars-SuperWithAccessChecks",
1840    defaults: ["art-gtest-jars-smali-defaults"],
1841    srcs: ["SuperWithAccessChecks/*.smali"],
1842    out: ["art-gtest-jars-SuperWithAccessChecks.dex"],
1843}
1844
1845genrule {
1846    name: "art-gtest-jars-LinkageTest",
1847    defaults: ["art-gtest-jars-smali-defaults"],
1848    srcs: ["LinkageTest/*.smali"],
1849    out: ["art-gtest-jars-LinkageTest.dex"],
1850}
1851
1852genrule {
1853    name: "art-gtest-jars-Dex2oatVdexPublicSdkDex",
1854    defaults: ["art-gtest-jars-smali-defaults"],
1855    srcs: ["Dex2oatVdexPublicSdkDex/*.smali"],
1856    out: ["art-gtest-jars-Dex2oatVdexPublicSdkDex.dex"],
1857}
1858
1859build = [
1860    "Android.run-test.bp",
1861]
1862