On Tue, 21 Dec 2021 06:17:25 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:
> For any SA test that attaches to an OSX process (this would be all SA tests > except for those that test core file support), there is a check to make sure > that the target jvm process is not a signed binary. If it is, > SkippedException is thrown, and the test passes without doing anything. This > is all we can do since being signed implied being notarized, and debuggers > cannot attach to a notarized binary. > > I noticed that on macosx-aarch64, all our SA tests that attach to a process > were being skipped because the binary was signed, even for debug builds. It > turns out that for macosx-aarch64, the linker always ads what is known as > ad-hoc signing. You can find some info on ad-hoc signing here: > > https://eclecticlight.co/2020/08/22/apple-silicon-macs-will-require-signed-code/ > > The tests use the codesign tool to determine if the binary is signed. > Normally the check just relies on getting an error code of 1 when not signed, > but since all binaries are now signed on macosx-aarch64, we need to modify > the check to ignore ad-hoc signing. > > Using "codesign --display" on an an ad-hoc signed binary shows some output > that is of interest: > > bash-3.2$ codesign --display --verbose=4 a.out > CodeDirectory v=20400 size=254 flags=0x20002(adhoc,linker-signed) hashes=5+0 > location=embedded > > Looking for flags=0x20002(adhoc,linker-signed) will tell us if the binary is > adhoc signed, which means we can assume that the SA tests can still be run > against it. > > Looking for flags=0x10000(runtime) will tell us that the binary is hardened. > These are binaries that we cannot use with SA. > > If the binary is not signed at all, which should only happen on macosx-x64, > codesign will print the message "code object is not signed at all". We can > also run SA against these binaries. > > Due to fixing the issue, we now have to problem list a few more core file > tests on macosx-aarch64 due to 8269982. This issue was not noticed in the > past because the tests were not being run. This was due to most of our > macosx-aarch64 machines not being capable of producing a core file. Without > this fix the test assumes it couldn't produce the core file because the > binary was signed. With this fix it, for binaries that are not hardened the > test will fail if it does not produce a core file. This pull request has now been integrated. Changeset: 16e0ad0a Author: Chris Plummer <cjplum...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/16e0ad0ad088af3ba1c9903ed8df60799a1ba651 Stats: 68 lines in 5 files changed: 27 ins; 18 del; 23 mod 8270199: Most SA tests are skipped on macosx-aarch64 because all executables are signed Reviewed-by: dholmes, kevinw ------------- PR: https://git.openjdk.java.net/jdk/pull/6906