From patchwork Fri Jan 16 22:42:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kratochvil X-Patchwork-Id: 4719 Received: (qmail 16534 invoked by alias); 16 Jan 2015 22:42:44 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 16520 invoked by uid 89); 16 Jan 2015 22:42:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.9 required=5.0 tests=AWL, BAYES_00, SPF_HELO_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 16 Jan 2015 22:42:40 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t0GMgcxS000329 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Fri, 16 Jan 2015 17:42:38 -0500 Received: from host2.jankratochvil.net (ovpn-116-51.ams2.redhat.com [10.36.116.51]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t0GMgYkp000882 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO) for ; Fri, 16 Jan 2015 17:42:37 -0500 Date: Fri, 16 Jan 2015 23:42:34 +0100 From: Jan Kratochvil To: gdb-patches@sourceware.org Subject: [patch+7.9] compile: Filter out -fpreprocessed Message-ID: <20150116224234.GA6176@host2.jankratochvil.net> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes Hi, with global system gcc-5.0 if one also installs ccache (needing a different patch for -fplugin=libcc1plugin) it breaks as GDB will read from inferior DW_AT_producer containing -fpreprocessed (due to ccache used to compile the inferior). DW_AT_producer : (indirect string, offset: 0x52): GNU C11 5.0.0 20150114 (Red Hat 5.0.0-0.1) -fpreprocessed -mtune=generic -march=x86-64 -g It is wrong that gcc puts -fpreprocessed into DW_AT_producer - I may post a gcc patch for it. But even if it gets accepted there are already built inferiors out there which GDB could be compatible (for the 'compile' mode) with. gdb.compile/*.exp PASSes for it on {x86_64,x86_64-m32}-fedora22pre-linux-gnu. Thanks, Jan gdb/ChangeLog 2015-01-16 Jan Kratochvil Filter out inferior gcc option -fpreprocessed. * compile/compile.c (filter_args): New function. (get_args): Use it. diff --git a/gdb/compile/compile.c b/gdb/compile/compile.c index ccac49d..ecbd15c 100644 --- a/gdb/compile/compile.c +++ b/gdb/compile/compile.c @@ -324,6 +324,26 @@ get_selected_pc_producer_options (void) return cs; } +/* Filter out unwanted options from *ARGCP and ARGV. */ + +static void +filter_args (int *argcp, char **argv) +{ + char **destv; + + for (destv = argv; *argv != NULL; argv++) + { + /* -fpreprocessed may get in commonly from ccache. */ + if (strcmp (*argv, "-fpreprocessed") == 0) + { + (*argcp)--; + continue; + } + *destv++ = *argv; + } + *destv = NULL; +} + /* Produce final vector of GCC compilation options. First element is target size ("-m64", "-m32" etc.), optionally followed by DW_AT_producer options and then compile-args string GDB variable. */ @@ -346,6 +366,7 @@ get_args (const struct compile_instance *compiler, struct gdbarch *gdbarch, char **argv_producer; build_argc_argv (cs_producer_options, &argc_producer, &argv_producer); + filter_args (&argc_producer, argv_producer); append_args (argcp, argvp, argc_producer, argv_producer); freeargv (argv_producer); }