# See if ld(1) is GNU ld(1). GNU ld(1) won't work for this job.
# Recompute $verbose since we may have just changed $cc.
- verbose=`${cc:-cc} -v -o try try.c 2>&1`
+ verbose=`${cc:-cc} -v -o try try.c 2>&1 | grep ld 2>&1`
if echo "$verbose" | grep ' /usr/ccs/bin/ld ' >/dev/null 2>&1; then
:
else
+ # It's not /usr/ccs/bin/ld - but it might be egcs's ld wrapper,
+ # which calls /usr/ccs/bin/ld in turn. Passing -V to it will
+ # make it show its true colors.
+
+ myld=`echo $verbose| grep ld | awk '/\/ld/ {print $1}'`
+ # This assumes that gcc's output will not change, and that
+ # /full/path/to/ld will be the first word of the output.
+
+ # all Solaris versions of ld I've seen contain the magic
+ # string used in the grep below.
+ if $myld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then
+ cat <<END >&2
+
+Aha. You're using egcs and /usr/ccs/bin/ld.
+
+END
+
+ else
cat <<END >&2
NOTE: You are using GNU ld(1). GNU ld(1) will not build Perl.
END
cc="${cc:-cc} -B/usr/ccs/bin/"
+ fi
fi
else
# when linked with the threads library, such that whatever positive value
# you pass to siglongjmp(), sigsetjmp() returns 1.
# Thanks to Simon Parsons <S.Parsons@ftel.co.uk> for this report.
- if test "`arch`" = i86pc -a "$osvers" = 2.6; then
- d_sigaction=$undef
+ # Sun BugID is 4117946, "sigsetjmp always returns 1 when called by
+ # siglongjmp in a MT program". As of 19980622, there is no patch
+ # available.
+ cat >try.c <<'EOM'
+ /* Test for sig(set|long)jmp bug. */
+ #include <setjmp.h>
+
+ main()
+ {
+ sigjmp_buf env;
+ int ret;
+
+ ret = sigsetjmp(env, 1);
+ if (ret) { return ret == 2; }
+ siglongjmp(env, 2);
+ }
+EOM
+ if test "`arch`" = i86pc -a "$osvers" = 2.6 \
+ && ${cc:-cc} try.c -lpthread >/dev/null 2>&1 && ./a.out; then
+ d_sigsetjmp=$undef
cat << 'EOM' >&2
You will see a *** WHOA THERE!!! *** message from Configure for
-d_sigaction. Keep the recommended value. See hints/solaris_2.sh
+d_sigsetjmp. Keep the recommended value. See hints/solaris_2.sh
for more information.
EOM