diff mbox

[1/4] Add mkoffload for Intel MIC

Message ID 87ioghwc6e.fsf@schwinge.name
State New
Headers show

Commit Message

Thomas Schwinge Jan. 8, 2015, 2:59 p.m. UTC
Hi!

On Mon, 22 Dec 2014 12:28:20 +0100, Jakub Jelinek <jakub@redhat.com> 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 <iverbin@gmail.com> 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 = false;
> > 
> > My linker defaults to 32-bit x86, so I explicitly have to switch to
> > 64-bit x86_64 mode; OK to commit the following, to always explicitly
> > specify what is wanted?
> > 
> >  gcc/config/i386/intelmic-mkoffload.c | 12 ++++++++----
> >  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> Ok with proper ChangeLog entry.

Committed to trunk in r219345:

commit c049b358f961f72d0c0cf61a707e9a5855b12b28
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Jan 8 14:58:45 2015 +0000

    intelmic-mkoffload: Deal with linker defaulting to 32-bit x86 mode.
    
    ... which explicitly has to be switched into 64-bit x86_64 mode.
    
    	gcc/
    	* config/i386/intelmic-mkoffload.c (compile_for_target): Always
    	add "-m32" or "-m64" to argv_obstack.
    	(generate_host_descr_file): Likewise, when invoking host_compiler.
    	(main): Always add "-m elf_i386" or "-m elf_x86_64" when invoking
    	ld.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219345 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog                        |  8 ++++++++
 gcc/config/i386/intelmic-mkoffload.c | 12 ++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)



Grüße,
 Thomas

Comments

