On Mon Jan 16, 2023 at 04:42:39PM +0100, Theo Buehler wrote:
> Move constants in perl generated BoringSSL assembly from .text to
> .rodata. This fixes the build (and only the build) on x-only amd64.
> I'll look into fixes for the aarch64 perlasm later. There the build
> succeeds, but runtime failures are likely.
Thanks Theo, what ever it takes. No objection from me.
>
> Similar fixes will be needed by anything that embeds BoringSSL sources
> such as the chromium derivatives and the ring crate.
>
> I edited the .S files directly instead of the .pl files since the .pl
> files seem to be unused by the build system (also in chromium).
>
>
> As mentioned, this is unfortunately only good enough to fix the build.
> Runtime testing shows that there are other x-only violation in this code
> base. Apparently V8 (also used by chrome & friends) has an assembly
> generator. When using otter-browser QtWebEngineProcess segfaults with
> things such as:
>
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0 0x00000c8392f76fa5 in
> v8::internal::EmbeddedData::InstructionStartOfBuiltin(int) const ()
> from /usr/local/lib/qt5/libQt5WebEngineCore.so.1.0
>
> otter-browser works fine when qtwebengine is built with USE_NOEXECONLY.
> One step at a time.
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/qt5/qtwebengine/Makefile,v
> retrieving revision 1.29
> diff -u -p -r1.29 Makefile
> --- Makefile 5 Nov 2022 17:07:33 -0000 1.29
> +++ Makefile 16 Jan 2023 13:31:22 -0000
> @@ -15,7 +15,7 @@ VERSION = ${QT5_WEBENGINE_VERSION}
> DIST_VERSION = ${QT5_WEBENGINE_VERSION}
> DISTNAME = ${QT5NAME:L}-everywhere-src-${DIST_VERSION}
> PKGNAME ?=
> ${DISTNAME:C/-everywhere-src//:C/-${DIST_VERSION}/-${VERSION}/}
> -REVISION = 8
> +REVISION = 9
>
> MASTER_SITES ?=
> https://download.qt.io/official_releases/qt/${QT5_WEBENGINE_VERSION:R}/${QT5_WEBENGINE_VERSION}/submodules/
> \
>
> https://mirrors.ocf.berkeley.edu/qt/official_releases/qt/${QT5_WEBENGINE_VERSION:R}/${QT5_WEBENGINE_VERSION}/submodules/
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_chacha_chacha-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_chacha_chacha-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_chacha_chacha-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_chacha_chacha-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,19 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/chacha/chacha-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/chacha/chacha-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/chacha/chacha-x86_64.S
> +@@ -16,6 +16,7 @@
> + .extern OPENSSL_ia32cap_P
> + .hidden OPENSSL_ia32cap_P
> +
> ++.rodata
> + .align 64
> + .Lzero:
> + .long 0,0,0,0
> +@@ -45,6 +46,7 @@
> + .Lsixteen:
> + .long 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
> + .byte
> 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
> ++.previous
> + .globl ChaCha20_ctr32
> + .hidden ChaCha20_ctr32
> + .type ChaCha20_ctr32,@function
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-gcm-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-gcm-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-gcm-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-gcm-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,19 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S
> +@@ -835,6 +835,7 @@ aesni_gcm_encrypt:
> + .byte 0xf3,0xc3
> + .cfi_endproc
> + .size aesni_gcm_encrypt,.-aesni_gcm_encrypt
> ++.rodata
> + .align 64
> + .Lbswap_mask:
> + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> +@@ -847,6 +848,7 @@ aesni_gcm_encrypt:
> + .Lone_lsb:
> + .byte 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
> + .byte
> 65,69,83,45,78,73,32,71,67,77,32,109,111,100,117,108,101,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
> ++.previous
> + .align 64
> + #endif
> + .section .note.GNU-stack,"",@progbits
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_aesni-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,18 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/aesni-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/aesni-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/aesni-x86_64.S
> +@@ -2480,6 +2480,7 @@ __aesni_set_encrypt_key:
> + .byte 0xf3,0xc3
> + .size aes_hw_set_encrypt_key,.-aes_hw_set_encrypt_key
> + .size __aesni_set_encrypt_key,.-__aesni_set_encrypt_key
> ++.rodata
> + .align 64
> + .Lbswap_mask:
> + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> +@@ -2502,5 +2503,6 @@ __aesni_set_encrypt_key:
> +
> + .byte
> 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
> + .align 64
> ++.previous
> + #endif
> + .section .note.GNU-stack,"",@progbits
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-ssse3-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-ssse3-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-ssse3-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-ssse3-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,12 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S
> +@@ -417,7 +417,7 @@ gcm_ghash_ssse3:
> +
> + .align 16
> +
> +-
> ++.rodata
> + .Lreverse_bytes:
> + .byte 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
> +
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_ghash-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,11 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/ghash-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/ghash-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/ghash-x86_64.S
> +@@ -1112,6 +1112,7 @@ gcm_ghash_avx:
> + .byte 0xf3,0xc3
> + .cfi_endproc
> + .size gcm_ghash_avx,.-gcm_ghash_avx
> ++.rodata
> + .align 64
> + .Lbswap_mask:
> + .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha1-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha1-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha1-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha1-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,11 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha1-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha1-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha1-x86_64.S
> +@@ -3582,6 +3582,7 @@ _avx_shortcut:
> + .byte 0xf3,0xc3
> + .cfi_endproc
> + .size sha1_block_data_order_avx,.-sha1_block_data_order_avx
> ++.rodata
> + .align 64
> + K_XX_XX:
> + .long 0x5a827999,0x5a827999,0x5a827999,0x5a827999
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha256-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha256-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha256-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha256-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,19 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha256-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha256-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha256-x86_64.S
> +@@ -1738,6 +1738,7 @@ sha256_block_data_order:
> + .byte 0xf3,0xc3
> + .cfi_endproc
> + .size sha256_block_data_order,.-sha256_block_data_order
> ++.rodata
> + .align 64
> + .type K256,@object
> + K256:
> +@@ -1781,6 +1782,7 @@ K256:
> + .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
> + .long 0xffffffff,0xffffffff,0x03020100,0x0b0a0908
> + .byte
> 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
> ++.previous
> + .type sha256_block_data_order_ssse3,@function
> + .align 64
> + sha256_block_data_order_ssse3:
> Index:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha512-x86_64_S
> ===================================================================
> RCS file:
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha512-x86_64_S
> diff -N
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha512-x86_64_S
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++
> patches/patch-src_3rdparty_chromium_third_party_boringssl_linux-x86_64_crypto_fipsmodule_sha512-x86_64_S
> 16 Jan 2023 09:04:33 -0000
> @@ -0,0 +1,19 @@
> +Index:
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha512-x86_64.S
> +---
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha512-x86_64.S.orig
> ++++
> src/3rdparty/chromium/third_party/boringssl/linux-x86_64/crypto/fipsmodule/sha512-x86_64.S
> +@@ -1736,6 +1736,7 @@ sha512_block_data_order:
> + .byte 0xf3,0xc3
> + .cfi_endproc
> + .size sha512_block_data_order,.-sha512_block_data_order
> ++.rodata
> + .align 64
> + .type K512,@object
> + K512:
> +@@ -1823,6 +1824,7 @@ K512:
> + .quad 0x0001020304050607,0x08090a0b0c0d0e0f
> + .quad 0x0001020304050607,0x08090a0b0c0d0e0f
> + .byte
> 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
> ++.previous
> + .type sha512_block_data_order_avx,@function
> + .align 64
> + sha512_block_data_order_avx:
>