Message ID | 87ioghwc6e.fsf@schwinge.name |
---|---|
State | New |
Headers | show |
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?
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 --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;