H.J. Lu Jan. 8, 2015, 3:02 p.m. UTC | #1
On Thu, Jan 8, 2015 at 6:59 AM, Thomas Schwinge <thomas@codesourcery.com> wrote:
> Hi!
>
> On Mon, 22 Dec 2014 12:28:20 +0100, Jakub Jelinek <jakub@redhat.com> 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 <iverbin@gmail.com> 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 = false;
>> >
>> > My linker defaults to 32-bit x86, so I explicitly have to switch to
>> > 64-bit x86_64 mode; OK to commit the following, to always explicitly
>> > specify what is wanted?
>> >
>> >  gcc/config/i386/intelmic-mkoffload.c | 12 ++++++++----
>> >  1 file changed, 8 insertions(+), 4 deletions(-)
>>
>> Ok with proper ChangeLog entry.
>
> Committed to trunk in r219345:
>
> commit c049b358f961f72d0c0cf61a707e9a5855b12b28
> Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date:   Thu Jan 8 14:58:45 2015 +0000
>
>     intelmic-mkoffload: Deal with linker defaulting to 32-bit x86 mode.
>
>     ... which explicitly has to be switched into 64-bit x86_64 mode.
>
>         gcc/
>         * config/i386/intelmic-mkoffload.c (compile_for_target): Always
>         add "-m32" or "-m64" to argv_obstack.
>         (generate_host_descr_file): Likewise, when invoking host_compiler.
>         (main): Always add "-m elf_i386" or "-m elf_x86_64" when invoking
>         ld.
>
>     git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219345 138bc75d-0d04-0410-961f-82ee72b054a4
> ---
>  gcc/ChangeLog                        |  8 ++++++++
>  gcc/config/i386/intelmic-mkoffload.c | 12 ++++++++----
>  2 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git gcc/ChangeLog gcc/ChangeLog
> index bee5f1e..01b6cc6 100644
> --- gcc/ChangeLog
> +++ gcc/ChangeLog
> @@ -1,3 +1,11 @@
> +2015-01-08  Thomas Schwinge  <thomas@codesourcery.com>
> +
> +       * config/i386/intelmic-mkoffload.c (compile_for_target): Always
> +       add "-m32" or "-m64" to argv_obstack.
> +       (generate_host_descr_file): Likewise, when invoking host_compiler.
> +       (main): Always add "-m elf_i386" or "-m elf_x86_64" when invoking
> +       ld.
> +
>  2015-01-08  Oleg Endo  <olegendo@gcc.gnu.org>
>
>         * config/sh/sh-mem.cc: Use constant as second operand when emitting
> diff --git gcc/config/i386/intelmic-mkoffload.c gcc/config/i386/intelmic-mkoffload.c
> index c3d2b23..23bc955 100644
> --- gcc/config/i386/intelmic-mkoffload.c
> +++ gcc/config/i386/intelmic-mkoffload.c
> @@ -191,6 +191,8 @@ compile_for_target (struct obstack *argv_obstack)
>  {
>    if (target_ilp32)
>      obstack_ptr_grow (argv_obstack, "-m32");
> +  else
> +    obstack_ptr_grow (argv_obstack, "-m64");
>    obstack_ptr_grow (argv_obstack, NULL);
>    char **argv = XOBFINISH (argv_obstack, char **);
>
> @@ -355,6 +357,8 @@ generate_host_descr_file (const char *host_compiler)
>    new_argv[new_argc++] = "-shared";
>    if (target_ilp32)
>      new_argv[new_argc++] = "-m32";
> +  else
> +    new_argv[new_argc++] = "-m64";
>    new_argv[new_argc++] = src_filename;
>    new_argv[new_argc++] = "-o";
>    new_argv[new_argc++] = obj_filename;
> @@ -511,11 +515,11 @@ main (int argc, char **argv)
>    unsigned new_argc = 0;
>    const char *new_argv[9];
>    new_argv[new_argc++] = "ld";
> +  new_argv[new_argc++] = "-m";
>    if (target_ilp32)
> -    {
> -      new_argv[new_argc++] = "-m";
> -      new_argv[new_argc++] = "elf_i386";
> -    }
> +    new_argv[new_argc++] = "elf_i386";
> +  else
> +    new_argv[new_argc++] = "elf_x86_64";
>    new_argv[new_argc++] = "--relocatable";
>    new_argv[new_argc++] = host_descr_filename;
>    new_argv[new_argc++] = target_so_filename;
>
>

Should we also handle x32?
Thomas Schwinge Jan. 8, 2015, 4:20 p.m. UTC | #2
Hi!

On Thu, 8 Jan 2015 07:02:19 -0800, "H.J. Lu" <hjl.tools@gmail.com> wrote:
> On Thu, Jan 8, 2015 at 6:59 AM, Thomas Schwinge <thomas@codesourcery.com> wrote:
> > commit c049b358f961f72d0c0cf61a707e9a5855b12b28
> > Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> > Date:   Thu Jan 8 14:58:45 2015 +0000
> >
> >     intelmic-mkoffload: Deal with linker defaulting to 32-bit x86 mode.
> >
> >     ... which explicitly has to be switched into 64-bit x86_64 mode.
> >
> >         gcc/
> >         * config/i386/intelmic-mkoffload.c (compile_for_target): Always
> >         add "-m32" or "-m64" to argv_obstack.
> >         (generate_host_descr_file): Likewise, when invoking host_compiler.
> >         (main): Always add "-m elf_i386" or "-m elf_x86_64" when invoking
> >         ld.
> >
> >     git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219345 138bc75d-0d04-0410-961f-82ee72b054a4

> > --- gcc/config/i386/intelmic-mkoffload.c
> > +++ gcc/config/i386/intelmic-mkoffload.c
> > @@ -191,6 +191,8 @@ compile_for_target (struct obstack *argv_obstack)
> >  {
> >    if (target_ilp32)
> >      obstack_ptr_grow (argv_obstack, "-m32");
> > +  else
> > +    obstack_ptr_grow (argv_obstack, "-m64");
> >    obstack_ptr_grow (argv_obstack, NULL);
> >    char **argv = XOBFINISH (argv_obstack, char **);
> >
> > @@ -355,6 +357,8 @@ generate_host_descr_file (const char *host_compiler)
> >    new_argv[new_argc++] = "-shared";
> >    if (target_ilp32)
> >      new_argv[new_argc++] = "-m32";
> > +  else
> > +    new_argv[new_argc++] = "-m64";
> >    new_argv[new_argc++] = src_filename;
> >    new_argv[new_argc++] = "-o";
> >    new_argv[new_argc++] = obj_filename;
> > @@ -511,11 +515,11 @@ main (int argc, char **argv)
> >    unsigned new_argc = 0;
> >    const char *new_argv[9];
> >    new_argv[new_argc++] = "ld";
> > +  new_argv[new_argc++] = "-m";
> >    if (target_ilp32)
> > -    {
> > -      new_argv[new_argc++] = "-m";
> > -      new_argv[new_argc++] = "elf_i386";
> > -    }
> > +    new_argv[new_argc++] = "elf_i386";
> > +  else
> > +    new_argv[new_argc++] = "elf_x86_64";
> >    new_argv[new_argc++] = "--relocatable";
> >    new_argv[new_argc++] = host_descr_filename;
> >    new_argv[new_argc++] = target_so_filename;
> >
> >
> 
> Should we also handle x32?

Yes, probably, but following the standards you've been setting,
<http://news.gmane.org/find-root.php?message_id=%3Calpine.DEB.2.10.1412151845470.4719%40digraph.polyomino.org.uk%3E>,
I only made it work for the case I've been interested in.  ;-)
(Half-smiley, half-serious...)


Grüße,
 Thomas
diff mbox

Patch

diff --git gcc/ChangeLog gcc/ChangeLog
index bee5f1e..01b6cc6 100644
--- gcc/ChangeLog
+++ gcc/ChangeLog
@@ -1,3 +1,11 @@ 
+2015-01-08  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* config/i386/intelmic-mkoffload.c (compile_for_target): Always
+	add "-m32" or "-m64" to argv_obstack.
+	(generate_host_descr_file): Likewise, when invoking host_compiler.
+	(main): Always add "-m elf_i386" or "-m elf_x86_64" when invoking
+	ld.
+
 2015-01-08  Oleg Endo  <olegendo@gcc.gnu.org>
 
 	* config/sh/sh-mem.cc: Use constant as second operand when emitting
diff --git gcc/config/i386/intelmic-mkoffload.c gcc/config/i386/intelmic-mkoffload.c
index c3d2b23..23bc955 100644
--- gcc/config/i386/intelmic-mkoffload.c
+++ gcc/config/i386/intelmic-mkoffload.c
@@ -191,6 +191,8 @@  compile_for_target (struct obstack *argv_obstack)
 {
   if (target_ilp32)
     obstack_ptr_grow (argv_obstack, "-m32");
+  else
+    obstack_ptr_grow (argv_obstack, "-m64");
   obstack_ptr_grow (argv_obstack, NULL);
   char **argv = XOBFINISH (argv_obstack, char **);
 
@@ -355,6 +357,8 @@  generate_host_descr_file (const char *host_compiler)
   new_argv[new_argc++] = "-shared";
   if (target_ilp32)
     new_argv[new_argc++] = "-m32";
+  else
+    new_argv[new_argc++] = "-m64";
   new_argv[new_argc++] = src_filename;
   new_argv[new_argc++] = "-o";
   new_argv[new_argc++] = obj_filename;
@@ -511,11 +515,11 @@  main (int argc, char **argv)
   unsigned new_argc = 0;
   const char *new_argv[9];
   new_argv[new_argc++] = "ld";
+  new_argv[new_argc++] = "-m";
   if (target_ilp32)
-    {
-      new_argv[new_argc++] = "-m";
-      new_argv[new_argc++] = "elf_i386";
-    }
+    new_argv[new_argc++] = "elf_i386";
+  else
+    new_argv[new_argc++] = "elf_x86_64";
   new_argv[new_argc++] = "--relocatable";
   new_argv[new_argc++] = host_descr_filename;
   new_argv[new_argc++] = target_so_filename;