From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118809 invoked by alias); 28 Sep 2015 08:08:44 -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 116963 invoked by uid 89); 28 Sep 2015 08:08:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 28 Sep 2015 08:08:40 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-02.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1ZgTUB-0007P7-K2 from Thomas_Schwinge@mentor.com ; Mon, 28 Sep 2015 01:08:36 -0700 Received: from feldtkeller.schwinge.homeip.net (137.202.0.76) by SVR-IES-FEM-02.mgc.mentorg.com (137.202.0.106) with Microsoft SMTP Server id 14.3.224.2; Mon, 28 Sep 2015 09:08:34 +0100 From: Thomas Schwinge To: "H.J. Lu" , Jakub Jelinek , Ilya Verbin , GCC Patches CC: Kirill Yukhin , Andrey Turetskiy , Bernd Schmidt Subject: Re: Use gcc/coretypes.h:enum offload_abi in mkoffloads In-Reply-To: <87io8vmhar.fsf@kepler.schwinge.homeip.net> References: <20141021171323.GA47586@msticlxl57.ims.intel.com> <20141021171602.GB47586@msticlxl57.ims.intel.com> <20141022082103.GH10376@tucnak.redhat.com> <20141022185701.GA21398@msticlxl57.ims.intel.com> <87sig8ylhv.fsf@kepler.schwinge.homeip.net> <20141222112820.GJ1667@tucnak.redhat.com> <87ioghwc6e.fsf@schwinge.name> <87io8vmhar.fsf@kepler.schwinge.homeip.net> User-Agent: Notmuch/0.9-125-g4686d11 (http://notmuchmail.org) Emacs/24.5.1 (i586-pc-linux-gnu) Date: Mon, 28 Sep 2015 08:26:00 -0000 Message-ID: <87vbavuft0.fsf@kepler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-SW-Source: 2015-09/txt/msg02083.txt.bz2 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-length: 10813 Hi! On Tue, 4 Aug 2015 13:20:12 +0200, I wrote: > On Thu, 8 Jan 2015 07:02:19 -0800, "H.J. Lu" wrote: > > On Thu, Jan 8, 2015 at 6:59 AM, Thomas Schwinge wrote: > > > On Mon, 22 Dec 2014 12:28:20 +0100, Jakub Jelinek = wrote: > > >> On Mon, Dec 22, 2014 at 12:25:32PM +0100, Thomas Schwinge wrote: > > >> > On Wed, 22 Oct 2014 22:57:01 +0400, Ilya Verbin wrote: > > >> > > --- /dev/null > > >> > > +++ b/gcc/config/i386/intelmic-mkoffload.c > > >> > > @@ -0,0 +1,541 @@ > > >> > > +/* Offload image generation tool for Intel MIC devices. > > >> > > > >> > > +/* Shows if we should compile binaries for i386 instead of x86-= 64. */ > > >> > > +bool target_ilp32 =3D false; >=20 > Once the following refactoring to use gcc/coretypes.h:enum offload_abi in > mkoffloads gets approved... >=20 > > Should we also handle x32? >=20 > ..., that should be more easy to do. OK for trunk, once testing > succeeds? >=20 > commit de4d7cbcf979edc095a48dff5b38d12846bdab6f > Author: Thomas Schwinge > Date: Tue Aug 4 13:12:36 2015 +0200 >=20 > Use gcc/coretypes.h:enum offload_abi in mkoffloads That one included unfortunate yet popular ;-) strcmp "typos": > +#define STR "-foffload-abi=3D" > + if (strncmp (argv[i], STR, strlen (STR)) =3D=3D 0) > + { > + if (strcmp (argv[i] + strlen (STR), "lp64")) > + offload_abi =3D OFFLOAD_ABI_LP64; > + else if (strcmp (argv[i] + strlen (STR), "ilp32")) > + offload_abi =3D OFFLOAD_ABI_ILP32; ..., so with these fixed up: --- gcc/config/i386/intelmic-mkoffload.c +++ gcc/config/i386/intelmic-mkoffload.c @@ -544,9 +544,9 @@ main (int argc, char **argv) #define STR "-foffload-abi=3D" if (strncmp (argv[i], STR, strlen (STR)) =3D=3D 0) { - if (strcmp (argv[i] + strlen (STR), "lp64")) + if (strcmp (argv[i] + strlen (STR), "lp64") =3D=3D 0) offload_abi =3D OFFLOAD_ABI_LP64; - else if (strcmp (argv[i] + strlen (STR), "ilp32")) + else if (strcmp (argv[i] + strlen (STR), "ilp32") =3D=3D 0) offload_abi =3D OFFLOAD_ABI_ILP32; else fatal_error (input_location, --- gcc/config/nvptx/mkoffload.c +++ gcc/config/nvptx/mkoffload.c @@ -1013,9 +1013,9 @@ main (int argc, char **argv) #define STR "-foffload-abi=3D" if (strncmp (argv[i], STR, strlen (STR)) =3D=3D 0) { - if (strcmp (argv[i] + strlen (STR), "lp64")) + if (strcmp (argv[i] + strlen (STR), "lp64") =3D=3D 0) offload_abi =3D OFFLOAD_ABI_LP64; - else if (strcmp (argv[i] + strlen (STR), "ilp32")) + else if (strcmp (argv[i] + strlen (STR), "ilp32") =3D=3D 0) offload_abi =3D OFFLOAD_ABI_ILP32; else fatal_error (input_location, ..., I'll again propose the following patch for trunk: commit 9288882278239a9d346ebde99e616185a91fbfaf Author: Thomas Schwinge Date: Tue Aug 4 13:12:36 2015 +0200 Use gcc/coretypes.h:enum offload_abi in mkoffloads =20=20=20=20 gcc/ * config/i386/intelmic-mkoffload.c (target_ilp32): Remove variable, replacing it with... (offload_abi): ... this new variable. Adjust all users. * config/nvptx/mkoffload.c (target_ilp32, offload_abi): Likewise. --- gcc/config/i386/intelmic-mkoffload.c | 90 +++++++++++++++++++++++-------= ---- gcc/config/nvptx/mkoffload.c | 56 +++++++++++++++------ 2 files changed, 101 insertions(+), 45 deletions(-) diff --git gcc/config/i386/intelmic-mkoffload.c gcc/config/i386/intelmic-mk= offload.c index 4a7812c..8028584 100644 --- gcc/config/i386/intelmic-mkoffload.c +++ gcc/config/i386/intelmic-mkoffload.c @@ -42,8 +42,7 @@ int num_temps =3D 0; const int MAX_NUM_TEMPS =3D 10; const char *temp_files[MAX_NUM_TEMPS]; =20 -/* Shows if we should compile binaries for i386 instead of x86-64. */ -bool target_ilp32 =3D false; +enum offload_abi offload_abi =3D OFFLOAD_ABI_UNSET; =20 /* Delete tempfiles and exit function. */ void @@ -200,10 +199,17 @@ out: static void compile_for_target (struct obstack *argv_obstack) { - if (target_ilp32) - obstack_ptr_grow (argv_obstack, "-m32"); - else - obstack_ptr_grow (argv_obstack, "-m64"); + switch (offload_abi) + { + case OFFLOAD_ABI_LP64: + obstack_ptr_grow (argv_obstack, "-m64"); + break; + case OFFLOAD_ABI_ILP32: + obstack_ptr_grow (argv_obstack, "-m32"); + break; + default: + abort (); + } obstack_ptr_grow (argv_obstack, NULL); char **argv =3D XOBFINISH (argv_obstack, char **); =20 @@ -379,10 +385,17 @@ generate_host_descr_file (const char *host_compiler) new_argv[new_argc++] =3D "-c"; new_argv[new_argc++] =3D "-fPIC"; new_argv[new_argc++] =3D "-shared"; - if (target_ilp32) - new_argv[new_argc++] =3D "-m32"; - else - new_argv[new_argc++] =3D "-m64"; + switch (offload_abi) + { + case OFFLOAD_ABI_LP64: + new_argv[new_argc++] =3D "-m64"; + break; + case OFFLOAD_ABI_ILP32: + new_argv[new_argc++] =3D "-m32"; + break; + default: + abort (); + } new_argv[new_argc++] =3D src_filename; new_argv[new_argc++] =3D "-o"; new_argv[new_argc++] =3D obj_filename; @@ -442,10 +455,17 @@ prepare_target_image (const char *target_compiler, in= t argc, char **argv) objcopy_argv[3] =3D "-I"; objcopy_argv[4] =3D "binary"; objcopy_argv[5] =3D "-O"; - if (target_ilp32) - objcopy_argv[6] =3D "elf32-i386"; - else - objcopy_argv[6] =3D "elf64-x86-64"; + switch (offload_abi) + { + case OFFLOAD_ABI_LP64: + objcopy_argv[6] =3D "elf64-x86-64"; + break; + case OFFLOAD_ABI_ILP32: + objcopy_argv[6] =3D "elf32-i386"; + break; + default: + abort (); + } objcopy_argv[7] =3D target_so_filename; objcopy_argv[8] =3D "--rename-section"; objcopy_argv[9] =3D rename_section_opt; @@ -518,17 +538,22 @@ main (int argc, char **argv) passed with @file. Expand them into argv before processing. */ expandargv (&argc, &argv); =20 - /* Find out whether we should compile binaries for i386 or x86-64. */ - for (int i =3D argc - 1; i > 0; i--) - if (strncmp (argv[i], "-foffload-abi=3D", sizeof ("-foffload-abi=3D") = - 1) =3D=3D 0) - { - if (strstr (argv[i], "ilp32")) - target_ilp32 =3D true; - else if (!strstr (argv[i], "lp64")) - fatal_error (input_location, - "unrecognizable argument of option -foffload-abi"); - break; - } + /* Scan the argument vector. */ + for (int i =3D 1; i < argc; i++) + { +#define STR "-foffload-abi=3D" + if (strncmp (argv[i], STR, strlen (STR)) =3D=3D 0) + { + if (strcmp (argv[i] + strlen (STR), "lp64") =3D=3D 0) + offload_abi =3D OFFLOAD_ABI_LP64; + else if (strcmp (argv[i] + strlen (STR), "ilp32") =3D=3D 0) + offload_abi =3D OFFLOAD_ABI_ILP32; + else + fatal_error (input_location, + "unrecognizable argument of option " STR); + } +#undef STR + } =20 const char *target_so_filename =3D prepare_target_image (target_compiler, argc, argv); @@ -541,10 +566,17 @@ main (int argc, char **argv) const char *new_argv[9]; new_argv[new_argc++] =3D "ld"; new_argv[new_argc++] =3D "-m"; - if (target_ilp32) - new_argv[new_argc++] =3D "elf_i386"; - else - new_argv[new_argc++] =3D "elf_x86_64"; + switch (offload_abi) + { + case OFFLOAD_ABI_LP64: + new_argv[new_argc++] =3D "elf_x86_64"; + break; + case OFFLOAD_ABI_ILP32: + new_argv[new_argc++] =3D "elf_i386"; + break; + default: + abort (); + } new_argv[new_argc++] =3D "--relocatable"; new_argv[new_argc++] =3D host_descr_filename; new_argv[new_argc++] =3D target_so_filename; diff --git gcc/config/nvptx/mkoffload.c gcc/config/nvptx/mkoffload.c index ba0454e..78ac8fe 100644 --- gcc/config/nvptx/mkoffload.c +++ gcc/config/nvptx/mkoffload.c @@ -126,8 +126,7 @@ static id_map *var_ids, **vars_tail =3D &var_ids; static const char *ptx_name; static const char *ptx_cfile_name; =20 -/* Shows if we should compile binaries for i386 instead of x86-64. */ -bool target_ilp32 =3D false; +enum offload_abi offload_abi =3D OFFLOAD_ABI_UNSET; =20 /* Delete tempfiles. */ =20 @@ -920,7 +919,17 @@ compile_native (const char *infile, const char *outfil= e, const char *compiler) struct obstack argv_obstack; obstack_init (&argv_obstack); obstack_ptr_grow (&argv_obstack, compiler); - obstack_ptr_grow (&argv_obstack, target_ilp32 ? "-m32" : "-m64"); + switch (offload_abi) + { + case OFFLOAD_ABI_LP64: + obstack_ptr_grow (&argv_obstack, "-m64"); + break; + case OFFLOAD_ABI_ILP32: + obstack_ptr_grow (&argv_obstack, "-m32"); + break; + default: + abort (); + } obstack_ptr_grow (&argv_obstack, infile); obstack_ptr_grow (&argv_obstack, "-c"); obstack_ptr_grow (&argv_obstack, "-o"); @@ -998,23 +1007,38 @@ main (int argc, char **argv) passed with @file. Expand them into argv before processing. */ expandargv (&argc, &argv); =20 - /* Find out whether we should compile binaries for i386 or x86-64. */ - for (int i =3D argc - 1; i > 0; i--) - if (strncmp (argv[i], "-foffload-abi=3D", sizeof ("-foffload-abi=3D") = - 1) =3D=3D 0) - { - if (strstr (argv[i], "ilp32")) - target_ilp32 =3D true; - else if (!strstr (argv[i], "lp64")) - fatal_error (input_location, - "unrecognizable argument of option -foffload-abi"); - break; - } + /* Scan the argument vector. */ + for (int i =3D 1; i < argc; i++) + { +#define STR "-foffload-abi=3D" + if (strncmp (argv[i], STR, strlen (STR)) =3D=3D 0) + { + if (strcmp (argv[i] + strlen (STR), "lp64") =3D=3D 0) + offload_abi =3D OFFLOAD_ABI_LP64; + else if (strcmp (argv[i] + strlen (STR), "ilp32") =3D=3D 0) + offload_abi =3D OFFLOAD_ABI_ILP32; + else + fatal_error (input_location, + "unrecognizable argument of option " STR); + } +#undef STR + } =20 struct obstack argv_obstack; obstack_init (&argv_obstack); obstack_ptr_grow (&argv_obstack, driver); obstack_ptr_grow (&argv_obstack, "-xlto"); - obstack_ptr_grow (&argv_obstack, target_ilp32 ? "-m32" : "-m64"); + switch (offload_abi) + { + case OFFLOAD_ABI_LP64: + obstack_ptr_grow (&argv_obstack, "-m64"); + break; + case OFFLOAD_ABI_ILP32: + obstack_ptr_grow (&argv_obstack, "-m32"); + break; + default: + abort (); + } obstack_ptr_grow (&argv_obstack, "-S"); =20 for (int ix =3D 1; ix !=3D argc; ix++) @@ -1033,7 +1057,7 @@ main (int argc, char **argv) =20 /* PR libgomp/65099: Currently, we only support offloading in 64-bit configurations. */ - if (!target_ilp32) + if (offload_abi =3D=3D OFFLOAD_ABI_LP64) { ptx_name =3D make_temp_file (".mkoffload"); obstack_ptr_grow (&argv_obstack, "-o"); Gr=C3=BC=C3=9Fe, Thomas --=-=-= Content-Type: application/pgp-signature; name="signature.asc" Content-length: 472 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJWCPV7AAoJEK3/DN1sMFFtusIIAInWsZV4g93tIJwaWrtPmvY/ 0ifdZ6eoRmdOKASLCGJ1dXNwPMhyomUnADozA3UyB0s21MesOhQfpZrkoo3GaTrc pytsQn/5kLZkepbQJhLUspqNbMise7DFoeR+y0DTpz1OVPBO//7yGMov46d+5goS VjMrWOnbyQJ1kdP1ciw/va0++HkoRaxLJEQvrk3Mtp+uibPc4JkKEHtPtnGgtMLG vp9itaGpHT1AmmB2PeYzJhYsOD83zg2JLq/jKG6oJcw1WGgkLHhZbEHiucZMdTCg Qrrwt8eVkyA6x0soJgo22QE723yetDB7ag2rUl+rjJHkC9wjiR+dv9iL/Av1Xac= =1s79 -----END PGP SIGNATURE----- --=-=-=--