Commit 6067f956 authored by Thorkil Naur's avatar Thorkil Naur Committed by Ian Lynagh

FIX BUILD on OS X 10.5: Check whether ld understands -no_compact_unwind

parent bc876206
......@@ -831,6 +831,31 @@ AC_SUBST([LdIsGNULd], [`echo $fp_cv_gnu_ld | sed 'y/yesno/YESNO/'`])
])# FP_PROG_LD_IS_GNU
# FP_PROG_LD_NO_COMPACT_UNWIND
# ----------------------------
# Sets the output variable LdHasNoCompactUnwind to YES if ld supports
# -no_compact_unwind, or NO otherwise.
AC_DEFUN([FP_PROG_LD_NO_COMPACT_UNWIND],
[
AC_CACHE_CHECK([whether ld understands -no_compact_unwind], [fp_cv_ld_no_compact_unwind],
[echo 'foo() {}' > conftest.c
${CC-cc} -c conftest.c
if ${LdCmd} -r -no_compact_unwind -o conftest2.o conftest.o > /dev/null 2>&1; then
fp_cv_ld_no_compact_unwind=yes
else
fp_cv_ld_no_compact_unwind=no
fi
rm -rf conftest*])
if test "$fp_cv_ld_no_compact_unwind" = yes; then
LdHasNoCompactUnwind=YES
else
LdHasNoCompactUnwind=NO
fi
AC_SUBST([LdHasNoCompactUnwind])
])# FP_PROG_LD_NO_COMPACT_UNWIND
# FP_PROG_AR
# ----------
# Sets fp_prog_ar_raw to the full path of ar and fp_prog_ar to a non-Cygwin
......
......@@ -105,6 +105,8 @@ endif
@echo 'cLeadingUnderscore = "$(LeadingUnderscore)"' >> $@
@echo 'cRAWCPP_FLAGS :: String' >> $@
@echo 'cRAWCPP_FLAGS = "$(RAWCPP_FLAGS)"' >> $@
@echo 'cLdHasNoCompactUnwind :: String' >> $@
@echo 'cLdHasNoCompactUnwind = "$(LdHasNoCompactUnwind)"' >> $@
@echo 'cLdIsGNULd :: String' >> $@
@echo 'cLdIsGNULd = "$(LdIsGNULd)"' >> $@
@echo 'cLdHasBuildId :: String' >> $@
......
......@@ -1683,7 +1683,8 @@ linkBinary dflags o_files dep_packages = do
-- like
-- ld: warning: could not create compact unwind for .LFB3: non-standard register 5 being saved in prolog
-- on x86.
++ (if platformOS (targetPlatform dflags) == OSDarwin &&
++ (if cLdHasNoCompactUnwind == "YES" &&
platformOS (targetPlatform dflags) == OSDarwin &&
platformArch (targetPlatform dflags) `elem` [ArchX86, ArchX86_64]
then ["-Wl,-no_compact_unwind"]
else [])
......
......@@ -702,6 +702,7 @@ dnl ** check for ld, whether it has an -x option, and if it is GNU ld
FP_PROG_LD_X
FP_PROG_LD_IS_GNU
FP_PROG_LD_BUILD_ID
FP_PROG_LD_NO_COMPACT_UNWIND
FP_VISIBILITY_HIDDEN
......
......@@ -693,6 +693,10 @@ LdIsGNULd = @LdIsGNULd@
# disable it with --build-id=none.
LdHasBuildId = @LdHasBuildId@
# Set to YES if ld has the --no_compact_unwind flag. See #5019
# and compiler/main/DriverPipeline.hs.
LdHasNoCompactUnwind = @LdHasNoCompactUnwind@
# On MSYS, building with SplitObjs=YES fails with
# ar: Bad file number
# see #3201. We need to specify a smaller max command-line size
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment