
When `ptrauth_calls` is present but `ptrauth_init_fini` is not, compiler emits raw unsigned pointers in `.init_array`/`.fini_array` sections. Previously, `__do_init`/`__do_fini` pointers, which are explicitly added to the sections, were implicitly signed (due to the presense of `ptrauth_calls`), while all the other pointers in the sections were implicitly added by the compiler and thus non-signed.. As a result, the sections contained a mix of unsigned function pointers and function pointers signed with default signing schema. This patch introduces use of inline assembly for this particular case, so we can manually specify that we do not want to sign the pointers. Note that we cannot use `__builtin_ptrauth_strip` for this purpose since its result is not a constant expression. (cherry picked from commit 19ba224fb8a925d095d84836bc9896bf564dfd99)
Compiler-RT ================================ This directory and its subdirectories contain source code for the compiler support routines. Compiler-RT is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt. ================================