* [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) [not found] <78D7B2DA-5677-4211-9C4E-F7B1B5AB51B5@gmail.com> @ 2018-02-13 21:14 ` David Malcolm 2018-02-13 21:31 ` Rainer Orth 2018-02-14 17:28 ` FX 0 siblings, 2 replies; 13+ messages in thread From: David Malcolm @ 2018-02-13 21:14 UTC (permalink / raw) To: FX, Rainer Orth, gcc-patches, jit; +Cc: David Malcolm libgccjit fails to link on OS X and Solaris due to jit/Make-lang.in, due to the assumption there that the linker is GNU ld. Specifically, jit/Make-lang.in hardcodes the use of two options: --version-script and -soname. * on Darwin, --version-script doesn't seem to exist in the linker, and it uses -install_name rather than -soname. * on Solaris, ld doesn't support --version-script. However, the version script used for libgccjit.so doesn't use any gld extensions, so one can just use -M instead. This patch fixes these issues by using variables emitted by gcc's "configure" rather than hardcoding the options in jit/Make-lang.in. It's based on the first part of Rainer's patch for PR jit/84288, but I made the following changes: * the GNU ld case in configure.ac wasn't setting ld_version_script_option. I set it to "--version-script" for that case. * I moved the: LD_VERSION_SCRIPT_OPTION = @ld_version_script_option@ from gcc/jit/Make-lang.in to gcc/Makefile.in, as the Make-lang.in files aren't substituted, only the gcc/Makefile.in. Rainer: how did this work for you? * added LD_SONAME_OPTION, done in the same way * conditionalized the usage of the options in Make-lang.in to cope with empty LD_VERSION_SCRIPT_OPTION (as is presumably the case on OS X). I used ($if condition,then-part[,else-part]) for this. I had to add a $(COMMA) since the "then-part" contains commas, which need to be treated as part of the "then-part", rather than separators for the "else-part". Hopefully this is compatible with every "make" implementation that we support. Successfully bootstrapped®rtested on x86_64-pc-linux-gnu. I lightly tested the not-recognized case by hacking up the configure.ac (on x86_64-pc-linux-gnu) and verifying that it links, and that a smoketest of jit.dg/test-factorial works. Does this fix the jit linker issues on OS X and Solaris? (I didn't include the autogenerate configure changes) gcc/ChangeLog: PR jit/64089 PR jit/84288 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New. * configure: Regenerate. * configure.ac ("linker --version-script option"): New. ("linker soname option"): New. gcc/jit/ChangeLog: PR jit/64089 PR jit/84288 * Make-lang.in (COMMA): New. (LIBGCCJIT_VERSION_SCRIPT_OPTION): New. (LIBGCCJIT_SONAME_OPTION): New. (jit): Move --version-script and -soname linker options to the above. --- gcc/Makefile.in | 4 ++++ gcc/configure.ac | 38 ++++++++++++++++++++++++++++++++++++++ gcc/jit/Make-lang.in | 17 +++++++++++++++-- 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 6c37e46..903da58 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1116,6 +1116,10 @@ endif LANG_MAKEFRAGS = @all_lang_makefrags@ +# Used by gcc/jit/Make-lang.in +LD_VERSION_SCRIPT_OPTION = @ld_version_script_option@ +LD_SONAME_OPTION = @ld_soname_option@ + # Flags to pass to recursive makes. # CC is set by configure. # ??? The choices here will need some experimenting with. diff --git a/gcc/configure.ac b/gcc/configure.ac index b7f9728..265920c 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3640,6 +3640,44 @@ if test x"$gcc_cv_ld_static_dynamic" = xyes; then fi AC_MSG_RESULT($gcc_cv_ld_static_dynamic) +AC_MSG_CHECKING(linker --version-script option) +gcc_cv_ld_version_script=no +ld_version_script_option='--version-script' +if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then + gcc_cv_ld_version_script=yes + ld_version_script_option='--version-script' +elif test x$gcc_cv_ld != x; then + case "$target" in + # Solaris 2 ld always supports -M. It also supports a subset of + # --version-script since Solaris 11.4, but requires + # -z gnu-version-script-compat to activate. + *-*-solaris2*) + gcc_cv_ld_version_script=yes + ld_version_script_option='-M' + ;; + esac +fi +# Don't AC_DEFINE result, only used in jit/Make-lang.in so far. +AC_MSG_RESULT($gcc_cv_ld_version_script) +AC_SUBST(ld_version_script_option) + +AC_MSG_CHECKING(linker soname option) +gcc_cv_ld_soname=no +if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then + gcc_cv_ld_soname=yes + ld_soname_option='-soname' +elif test x$gcc_cv_ld != x; then + case "$target" in + *-*-darwin*) + gcc_cv_ld_soname=yes + ld_soname_option='-install_name' + ;; + esac +fi +# Don't AC_DEFINE result, only used in jit/Make-lang.in so far. +AC_MSG_RESULT($gcc_cv_ld_soname) +AC_SUBST(ld_soname_option) + if test x"$demangler_in_ld" = xyes; then AC_MSG_CHECKING(linker --demangle support) gcc_cv_ld_demangle=no diff --git a/gcc/jit/Make-lang.in b/gcc/jit/Make-lang.in index d4362a9..ba78f8e 100644 --- a/gcc/jit/Make-lang.in +++ b/gcc/jit/Make-lang.in @@ -51,6 +51,19 @@ LIBGCCJIT_FILENAME = \ LIBGCCJIT_LINKER_NAME_SYMLINK = $(LIBGCCJIT_LINKER_NAME) LIBGCCJIT_SONAME_SYMLINK = $(LIBGCCJIT_SONAME) +# Conditionalize the use of the LD_VERSION_SCRIPT_OPTION and +# LD_SONAME_OPTION depending if configure found them, using $(if) +# We have to define a COMMA here, otherwise the commas in the "true" +# result are treated as separators by the $(if). +COMMA := , +LIBGCCJIT_VERSION_SCRIPT_OPTION = \ + $(if $(LD_VERSION_SCRIPT_OPTION),\ + -Wl$(COMMA)$(LD_VERSION_SCRIPT_OPTION)$(COMMA)$(srcdir)/jit/libgccjit.map) + +LIBGCCJIT_SONAME_OPTION = \ + $(if $(LD_SONAME_OPTION), \ + -Wl$(COMMA)$(LD_SONAME_OPTION)$(COMMA)$(LIBGCCJIT_SONAME)) + jit: $(LIBGCCJIT_FILENAME) \ $(LIBGCCJIT_SYMLINK) \ $(LIBGCCJIT_LINKER_NAME_SYMLINK) \ @@ -85,8 +98,8 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \ $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \ $(CPPLIB) $(LIBDECNUMBER) $(LIBS) $(BACKENDLIBS) \ $(EXTRA_GCC_OBJS) \ - -Wl,--version-script=$(srcdir)/jit/libgccjit.map \ - -Wl,-soname,$(LIBGCCJIT_SONAME) + $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \ + $(LIBGCCJIT_SONAME_OPTION) $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME) ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK) -- 1.8.5.3 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-02-13 21:14 ` [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) David Malcolm @ 2018-02-13 21:31 ` Rainer Orth 2018-02-14 13:36 ` Rainer Orth 2018-02-14 17:28 ` FX 1 sibling, 1 reply; 13+ messages in thread From: Rainer Orth @ 2018-02-13 21:31 UTC (permalink / raw) To: David Malcolm; +Cc: FX, gcc-patches, jit Hi David, > libgccjit fails to link on OS X and Solaris due to jit/Make-lang.in, > due to the assumption there that the linker is GNU ld. Specifically, > jit/Make-lang.in hardcodes the use of two options: --version-script > and -soname. > > * on Darwin, --version-script doesn't seem to exist in the linker, and > it uses -install_name rather than -soname. > > * on Solaris, ld doesn't support --version-script. However, the version > script used for libgccjit.so doesn't use any gld extensions, so one can > just use -M instead. > > This patch fixes these issues by using variables emitted by gcc's "configure" > rather than hardcoding the options in jit/Make-lang.in. > > It's based on the first part of Rainer's patch for PR jit/84288, but I > made the following changes: > * the GNU ld case in configure.ac wasn't setting ld_version_script_option. > I set it to "--version-script" for that case. That's weird: the configure.ac part starts with ld_version_script_option='--version-script' only overriding it in the Solaris case to keep things for other hosts as they were. Besides, I'm pretty sure I tested the patch on Solaris with gas/gld to make certain that combo continues to work as is... > * I moved the: > LD_VERSION_SCRIPT_OPTION = @ld_version_script_option@ > from gcc/jit/Make-lang.in to gcc/Makefile.in, as the Make-lang.in files > aren't substituted, only the gcc/Makefile.in. > Rainer: how did this work for you? It didn't: what I'd attached to the PR was an initial version of the patch in the middle between manually hacking gcc/jit/Make-lang.in and properly autoconfiguring things. > * added LD_SONAME_OPTION, done in the same way > * conditionalized the usage of the options in Make-lang.in to cope with > empty LD_VERSION_SCRIPT_OPTION (as is presumably the case on OS X). > I used ($if condition,then-part[,else-part]) for this. > I had to add a $(COMMA) since the "then-part" contains commas, which > need to be treated as part of the "then-part", rather than separators > for the "else-part". > Hopefully this is compatible with every "make" implementation that we > support. > > Successfully bootstrapped®rtested on x86_64-pc-linux-gnu. > > I lightly tested the not-recognized case by hacking up the configure.ac > (on x86_64-pc-linux-gnu) and verifying that it links, and that a > smoketest of jit.dg/test-factorial works. > > Does this fix the jit linker issues on OS X and Solaris? I'll give it a whirl tomorrow, including the jit-recording.c part of my patch to allow the build to complete. Thanks. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-02-13 21:31 ` Rainer Orth @ 2018-02-14 13:36 ` Rainer Orth 0 siblings, 0 replies; 13+ messages in thread From: Rainer Orth @ 2018-02-14 13:36 UTC (permalink / raw) To: David Malcolm; +Cc: FX, gcc-patches, jit [-- Attachment #1: Type: text/plain, Size: 550 bytes --] Hi David, >> * added LD_SONAME_OPTION, done in the same way [...] >> Does this fix the jit linker issues on OS X and Solaris? > > I'll give it a whirl tomorrow, including the jit-recording.c part of my > patch to allow the build to complete. actually, I've replaced the Makefile and configure parts of my patch with yours and did a jit-only bootstrap on i386-pc-solaris2.11 with as/ld and gas/ld. Both went fine with a minor caveat: I noticed that LD_SONAME_OPTION wasn't set in gcc/Makefile. Fixed with the following (so far untested) snippet: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: lso.patch --] [-- Type: text/x-patch, Size: 521 bytes --] diff --git a/gcc/configure.ac b/gcc/configure.ac --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3715,6 +3715,12 @@ elif test x$gcc_cv_ld != x; then gcc_cv_ld_soname=yes ld_soname_option='-install_name' ;; + # Solaris 2 ld always supports -h. It also supports --soname for GNU + # ld compatiblity since some Solaris 10 update. + *-*-solaris2*) + gcc_cv_ld_soname=yes + ld_soname_option='-h' + ;; esac fi # Don't AC_DEFINE result, only used in jit/Make-lang.in so far. [-- Attachment #3: Type: text/plain, Size: 301 bytes --] I've also checked that the original Solaris 10 release didn't support ld -soname, so it's safer to always use the Solaris-native -h option instead. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-02-13 21:14 ` [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) David Malcolm 2018-02-13 21:31 ` Rainer Orth @ 2018-02-14 17:28 ` FX 2018-02-14 22:36 ` FX 1 sibling, 1 reply; 13+ messages in thread From: FX @ 2018-02-14 17:28 UTC (permalink / raw) To: David Malcolm; +Cc: Rainer Orth, gcc-patches, jit > Does this fix the jit linker issues on OS X and Solaris? The patch fails to bootstrap on x86_64-apple-darwin17. gcc/config.log says: gcc_cv_ld_version_script=no ld_version_script_option='--version-script’ gcc/Makefile says: LD_VERSION_SCRIPT_OPTION = --version-script LD_SONAME_OPTION = -install_name which makes it try to link with: -Wl,--version-script,../../trunk/gcc/jit/libgccjit.map \ -Wl,-install_name,libgccjit.so.0 which fails with: ld: unknown option: --version-script I think the patch to gcc/configure.ac should be: +AC_MSG_CHECKING(linker --version-script option) +gcc_cv_ld_version_script=no +ld_version_script_option='' FX ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-02-14 17:28 ` FX @ 2018-02-14 22:36 ` FX 2018-03-06 14:23 ` FX 2018-03-09 14:14 ` Seeking Release Manager approval for: " David Malcolm 0 siblings, 2 replies; 13+ messages in thread From: FX @ 2018-02-14 22:36 UTC (permalink / raw) To: David Malcolm, Rainer Orth, gcc patches, jit [-- Attachment #1: Type: text/plain, Size: 153 bytes --] I can confirm that, with the attached revised patch, a bootstrap with --enable-languages=c,c++,jit --enable-host-shared is successful on macOS. FX [-- Attachment #2: patch --] [-- Type: application/octet-stream, Size: 6365 bytes --] Index: gcc/Makefile.in =================================================================== --- gcc/Makefile.in (revision 257657) +++ gcc/Makefile.in (working copy) @@ -1116,6 +1116,10 @@ endif LANG_MAKEFRAGS = @all_lang_makefrags@ +# Used by gcc/jit/Make-lang.in +LD_VERSION_SCRIPT_OPTION = @ld_version_script_option@ +LD_SONAME_OPTION = @ld_soname_option@ + # Flags to pass to recursive makes. # CC is set by configure. # ??? The choices here will need some experimenting with. Index: gcc/configure =================================================================== --- gcc/configure (revision 257657) +++ gcc/configure (working copy) @@ -680,6 +680,8 @@ zlibdir HOST_LIBS enable_default_ssp thin_archive_support +ld_soname_option +ld_version_script_option libgcc_visibility gcc_cv_readelf gcc_cv_objdump @@ -18446,7 +18448,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18449 "configure" +#line 18451 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18552,7 +18554,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18555 "configure" +#line 18557 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -24453,6 +24455,48 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_static_dynamic" >&5 $as_echo "$gcc_cv_ld_static_dynamic" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --version-script option" >&5 +$as_echo_n "checking linker --version-script option... " >&6; } +gcc_cv_ld_version_script=no +ld_version_script_option='' +if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then + gcc_cv_ld_version_script=yes + ld_version_script_option='--version-script' +elif test x$gcc_cv_ld != x; then + case "$target" in + # Solaris 2 ld always supports -M. It also supports a subset of + # --version-script since Solaris 11.4, but requires + # -z gnu-version-script-compat to activate. + *-*-solaris2*) + gcc_cv_ld_version_script=yes + ld_version_script_option='-M' + ;; + esac +fi +# Don't AC_DEFINE result, only used in jit/Make-lang.in so far. +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_version_script" >&5 +$as_echo "$gcc_cv_ld_version_script" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker soname option" >&5 +$as_echo_n "checking linker soname option... " >&6; } +gcc_cv_ld_soname=no +if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then + gcc_cv_ld_soname=yes + ld_soname_option='-soname' +elif test x$gcc_cv_ld != x; then + case "$target" in + *-*-darwin*) + gcc_cv_ld_soname=yes + ld_soname_option='-install_name' + ;; + esac +fi +# Don't AC_DEFINE result, only used in jit/Make-lang.in so far. +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_soname" >&5 +$as_echo "$gcc_cv_ld_soname" >&6; } + + if test x"$demangler_in_ld" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --demangle support" >&5 $as_echo_n "checking linker --demangle support... " >&6; } @@ -27870,6 +27914,7 @@ if test $gcc_cv_as_dwarf2_debug_view = y $as_echo "#define HAVE_AS_DWARF2_DEBUG_VIEW 1" >>confdefs.h fi + fi fi Index: gcc/configure.ac =================================================================== --- gcc/configure.ac (revision 257657) +++ gcc/configure.ac (working copy) @@ -3655,6 +3655,44 @@ if test x"$gcc_cv_ld_static_dynamic" = x fi AC_MSG_RESULT($gcc_cv_ld_static_dynamic) +AC_MSG_CHECKING(linker --version-script option) +gcc_cv_ld_version_script=no +ld_version_script_option='' +if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then + gcc_cv_ld_version_script=yes + ld_version_script_option='--version-script' +elif test x$gcc_cv_ld != x; then + case "$target" in + # Solaris 2 ld always supports -M. It also supports a subset of + # --version-script since Solaris 11.4, but requires + # -z gnu-version-script-compat to activate. + *-*-solaris2*) + gcc_cv_ld_version_script=yes + ld_version_script_option='-M' + ;; + esac +fi +# Don't AC_DEFINE result, only used in jit/Make-lang.in so far. +AC_MSG_RESULT($gcc_cv_ld_version_script) +AC_SUBST(ld_version_script_option) + +AC_MSG_CHECKING(linker soname option) +gcc_cv_ld_soname=no +if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then + gcc_cv_ld_soname=yes + ld_soname_option='-soname' +elif test x$gcc_cv_ld != x; then + case "$target" in + *-*-darwin*) + gcc_cv_ld_soname=yes + ld_soname_option='-install_name' + ;; + esac +fi +# Don't AC_DEFINE result, only used in jit/Make-lang.in so far. +AC_MSG_RESULT($gcc_cv_ld_soname) +AC_SUBST(ld_soname_option) + if test x"$demangler_in_ld" = xyes; then AC_MSG_CHECKING(linker --demangle support) gcc_cv_ld_demangle=no Index: gcc/jit/Make-lang.in =================================================================== --- gcc/jit/Make-lang.in (revision 257657) +++ gcc/jit/Make-lang.in (working copy) @@ -51,6 +51,19 @@ LIBGCCJIT_FILENAME = \ LIBGCCJIT_LINKER_NAME_SYMLINK = $(LIBGCCJIT_LINKER_NAME) LIBGCCJIT_SONAME_SYMLINK = $(LIBGCCJIT_SONAME) +# Conditionalize the use of the LD_VERSION_SCRIPT_OPTION and +# LD_SONAME_OPTION depending if configure found them, using $(if) +# We have to define a COMMA here, otherwise the commas in the "true" +# result are treated as separators by the $(if). +COMMA := , +LIBGCCJIT_VERSION_SCRIPT_OPTION = \ + $(if $(LD_VERSION_SCRIPT_OPTION),\ + -Wl$(COMMA)$(LD_VERSION_SCRIPT_OPTION)$(COMMA)$(srcdir)/jit/libgccjit.map) + +LIBGCCJIT_SONAME_OPTION = \ + $(if $(LD_SONAME_OPTION), \ + -Wl$(COMMA)$(LD_SONAME_OPTION)$(COMMA)$(LIBGCCJIT_SONAME)) + jit: $(LIBGCCJIT_FILENAME) \ $(LIBGCCJIT_SYMLINK) \ $(LIBGCCJIT_LINKER_NAME_SYMLINK) \ @@ -85,8 +98,8 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \ $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \ $(CPPLIB) $(LIBDECNUMBER) $(LIBS) $(BACKENDLIBS) \ $(EXTRA_GCC_OBJS) \ - -Wl,--version-script=$(srcdir)/jit/libgccjit.map \ - -Wl,-soname,$(LIBGCCJIT_SONAME) + $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \ + $(LIBGCCJIT_SONAME_OPTION) $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME) ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-02-14 22:36 ` FX @ 2018-03-06 14:23 ` FX 2018-03-09 14:14 ` Seeking Release Manager approval for: " David Malcolm 1 sibling, 0 replies; 13+ messages in thread From: FX @ 2018-03-06 14:23 UTC (permalink / raw) To: François-Xavier Coudert; +Cc: David Malcolm, Rainer Orth, gcc patches, jit Hi David, Any news on that patch? Cheers, FX ^ permalink raw reply [flat|nested] 13+ messages in thread
* Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-02-14 22:36 ` FX 2018-03-06 14:23 ` FX @ 2018-03-09 14:14 ` David Malcolm 2018-03-09 14:35 ` Jakub Jelinek 2018-03-20 8:52 ` Rainer Orth 1 sibling, 2 replies; 13+ messages in thread From: David Malcolm @ 2018-03-09 14:14 UTC (permalink / raw) To: jakub, Richard Biener; +Cc: FX, Rainer Orth, gcc patches, jit On Wed, 2018-02-14 at 23:36 +0100, FX wrote: > I can confirm that, with the attached revised patch, a bootstrap with > --enable-languages=c,c++,jit --enable-host-shared is successful on > macOS. > > FX Looks good to me; thanks for fixing. Release managers: I'd like to apply FX's patch here: https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00881/patch to trunk, to fix the build of jit on OS X, and to make it easier to fix it on Solaris. This involves touching gcc/configure.ac (and configure). I've successfully bootstrapped and regression-tested it on x86_64-pc- linux-gnu. FX reports above that it fixes the build on macOS, and Rainer has an (untested) patch on top of it that ought to fix the build on Solaris: https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00835.html We're in stage 4, and the two bugs in question: PR jit/64089 ("libgccjit.so.0.0.1 linkage failure on darwin") https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64089 PR jit/84288 ("Support jit on Solaris") https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84288 aren't regressions. However, I believe this is a low-risk patch, and is mostly confined to jit (and those targets). Is it OK for trunk now, or does this need to wait until next stage 1? Thanks Dave ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-03-09 14:14 ` Seeking Release Manager approval for: " David Malcolm @ 2018-03-09 14:35 ` Jakub Jelinek 2018-03-20 8:52 ` Rainer Orth 1 sibling, 0 replies; 13+ messages in thread From: Jakub Jelinek @ 2018-03-09 14:35 UTC (permalink / raw) To: David Malcolm; +Cc: Richard Biener, FX, Rainer Orth, gcc patches, jit On Fri, Mar 09, 2018 at 09:14:13AM -0500, David Malcolm wrote: > On Wed, 2018-02-14 at 23:36 +0100, FX wrote: > > I can confirm that, with the attached revised patch, a bootstrap with > > --enable-languages=c,c++,jit --enable-host-shared is successful on > > macOS. > > > > FX > > Looks good to me; thanks for fixing. > > > Release managers: > > I'd like to apply FX's patch here: > https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00881/patch > to trunk, to fix the build of jit on OS X, and to make it easier to fix > it on Solaris. > > Is it OK for trunk now, or does this need to wait until next stage 1? Ok for trunk now. Jakub ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-03-09 14:14 ` Seeking Release Manager approval for: " David Malcolm 2018-03-09 14:35 ` Jakub Jelinek @ 2018-03-20 8:52 ` Rainer Orth 2018-03-20 19:43 ` David Malcolm 1 sibling, 1 reply; 13+ messages in thread From: Rainer Orth @ 2018-03-20 8:52 UTC (permalink / raw) To: David Malcolm; +Cc: jakub, Richard Biener, FX, gcc patches, jit [-- Attachment #1: Type: text/plain, Size: 1293 bytes --] Hi David, > Release managers: > > I'd like to apply FX's patch here: > https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00881/patch > to trunk, to fix the build of jit on OS X, and to make it easier to fix > it on Solaris. > > This involves touching gcc/configure.ac (and configure). > > I've successfully bootstrapped and regression-tested it on x86_64-pc- > linux-gnu. FX reports above that it fixes the build on macOS, and > Rainer has an (untested) patch on top of it that ought to fix the build > on Solaris: > https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00835.html I've now tested the patch (together with the one from PR jit/84288 for several remaining issues). I've needed another snippet for Solaris/SPARC which links libkstat into xgcc and needs it in libgccjit.so, too. Bootstrapped without regressions on i386-pc-solaris2.11 and sparc-sun-solaris2.11. Ok for mainline? Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2018-03-20 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> gcc/jit: PR jit/84288 * Make-lang.in ($(LIBGCCJIT_FILENAME)): Add $(EXTRA_GCC_LIBS). gcc: PR jit/84288 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set. * configure: Regenerate. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: sol2-jit-no-gld.patch --] [-- Type: text/x-patch, Size: 1170 bytes --] # HG changeset patch # Parent 401d306950a09a18dcff23bc4f3086cce131450b Enable jit on Solaris without GNU ld diff --git a/gcc/configure.ac b/gcc/configure.ac --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3715,6 +3715,12 @@ elif test x$gcc_cv_ld != x; then gcc_cv_ld_soname=yes ld_soname_option='-install_name' ;; + # Solaris 2 ld always supports -h. It also supports --soname for GNU + # ld compatiblity since some Solaris 10 update. + *-*-solaris2*) + gcc_cv_ld_soname=yes + ld_soname_option='-h' + ;; esac fi # Don't AC_DEFINE result, only used in jit/Make-lang.in so far. diff --git a/gcc/jit/Make-lang.in b/gcc/jit/Make-lang.in --- a/gcc/jit/Make-lang.in +++ b/gcc/jit/Make-lang.in @@ -96,7 +96,7 @@ jit-warn = $(STRICT_WARN) $(EXTRA_GCC_OBJS) +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ -shared \ $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \ - $(CPPLIB) $(LIBDECNUMBER) $(LIBS) $(BACKENDLIBS) \ + $(CPPLIB) $(LIBDECNUMBER) $(EXTRA_GCC_LIBS) $(LIBS) $(BACKENDLIBS) \ $(EXTRA_GCC_OBJS) \ $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \ $(LIBGCCJIT_SONAME_OPTION) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-03-20 8:52 ` Rainer Orth @ 2018-03-20 19:43 ` David Malcolm 2018-03-20 23:43 ` Rainer Orth 0 siblings, 1 reply; 13+ messages in thread From: David Malcolm @ 2018-03-20 19:43 UTC (permalink / raw) To: Rainer Orth; +Cc: jakub, Richard Biener, FX, gcc patches, jit On Tue, 2018-03-20 at 09:38 +0100, Rainer Orth wrote: > Hi David, > > > Release managers: > > > > I'd like to apply FX's patch here: > > https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00881/patch > > to trunk, to fix the build of jit on OS X, and to make it easier to > > fix > > it on Solaris. > > > > This involves touching gcc/configure.ac (and configure). > > > > I've successfully bootstrapped and regression-tested it on x86_64- > > pc- > > linux-gnu. FX reports above that it fixes the build on macOS, and > > Rainer has an (untested) patch on top of it that ought to fix the > > build > > on Solaris: > > https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00835.html > > I've now tested the patch (together with the one from PR jit/84288 > for > several remaining issues). I've needed another snippet for > Solaris/SPARC which links libkstat into xgcc and needs it in > libgccjit.so, too. Bootstrapped without regressions on > i386-pc-solaris2.11 and sparc-sun-solaris2.11. FWIW I've successfully tested this on x86_64-pc-linux-gnu (regenerating the gcc/configure), and, as jit maintainer, it looks good to me [1], though it may still need RM approval given stage 4. Dave [1] ...though I have a slight preference for listing $(EXTRA_GCC_LIBS) on the same line as $(EXTRA_GCC_OBJS) in jit/Make- lang.in, so that these two items needed to embed the driver code into the libgccjit shared library are visually grouped together. > Ok for mainline? > > Rainer > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-03-20 19:43 ` David Malcolm @ 2018-03-20 23:43 ` Rainer Orth 2018-03-21 1:29 ` David Malcolm 0 siblings, 1 reply; 13+ messages in thread From: Rainer Orth @ 2018-03-20 23:43 UTC (permalink / raw) To: David Malcolm; +Cc: jakub, Richard Biener, FX, gcc patches, jit Hi Malcolm, >> I've now tested the patch (together with the one from PR jit/84288 >> for >> several remaining issues). I've needed another snippet for >> Solaris/SPARC which links libkstat into xgcc and needs it in >> libgccjit.so, too. Bootstrapped without regressions on >> i386-pc-solaris2.11 and sparc-sun-solaris2.11. > > FWIW I've successfully tested this on x86_64-pc-linux-gnu (regenerating > the gcc/configure), and, as jit maintainer, it looks good to me [1], > though it may still need RM approval given stage 4. thanks for trying this. > [1] ...though I have a slight preference for listing > $(EXTRA_GCC_LIBS) on the same line as $(EXTRA_GCC_OBJS) in jit/Make- > lang.in, so that these two items needed to embed the driver code into > the libgccjit shared library are visually grouped together. I've selected the location of $(EXTRA_GCC_LIBS) in the link line to match what gcc/Makefile.in does for xgcc etc. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-03-20 23:43 ` Rainer Orth @ 2018-03-21 1:29 ` David Malcolm 2018-03-21 8:31 ` Richard Biener 0 siblings, 1 reply; 13+ messages in thread From: David Malcolm @ 2018-03-21 1:29 UTC (permalink / raw) To: Rainer Orth; +Cc: jakub, Richard Biener, FX, gcc patches, jit On Wed, 2018-03-21 at 00:39 +0100, Rainer Orth wrote: > Hi Malcolm, > > > > I've now tested the patch (together with the one from PR > > > jit/84288 > > > for > > > several remaining issues). I've needed another snippet for > > > Solaris/SPARC which links libkstat into xgcc and needs it in > > > libgccjit.so, too. Bootstrapped without regressions on > > > i386-pc-solaris2.11 and sparc-sun-solaris2.11. > > > > FWIW I've successfully tested this on x86_64-pc-linux-gnu > > (regenerating > > the gcc/configure), and, as jit maintainer, it looks good to me > > [1], > > though it may still need RM approval given stage 4. > > thanks for trying this. > > > [1] ...though I have a slight preference for listing > > $(EXTRA_GCC_LIBS) on the same line as $(EXTRA_GCC_OBJS) in > > jit/Make- > > lang.in, so that these two items needed to embed the driver code > > into > > the libgccjit shared library are visually grouped together. > > I've selected the location of $(EXTRA_GCC_LIBS) in the link line to > match what gcc/Makefile.in does for xgcc etc. Indeed, I don't want to bikeshed it - I care much more about whether it works ;) ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: Seeking Release Manager approval for: [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) 2018-03-21 1:29 ` David Malcolm @ 2018-03-21 8:31 ` Richard Biener 0 siblings, 0 replies; 13+ messages in thread From: Richard Biener @ 2018-03-21 8:31 UTC (permalink / raw) To: David Malcolm; +Cc: Rainer Orth, jakub, FX, gcc patches, jit On Tue, 20 Mar 2018, David Malcolm wrote: > On Wed, 2018-03-21 at 00:39 +0100, Rainer Orth wrote: > > Hi Malcolm, > > > > > > I've now tested the patch (together with the one from PR > > > > jit/84288 > > > > for > > > > several remaining issues). I've needed another snippet for > > > > Solaris/SPARC which links libkstat into xgcc and needs it in > > > > libgccjit.so, too. Bootstrapped without regressions on > > > > i386-pc-solaris2.11 and sparc-sun-solaris2.11. > > > > > > FWIW I've successfully tested this on x86_64-pc-linux-gnu > > > (regenerating > > > the gcc/configure), and, as jit maintainer, it looks good to me > > > [1], > > > though it may still need RM approval given stage 4. > > > > thanks for trying this. > > > > > [1] ...though I have a slight preference for listing > > > $(EXTRA_GCC_LIBS) on the same line as $(EXTRA_GCC_OBJS) in > > > jit/Make- > > > lang.in, so that these two items needed to embed the driver code > > > into > > > the libgccjit shared library are visually grouped together. > > > > I've selected the location of $(EXTRA_GCC_LIBS) in the link line to > > match what gcc/Makefile.in does for xgcc etc. > > Indeed, I don't want to bikeshed it - I care much more about whether it > works ;) I'm fine with this patch. Richard. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-03-21 8:22 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <78D7B2DA-5677-4211-9C4E-F7B1B5AB51B5@gmail.com> 2018-02-13 21:14 ` [PATCH] jit: fix link on OS X and Solaris (PR jit/64089 and PR jit/84288) David Malcolm 2018-02-13 21:31 ` Rainer Orth 2018-02-14 13:36 ` Rainer Orth 2018-02-14 17:28 ` FX 2018-02-14 22:36 ` FX 2018-03-06 14:23 ` FX 2018-03-09 14:14 ` Seeking Release Manager approval for: " David Malcolm 2018-03-09 14:35 ` Jakub Jelinek 2018-03-20 8:52 ` Rainer Orth 2018-03-20 19:43 ` David Malcolm 2018-03-20 23:43 ` Rainer Orth 2018-03-21 1:29 ` David Malcolm 2018-03-21 8:31 ` Richard Biener
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).