This is to enable flush coverage from select process on the device by process id:
$ acov-llvm.py flush -p [list of process pids]
Change-Id: I14cf30c80f6d1f7faa0d23f752994f0172ee3ce5
This adds the ability to detect and generate the correct METADATA file
for MPL licensed crates.
Bug: 308477037
Test: atest --host add3prf_test; Ran against https://crates.io/crates/fdt
Change-Id: I2b1765a08b68c5eb59e4f52b33c1df337e8c148b
Remove the check performed by cargo2rulesmk.py
whether the external/rust/crates/{name} directories
exist for all dependencies of the current crate.
These directories only exist in the Android tree,
not in the minimal checkout inside the redshell sandbox.
Bug: 281857510
Test: cargo2rulesmk.py on thiserror-impl
Change-Id: I1e5d46b4de3129770ab87ebc5e58563010ae6605
it is meaningful only if it is installed in the device
Bug: 277909042
Test: cargo2android.py with/without device, and then check
product/vendor_available
Change-Id: I9ca7328ac953849db224949089412e181b659945
rust_library + host_suffix + rlib_suffix is the right order
For example, rust_library_host_dylib, rust_library_host_rlib
Bug: 277909042
Test: cargo2android --run --force-rlib
Change-Id: Ib156b96853eb51bae1f68229ebe76b87b0f8b363
This is helpful for crates like protobuf and syn for which we have
multiple versions, and will let us eliminate several patch files
Test: Ran it on everything in external/rust/crates.
Change-Id: I29ac1ee69be99b7164e1458e0d8fc1cb028b15a0
The script uses Python match which was introduced
in Python 3.10. The sandbox only has 3.8, so we need
to remove match so the script can run.
Bug: 281857510
Test: Run in sandbox on bitflags crate
Change-Id: Id03b0e02f8593b551f2aca201fe0ed2659d58d21
When --add3prf is set, `get_rust_pkg.py` script `cd` into the crate directory and run `add3prf.py`. However, `add3prf.py` doesn't exist in the newly downloaded crate directory. This CL ensures that we reference to the existing `add3prf.py` script.
Test: development/scripts/get_rust_pkg.py -add3prf -v -o /tmp tinyjson-2.5.1
Change-Id: I4273d4f2b6a1f353960adbbab9abbb96bf3e68f3
Adding per-file line for cargo2rulesmk.py such that
it can be maintained by members of the platsec Rust
and Trusty teams.
Bug: 281857510
Change-Id: I9aedee5a76c4d463d4cf3d0851c60193d96a7696
Add script that generates rules.mk files from Rust crates.
Based on and inspired by cargo2android.py script to generate
blueprint files for the Android build system.
The script has only been tested on the vendored crates used to
build Trusty (see external/rust/crates) and does not support
the full range of crate types or cargo features.
Bug: 281857510
Change-Id: I1951f75476c36b9a1b794c4a51483f2c7387b1f5
The new argument makes the generator write the VSCode launch.json config
into a file instead of stdout.
The generator uses marker lines to insert the config. This way the user
can control where in the file the launch config is written.
Test: atest gdbclient_test
Test: lldbclient.py --setup-forwarding vscode-lldb \
--vscode-launch-props= \
'{"internalConsoleOptions" : "openOnSessionStart"}' \
--vscode-launch-file=.vscode/launch.json -r test
Change-Id: I92b3f479b5ebcb722933938f52d0f23ff098beac
The current cargo2android.py doesn't work well w/ `--cargo_bin`. It would use the full path rustc(/<HOME>/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc) instead of basename(`rustc`). The `RUSTC_PAT` and `RUSTC_VV_CMD_ARGS` regex doesn't match the full path.
This CL uses `(.*\/)?` to match the path if it exists.
Change-Id: If5e4060410c1cd45ad6c9612ebe856552aa14d08
Add the path to the existing architecture-specific runtime directory,
in preparation for when lldb-server is added to the toolchain build by
Iba7efaa62e7d3cc8e3bd1080d9b4a67bc241faf2.
Test: `gdbclient.py -r surfaceflinger` connected to a riscv64 board
Change-Id: I1654378a7ba92fcd7ffe478d2b491f426655e6f1
Redshell unfortunately uses this old version, while the union operator
for dictionaries was only added in Python 3.9.
Test: Ran cargo2android.py on a crate with variants
Change-Id: I7a875acde11c23a3b789ef384f3ab32100d7c6d5
The new argument allows the user to pass a JSON of properties to merge
into the generated launch.json config when setting up vscode-lldb
forwarding. This way the user can add pre-build tasks, extra init
commands etc.
Test: atest gdbclient_test
Test: lldbclient.py --setup-forwarding=vscode-lldb
--vscode-launch-props='{"sourceMap": {"test1": "test2"},
"postDebugTask": "Stop LLDB client", "processCreateCommands" :
["test"]}' -r test
Change-Id: I763dd15dde10421e86bc0a6ddfde974156ef1588
In a couple cases it exposed unused arguments or type errors. This
change fixes those as well.
Test: mypy development/scripts/gdbclient.py
Test: gdbclient -r /system/bin/date
Change-Id: If471a1853b813e01c89e321eab3d424f1c256f2d
A downstream project has an invalid branching structure, so we can't
actually rename `libsyn` to `libsyn-legacy` like we normally would.
Instead, we must allow the legacy package to squat on the `libsyn` name
until the branching structure is fixed to unblock the upgrade to
syn-2.x.
Test: TreeHugger
Bug: 276463929
Bug: 278978404
Change-Id: If72d389dd5238299cc1b35818e0b5596b0469cb1
This adds a suffix to all dependencies, which may be useful for no_std
crates.
Bug: 279614907
Test: Ran on external/rust/crates/ciborium
Change-Id: I4d504fbfdcd079a946814dcf953b42baa0ca3563
Variant test and cargo flags were being ignored.
Bug: 279614907
Test: Ran on external/rust/crates/serde
Change-Id: I9c6cf71c8d04944cc7c532cfb53b50c2efc3e375
These allow most no_std crates to be supported without extra patches.
Bug: 279614907
Test: Ran on external/rust/crates/half
Change-Id: I1a69ff7950fb63320ef7c87d6cd45b20915df801
As it turns out, gdbclient.py is broken when connecting to a host:port
$ANDROID_SERIAL where the host is something other than localhost,
because it will try to connect to a TCP socket on the host named in
$ANDROID_SERIAL, while lldb-server is not even set up to listen on a TCP
socket on the device (it listens on a Unix socket which gets forwarded
by adb forward to localhost).
Fix it by entirely removing the code that tries to connect directly to
the host if the $ANDROID_SERIAL is of the form host:port.
Change-Id: I91a04aa811b246c9cac82ef3b0779dc284364edf
Replaced with ARCH_IS_32BIT since that's the only thing truly
necessary to work.
This also makes the register regex much more lenient, but it appears
to be strict enough that it doesn't seem to capture arbitrary lines
when run through logcat.
Removed the StripPC function and verified that an arm crash that
ends in 1 still works.
Removed the architecture.py script, it is old and I don't see anyone
using it.
Modify the reading of the lines to ignore any errors in the input.
Test: All unit tests pass.
Test: Symbolized arm and arm64 tombstones
Test: Symbolized x86 and x86_64 tombstones
Test: Ran through a logcat and verified it caught the bug but
Test: didn't print any extra information.
Change-Id: I6a65ecaad68da1d56864db32ff434512e4df0d89
Test: Ran with a BUILD_NUMBER as parameter.
Change-Id: I1048cc8bcb6565e14be00563da565eb3b8ce7989
Signed-off-by: xutianqi <xutianqi@xiaomi.corp-partner.google.com>
This is used for managing 3p crates, and the vast majority of them
should be available to both vendor and product. Enable support by
default.
Bug: 270690570
Test: Regenerate external/rust/crates/*
Change-Id: Ie5cb4b8d00de5e6ae37c5a69cb2ee0c0cc6f573a
The ring crate hasn't had a non-alpha release in over two years, and
may need to be updated to an alpha release. Modify the version regex
in cargo2android.py to recognize the alpha version as part of the
version suffix.
Test: manually run cargo2android.py in redshell
Change-Id: If48d5be339d10bc3e6651485b0038b7219403077
Import paths for non-local tests because including tests
directly has proven to be fragile and burdensome. For example,
whenever a project removes or renames a test, all the TEST_MAPPING
files for its reverse dependencies must be updated or we get test
breakages. That can be many tens of projects that must updated to
prevent the reported breakage of tests that no longer exist.
Similarly when a test is added, it won't be run when the reverse
dependencies change unless/until update_crate_tests.py is run for its
depenencies. Importing TEST_MAPPING files instead of tests solves
both of these problems. When tests are removed, renamed, or added,
only files local to the project need to be modified. The downside is
that we potentially miss some tests. But this seems like a reasonable
tradeoff since it's primarily unit tests that are missing, and all
unit tests are always run on the host for every presubmit.
See aosp/2400500 as an example of what test mapping files now
look like after this change.
Test: run it over all projects in external/rust/crates
Change-Id: I2b644f9ebf97968c9928f5b1756b2ab199e8e7ca
The cargo2android.json config file now supports the key "variants" with
a list of entries containing keys and build name suffix. Each entry
will produce a different library (or binary). Keys supplied for each
variant will overwrite any existing ones specified in the config file.
See an example of the protobuf crate on aosp/2368788.
Test: None
Change-Id: Iaca67c7f22718c27b3cb118d9794f1ff01d31c84