It builds and kind of works on arm64. It's much less broken than 9.2
so I don't believe that's a blocker, but stepping between shared objects
is strange.

As you can see in this reproducer, instead of breaking at the entry of
EVP_aead_aes_256_gcm() when I try to step, it slithers way past that and
only remembers to break much later in libc rather than libcrypto.

$ egdb -q openssl
Reading symbols from openssl...
(No debugging symbols found in openssl)
(gdb) b tls13_cipher_aead
Function "tls13_cipher_aead" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (tls13_cipher_aead) pending.
(gdb) run s_client -connect libressl.org:443
Starting program: /usr/bin/openssl s_client -connect libressl.org:443
CONNECTED(00000003)

Breakpoint 1, tls13_cipher_aead (cipher=<optimized out>) at 
/usr/src/lib/libssl/tls13_lib.c:78
78              if (cipher == NULL)
(gdb) bt
#0  tls13_cipher_aead (cipher=<optimized out>) at 
/usr/src/lib/libssl/tls13_lib.c:78
#1  0x00000012501a2b28 in tls13_client_engage_record_protection 
(ctx=0x12a8be6180)
    at /usr/src/lib/libssl/tls13_client.c:353
#2  tls13_server_hello_recv (ctx=0x12a8be6180, cbs=<optimized out>)
    at /usr/src/lib/libssl/tls13_client.c:492
#3  0x00000012501a29d8 [PAC] in tls13_server_hello_retry_request_recv 
(ctx=0x12a8be6180,
    cbs=0x7dc49c23e8) at /usr/src/lib/libssl/tls13_client.c:409
#4  0x0000001250185520 [PAC] in tls13_handshake_recv_action (ctx=0x12a8be6180,
    action=0x12501d3820 <state_machine+64>) at 
/usr/src/lib/libssl/tls13_handshake.c:549
#5  tls13_handshake_perform (ctx=0x12a8be6180) at 
/usr/src/lib/libssl/tls13_handshake.c:412
#6  0x000000125018acac [PAC] in tls13_legacy_connect (ssl=0x134c957a00)
    at /usr/src/lib/libssl/tls13_legacy.c:466
#7  0x000000125018a744 [PAC] in tls13_legacy_write_bytes (ssl=0x134c957a00, 
type=32, vbuf=0x0,
    len=0) at /usr/src/lib/libssl/tls13_legacy.c:266
#8  0x0000000e4f8e2c20 [PAC] in ?? ()
#9  0x0000000e4f8d7e38 [PAC] in ?? ()
#10 0x0000000e4f8c038c [PAC] in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) n
80              if (cipher->algorithm_ssl != SSL_TLSV1_3)
(gdb)
83              switch (cipher->algorithm_enc) {
(gdb)
87                      return EVP_aead_aes_256_gcm();
(gdb) s
_libc_time (t=<optimized out>) at /usr/src/lib/libc/gen/time.c:36
36      {
(gdb) bt
#0  _libc_time (t=<optimized out>) at /usr/src/lib/libc/gen/time.c:36
#1  0x00000012f2c9b5b0 in x509_verify_cert_times (cert=0x12951ce620,
    cmp_time=<error reading variable: Cannot access memory at address 0x0>,
    error=<optimized out>) at /usr/src/lib/libcrypto/x509/x509_verify.c:820
#2  x509_verify_cert_valid (ctx=0x12a49c3280, cert=0x12951ce620, 
current_chain=0x134c95b720)
    at /usr/src/lib/libcrypto/x509/x509_verify.c:940
#3  0x00000012f2c9bbcc [PAC] in x509_verify_consider_candidate 
(ctx=0x12a49c3280,
    cert=0x12951ce0e0, is_root_cert=0, candidate=0x12951ce620, 
current_chain=0x134c95b720,
    full_chain=1, name=<optimized out>) at 
/usr/src/lib/libcrypto/x509/x509_verify.c:592
#4  0x00000012f2c9b1b4 [PAC] in x509_verify_build_chains (ctx=0x12a49c3280, 
cert=0x12951ce0e0,
    current_chain=0x134c95b720, full_chain=1, name=0x0)
    at /usr/src/lib/libcrypto/x509/x509_verify.c:729
#5  0x00000012f2c9a66c [PAC] in x509_verify (ctx=0x12a49c3280, 
leaf=0x12951ce0e0, name=0x0)
    at /usr/src/lib/libcrypto/x509/x509_verify.c:1164
#6  0x00000012f2c8f830 [PAC] in _lcry_X509_verify_cert (ctx=0x12a49bfe40)
    at /usr/src/lib/libcrypto/x509/x509_vfy.c:644
#7  0x00000012501b74c0 [PAC] in ssl_verify_cert_chain (s=0x134c957a00, 
certs=<optimized out>)
    at /usr/src/lib/libssl/ssl_cert.c:437
#8  0x00000012501a3338 [PAC] in tls13_server_certificate_recv (ctx=0x12a8be6180,
    cbs=<optimized out>) at /usr/src/lib/libssl/tls13_client.c:605
#9  0x0000001250185520 [PAC] in tls13_handshake_recv_action (ctx=0x12a8be6180,
    action=0x12501d38a0 <state_machine+192>) at 
/usr/src/lib/libssl/tls13_handshake.c:549
#10 tls13_handshake_perform (ctx=0x12a8be6180) at 
/usr/src/lib/libssl/tls13_handshake.c:412
#11 0x000000125018acac [PAC] in tls13_legacy_connect (ssl=0x134c957a00)
    at /usr/src/lib/libssl/tls13_legacy.c:466
#12 0x000000125018a744 [PAC] in tls13_legacy_write_bytes (ssl=0x134c957a00, 
type=1284996096,
    vbuf=0x1a, len=0) at /usr/src/lib/libssl/tls13_legacy.c:266
#13 0x0000000e4f8e2c20 [PAC] in ?? ()
#14 0x0000000e4f8d7e38 [PAC] in ?? ()
#15 0x0000000e4f8c038c [PAC] in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

Reply via email to