• D
    Always use adr with __thumb2__. · 8a5d8bc4
    David Benjamin 提交于
    Thumb2 addresses are a bit a mess, depending on whether a label is
    interpreted as a function pointer value (for use with BX and BLX) or as
    a program counter value (for use with PC-relative addressing). Clang's
    integrated assembler mis-assembles this code. See
    https://crbug.com/124610#c54 for details.
    
    Instead, use the ADR pseudo-instruction which has clear semantics and
    should be supported by every assembler that handles the OpenSSL Thumb2
    code. (In other files, the ADR vs SUB conditionals are based on
    __thumb2__ already. For some reason, this one is based on __APPLE__, I'm
    guessing to deal with an older version of clang assembler.)
    
    It's unclear to me which of clang or binutils is "correct" or if this is
    even a well-defined notion beyond "whatever binutils does". But I will
    note that https://github.com/openssl/openssl/pull/4669 suggests binutils
    has also changed behavior around this before.
    Reviewed-by: NAndy Polyakov <appro@openssl.org>
    Reviewed-by: NRich Salz <rsalz@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/5431)
    8a5d8bc4
bsaes-armv7.pl 62.3 KB