)]}' { "commit": "293d9ee4e837d122a28cd992e37779a5de48dc7f", "tree": "33d9415a6a05a83f4332ee10572c55e5588a0f88", "parents": [ "4188c3f49552bfea3b740b3007fdcb096d21cae1" ], "author": { "name": "David Benjamin", "email": "davidben@google.com", "time": "Fri Nov 16 15:34:05 2018 -0600" }, "committer": { "name": "CQ bot account: commit-bot@chromium.org", "email": "commit-bot@chromium.org", "time": "Mon Nov 19 19:58:15 2018 +0000" }, "message": "Support execute-only memory for AArch64 assembly.\n\nPut data in .rodata and, rather than adr, use the combination of adrp :pg_hi21:\nand add :lo12:. Unfortunately, iOS uses different syntax, so we must add more\ntransforms to arm-xlate.pl.\n\nTested manually by:\n\n1. Use Android NDK r19-beta1\n\n2. Follow usual instructions to configure CMake for aarch64, but pass\n -DCMAKE_EXE_LINKER_FLAGS\u003d\"-fuse-ld\u003dlld -Wl,-execute-only\".\n\n3. Build. Confirm with readelf -l tool/bssl that .text is not marked\n readable.\n\n4. Push the test binaries onto a Pixel 3. Test normally and with\n --cpu\u003d{none,neon,crypto}. I had to pass --gtest_filter\u003d-*Thread* to\n crypto_test. There appears to be an issue with some runtime function\n that\u0027s unrelated to our assembly.\n\nNo measurable performance difference.\n\nGoing forward, to support this, we will need to apply similar changes to\nall other AArch64 assembly. This is relatively straightforward, but may\nbe a little finicky for dual-AArch32/AArch64 files (aesv8-armx.pl).\n\nUpdate-Note: Assembly syntax is a mess. There\u0027s a decent chance some\nassembler will get offend.\n\nChange-Id: Ib59b921d4cce76584320fefd23e6bb7ebd4847eb\nReviewed-on: https://boringssl-review.googlesource.com/c/33245\nReviewed-by: Adam Langley \u003cagl@google.com\u003e\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\n", "tree_diff": [ { "type": "modify", "old_id": "0a1c415f1387bf1c17a6933af6cbde1f3cbc2e5a", "old_mode": 33261, "old_path": "crypto/chacha/asm/chacha-armv8.pl", "new_id": "7795f2cbbda019dc4edf162a273c32036906e24d", "new_mode": 33261, "new_path": "crypto/chacha/asm/chacha-armv8.pl" }, { "type": "modify", "old_id": "2fc616e771b42b083d5bf802fea079003b3feac7", "old_mode": 33188, "old_path": "crypto/fipsmodule/aes/asm/aesv8-armx.pl", "new_id": "13f86a0b69435265823d7a6795fa8bd134687f06", "new_mode": 33188, "new_path": "crypto/fipsmodule/aes/asm/aesv8-armx.pl" }, { "type": "modify", "old_id": "80567d9fa99f5da62bc96250add90f7631935ddb", "old_mode": 33188, "old_path": "crypto/fipsmodule/sha/asm/sha1-armv8.pl", "new_id": "7c8880fb2ea7524ad94fae2625654b6fc19954c5", "new_mode": 33188, "new_path": "crypto/fipsmodule/sha/asm/sha1-armv8.pl" }, { "type": "modify", "old_id": "22c47d75c90a1bb347b690456cc012451170800e", "old_mode": 33188, "old_path": "crypto/fipsmodule/sha/asm/sha512-armv8.pl", "new_id": "3f69071f6622f138d92549be5164c36b9ba7ee2c", "new_mode": 33188, "new_path": "crypto/fipsmodule/sha/asm/sha512-armv8.pl" }, { "type": "modify", "old_id": "29e086ddd3dc08fab4b606fa5c7b9eac1b944d6f", "old_mode": 33261, "old_path": "crypto/perlasm/arm-xlate.pl", "new_id": "abb97e3d740094aada15b8a033fccbe386b7d96f", "new_mode": 33261, "new_path": "crypto/perlasm/arm-xlate.pl" } ] }