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

Reply via email to