aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Sandoe <iain@sandoe.co.uk>2023-07-20 16:37:21 +0100
committerIain Sandoe <iain@sandoe.co.uk>2023-07-21 15:47:13 +0100
commitfc92f5811e77b091d65045f2daa0f83c31d00797 (patch)
tree460bfea9bbfedb534683daf94454ec7ce5ebcd7d
parente35d297fc9a625f11d861b6feacb228810e4e6bd (diff)
downloadgcc-fc92f5811e77b091d65045f2daa0f83c31d00797.zip
gcc-fc92f5811e77b091d65045f2daa0f83c31d00797.tar.gz
gcc-fc92f5811e77b091d65045f2daa0f83c31d00797.tar.bz2
Darwin: Handle linker '-demangle' option.
Most of the Darwin linkers in use support this option which we will now pass by default (matching the Xcode clang impl.)> Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/ChangeLog: * config.in: Regenerate. * config/darwin.h (DARWIN_LD_DEMANGLE): New. (LINK_COMMAND_SPEC_A): Add demangle handling. * configure: Regenerate. * configure.ac: Detect linker support for '-demangle'.
-rw-r--r--gcc/config.in9
-rw-r--r--gcc/config/darwin.h7
-rwxr-xr-xgcc/configure19
-rw-r--r--gcc/configure.ac14
4 files changed, 48 insertions, 1 deletions
diff --git a/gcc/config.in b/gcc/config.in
index 0e62b9f..5cf51bc 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -2178,6 +2178,12 @@
#endif
+/* Define to 1 if ld64 supports '-demangle'. */
+#ifndef USED_FOR_TARGET
+#undef LD64_HAS_DEMANGLE
+#endif
+
+
/* Define to 1 if ld64 supports '-export_dynamic'. */
#ifndef USED_FOR_TARGET
#undef LD64_HAS_EXPORT_DYNAMIC
@@ -2239,7 +2245,8 @@
#endif
-/* Define to the sub-directory where libtool stores uninstalled libraries. */
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
#ifndef USED_FOR_TARGET
#undef LT_OBJDIR
#endif
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 1b538c7..e0e8672 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -270,6 +270,12 @@ extern GTY(()) int darwin_ms_struct;
"%<y*", \
"%<Mach "
+#if LD64_HAS_DEMANGLE
+#define DARWIN_LD_DEMANGLE " -demangle "
+#else
+#define DARWIN_LD_DEMANGLE ""
+#endif
+
#if LD64_HAS_EXPORT_DYNAMIC
#define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
#else
@@ -356,6 +362,7 @@ extern GTY(()) int darwin_ms_struct;
#define LINK_COMMAND_SPEC_A \
"%{!c:%{!E:%{!S:%{!M:%{!MM:%{!fsyntax-only:%{!fdump=*: \
%(linker)" \
+ DARWIN_LD_DEMANGLE \
LINK_PLUGIN_SPEC \
"%{flto*:%<fcompare-debug*} \
%{flto} %{fno-lto} %{flto=*} \
diff --git a/gcc/configure b/gcc/configure
index 496da71..c341ee1 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -30478,6 +30478,7 @@ if test x"$ld64_flag" = x"yes"; then
# Set defaults for possibly untestable items.
gcc_cv_ld64_export_dynamic=0
gcc_cv_ld64_platform_version=0
+ gcc_cv_ld64_demangle=0
if test "$build" = "$host"; then
darwin_try_test=1
@@ -30501,6 +30502,9 @@ $as_echo_n "checking ld64 specified version... " >&6; }
gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_major" >&5
$as_echo "$gcc_cv_ld64_major" >&6; }
+ if test "$gcc_cv_ld64_major" -ge 97; then
+ gcc_cv_ld64_demangle=1
+ fi
if test "$gcc_cv_ld64_major" -ge 236; then
gcc_cv_ld64_export_dynamic=1
fi
@@ -30517,6 +30521,15 @@ $as_echo_n "checking linker version... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_version" >&5
$as_echo "$gcc_cv_ld64_version" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for -demangle support" >&5
+$as_echo_n "checking linker for -demangle support... " >&6; }
+ gcc_cv_ld64_demangle=1
+ if $gcc_cv_ld -demangle < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
+ gcc_cv_ld64_demangle=0
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld64_demangle" >&5
+$as_echo "$gcc_cv_ld64_demangle" >&6; }
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for -export_dynamic support" >&5
$as_echo_n "checking linker for -export_dynamic support... " >&6; }
gcc_cv_ld64_export_dynamic=1
@@ -30546,6 +30559,12 @@ _ACEOF
cat >>confdefs.h <<_ACEOF
+#define LD64_HAS_DEMANGLE $gcc_cv_ld64_demangle
+_ACEOF
+
+
+
+cat >>confdefs.h <<_ACEOF
#define LD64_HAS_EXPORT_DYNAMIC $gcc_cv_ld64_export_dynamic
_ACEOF
diff --git a/gcc/configure.ac b/gcc/configure.ac
index e91073b..46e58a2 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -6211,6 +6211,7 @@ if test x"$ld64_flag" = x"yes"; then
# Set defaults for possibly untestable items.
gcc_cv_ld64_export_dynamic=0
gcc_cv_ld64_platform_version=0
+ gcc_cv_ld64_demangle=0
if test "$build" = "$host"; then
darwin_try_test=1
@@ -6232,6 +6233,9 @@ if test x"$ld64_flag" = x"yes"; then
AC_MSG_CHECKING(ld64 specified version)
gcc_cv_ld64_major=`echo "$gcc_cv_ld64_version" | sed -e 's/\..*//'`
AC_MSG_RESULT($gcc_cv_ld64_major)
+ if test "$gcc_cv_ld64_major" -ge 97; then
+ gcc_cv_ld64_demangle=1
+ fi
if test "$gcc_cv_ld64_major" -ge 236; then
gcc_cv_ld64_export_dynamic=1
fi
@@ -6246,6 +6250,13 @@ if test x"$ld64_flag" = x"yes"; then
fi
AC_MSG_RESULT($gcc_cv_ld64_version)
+ AC_MSG_CHECKING(linker for -demangle support)
+ gcc_cv_ld64_demangle=1
+ if $gcc_cv_ld -demangle < /dev/null 2>&1 | grep 'unknown option' > /dev/null; then
+ gcc_cv_ld64_demangle=0
+ fi
+ AC_MSG_RESULT($gcc_cv_ld64_demangle)
+
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
@@ -6266,6 +6277,9 @@ if test x"$ld64_flag" = x"yes"; then
[Define to ld64 version.])
fi
+ AC_DEFINE_UNQUOTED(LD64_HAS_DEMANGLE, $gcc_cv_ld64_demangle,
+ [Define to 1 if ld64 supports '-demangle'.])
+
AC_DEFINE_UNQUOTED(LD64_HAS_EXPORT_DYNAMIC, $gcc_cv_ld64_export_dynamic,
[Define to 1 if ld64 supports '-export_dynamic'.])