From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10032 invoked by alias); 22 Jan 2013 16:00:25 -0000 Received: (qmail 10015 invoked by uid 22791); 22 Jan 2013 16:00:23 -0000 X-SWARE-Spam-Status: No, hits=-3.3 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,TW_CP X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 22 Jan 2013 16:00:13 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 22 Jan 2013 16:00:11 +0000 Received: from [10.1.69.70] ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Tue, 22 Jan 2013 16:00:10 +0000 Message-ID: <50FEB78A.6050709@arm.com> Date: Tue, 22 Jan 2013 16:00:00 -0000 From: Ramana Radhakrishnan Reply-To: ramrad01@arm.com User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120713 Thunderbird/14.0 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org ;" Subject: [RFC] Fix for PR driver/47785 References: <50C9F154.6090007@arm.com> In-Reply-To: <50C9F154.6090007@arm.com> X-Forwarded-Message-Id: <50C9F154.6090007@arm.com> X-MC-Unique: 113012216001101701 Content-Type: multipart/mixed; boundary="------------070706030509070004050405" X-IsSubscribed: yes 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 X-SW-Source: 2013-01/txt/msg01097.txt.bz2 This is a multi-part message in MIME format. --------------070706030509070004050405 Content-Type: text/plain; charset=WINDOWS-1252; format=flowed Content-Transfer-Encoding: quoted-printable Content-length: 977 Hi, I ran into PR driver/47785 when doing some testing with an option passed=20 to the testsuite and I chose to fix this by putting out=20 COLLECT_AS_OPTIONS as though these are options for the driver by=20 prepending them with a "'-Wa", and suffixing them with a "'" character=20 and additionally providing spaces as duly required. I've chosen a simple=20 implementation. Tested in the past with x86_64-linux-gnu and arm-none-eabi cross tests=20 (with an additional -Wa option passed to the default flags in a site.exp) Thoughts ? Ok for trunk now or should I stage this for 4.9 ? regards, Ramana gcc/ Ramana Radhakrishnan PR driver/47785 * gcc.c (set_collect_as_options): New. (main): Call this. * lto-wrapper.c (run_gcc): Handle COLLECT_AS_OPTIONS. testsuite/ Ramana Radhakrishnan PR driver/47785 * gcc.dg/pr47785.c: New test. --------------070706030509070004050405 Content-Type: text/plain; charset=WINDOWS-1252; name=2.txt Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="2.txt" Content-length: 3540 diff --git a/gcc/gcc.c b/gcc/gcc.c index 13e93e5..df18317 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -221,6 +221,7 @@ static const char *eval_spec_function (const char *, co= nst char *); static const char *handle_spec_function (const char *); static char *save_string (const char *, int); static void set_collect_gcc_options (void); +static void set_collect_as_options (void); static int do_spec_1 (const char *, int, const char *); static int do_spec_2 (const char *); static void do_option_spec (const char *, const char *); @@ -4047,6 +4048,30 @@ process_command (unsigned int decoded_options_count, infiles[n_infiles].name =3D 0; } =20 +static void +set_collect_as_options (void) +{ + int ix; + char *opt; + int first_time =3D TRUE; + /* Build COLLECT_AS_OPTIONS to have all of the options specified to + the compiler. */ + obstack_grow (&collect_obstack, "COLLECT_AS_OPTIONS=3D", + sizeof ("COLLECT_AS_OPTIONS=3D") - 1); + + FOR_EACH_VEC_ELT (assembler_options, ix, opt) + { + if (!first_time) + obstack_grow (&collect_obstack, " ", 1); + obstack_grow (&collect_obstack, "\'-Wa,", 5); + obstack_grow (&collect_obstack, opt, strlen (opt)); + obstack_grow (&collect_obstack, "\'", 1); + first_time =3D FALSE; + } + obstack_grow (&collect_obstack, "\0", 1); + xputenv (XOBFINISH (&collect_obstack, char *)); +} + /* Store switches not filtered out by %