From patchwork Mon Sep 9 04:28:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Indu Bhagat X-Patchwork-Id: 1159595 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-508567-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="kbhOmyqe"; dkim=pass (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.b="Ggb3M8re"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46RZvC4Hpgz9sCJ for ; Mon, 9 Sep 2019 14:29:43 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id; q=dns; s=default; b=iaJ27VzDjpZ7mZv NU7kb2FIB+I5DkKBpZ8xy7I07i1yOBQpEJreX0J1T0OVruPYsnabtqBe+ev8diLp ZYWKMZgZ+AdK34FV9DgCuhTQ4vBwXuF6owwXSEiV6Nh5xmUlotenZwX2T0Tal0Kl 1en0jkR48K+IiN8XqmBa2FM/vyXQ= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:message-id; s=default; bh=gSbazVMb/9rP8gFmfj6/i zRakqM=; b=kbhOmyqe7vu5o4dWvF0gE7fKtRonlH+0vo/kbJyE4o67EJwmxbuQ1 KbDlq8tsyZmOo0ac+3Nk1gY20uTUTvIOEqk0EemStXErdvO0tWdyK8WX7mg8hDbo +jJQsIDoGB9eoufAnM132Co195onsTaRtXn4pebIXOsiVj7NN1cPxA= Received: (qmail 110092 invoked by alias); 9 Sep 2019 04:28:55 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 109865 invoked by uid 89); 9 Sep 2019 04:28:53 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_3, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 spammy=codebases, bootstrap, abovementioned, enhancements X-HELO: userp2120.oracle.com Received: from userp2120.oracle.com (HELO userp2120.oracle.com) (156.151.31.85) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 09 Sep 2019 04:28:50 +0000 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x894O1xG183697 for ; Mon, 9 Sep 2019 04:28:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id; s=corp-2019-08-05; bh=NkV5I3m6JV6urGlEnnTQBAnguxslVHe+bpF3jC9TBHU=; b=Ggb3M8relRmSRokK7mDn3wS1oSCokozdufO71OltcPz1uKHaE0dVWg6WBdWb8LoeYMzD JWNzPO2zUZGphh13g6Sb6YgFfoIn2RbPR0XZEprf+tHK/bNOhRpgWcl/ux8Sqbq/+ZaS O2+V+EFa3gugoKZ945HHRUdGfX5qOdVSo+bh8r+lLzaFXzJBbj8sMaeTX/Q/3f4YIgGh VYKZ+HQKb4UPoLNISjzFXEaBrb1dNHXIVisuZSjM8qJvROECKKE2Zris4oJqI3sFqsws Iuu+xoHSj5GKCanAJDjESbKjLLxIE2RCFbwDMCbZeMM240i/UNNJPt1iBY2Gyi66XBi4 iA== Received: from userp3020.oracle.com (userp3020.oracle.com [156.151.31.79]) by userp2120.oracle.com with ESMTP id 2uw1jk1hxh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 09 Sep 2019 04:28:48 +0000 Received: from pps.filterd (userp3020.oracle.com [127.0.0.1]) by userp3020.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x894ScGG005717 for ; Mon, 9 Sep 2019 04:28:48 GMT Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userp3020.oracle.com with ESMTP id 2uv3wkywj2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 09 Sep 2019 04:28:48 +0000 Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id x894SSZ3031435 for ; Mon, 9 Sep 2019 04:28:33 GMT Received: from ibhagatpc.us.oracle.com (/10.65.144.100) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 08 Sep 2019 21:28:28 -0700 From: Indu Bhagat To: gcc-patches@gcc.gnu.org Subject: [PATCH,RFC,V5 0/6] Support for CTF in GCC Date: Sun, 8 Sep 2019 21:28:15 -0700 Message-Id: <1568003301-11457-1-git-send-email-indu.bhagat@oracle.com> Hello, This patch series adds support for CTF generation in GCC. [Changes from V4] 1. Patch 4 brings in a number of bug fixes and enhancements. Few of them are: - Use DECL_UID () instead of htab_hash_pointer () for _DECL - Handle boolean and zero-sized bitfields - Do not inform () when skipping types. Arguably this was intended for the GCC developer and not for the end user. - Other bugfixes around de-dupilication at the time of CTF Array or CTF function generation. 2. Patch 5 has added testcases. 3. Patch 6 is a new patch added for handling CTF section when LTO is enabled. Work on CTF spec document is also in progress; will share something very soon. In the interim, https://sourceware.org/ml/binutils/2019-04/msg00277.html may be helpful. For more context, please also see previous posting https://gcc.gnu.org/ml/gcc-patches/2019-07/msg01209.html NickA recently posted a changeset to the binutils mailing list that adds initial support for linking CTF sections. Please see https://sourceware.org/ml/binutils/2019-09/msg00045.html ( This current GCC patch set has the ctf.h in sync with the above-mentioned binutils patch set. ) I will be connecting online to talk about the CTF support in GNU toolchain at Cauldron 2019. Posting these patches so that there is added context. Testing : Apart from the usual bootstrap and regression testing on x86_64/linux, sparc64/linux, I have now compiled more codebases with -gt. Thanks Indu Bhagat (6): Add new function lang_GNU_GIMPLE Add CTF command line options : -gtLEVEL Setup for CTF generation and emission CTF generation for a single compilation unit Update CTF testsuite Handle CTF sections when LTO is enabled gcc/ChangeLog | 97 + gcc/Makefile.in | 5 + gcc/cgraphunit.c | 12 +- gcc/common.opt | 9 + gcc/ctfcreate.c | 557 ++++++ gcc/ctfout.c | 1941 ++++++++++++++++++++ gcc/ctfout.h | 364 ++++ gcc/ctfutils.c | 198 ++ gcc/doc/invoke.texi | 16 + gcc/flag-types.h | 13 + gcc/gengtype.c | 4 +- gcc/langhooks.c | 9 + gcc/langhooks.h | 1 + gcc/opts.c | 26 + gcc/passes.c | 7 +- gcc/testsuite/ChangeLog | 46 + gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c | 6 + gcc/testsuite/gcc.dg/debug/ctf/ctf-2.c | 10 + .../gcc.dg/debug/ctf/ctf-anonymous-struct-1.c | 23 + .../gcc.dg/debug/ctf/ctf-anonymous-union-1.c | 26 + gcc/testsuite/gcc.dg/debug/ctf/ctf-array-1.c | 31 + gcc/testsuite/gcc.dg/debug/ctf/ctf-array-2.c | 39 + gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-1.c | 30 + gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-2.c | 39 + gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-3.c | 16 + gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-4.c | 22 + gcc/testsuite/gcc.dg/debug/ctf/ctf-complex-1.c | 22 + gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-1.c | 44 + gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-2.c | 30 + gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-3.c | 41 + gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-4.c | 21 + gcc/testsuite/gcc.dg/debug/ctf/ctf-enum-1.c | 21 + gcc/testsuite/gcc.dg/debug/ctf/ctf-enum-2.c | 26 + gcc/testsuite/gcc.dg/debug/ctf/ctf-float-1.c | 16 + gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-1.c | 36 + gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-2.c | 16 + gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-3.c | 21 + gcc/testsuite/gcc.dg/debug/ctf/ctf-func-index-1.c | 25 + .../gcc.dg/debug/ctf/ctf-function-pointers-1.c | 24 + .../gcc.dg/debug/ctf/ctf-function-pointers-2.c | 18 + gcc/testsuite/gcc.dg/debug/ctf/ctf-functions-1.c | 34 + gcc/testsuite/gcc.dg/debug/ctf/ctf-int-1.c | 17 + gcc/testsuite/gcc.dg/debug/ctf/ctf-objt-index-1.c | 29 + gcc/testsuite/gcc.dg/debug/ctf/ctf-pointers-1.c | 26 + gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c | 11 + gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-1.c | 33 + gcc/testsuite/gcc.dg/debug/ctf/ctf-str-table-1.c | 26 + gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-1.c | 25 + gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-2.c | 30 + .../gcc.dg/debug/ctf/ctf-struct-array-1.c | 36 + gcc/testsuite/gcc.dg/debug/ctf/ctf-typedef-1.c | 23 + .../gcc.dg/debug/ctf/ctf-typedef-struct-1.c | 12 + gcc/testsuite/gcc.dg/debug/ctf/ctf-union-1.c | 14 + gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-1.c | 25 + gcc/testsuite/gcc.dg/debug/ctf/ctf.exp | 41 + gcc/testsuite/gcc.dg/debug/dwarf2-ctf-1.c | 7 + gcc/toplev.c | 18 + include/ChangeLog | 9 + include/ctf.h | 510 +++++ libiberty/ChangeLog | 5 + libiberty/simple-object.c | 3 + 61 files changed, 4836 insertions(+), 6 deletions(-) create mode 100644 gcc/ctfcreate.c create mode 100644 gcc/ctfout.c create mode 100644 gcc/ctfout.h create mode 100644 gcc/ctfutils.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-anonymous-struct-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-anonymous-union-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-array-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-array-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-3.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-4.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-complex-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-3.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-4.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-enum-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-enum-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-float-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-forward-3.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-func-index-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-function-pointers-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-function-pointers-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-functions-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-int-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-objt-index-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-pointers-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-preamble-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-skip-types-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-str-table-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-2.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-array-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-typedef-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-typedef-struct-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-union-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-1.c create mode 100644 gcc/testsuite/gcc.dg/debug/ctf/ctf.exp create mode 100644 gcc/testsuite/gcc.dg/debug/dwarf2-ctf-1.c create mode 100644 include/ctf.h