Iain,
     It certainly looks like you dropped a file here. The proposed
ChangeLog shows...

* config.in: Likewise.

but the previously proposed hunk from...

diff --git a/gcc/config.in b/gcc/config.in
index a736de3..a7ff3ee 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1934,6 +1934,18 @@
 #endif


+/* Define to 1 if ld64 supports '-export_dynamic'. */
+#ifndef USED_FOR_TARGET
+#undef LD64_HAS_EXPORT_DYNAMIC
+#endif
+
+
+/* Define to ld64 version. */
+#ifndef USED_FOR_TARGET
+#undef LD64_VERSION
+#endif
+
+
 /* Define to the linker option to ignore unused dependencies. */
 #ifndef USED_FOR_TARGET
 #undef LD_AS_NEEDED_OPTION

from PR71767-vs-240230 has gone missing. The current patch still
produces a compiler which triggers warnings of...

warning: section "__textcoal_nt" is deprecated

during the bootstrap until that hunk of the original patch is restored.
        Jack

On Sun, Nov 6, 2016 at 2:39 PM, Iain Sandoe <iain_san...@mentor.com> wrote:
> Hi Folks,
>
> This is an initial patch in a series that converts Darwin's configury to 
> detect ld64 features, rather than the current process of hard-coding them on 
> target system version.
>
> This adds an option --with-ld64[=version] that allows the configurer to 
> specify that the Darwin ld64 linker is in use.  If the version is given then 
> that will be used to determine the capabilities of the linker in native and 
> canadian crosses.  For Darwin targets this flag will default to "on", since 
> such targets require an ld64-compatible linker.
>
> If a DEFAULT_LINKER is set via --with-ld= then this will also be tested to 
> see if it is ld64.
>
> The ld64 version is determined (unless overridden by --with-ld64=version) and 
> this is exported for use in setting a default value for -mtarget-linker 
> (needed for run-time code-gen changes to section choices).
>
> In this initial patch, support for -rdynamic is converted to be detected at 
> config time, or by the ld64 version if that is explicitly given (as an 
> example of usage).
>
> OK for trunk?
> OK for open branches?
> Iain
>
> gcc/
>
> 2016-11-06  Iain Sandoe  <i...@codesourcery.com>
>
>        PR target/71767
>         * configure.ac (with-ld64): New arg-with.  gcc_ld64_version: New,
>         new test.  gcc_cv_ld64_export_dynamic: New, New test.
>         * configure: Regenerate.
>         * config.in: Likewise.
>         * darwin.h: Use LD64_HAS_DYNAMIC export. DEF_LD64: New, define.
>         * darwin10.h(DEF_LD64): Update for this target version.
>         * darwin12.h(LINK_GCC_C_SEQUENCE_SPEC): Remove rdynamic test.
>         (DEF_LD64): Update for this target version.
> ---
>  gcc/config/darwin.h   | 16 ++++++++++-
>  gcc/config/darwin10.h |  5 ++++
>  gcc/config/darwin12.h |  7 ++++-
>  gcc/configure.ac      | 74 
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 100 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
> index 045f70b..541bcb3 100644
> --- a/gcc/config/darwin.h
> +++ b/gcc/config/darwin.h
> @@ -165,6 +165,12 @@ extern GTY(()) int darwin_ms_struct;
>     specifying the handling of options understood by generic Unix
>     linkers, and for positional arguments like libraries.  */
>
> +#if LD64_HAS_EXPORT_DYNAMIC
> +#define DARWIN_EXPORT_DYNAMIC " %{rdynamic:-export_dynamic}"
> +#else
> +#define DARWIN_EXPORT_DYNAMIC " %{rdynamic: %nrdynamic is not supported}"
> +#endif
> +
>  #define LINK_COMMAND_SPEC_A \
>     "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
>      %(linker)" \
> @@ -185,7 +191,9 @@ extern GTY(()) int darwin_ms_struct;
>      %{!nostdlib:%{!nodefaultlibs:\
>        %{%:sanitize(address): -lasan } \
>        %{%:sanitize(undefined): -lubsan } \
> -      %(link_ssp) %(link_gcc_c_sequence)\
> +      %(link_ssp) \
> +      " DARWIN_EXPORT_DYNAMIC " %<rdynamic \
> +      %(link_gcc_c_sequence) \
>      }}\
>      %{!nostdlib:%{!nostartfiles:%E}} %{T*} %{F*} }}}}}}}"
>
> @@ -932,4 +940,10 @@ extern void darwin_driver_init (unsigned int *,struct 
> cl_decoded_option **);
>     fall-back default.  */
>  #define DEF_MIN_OSX_VERSION "10.5"
>
> +#ifndef LD64_VERSION
> +#define LD64_VERSION "85.2"
> +#else
> +#define DEF_LD64 LD64_VERSION
> +#endif
> +
>  #endif /* CONFIG_DARWIN_H */
> diff --git a/gcc/config/darwin10.h b/gcc/config/darwin10.h
> index 5829d78..a81fbdc 100644
> --- a/gcc/config/darwin10.h
> +++ b/gcc/config/darwin10.h
> @@ -32,3 +32,8 @@ along with GCC; see the file COPYING3.  If not see
>
>  #undef DEF_MIN_OSX_VERSION
>  #define DEF_MIN_OSX_VERSION "10.6"
> +
> +#ifndef LD64_VERSION
> +#undef DEF_LD64
> +#define DEF_LD64 "97.7"
> +#endif
> diff --git a/gcc/config/darwin12.h b/gcc/config/darwin12.h
> index e366982..f88e2a4 100644
> --- a/gcc/config/darwin12.h
> +++ b/gcc/config/darwin12.h
> @@ -21,10 +21,15 @@ along with GCC; see the file COPYING3.  If not see
>  #undef  LINK_GCC_C_SEQUENCE_SPEC
>  #define LINK_GCC_C_SEQUENCE_SPEC \
>  "%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
> -   %{rdynamic:-export_dynamic} %{!static:%{!static-libgcc: \
> +   %{!static:%{!static-libgcc: \
>        %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
>     
> %{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: 
> \
>        %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } %G %L"
>
>  #undef DEF_MIN_OSX_VERSION
>  #define DEF_MIN_OSX_VERSION "10.8"
> +
> +#ifndef LD64_VERSION
> +#undef DEF_LD64
> +#define DEF_LD64 "236.4"
> +#endif
> diff --git a/gcc/configure.ac b/gcc/configure.ac
> index 338956f..1783a39 100644
> --- a/gcc/configure.ac
> +++ b/gcc/configure.ac
> @@ -274,6 +274,26 @@ AC_ARG_WITH(gnu-ld,
>  gnu_ld_flag="$with_gnu_ld",
>  gnu_ld_flag=no)
>
> +# With ld64; try to support native and canadian crosses by allowing the
> +# configurer to specify the minium ld64 version expected.
> +AC_ARG_WITH(ld64,
> +[AS_HELP_STRING([[--with-ld64[=VERS]]],
> +[arrange to work with Darwin's ld64; assume that the version is >= VERS if 
> given])],
> +[case "${withval}" in
> +    no | yes)
> +        ld64_flag="${withval}"
> +        gcc_cv_ld64_version=
> +        ;;
> +    *)
> +        ld64_flag=yes
> +        gcc_cv_ld64_version="${withval}";;
> +esac],
> +[gcc_cv_ld64_version=
> +case $target in
> +    *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
> +    *) ld64_flag=no;;
> +esac])
> +
>  # With pre-defined ld
>  AC_ARG_WITH(ld,
>  [AS_HELP_STRING([--with-ld], [arrange to use the specified ld (full 
> pathname)])],
> @@ -283,6 +303,8 @@ if test x"${DEFAULT_LINKER+set}" = x"set"; then
>      AC_MSG_ERROR([cannot execute: $DEFAULT_LINKER: check --with-ld or env. 
> var. DEFAULT_LINKER])
>    elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep GNU > /dev/null; then
>      gnu_ld_flag=yes
> +  elif $DEFAULT_LINKER -v < /dev/null 2>&1 | grep ld64- > /dev/null; then
> +    ld64_flag=yes
>    fi
>    AC_DEFINE_UNQUOTED(DEFAULT_LINKER,"$DEFAULT_LINKER",
>         [Define to enable the use of a default linker.])
> @@ -5254,6 +5276,58 @@ AC_DEFINE_UNQUOTED(LD_COMPRESS_DEBUG_OPTION, 
> "$gcc_cv_ld_compress_debug_option",
>  [Define to the linker option to enable compressed debug sections.])
>  AC_MSG_RESULT($gcc_cv_ld_compress_debug)
>
> +if test x"$ld64_flag" = x"yes"; then
> +
> +  # Set defaults for possibly untestable items.
> +  gcc_cv_ld64_export_dynamic=0
> +
> +  if test "$build" = "$host"; then
> +    darwin_try_test=1
> +  else
> +    darwin_try_test=0
> +  fi
> +  # On Darwin, because of FAT library support, it is usually possible to 
> execute
> +  # exes from compatible archs even when the host differs from the build 
> system.
> +  case "$build","$host" in
> +    x86_64-*-darwin*,i?86-*-darwin* | 
> powerpc64*-*-darwin*,powerpc*-*-darwin*)
> +       darwin_try_test=1;;
> +    *) ;;
> +  esac
> +
> +  # If the configurer specified a minimum ld64 version to be supported, then 
> use
> +  # that to determine feature support.
> +  if test x"${gcc_cv_ld64_version}" != x; then
> +    AC_MSG_CHECKING(ld64 major version)
> +    IFS=. read gcc_cv_ld64_major gcc_cv_ld64_minor <<< 
> "${gcc_cv_ld64_version}"
> +    AC_MSG_RESULT($gcc_cv_ld64_major)
> +   if test "$gcc_cv_ld64_major" -ge 236; then
> +      gcc_cv_ld64_export_dynamic=1
> +    fi
> +  elif test -x "$gcc_cv_ld" -a "$darwin_try_test" -eq 1; then
> +    # If the version was not specified, try to find it.
> +    AC_MSG_CHECKING(linker version)
> +    if test x"${gcc_cv_ld64_version}" = x; then
> +      gcc_cv_ld64_version=`$gcc_cv_ld -v 2>&1 | grep ld64 | sed s/.*ld64-// 
> | awk '{print $1}'`
> +    fi
> +    AC_MSG_RESULT($gcc_cv_ld64_version)
> +
> +    AC_MSG_CHECKING(linker for -export_dynamic support)
> +    gcc_cv_ld64_export_dynamic=1
> +    if $gcc_cv_ld -export_dynamic < /dev/null 2>&1 | grep 'unknown option' > 
> /dev/null; then
> +      gcc_cv_ld64_export_dynamic=0
> +    fi
> +    AC_MSG_RESULT($gcc_cv_ld64_export_dynamic)
> +  fi
> +
> +  if test x"${gcc_cv_ld64_version}" != x; then
> +    AC_DEFINE_UNQUOTED(LD64_VERSION, "${gcc_cv_ld64_version}",
> +      [Define to ld64 version.])
> +  fi
> +
> +  AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
> +  [Define to 1 if ld64 supports '-export_dynamic'.])
> +fi
> +
>  # --------
>  # UNSORTED
>  # --------
> --
> 2.8.1
>
>

Reply via email to