From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 33244 invoked by alias); 29 May 2019 11:22:52 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 33235 invoked by uid 89); 29 May 2019 11:22:51 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=1735, preprocessed, UD:lo X-HELO: mail-lf1-f66.google.com Received: from mail-lf1-f66.google.com (HELO mail-lf1-f66.google.com) (209.85.167.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 29 May 2019 11:22:49 +0000 Received: by mail-lf1-f66.google.com with SMTP id y17so1754551lfe.0 for ; Wed, 29 May 2019 04:22:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Rkm6z22UUgE1Iar37nXkqkJpRoRsevj8uxEkSMhNJtE=; b=viKZYCSKaUo+cYbnfaouxUve+w+upmz4EL+A1qvn1k5CsKivRy9XR6cdiXQzPR/N5A eAwFrGWMzrdVbG2XiexNNdBvdHLPMbs3C/uTL9/DMtXlI1AdwQ6ySQCGlSYpwyWhSXqD WRJdnq6Wt4opJS6Quf1Q/m9M0aat24HR/+h8wFgTDdmDGw2J+Ft9yBsstoT9IUOWg2DN kso3L/y6OtVAIskINdGzAC6X2T5/LMNbD9j3SNMfkxzY+FN+4p/NktSVAYjxjklvUKu+ MF/CbWtkBdBr+nxC+yJx/MhOAfsIJBbIBKXk4AgOX6d0YFfodYIO2SFs9d2yqNx7M8CM Trdg== MIME-Version: 1.0 References: <57416d5b-c406-230a-dd13-ab77416dd3ab@arm.com> <20190107182801.GB4896@arm.com> <8f1b174d-7f04-9446-4d86-431fb1116b9b@arm.com> <5C3C67EC.1010508@foss.arm.com> <7dfd7d67-99a1-12c1-2e0d-a48bfbd6c0e2@arm.com> <503f43e4-d0b4-02b9-b365-152bb618d1a0@arm.com> <642d019c-ce63-9a3f-dcae-60795e6b20eb@arm.com> In-Reply-To: From: Christophe Lyon Date: Wed, 29 May 2019 11:53:00 -0000 Message-ID: Subject: Re: [PATCH 3/3][GCC][AARCH64] Add support for pointer authentication B key To: Sam Tebbs Cc: Kyrill Tkachov , James Greenhalgh , "gcc-patches@gcc.gnu.org" , Richard Earnshaw , Marcus Shawcroft , nd , "ian@airs.com" , Jeff Law Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2019-05/txt/msg01884.txt.bz2 On Wed, 29 May 2019 at 11:23, Sam Tebbs wrote: > > The libgcc changes have been acknowledged off-list. Committed as r271735. > After this commit, I'm seeing errors while building libstdc++: 0x11c29f3 aarch64_return_address_signing_enabled() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/config/aarch64/aarch64.c:4865 0x11c2a08 aarch64_post_cfi_startproc(_IO_FILE*, tree_node*) /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/config/aarch64/aarch64.c:15373 0xa27098 dwarf2out_do_cfi_startproc /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/dwarf2out.c:972 0xa43d6e dwarf2out_begin_prologue(unsigned int, unsigned int, char const*) /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/dwarf2out.c:1106 0xae05d5 final_start_function_1 /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/final.c:1735 0xae0c2f final_start_function(rtx_insn*, _IO_FILE*, int) /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/final.c:1818 0x11c4442 aarch64_output_mi_thunk /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/config/aarch64/aarch64.c:6085 0x9cfa4f cgraph_node::expand_thunk(bool, bool) /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:1831 0x9d0dba cgraph_node::assemble_thunks_and_aliases() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2122 0x9d0d89 cgraph_node::assemble_thunks_and_aliases() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2140 0x9d1068 cgraph_node::expand() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2259 0x9d23ec expand_all_functions /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2332 0x9d23ec symbol_table::compile() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2683 0x9d5020 symbol_table::compile() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2595 0x9d5020 symbol_table::finalize_compilation_unit() /tmp/8467855_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/cgraphunit.c:2861 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See for instructions. make[5]: *** [Makefile:900: strstream.lo] Error 1 in aarch64-none-linux-gnu/libstdc++-v3/src/c++98 (same for aarch64[_be]-elf) Christophe > On 01/03/2019 14:12, Sam Tebbs wrote: > > On 31/01/2019 14:54, Sam Tebbs wrote: > >> > >>> ping 3. The preceding two patches were committed a while ago but require > >>> the minor libgcc changes in this patch, which are the only parts left to > >>> be reviewed. > >> ping 4 > > Attached is a rebased patch made to work on top of Sudi Das' BTI patch > > (by renaming UNSPEC_PACISP to UNSPEC_PACIASP and UNSPEC_PACIBSP in > > aarch64-bti-insert.c). The updated changelog is below. > > > > Are the libgcc changes OK for trunk? > > > > gcc/ > > 2019-03-01 Sam Tebbs > > > > * config/aarch64/aarch64-builtins.c (aarch64_builtins): Add > > AARCH64_PAUTH_BUILTIN_AUTIB1716 and AARCH64_PAUTH_BUILTIN_PACIB1716. > > * config/aarch64/aarch64-builtins.c (aarch64_init_pauth_hint_builtins): > > Add autib1716 and pacib1716 initialisation. > > * config/aarch64/aarch64-builtins.c (aarch64_expand_builtin): Add checks > > for autib1716 and pacib1716. > > * config/aarch64/aarch64-protos.h (aarch64_key_type, > > aarch64_post_cfi_startproc): Define. > > * config/aarch64/aarch64-protos.h (aarch64_ra_sign_key): Define extern. > > * config/aarch64/aarch64.c (aarch64_handle_standard_branch_protection, > > aarch64_handle_pac_ret_protection): Set default sign key to A. > > * config/aarch64/aarch64.c (aarch64_expand_epilogue, > > aarch64_expand_prologue): Add check for b-key. > > * config/aarch64/aarch64.c (aarch64_ra_sign_key, > > aarch64_post_cfi_startproc, aarch64_handle_pac_ret_b_key): Define. > > * config/aarch64/aarch64.h (TARGET_ASM_POST_CFI_STARTPROC): Define. > > * config/aarch64/aarch64.c (aarch64_pac_ret_subtypes): Add "b-key". > > * config/aarch64/aarch64.md (unspec): Add UNSPEC_AUTIA1716, > > UNSPEC_AUTIB1716, UNSPEC_AUTIASP, UNSPEC_AUTIBSP, UNSPEC_PACIA1716, > > UNSPEC_PACIB1716, UNSPEC_PACIASP, UNSPEC_PACIBSP. > > * config/aarch64/aarch64.md (do_return): Add check for b-key. > > * config/aarch64/aarch64.md (sp): Replace > > pauth_hint_num_a with pauth_hint_num. > > * config/aarch64/aarch64.md (1716): Replace > > pauth_hint_num_a with pauth_hint_num. > > * config/aarch64/aarch64.opt (msign-return-address=): Deprecate. > > * config/aarch64/iterators.md (PAUTH_LR_SP): Add UNSPEC_AUTIASP, > > UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP. > > * config/aarch64/iterators.md (PAUTH_17_16): Add UNSPEC_AUTIA1716, > > UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716. > > * config/aarch64/iterators.md (pauth_mnem_prefix): Add UNSPEC_AUTIA1716, > > UNSPEC_AUTIB1716, UNSPEC_PACIA1716, UNSPEC_PACIB1716, UNSPEC_AUTIASP, > > UNSPEC_AUTIBSP, UNSPEC_PACIASP, UNSPEC_PACIBSP. > > * config/aarch64/iterators.md (pauth_hint_num_a): Replace > > UNSPEC_PACI1716 and UNSPEC_AUTI1716 with UNSPEC_PACIA1716 and > > UNSPEC_AUTIA1716 respectively. > > * config/aarch64/iterators.md (pauth_hint_num_a): Rename to pauth_hint_num > > and add UNSPEC_PACIBSP, UNSPEC_AUTIBSP, UNSPEC_PACIB1716, UNSPEC_AUTIB1716. > > * doc/invoke.texi (-mbranch-protection): Add b-key type. > > * config/aarch64/aarch64-bti-insert.c (aarch64_pac_insn_p): Rename > > UNSPEC_PACISP to UNSPEC_PACIASP and UNSPEC_PACIBSP. > > > > gcc/testsuite > > 2019-03-01 Sam Tebbs > > > > * gcc.target/aarch64/return_address_sign_b_1.c: New file. > > * gcc.target/aarch64/return_address_sign_b_2.c: New file. > > * gcc.target/aarch64/return_address_sign_b_3.c: New file. > > * gcc.target/aarch64/return_address_sign_b_exception.c: New file. > > * gcc.target/aarch64/return_address_sign_ab_exception.c: New file. > > * gcc.target/aarch64/return_address_sign_builtin.c: New file > > > > libgcc/ > > 2019-03-01 Sam Tebbs > > > > * config/aarch64/aarch64-unwind.h (aarch64_cie_signed_with_b_key): New > > function. > > * config/aarch64/aarch64-unwind.h (aarch64_post_extract_frame_addr, > > aarch64_post_frob_eh_handler_addr): Add check for b-key. > > * config/aarch64/aarch64-unwind-h (aarch64_post_extract_frame_addr, > > aarch64_post_frob_eh_handler_addr, aarch64_post_frob_update_context): > > Rename RA_A_SIGNED_BIT to RA_SIGNED_BIT. > > * unwind-dw2-fde.c (get_cie_encoding): Add check for 'B' in augmentation > > string. > > * unwind-dw2.c (extract_cie_info): Add check for 'B' in augmentation > > string. > > (RA_A_SIGNED_BIT): Rename to RA_SIGNED_BIT. > >