RFR: 8317611: Add a tool like jdeprscan to find usage of restricted methods
Jorn Vernee
jvernee at openjdk.org
Wed Jun 19 13:41:23 UTC 2024
This PR adds a new JDK tool, called `jnativescan`, that can be used to find code that accesses native functionality. Currently this includes `native` method declarations, and methods marked with `@Restricted`.
The tool accepts a list of class path and module path entries through `--class-path` and `--module-path`, and a set of root modules through `--add-modules`, as well as an optional target release with `--release`.
The default mode is for the tool to report all uses of `@Restricted` methods, and `native` method declaration in a tree-like structure:
app.jar (ALL-UNNAMED):
main.Main:
main.Main::main(String[])void references restricted methods:
java.lang.foreign.MemorySegment::reinterpret(long)MemorySegment
main.Main::m()void is a native method declaration
The `--print-native-access` option can be used print out all the module names of modules doing native access in a comma separated list. For class path code, this will print out `ALL-UNNAMED`.
Testing:
- `langtools_jnativescan` tests.
- Running the tool over jextract's libclang bindings, which use the FFM API, and thus has a lot of references to `@Restricted` methods.
- tier 1-3
-------------
Commit messages:
- Merge branch 'master' into jnativescan
- use URI-based constructor of Path
- add jnativescan to help flag test
- add --print-native-access test
- correct one more comment
- correct comment
- add missing newlinw
- add more testing + cleanup code
- add test for references through subclasses
- add test for array method refs
- ... and 5 more: https://git.openjdk.org/jdk/compare/50bed6c6...9e8dad03
Changes: https://git.openjdk.org/jdk/pull/19774/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19774&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8317611
Stats: 1769 lines in 34 files changed: 1760 ins; 0 del; 9 mod
Patch: https://git.openjdk.org/jdk/pull/19774.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/19774/head:pull/19774
PR: https://git.openjdk.org/jdk/pull/19774
More information about the build-dev
mailing list