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: >