summaryrefslogtreecommitdiff
path: root/tools/jvmti-agents
AgeCommit message (Collapse)Author
2025-02-12Potential buffer overflow in environment local storage shivam tiwari
strcpy can potentially cause a buffer overflow if the length of options exceeds the allocated buffer size. strlen(options) + 1 ensures that the buffer is large enough to hold the string options plus the null terminator Change-Id: Id04367df0eef575da258ed1c917aa879b2966013
2025-01-30WrapGetSystemProperties code replace unsafe strcpy() with memcpy() shivam tiwari
Replaced the use of strcpy() with memcpy() for safer handling of string copying. there was no actual buffer overflow, this change ensures that memory copying is done explicitly with a specified size which prevents potential issues that can arise from unsafe string handling. This improves the code safety by providing better control over memory boundaries Change-Id: I9d91f6af79ffe1509342868b1e1a9a77b4a4d8f0
2023-09-25forcedefine: include <mutex> not "__mutex_base" Ryan Prichard
`__mutex_base` was a libc++ implementation detail, and it was deleted in favor of a handful of headers in a `__mutex` sub-directory. Use the public <mutex> include instead. Bug: 175635923 Test: m libforceredefine libforceredefined Change-Id: Ic91eeea1957996ce145cb02d54816af19d8efc3b
2023-05-22Use C++17's [[maybe_unused]] attribute in ART Stefano Cianciulli
Bug: 169680875 Test: mmm art Change-Id: Ic0cc320891c42b07a2b5520a584d2b62052e7235
2022-06-30Fix performance-for-range-copy clang-tidy issues Stefano Cianciulli
Test: m tidy-art Bug: 213953102 Change-Id: I206a44aa4c1f3f2f91e4f94831d042e903c71c65
2022-06-09Fix performance-unnecessary-value-param clang-tidy issues Stefano Cianciulli
Test: m tidy-art Bug: 213953102 Change-Id: Ibe16d59559d96e0a4562ecd2af1dffa28bafc068
2021-05-12Make various native modules depend on art_defaults. Martin Stjernholm
To be able to do changes in art_defaults to affect all native code in the ART module. (Note that art_debug_defaults does not imply art_defaults.) Test: Presubmits Bug: 172480615 Change-Id: Ib1a43358fe0f85f601a8606969a10d50a25f0b31
2021-03-02[LSC] Add LOCAL_LICENSE_KINDS to art Bob Badour
Added SPDX-license-identifier-Apache-2.0 to: adbconnection/Android.bp benchmark/Android.bp build/Android.bp build/Android.cpplint.mk build/Android.gtest.mk build/apex/Android.bp build/boot/Android.bp build/sdk/Android.bp cmdline/Android.bp compiler/Android.bp dalvikvm/Android.bp dex2oat/Android.bp dexdump/Android.bp dexlayout/Android.bp dexlist/Android.bp dexoptanalyzer/Android.bp disassembler/Android.bp dt_fd_forward/export/Android.bp imgdiag/Android.bp libartbase/Android.bp libartpalette/Android.bp libartservice/Android.bp libartservice/tests/Android.bp libarttools/Android.bp libdexfile/Android.bp libelffile/Android.bp libnativebridge/Android.bp libnativebridge/tests/Android.bp libnativeloader/Android.bp libnativeloader/test/Android.bp libnativeloader/test/Android.mk libprofile/Android.bp oatdump/Android.bp odrefresh/Android.bp perfetto_hprof/Android.bp profman/Android.bp runtime/Android.bp simulator/Android.bp test/001-HelloWorld/Android.bp test/001-Main/Android.bp test/002-sleep/Android.bp test/004-InterfaceTest/Android.bp test/004-SignalTest/Android.bp test/004-UnsafeTest/Android.bp test/004-checker-UnsafeTest18/Android.bp test/006-args/Android.bp test/007-count10/Android.bp test/009-instanceof/Android.bp test/010-instance/Android.bp test/011-array-copy/Android.bp test/012-math/Android.bp test/013-math2/Android.bp test/014-math3/Android.bp test/015-switch/Android.bp test/016-intern/Android.bp test/017-float/Android.bp test/018-stack-overflow/Android.bp test/019-wrong-array-type/Android.bp test/020-string/Android.bp test/021-string2/Android.bp test/022-interface/Android.bp test/025-access-controller/Android.bp test/026-access/Android.bp test/027-arithmetic/Android.bp test/028-array-write/Android.bp test/029-assert/Android.bp test/030-bad-finalizer/Android.bp test/033-class-init-deadlock/Android.bp test/034-call-null/Android.bp test/035-enum/Android.bp test/036-finalizer/Android.bp test/037-inherit/Android.bp test/038-inner-null/Android.bp test/039-join-main/Android.bp test/040-miranda/Android.bp test/041-narrowing/Android.bp test/043-privates/Android.bp test/044-proxy/Android.bp test/045-reflect-array/Android.bp test/046-reflect/Android.bp test/047-returns/Android.bp test/048-reflect-v8/Android.bp test/049-show-object/Android.bp test/050-sync-test/Android.bp test/051-thread/Android.bp test/052-verifier-fun/Android.bp test/053-wait-some/Android.bp test/054-uncaught/Android.bp test/055-enum-performance/Android.bp test/058-enum-order/Android.bp test/059-finalizer-throw/Android.bp test/061-out-of-memory/Android.bp test/062-character-encodings/Android.bp test/063-process-manager/Android.bp test/067-preemptive-unpark/Android.bp test/070-nio-buffer/Android.bp test/072-precise-gc/Android.bp test/072-reachability-fence/Android.bp test/074-gc-thrash/Android.bp test/076-boolean-put/Android.bp test/078-polymorphic-virtual/Android.bp test/079-phantom/Android.bp test/080-oom-fragmentation/Android.bp test/080-oom-throw-with-finalizer/Android.bp test/080-oom-throw/Android.bp test/081-hot-exceptions/Android.bp test/082-inline-execute/Android.bp test/083-compiler-regressions/Android.bp test/084-class-init/Android.bp test/086-null-super/Android.bp test/087-gc-after-link/Android.bp test/090-loop-formation/Android.bp test/092-locale/Android.bp test/093-serialization/Android.bp test/094-pattern/Android.bp test/095-switch-MAX_INT/Android.bp test/096-array-copy-concurrent-gc/Android.bp test/098-ddmc/Android.bp test/099-vmdebug/Android.bp test/100-reflect2/Android.bp test/1004-checker-volatile-ref-load/Android.bp test/101-fibonacci/Android.bp test/102-concurrent-gc/Android.bp test/103-string-append/Android.bp test/104-growth-limit/Android.bp test/105-invoke/Android.bp test/106-exceptions2/Android.bp test/107-int-math2/Android.bp test/108-check-cast/Android.bp test/109-suspend-check/Android.bp test/110-field-access/Android.bp test/112-double-math/Android.bp test/114-ParallelGC/Android.bp test/115-native-bridge/Android.bp test/116-nodex2oat/Android.bp test/120-hashcode/Android.bp test/121-simple-suspend-check/Android.bp test/122-npe/Android.bp test/123-compiler-regressions-mt/Android.bp test/123-inline-execute2/Android.bp test/125-gc-and-classloading/Android.bp test/128-reg-spill-on-implicit-nullcheck/Android.bp test/129-ThreadGetId/Android.bp test/132-daemon-locks-shutdown/Android.bp test/133-static-invoke-super/Android.bp test/1336-short-finalizer-timeout/Android.bp test/1337-gc-coverage/Android.bp test/1339-dead-reference-safe/Android.bp test/136-daemon-jni-shutdown/Android.bp test/139-register-natives/Android.bp test/140-dce-regression/Android.bp test/140-field-packing/Android.bp test/143-string-value/Android.bp test/144-static-field-sigquit/Android.bp test/148-multithread-gc-annotations/Android.bp test/149-suspend-all-stress/Android.bp test/150-loadlibrary/Android.bp test/151-OpenFileLimit/Android.bp test/152-dead-large-object/Android.bp test/153-reference-stress/Android.bp test/154-gc-loop/Android.bp test/156-register-dex-file-multi-loader/Android.bp test/158-app-image-class-table/Android.bp test/159-app-image-fields/Android.bp test/163-app-image-methods/Android.bp test/165-lock-owner-proxy/Android.bp test/168-vmstack-annotated/Android.bp test/169-threadgroup-jni/Android.bp test/170-interface-init/Android.bp test/172-app-image-twice/Android.bp test/174-escaping-instance-of-bad-class/Android.bp test/175-alloc-big-bignums/Android.bp test/176-app-image-string/Android.bp test/177-visibly-initialized-deadlock/Android.bp test/178-app-image-native-method/Android.bp test/179-nonvirtual-jni/Android.bp test/1900-track-alloc/Android.bp test/1901-get-bytecodes/Android.bp test/1902-suspend/Android.bp test/1903-suspend-self/Android.bp test/1904-double-suspend/Android.bp test/1905-suspend-native/Android.bp test/1906-suspend-list-me-first/Android.bp test/1907-suspend-list-self-twice/Android.bp test/1908-suspend-native-resume-self/Android.bp test/1909-per-agent-tls/Android.bp test/1910-transform-with-default/Android.bp test/1911-get-local-var-table/Android.bp test/1912-get-set-local-primitive/Android.bp test/1913-get-set-local-objects/Android.bp test/1914-get-local-instance/Android.bp test/1915-get-set-local-current-thread/Android.bp test/1916-get-set-current-frame/Android.bp test/1917-get-stack-frame/Android.bp test/1919-vminit-thread-start-timing/Android.bp test/1920-suspend-native-monitor/Android.bp test/1921-suspend-native-recursive-monitor/Android.bp test/1922-owned-monitors-info/Android.bp test/1923-frame-pop/Android.bp test/1924-frame-pop-toggle/Android.bp test/1925-self-frame-pop/Android.bp test/1926-missed-frame-pop/Android.bp test/1927-exception-event/Android.bp test/1928-exception-event-exception/Android.bp test/1930-monitor-info/Android.bp test/1931-monitor-events/Android.bp test/1932-monitor-events-misc/Android.bp test/1933-monitor-current-contended/Android.bp test/1934-jvmti-signal-thread/Android.bp test/1935-get-set-current-frame-jit/Android.bp test/1936-thread-end-events/Android.bp test/1937-transform-soft-fail/Android.bp test/1938-transform-abstract-single-impl/Android.bp test/1939-proxy-frames/Android.bp test/1941-dispose-stress/Android.bp test/1942-suspend-raw-monitor-exit/Android.bp test/1943-suspend-raw-monitor-wait/Android.bp test/1945-proxy-method-arguments/Android.bp test/1947-breakpoint-redefine-deopt/Android.bp test/1949-short-dex-file/Android.bp test/1951-monitor-enter-no-suspend/Android.bp test/1953-pop-frame/Android.bp test/1954-pop-frame-jit/Android.bp test/1955-pop-frame-jit-called/Android.bp test/1956-pop-frame-jit-calling/Android.bp test/1957-error-ext/Android.bp test/1958-transform-try-jit/Android.bp test/1959-redefine-object-instrument/Android.bp test/1960-checker-bounds-codegen/Android.bp test/1960-obsolete-jit-multithread-native/Android.bp test/1961-checker-loop-vectorizer/Android.bp test/1961-obsolete-jit-multithread/Android.bp test/1962-multi-thread-events/Android.bp test/1963-add-to-dex-classloader-in-memory/Android.bp test/1967-get-set-local-bad-slot/Android.bp test/1968-force-early-return/Android.bp test/1969-force-early-return-void/Android.bp test/1970-force-early-return-long/Android.bp test/1971-multi-force-early-return/Android.bp test/1972-jni-id-swap-indices/Android.bp test/1973-jni-id-swap-pointer/Android.bp test/1974-resize-array/Android.bp test/1975-hello-structural-transformation/Android.bp test/1976-hello-structural-static-methods/Android.bp test/1977-hello-structural-obsolescence/Android.bp test/1978-regular-obsolete-then-structural-obsolescence/Android.bp test/1979-threaded-structural-transformation/Android.bp test/1980-obsolete-object-cleared/Android.bp test/1982-no-virtuals-structural-redefinition/Android.bp test/1984-structural-redefine-field-trace/Android.bp test/1985-structural-redefine-stack-scope/Android.bp test/1986-structural-redefine-multi-thread-stack-scope/Android.bp test/1987-structural-redefine-recursive-stack-scope/Android.bp test/1988-multi-structural-redefine/Android.bp test/1989-transform-bad-monitor/Android.bp test/1990-structural-bad-verify/Android.bp test/1991-hello-structural-retransform/Android.bp test/1992-retransform-no-such-field/Android.bp test/1993-fallback-non-structural/Android.bp test/1994-final-virtual-structural/Android.bp test/1995-final-virtual-structural-multithread/Android.bp test/1996-final-override-virtual-structural/Android.bp test/1997-structural-shadow-method/Android.bp test/1998-structural-shadow-field/Android.bp test/1999-virtual-structural/Android.bp test/2003-double-virtual-structural/Android.bp test/2004-double-virtual-structural-abstract/Android.bp test/2005-pause-all-redefine-multithreaded/Android.bp test/2008-redefine-then-old-reflect-field/Android.bp test/201-built-in-except-detail-messages/Android.bp test/2011-stack-walk-concurrent-instrument/Android.bp test/2019-constantcalculationsinking/Android.bp test/202-thread-oome/Android.bp test/2020-InvokeVirtual-Inlining/Android.bp test/2021-InvokeStatic-Inlining/Android.bp test/2022-Invariantloops/Android.bp test/2023-InvariantLoops_typecast/Android.bp test/2024-InvariantNegativeLoop/Android.bp test/2025-ChangedArrayValue/Android.bp test/2026-DifferentMemoryLSCouples/Android.bp test/2027-TwiceTheSameMemoryCouple/Android.bp test/2028-MultiBackward/Android.bp test/2029-contended-monitors/Android.bp test/203-multi-checkpoint/Android.bp test/2030-long-running-child/Android.bp test/2031-zygote-compiled-frame-deopt/Android.bp test/2033-shutdown-mechanics/Android.bp test/2036-jni-filechannel/Android.bp test/2037-thread-name-inherit/Android.bp test/2231-checker-heap-poisoning/Android.bp test/2232-write-metrics-to-log/Android.bp test/300-package-override/Android.bp test/301-abstract-protected/Android.bp test/302-float-conversion/Android.bp test/304-method-tracing/Android.bp test/305-other-fault-handler/Android.bp test/401-optimizing-compiler/Android.bp test/402-optimizing-control-flow/Android.bp test/403-optimizing-long/Android.bp test/404-optimizing-allocator/Android.bp test/405-optimizing-long-allocator/Android.bp test/406-fields/Android.bp test/407-arrays/Android.bp test/408-move-bug/Android.bp test/409-materialized-condition/Android.bp test/410-floats/Android.bp test/411-checker-hdiv-hrem-const/Android.bp test/411-checker-hdiv-hrem-pow2/Android.bp test/411-checker-instruct-simplifier-hrem/Android.bp test/411-optimizing-arith/Android.bp test/413-regalloc-regression/Android.bp test/414-static-fields/Android.bp test/418-const-string/Android.bp test/419-long-parameter/Android.bp test/420-const-class/Android.bp test/421-exceptions/Android.bp test/421-large-frame/Android.bp test/422-instanceof/Android.bp test/422-type-conversion/Android.bp test/423-invoke-interface/Android.bp test/424-checkcast/Android.bp test/426-monitor/Android.bp test/427-bitwise/Android.bp test/427-bounds/Android.bp test/429-ssa-builder/Android.bp test/430-live-register-slow-path/Android.bp test/433-gvn/Android.bp test/434-shifter-operand/Android.bp test/435-try-finally-without-catch/Android.bp test/436-rem-float/Android.bp test/436-shift-constant/Android.bp test/437-inline/Android.bp test/438-volatile/Android.bp test/439-npe/Android.bp test/439-swap-double/Android.bp test/440-stmp/Android.bp test/441-checker-inliner/Android.bp test/443-not-bool-inline/Android.bp test/444-checker-nce/Android.bp test/445-checker-licm/Android.bp test/446-checker-inliner2/Android.bp test/447-checker-inliner3/Android.bp test/449-checker-bce-rem/Android.bp test/449-checker-bce/Android.bp test/450-checker-types/Android.bp test/451-regression-add-float/Android.bp test/451-spill-splot/Android.bp test/454-get-vreg/Android.bp test/455-checker-gvn/Android.bp test/456-baseline-array-set/Android.bp test/458-long-to-fpu/Android.bp test/461-get-reference-vreg/Android.bp test/464-checker-inline-sharpen-calls/Android.bp test/465-checker-clinit-gvn/Android.bp test/466-get-live-vreg/Android.bp test/469-condition-materialization/Android.bp test/470-huge-method/Android.bp test/471-deopt-environment/Android.bp test/472-type-propagation/Android.bp test/473-checker-inliner-constants/Android.bp test/473-remove-dead-block/Android.bp test/474-checker-boolean-input/Android.bp test/474-fp-sub-neg/Android.bp test/475-simplify-mul-zero/Android.bp test/476-checker-ctor-fence-redun-elim/Android.bp test/476-checker-ctor-memory-barrier/Android.bp test/476-clinit-inline-static-invoke/Android.bp test/477-checker-bound-type/Android.bp test/477-long-2-float-convers-precision/Android.bp test/478-checker-clinit-check-pruning/Android.bp test/478-checker-inline-noreturn/Android.bp test/478-checker-inliner-nested-loop/Android.bp test/479-regression-implicit-null-check/Android.bp test/480-checker-dead-blocks/Android.bp test/481-regression-phi-cond/Android.bp test/482-checker-loop-back-edge-use/Android.bp test/483-dce-block/Android.bp test/485-checker-dce-switch/Android.bp test/486-checker-must-do-null-check/Android.bp test/487-checker-inline-calls/Android.bp test/488-checker-inline-recursive-calls/Android.bp test/489-current-method-regression/Android.bp test/490-checker-inline/Android.bp test/491-current-method/Android.bp test/492-checker-inline-invoke-interface/Android.bp test/493-checker-inline-invoke-interface/Android.bp test/494-checker-instanceof-tests/Android.bp test/495-checker-checkcast-tests/Android.bp test/496-checker-inlining-class-loader/Android.bp test/497-inlining-and-class-loader/Android.bp test/499-bce-phi-array-length/Android.bp test/500-instanceof/Android.bp test/505-simplifier-type-propagation/Android.bp test/507-boolean-test/Android.bp test/507-referrer/Android.bp test/508-checker-disassembly/Android.bp test/508-referrer-method/Android.bp test/513-array-deopt/Android.bp test/514-shifts/Android.bp test/519-bound-load-class/Android.bp test/521-checker-array-set-null/Android.bp test/521-regression-integer-field-set/Android.bp test/524-boolean-simplifier-regression/Android.bp test/525-checker-arrays-fields1/Android.bp test/525-checker-arrays-fields2/Android.bp test/526-checker-caller-callee-regs/Android.bp test/526-long-regalloc/Android.bp test/527-checker-array-access-simd/Android.bp test/527-checker-array-access-split/Android.bp test/528-long-hint/Android.bp test/529-long-split/Android.bp test/530-checker-loops1/Android.bp test/530-checker-loops2/Android.bp test/530-checker-loops3/Android.bp test/530-checker-loops4/Android.bp test/530-checker-loops5/Android.bp test/530-checker-lse-ctor-fences/Android.bp test/530-checker-lse-simd/Android.bp test/530-checker-lse/Android.bp test/530-checker-lse2/Android.bp test/530-instanceof-checkcast/Android.bp test/530-regression-lse/Android.bp test/532-checker-nonnull-arrayset/Android.bp test/534-checker-bce-deoptimization/Android.bp test/535-deopt-and-inlining/Android.bp test/536-checker-intrinsic-optimization/Android.bp test/537-checker-arraycopy/Android.bp test/537-checker-jump-over-jump/Android.bp test/538-checker-embed-constants/Android.bp test/540-checker-rtp-bug/Android.bp test/542-bitfield-rotates/Android.bp test/542-inline-trycatch/Android.bp test/542-unresolved-access-check/Android.bp test/545-tracing-and-jit/Android.bp test/548-checker-inlining-and-dce/Android.bp test/549-checker-types-merge/Android.bp test/550-checker-multiply-accumulate/Android.bp test/550-new-instance-clinit/Android.bp test/551-checker-clinit/Android.bp test/551-checker-shifter-operand/Android.bp test/551-implicit-null-checks/Android.bp test/552-checker-sharpening/Android.bp test/552-checker-x86-avx2-bit-manipulation/Android.bp test/554-checker-rtp-checkcast/Android.bp test/555-UnsafeGetLong-regression/Android.bp test/557-checker-instruct-simplifier-ror/Android.bp test/558-switch/Android.bp test/559-bce-ssa/Android.bp test/559-checker-rtp-ifnotnull/Android.bp test/560-packed-switch/Android.bp test/561-divrem/Android.bp test/561-shared-slowpaths/Android.bp test/562-bce-preheader/Android.bp test/562-checker-no-intermediate/Android.bp test/563-checker-invoke-super/Android.bp test/564-checker-bitcount/Android.bp test/564-checker-inline-loop/Android.bp test/564-checker-negbitwise/Android.bp test/565-checker-condition-liveness/Android.bp test/566-checker-codegen-select/Android.bp test/566-polymorphic-inlining/Android.bp test/567-checker-builder-intrinsics/Android.bp test/568-checker-onebit/Android.bp test/570-checker-select/Android.bp test/572-checker-array-get-regression/Android.bp test/573-checker-checkcast-regression/Android.bp test/576-polymorphic-inlining/Android.bp test/577-checker-fp2int/Android.bp test/578-bce-visit/Android.bp test/578-polymorphic-inlining/Android.bp test/579-inline-infinite/Android.bp test/580-checker-round/Android.bp test/580-crc32/Android.bp test/581-rtp/Android.bp test/582-checker-bce-length/Android.bp test/583-checker-zero/Android.bp test/584-checker-div-bool/Android.bp test/589-super-imt/Android.bp test/590-checker-arr-set-null-regression/Android.bp test/591-checker-regression-dead-loop/Android.bp test/593-checker-long-2-float-regression/Android.bp test/594-checker-array-alias/Android.bp test/594-load-string-regression/Android.bp test/595-profile-saving/Android.bp test/597-deopt-busy-loop/Android.bp test/597-deopt-invoke-stub/Android.bp test/597-deopt-new-string/Android.bp test/602-deoptimizeable/Android.bp test/603-checker-instanceof/Android.bp test/604-hot-static-interface/Android.bp test/605-new-string-from-bytes/Android.bp test/607-daemon-stress/Android.bp test/609-checker-inline-interface/Android.bp test/609-checker-x86-bounds-check/Android.bp test/610-arraycopy/Android.bp test/611-checker-simplify-if/Android.bp test/614-checker-dump-constant-location/Android.bp test/615-checker-arm64-store-zero/Android.bp test/616-cha-abstract/Android.bp test/616-cha-interface/Android.bp test/616-cha-miranda/Android.bp test/616-cha-native/Android.bp test/616-cha-regression-proxy-method/Android.bp test/616-cha/Android.bp test/617-clinit-oome/Android.bp test/618-checker-induction/Android.bp test/619-checker-current-method/Android.bp test/620-checker-bce-intrinsics/Android.bp test/622-checker-bce-regressions/Android.bp test/623-checker-loop-regressions/Android.bp test/625-checker-licm-regressions/Android.bp test/626-set-resolved-string/Android.bp test/627-checker-unroll/Android.bp test/628-vdex/Android.bp test/629-vdex-speed/Android.bp test/631-checker-get-class/Android.bp test/632-checker-char-at-bounds/Android.bp test/635-checker-arm64-volatile-load-cc/Android.bp test/636-arm64-veneer-pool/Android.bp test/637-checker-throw-inline/Android.bp test/638-checker-inline-cache-intrinsic/Android.bp test/639-checker-code-sinking/Android.bp test/640-checker-boolean-simd/Android.bp test/640-checker-integer-valueof/Android.bp test/640-checker-simd/Android.bp test/641-checker-arraycopy/Android.bp test/641-iterations/Android.bp test/642-fp-callees/Android.bp test/643-checker-bogus-ic/Android.bp test/645-checker-abs-simd/Android.bp test/646-checker-arraycopy-large-cst-pos/Android.bp test/646-checker-long-const-to-int/Android.bp test/646-checker-simd-hadd/Android.bp test/647-jni-get-field-id/Android.bp test/650-checker-inline-access-thunks/Android.bp test/652-deopt-intrinsic/Android.bp test/654-checker-periodic/Android.bp test/655-checker-simd-arm-opt/Android.bp test/655-jit-clinit/Android.bp test/656-checker-simd-opt/Android.bp test/656-loop-deopt/Android.bp test/657-branches/Android.bp test/658-fp-read-barrier/Android.bp test/660-checker-sad/Android.bp test/660-checker-simd-sad/Android.bp test/660-clinit/Android.bp test/661-checker-simd-reduc/Android.bp test/661-oat-writer-layout/Android.bp test/662-regression-alias/Android.bp test/664-aget-verifier/Android.bp test/665-checker-simd-zero/Android.bp test/666-dex-cache-itf/Android.bp test/667-checker-simd-alignment/Android.bp test/667-jit-jni-stub/Android.bp test/667-out-of-bounds/Android.bp test/669-checker-break/Android.bp test/671-npe-field-opts/Android.bp test/672-checker-throw-method/Android.bp test/673-checker-throw-vmethod/Android.bp test/674-HelloWorld-Dm/Android.bp test/674-hotness-compiled/Android.bp test/676-proxy-jit-at-first-use/Android.bp test/677-fsi2/Android.bp test/679-locks/Android.bp test/680-checker-deopt-dex-pc-0/Android.bp test/680-sink-regression/Android.bp test/684-checker-simd-dotprod/Android.bp test/684-select-condition/Android.bp test/685-deoptimizeable/Android.bp test/687-deopt/Android.bp test/689-multi-catch/Android.bp test/689-zygote-jit-deopt/Android.bp test/693-vdex-inmem-loader-evict/Android.bp test/694-clinit-jit/Android.bp test/695-simplify-throws/Android.bp test/696-loop/Android.bp test/697-checker-string-append/Android.bp test/698-selects/Android.bp test/700-LoadArgRegs/Android.bp test/703-floating-point-div/Android.bp test/704-multiply-accumulate/Android.bp test/705-register-conflict/Android.bp test/707-checker-invalid-profile/Android.bp test/708-jit-cache-churn/Android.bp test/711-checker-type-conversion/Android.bp test/717-integer-value-of/Android.bp test/718-zipfile-finalizer/Android.bp test/720-thread-priority/Android.bp test/721-osr/Android.bp test/726-array-store/Android.bp test/728-imt-conflict-zygote/Android.bp test/805-TooDeepClassInstanceOf/Android.bp test/806-TooWideClassInstanceOf/Android.bp test/812-recursive-default/Android.bp test/813-fp-args/Android.bp test/814-large-field-offsets/Android.bp test/815-invokeinterface-default/Android.bp test/818-clinit-nterp/Android.bp test/900-hello-plugin/Android.bp test/901-hello-ti-agent/Android.bp test/902-hello-transformation/Android.bp test/903-hello-tagging/Android.bp test/904-object-allocation/Android.bp test/905-object-free/Android.bp test/906-iterate-heap/Android.bp test/907-get-loaded-classes/Android.bp test/908-gc-start-finish/Android.bp test/910-methods/Android.bp test/911-get-stack-trace/Android.bp test/913-heaps/Android.bp test/914-hello-obsolescence/Android.bp test/915-obsolete-2/Android.bp test/916-obsolete-jit/Android.bp test/917-fields-transformation/Android.bp test/918-fields/Android.bp test/919-obsolete-fields/Android.bp test/920-objects/Android.bp test/921-hello-failure/Android.bp test/922-properties/Android.bp test/923-monitors/Android.bp test/924-threads/Android.bp test/925-threadgroups/Android.bp test/926-multi-obsolescence/Android.bp test/927-timers/Android.bp test/928-jni-table/Android.bp test/930-hello-retransform/Android.bp test/931-agent-thread/Android.bp test/932-transform-saves/Android.bp test/933-misc-events/Android.bp test/937-hello-retransform-package/Android.bp test/939-hello-transformation-bcp/Android.bp test/940-recursive-obsolete/Android.bp test/941-recursive-obsolete-jit/Android.bp test/942-private-recursive/Android.bp test/943-private-recursive-jit/Android.bp test/944-transform-classloaders/Android.bp test/945-obsolete-native/Android.bp test/946-obsolete-throw/Android.bp test/947-reflect-method/Android.bp test/949-in-memory-transform/Android.bp test/950-redefine-intrinsic/Android.bp test/951-threaded-obsolete/Android.bp test/963-default-range-smali/Android.bp test/982-ok-no-retransform/Android.bp test/983-source-transform-verify/Android.bp test/984-obsolete-invoke/Android.bp test/985-re-obsolete/Android.bp test/986-native-method-bind/Android.bp test/987-agent-bind/Android.bp test/988-method-trace/Android.bp test/989-method-trace-throw/Android.bp test/990-field-trace/Android.bp test/991-field-trace-2/Android.bp test/992-source-data/Android.bp test/993-breakpoints/Android.bp test/994-breakpoint-line/Android.bp test/995-breakpoints-throw/Android.bp test/996-breakpoint-obsolete/Android.bp test/997-single-step/Android.bp test/Android.bp tools/Android.bp tools/ahat/Android.bp tools/ahat/Android.mk tools/art_verifier/Android.bp tools/cpp-define-generator/Android.bp tools/dexanalyze/Android.bp tools/dexfuzz/Android.bp tools/dmtracedump/Android.bp tools/hiddenapi/Android.bp tools/jfuzz/Android.bp tools/jvmti-agents/breakpoint-logger/Android.bp tools/jvmti-agents/chain-agents/Android.bp tools/jvmti-agents/dump-jvmti-state/Android.bp tools/jvmti-agents/enable-vlog/Android.bp tools/jvmti-agents/field-counts/Android.bp tools/jvmti-agents/field-null-percent/Android.bp tools/jvmti-agents/jit-load/Android.bp tools/jvmti-agents/list-extensions/Android.bp tools/jvmti-agents/simple-force-redefine/Android.bp tools/jvmti-agents/simple-profile/Android.bp tools/jvmti-agents/ti-alloc-sample/Android.bp tools/jvmti-agents/ti-fast/Android.bp tools/jvmti-agents/titrace/Android.bp tools/jvmti-agents/wrapagentproperties/Android.bp tools/signal_dumper/Android.bp tools/tracefast-plugin/Android.bp tools/veridex/Android.bp Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to: sigchainlib/Android.bp Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD SPDX-license-identifier-GPL-2.0 to: Android.bp Android.mk Added SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-GPL-2.0 SPDX-license-identifier-GPL-with-classpath-exception to: dt_fd_forward/Android.bp openjdkjvmti/Android.bp Added SPDX-license-identifier-GPL-2.0 SPDX-license-identifier-GPL-with-classpath-exception to: openjdkjvm/Android.bp Bug: 68860345 Bug: 151177513 Bug: 151953481 Test: m all Exempt-From-Owner-Approval: janitorial work Change-Id: If775045c12955fa6d72d40ccf2a09beef93d1699 Merged-in: If775045c12955fa6d72d40ccf2a09beef93d1699
2020-09-03Add a simple profiling agent. Alex Light
This agent will simply hold onto how many times each method is called and dump the information in a JSON file wherever one wishes. Test: manual, attach to google-maps Test: ./art/test/run-test --host --dev --64 --with-agent $ANDROID_HOST_OUT/lib64/libsimpleprofileds.so=/proc/self/fd/2,dump_on_shutdown 001-HelloWorld Test: ``` % adb root % adb shell setenforce 0 % adb push $OUT/system/lib64/libsimpleprofileds.so /data/local/tmp/libsimpleprofileds.so % adb shell blueline:/ # cd /data/data/com.google.android.apps.maps blueline:/data/data/com.google.android.apps.maps # cp /data/local/tmp/libsimpleprofileds.so . blueline:/data/data/com.google.android.apps.maps # ps -A | grep maps u0_a178 9143 927 15691440 190132 SyS_epoll_wait 0 S com.google.android.apps.maps blueline:/data/data/com.google.android.apps.maps # cmd activity attach-agent com.google.android.apps.maps $PWD/libsimpleprofileds.so=$PWD/maps.json blueline:/data/data/com.google.android.apps.maps # # Do things on the app. blueline:/data/data/com.google.android.apps.maps # kill -3 9143 blueline:/data/data/com.google.android.apps.maps # wc -l maps.json 17901 maps.json blueline:/data/data/com.google.android.apps.maps # ^D % adb pull /data/data/com.google.android.apps.maps/maps.json % jq 'sort_by(.count) | reverse' maps.json | head -13 [ { "class_name": "Ljava/lang/String;", "method_name": "charAt", "method_descriptor": "(I)C", "count": 586996 }, { "class_name": "Ljava/lang/Object;", "method_name": "<init>", "method_descriptor": "()V", "count": 482491 }, ``` Change-Id: I87056f641648c496c63c9de715951b65707844ef
2020-04-24Add an agent to enable VLOG options Alex Light
We added the ability to manipulate the 'VLOG' (-verbose:...) options at runtime a while ago. This adds an agent which can be loaded to change these after starting an app. This can be useful for debugging. Test: m libenablevlogs adb push $ANDROID_PRODUCT_OUT/system/lib/libenablevlogs.so /data/local/tmp adb shell run-as com.antonioleiva.bandhookkotlin cp /data/local/tmp/libenablevlogs.so ./code_cache adb shell cmd activity attach-agent com.antonioleiva.bandhookkotlin /data/data/com.antonioleiva.bandhookkotlin/code_cache/libenablevlogs.so=class,jit adb logcat Change-Id: I80a97684b19ffc81f6e1181fc15f24cf3b53c31b
2020-04-07Add explicit dependencies on jni_headers Orion Hodson
Bug: 152482542 Test: lunch aosp_x86_64 && m checkbuild Change-Id: I1859a5b15d7e1a4939968908d862d27b2345acc4
2019-12-02Make fieldcount agent handle duplicates Alex Light
If multiple instances point to the same object it would be counted multiple times by libfieldcount. This fixes that so each instance of an object being pointed to by a field is only counted once. Test: Manual Test: ./art/tools/jvmti-agents/field-counts/count-fields.py 'Ldalvik/system/ClassExt;.instanceJfieldIDs:Ljava/lang/Object;' 'Ldalvik/system/ClassExt;.staticJfieldIDs:Ljava/lang/Object;' 'Ldalvik/system/ClassExt;.jmethodIDs:Ljava/lang/Object;' Change-Id: I1d6c5fe05b628ea8382633041be914373d7298d4
2019-11-09Refactor script, add new options David Sehr
Refactored the trace processing script to use argument parsing, etc., and improve the structure. Then added several command line options to filter and provide different views. Bug: none Test: run the script on a trace, view the flame graph Change-Id: I66805829c9e7212b2f69b3556134036f8dd21bc2
2019-11-06Add size weighting to the script David Sehr
Add the ability to weight the counts by the total size allocated at that stack trace. Also puts the thread/type/size at the top of the stack trace and fixes a bug that erroneously inserted an additional stack frame at the base. Some small code cleanups in the agent also. Bug: none Test: attach, run app, pull, process, enjoy the flame graph. Change-Id: I6256a99c2651696b973c25a5955e3bb9251b86a1
2019-11-04Add class name to all graph traces David Sehr
Add the class name to the traces to make methods more distinct. Bug: none Test: attach the agent, run the app, pull the log, and process. Change-Id: I1162ccf5fa41a429c5e23530b05856908bedab46
2019-11-04Change agent text encoding David Sehr
Change the text encoding to be easier to parse off-line. Also fixes the per-thread sampling bias Hans pointed out yesterday. Adds the python script I use to uncompress the text encoding. Bug: none Test: attach the agent; run the startop test; uncompress; make flame graph; view Change-Id: I4a882642e659d8512a02d4980c82fb52470ac7f9
2019-11-01Add max stack depth to agent David Sehr
As a stack depth limit to the ti-alloc-sample agent. This will allow the invocation to control how deep the stacks are, permitting better flamegraphs. Bug: none Test: attach the agent; run the startop test; look at the log. Change-Id: I3cee52c20c7e5034f5823a73ad8e2ce7efe42faa
2019-10-29Add allocation sampling jvmti agent David Sehr
Add an agent that can be used to sample heap allocations and produce flame graphs. Bug: none Test: am attach-agent and run Change-Id: Ic840b924cd52dc48938dd7ae4bc397241215fc5a
2019-10-21[art] fix -Wreorder-init-list for jvmtiEventCallbacks Nick Desaulniers
C++2a adds support for designated initialization, but would like member order to match that of the aggregate definition (due to side effects of the expressions in the designated initializer). The FOR_ALL_SUPPORTED_EVENTS macro is implemented in terms of the FOR_ALL_SUPPORTED_JNI_EVENTS and FOR_ALL_SUPPORTED_NO_JNI_EVENTS macros that clearly delineate between which members of jvmtiEventCallbacks have JNI events or not. The declaration of this struct intersperses the members with this distinction. We can reorder the JNI events, but we still have a problem with FOR_ALL_SUPPORTED_EVENTS which would try to intersperse them in the wrong order. It seems that the `fun` macro parameter only differs for GENERATE_LOG_FUNCTION_{NO_}JNI. We can change the FOR_ALL_SUPPORTED_JNI_EVENTS macro to accept 2 functions, one for JNI events, and one for non-JNI events. We can then order the members correctly, and specify differing arguments at the macro expansion sites (of FOR_ALL_SUPPORTED_JNI_EVENTS) if needed, otherwise we can specify the same parameter twice (small price to pay for member order). Bug: 139945549 Test: mm Change-Id: I4636b0b08747fe63c8f68e87bd24e4a38d58ffff
2019-10-21[art] fix most -Wreorder-init-list Nick Desaulniers
C++20 would like members of designated initializers to be ordered, so that initialization side effects match member initialization in explicit constructors. This differs from C99. Fix all the cases, except for a tricky case in tools/jvmti-agents/ti-fast/tifast.cc where the macros FOR_ALL_SUPPORTED_JNI_EVENTS and FOR_ALL_SUPPORTED_NO_JNI_EVENTS are mixed in the macro FOR_ALL_SUPPORTED_EVENTS. This will be done in a follow up patch. Bug: 139945549 Test: mm Change-Id: Id2a0e8cdc960820ca72221050ba2a8a15e09342b Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
2019-08-27Remove multilib suffixes from libraries Colin Cross
Libraries previously did not take the suffix property, which meant that the suffix property in defaults modules applied to libraries was ignored. The suffix property is being added to cc_library modules, which incorrectly renames existing libraries that had defaults with suffix properties. These defaults only apply to library modules, so just remove the suffix properties. Bug: 117607748 Test: m checkbuild Change-Id: Iadbb7369a7e4698394f64d25fc0a11933f41c2dc
2019-08-16Add chain-agents agent Alex Light
This agent is able to chain-load other agents listed in a given file. This is useful for testing and using persistent JVMTI agents, which might need to have specific arguments passed to them. Test: Install debuggable apk (here com.antonioleiva.bandhookkotlin) walleye:/ $ run-as com.antonioleiva.bandhookkotlin sh walleye:/data/data/com.antonioleiva.bandhookkotlin $ mkdir code_cache/startup_agents walleye:/data/data/com.antonioleiva.bandhookkotlin $ cp /data/local/tmp/libtifasts32.so code_cache walleye:/data/data/com.antonioleiva.bandhookkotlin $ cp /data/local/tmp/libtifasts64.so code_cache walleye:/data/data/com.antonioleiva.bandhookkotlin $ cp /data/local/tmp/libchainagentss32.so code_cache/startup_agents/ walleye:/data/data/com.antonioleiva.bandhookkotlin $ cp /data/local/tmp/libchainagentss64.so code_cache/startup_agents/ walleye:/data/data/com.antonioleiva.bandhookkotlin $ echo $PWD/code_cache/libtifasts32.so=log,ClassLoad > chain_agents.txt walleye:/data/data/com.antonioleiva.bandhookkotlin $ echo $PWD/code_cache/libtifasts64.so=log,ClassLoad >> chain_agents.txt Start bandhookkotlin Examine logcat Bug: 135627501 Change-Id: Icd97e8cce6c540b8d1ee5e5efd7b2587707786d3
2019-08-16Add NDK static ti-fast target Alex Light
Add libtifasts. A static NDK agent target that can more easily be run on android. Test: am attach-agent com.antonioleiva.bandhookkotlin /data/data/com.antonioleiva.bandhookkotlin/code_cache/libtifasts.so=SingleStep Change-Id: I3a48581c5af82ddf8c24fad2070d0cf60f4bdfa1
2019-08-11Replace more occurrences of `make` with `m` in ART. Roland Levillain
Calling `make` is no longer supported since https://android-review.googlesource.com/c/platform/build/+/1092954/. Test: n/a Change-Id: Ie2a0bcf7ea45b5ce82b471de31abb848a102c0ad
2019-07-30Add list extensions agent Alex Light
Add a small agent that just lists jvmti extensions. Test: ./test/run-test --host --with-agent liblistextensions.so --dev 001-HelloWorld Change-Id: I1335206c0a1dfc7ad311ec7ab5d75ee07df63957
2019-07-19Cleanup some usages of include_dirs Paul Duffin
The include_dirs property causes problems when unbundling as they can directly reference directories inside the runtime module repositories which will break the unbundled build as those repositories will not be present. While these usages do not cause problems as they are references within the runtime module repository they need removing so that the build can enforce no usage of runtime module repository paths in the include_dirs property. This change: * Replaces include_dirs with local_include_dirs where possible. * Uses libnativehelper provided header libs, this is possible as they have been updated to build against the NDK. * Adds headers for disassembler, libdexfile * Makes libart_runtime_headers build against NDK. Test: m checkbuild Bug: 134379140 Change-Id: Iaf065caf4b6a2fcf252f6d5da8fff5be97a242ea
2019-07-01Add Runner for field-count agent Alex Light
Add a python script capable of running the field-count agent across all processes and collecting the results. Test: m libfieldcounts; ./tools/jvmti-agents/count-fields.py 'Ljava/lang/Class;.extData:Ldalvik/system/ClassExt;' Change-Id: I7463dfc0b1e7a2ae21836571f3d4708199d1b706
2019-06-28Add libfieldcount jvmti agent Alex Light
This agent is useful for extracting information about the contents of fields and measuring the memory impact of CLs based on the different counts of various fields. Test: manual Test: ./test/run-test --host --dev --interpreter --runtime-option -Xopaque-jni-ids:true --64 --with-agent $ANDROID_HOST_OUT/lib64/libfieldcountd.so=Ljava/lang/Class\;.extData:Ldalvik/system/ClassExt\;,Ldalvik/system/ClassExt\;.jmethodIDs:Ljava/lang/Object\;,Ldalvik/system/ClassExt\;.staticJfieldIDs:Ljava/lang/Object\;,Ldalvik/system/ClassExt\;.instanceJfieldIDs:Ljava/lang/Object\; 001-HelloWorld Bug: 134162467 Change-Id: I21cfded08f8d9f7db67a81e2ce88ef7567599d97
2019-06-04Add libfieldnull static target. Alex Light
Getting everything setup so jvmti agents can reach libbase can be tricky. Get libfieldnull building statically. Test: manual. Install agent Change-Id: Id889636fd40bc39cca438bbb0d1e678dd0e1110f
2019-05-17ART: Run bpfmt over ART's blueprint files Andreas Gampe
Test: mmma art Change-Id: Ic85df4770c12ec02836c877b243d4aec234aaada
2019-03-25Make titrace work with kArtTiVersion Alex Light
This allows it to be used on userdebug builds with non-debuggable apps. Test: m libtitrace Change-Id: I399dbd23f27ccdaee2128e99fc8aecb97c228c24
2019-03-22Move all tools/ agents into tools/jvmti-agents directory Alex Light
This organizes all the various jvmti agents we have into a single, easy-to-search place. Test: build Change-Id: I92aeaf92e70bedabc38000bb14d4aac17a929793