From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 66794 invoked by alias); 14 Feb 2018 04:17:33 -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 66784 invoked by uid 89); 14 Feb 2018 04:17:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-7.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-oi0-f54.google.com Received: from mail-oi0-f54.google.com (HELO mail-oi0-f54.google.com) (209.85.218.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 14 Feb 2018 04:17:31 +0000 Received: by mail-oi0-f54.google.com with SMTP id k15so15597602oib.1 for ; Tue, 13 Feb 2018 20:17:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=2vC1OvKVZocTp10KLGjtg3jsOH4HrdLb2KG99R00Sxw=; b=AMOB7qOeeamx8vT60lzoZP0O0qvCF78km3IwYFUmgo8K0PtdLxUpvVxlKRqH89y3Wz Ys+Y2tfJmtt1yphj4yG1rPMEIpF+imtH8GgA94r76Uv2FOjMx411L8uSseqpmfpo9l0Z BAR5V8eSe+SRZjR3UuL62R9Of7kxmAX596SYx6oyxY5u+aM3BOhEGDh0xCD14IQx8w23 ATzPyZ6kgvQrXbJv5+90IPAOfCV0/VfEB4pXGr4/PdEVU0MDEPgvfmNAF/4AuT4IEbQd xJJOF29lCXGvHTXjYtaOXJpSB5M/Ccz7gdXIFtj84+Hox++W7q7mohmIt2EIHDQwVh/R EG3w== X-Gm-Message-State: APf1xPBT9cO3WD2aMIBaf9UVQ6f7Q2xebhOj64vDecdjAmadyC849Q/p zjoNv6Jd/51M+Q6u83AOnDTBOagki832YFijF3o= X-Google-Smtp-Source: AH8x227jutiFGYGVG3O5LazsAb0GFvJeQr2UeT6QTeKMtmGZK6GC2a/7QMNRSKajXxN0ptFqRgYv3j9jOME1tqVlHTg= X-Received: by 10.202.44.23 with SMTP id s23mr2537593ois.69.1518581849313; Tue, 13 Feb 2018 20:17:29 -0800 (PST) MIME-Version: 1.0 Received: by 10.74.10.20 with HTTP; Tue, 13 Feb 2018 20:17:28 -0800 (PST) From: "H.J. Lu" Date: Wed, 14 Feb 2018 04:17:00 -0000 Message-ID: Subject: PING^2: [PATCH] i386: Add __x86_indirect_thunk_nt_reg for -fcf-protection -mcet To: GCC Patches Cc: Jan Hubicka Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2018-02/txt/msg00805.txt.bz2 On Thu, Feb 8, 2018 at 10:09 AM, H.J. Lu wrote: > On Fri, Feb 2, 2018 at 8:54 AM, H.J. Lu wrote: >> nocf_check attribute can be used with -fcf-protection -mcet to disable >> control-flow check by adding NOTRACK prefix before indirect branch. >> When -mindirect-branch=thunk-extern -mindirect-branch-register is added, >> indirect branch via register, "notrack call/jmp reg", is converted to >> >> call/jmp __x86_indirect_thunk_nt_reg >> >> When running on machines with CET enabled, __x86_indirect_thunk_nt_reg >> can be updated to >> >> notrack jmp reg >> >> at run-time to restore NOTRACK prefix in the original indirect branch. >> >> Since we don't support -mindirect-branch=thunk-extern, CET and MPX at >> the same time, -mindirect-branch=thunk-extern is disallowed with >> -fcf-protection=branch and -fcheck-pointer-bounds. >> >> Tested on i686 and x86-64. OK for trunk? >> >> Thanks. >> >> H.J. >> --- >> gcc/ >> >> PR target/84176 >> * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an >> error when -mindirect-branch=thunk-extern, -fcf-protection=branch >> and -fcheck-pointer-bounds are used together. >> (indirect_thunk_prefix): New enum. >> (indirect_thunk_need_prefix): New function. >> (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use >> "_nt" instead of "_bnd" for NOTRACK prefix. >> (output_indirect_thunk): Replace need_bnd_p with need_prefix. >> (output_indirect_thunk_function): Likewise. >> (): Likewise. >> (ix86_code_end): Update output_indirect_thunk_function calls. >> (ix86_output_indirect_branch_via_reg): Replace >> ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix. >> (ix86_output_indirect_branch_via_push): Likewise. >> (ix86_output_function_return): Likewise. >> * doc/invoke.texi: Document -mindirect-branch=thunk-extern is >> incompatible with -fcf-protection=branch and >> -fcheck-pointer-bounds. >> >> gcc/testsuite/ >> >> PR target/84176 >> * gcc.target/i386/indirect-thunk-11.c: New test. >> * gcc.target/i386/indirect-thunk-12.c: Likewise. >> * gcc.target/i386/indirect-thunk-attr-12.c: Likewise. >> * gcc.target/i386/indirect-thunk-attr-13.c: Likewise. >> * gcc.target/i386/indirect-thunk-attr-14.c: Likewise. >> * gcc.target/i386/indirect-thunk-attr-15.c: Likewise. >> * gcc.target/i386/indirect-thunk-attr-16.c: Likewise. >> * gcc.target/i386/indirect-thunk-extern-10.c: Likewise. >> * gcc.target/i386/indirect-thunk-extern-8.c: Likewise. >> * gcc.target/i386/indirect-thunk-extern-9.c: Likewise. > > Hi Jan, > > Can you review it: > > https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00113.html > Hi Jan, Can you take a look? I have more retpoline patches which depend on this one. Thanks. -- H.J.