I applied this patch. It works on my local systems, and it passes the cobolworx CI/CD pipelines.
It is okay for trunk. > -----Original Message----- > From: Jakub Jelinek <ja...@redhat.com> > Sent: Thursday, April 10, 2025 12:37 > To: Rainer Orth <r...@cebitec.uni-bielefeld.de> > Cc: Iain Sandoe <iains....@gmail.com>; gcc-patches@gcc.gnu.org; > i...@sandoe.co.uk; jklow...@cobolworx.com; rdub...@symas.com > Subject: [PATCH] libgcobol, v2: Handle long double as an alternate IEEE754 > 128b > > On Wed, Apr 09, 2025 at 02:22:16PM +0200, Rainer Orth wrote: > > > Here is what I'm testing as an incremental fix, so far OK on x86_64- > darwin > > > and powerpcle64 (GLIBC 2.34) .. others in progress. Does it help the > > > Solaris cases? > > > > I'll give it a try. Here's what I have (I believe it's more readable in > > some cases), but as I said something's not right yet (probably something > > very stupid). > > Yes, most importantly > > > #if !defined (HAVE_STRFROMF128) > > -# if !USE_QUADMATH > > +static int > > +strfromf128 (char *s, size_t n, const char *f, long double v) > > this long double should have been GCOB_FP128. > > Anyway, I think there should be consistency in what we use, so like > libgcobol-fp.h specifies, IEEE quad long double should have highest > priority, then _Float128 with *f128 APIs, then libquadmath. > And when we decide to use say long double, we shouldn't mix that with > strfromf128/strtof128. > > Additionally, given that the *l vs. *f128 vs. *q API decision is done > solely in libgcobol and not in the compiler (which is different from > the Fortran case where compiled code emits say sinq or sinf128 calls), > I think libgcobol.spec should only have -lquadmath in any form only in > the case when using libquadmath for everything. In the Fortran case > it is for backwards compatibility purposes, if something has been > compiled with older gfortran which used say sinq and link is done by > gfortran which has been configured against new glibc with *f128, linking > would fail otherwise. > > So, here is an updated patch based on your patch, so far briefly > tested on x86_64 with recent glibc (i.e. with the *f128 APIs). > > 2025-04-10 Jakub Jelinek <ja...@redhat.com> > Rainer Orth <r...@cebitec.uni-bielefeld.de> > > PR cobol/119244 > * acinclude.m4 (LIBGCOBOL_CHECK_FLOAT128): Ensure > libgcob_cv_have_float128 is not yes on targets with IEEE quad > long double. Don't check for --as-needed nor set LIBQUADSPEC > on targets which USE_IEC_60559. > * libgcobol-fp.h (FP128_FMT, strtofp128, strfromfp128): Define. > * intrinsic.cc (strtof128): Don't redefine. > (WEIRD_TRANSCENDENT_RETURN_VALUE): Use GCOB_FP128_LITERAL macro. > (__gg__numval_f): Use strtofp128 instead of strtof128. > * libgcobol.cc (strtof128): Don't redefine. > (format_for_display_internal): Use strfromfp128 instead of > strfromf128 or quadmath_snprintf and use FP128_FMT in the format > string. > (get_float128, __gg__compare_2, __gg__move, __gg__move_literala): > Use strtofp128 instead of strtof128. > * configure: Regenerate. > > --- libgcobol/acinclude.m4.jj 2025-04-10 17:14:36.535278015 +0200 > +++ libgcobol/acinclude.m4 2025-04-10 17:33:56.012347476 +0200 > @@ -44,6 +44,10 @@ AC_DEFUN([LIBGCOBOL_CHECK_FLOAT128], [ > AC_CACHE_CHECK([whether we have a usable _Float128 type], > libgcob_cv_have_float128, [ > GCC_TRY_COMPILE_OR_LINK([ > +#if __LDBL_MANT_DIG__ == 113 && __LDBL_MIN_EXP__ == -16381 > +#error "long double is IEEE quad, no need for libquadmath" > +#endif > + > _Float128 foo (_Float128 x) > { > _Complex _Float128 z1, z2; > @@ -90,32 +94,22 @@ AC_DEFUN([LIBGCOBOL_CHECK_FLOAT128], [ > fi > AC_DEFINE(HAVE_FLOAT128, 1, [Define if target has usable _Float128 > and __float128 types.]) > > - dnl Check whether -Wl,--as-needed resp. -Wl,-zignore is supported > - dnl > - dnl Turn warnings into error to avoid testsuite breakage. So enable > - dnl AC_LANG_WERROR, but there's currently (autoconf 2.64) no way to > turn > - dnl it off again. As a workaround, save and restore werror flag like > - dnl AC_PATH_XTRA. > - dnl Cf. http://gcc.gnu.org/ml/gcc-patches/2010-05/msg01889.html > - > ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag=$ac_[]_AC_LANG_ABBREV[]_werror_fl > ag > - AC_CACHE_CHECK([whether --as-needed/-z ignore works], > - [libgcob_cv_have_as_needed], > - [ > - # Test for native Solaris options first. > - # No whitespace after -z to pass it through -Wl. > - libgcob_cv_as_needed_option="-zignore" > - libgcob_cv_no_as_needed_option="-zrecord" > - save_LDFLAGS="$LDFLAGS" > - LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > - libgcob_cv_have_as_needed=no > - AC_LANG_WERROR > - AC_LINK_IFELSE([AC_LANG_PROGRAM([])], > - [libgcob_cv_have_as_needed=yes], > - [libgcob_cv_have_as_needed=no]) > - LDFLAGS="$save_LDFLAGS" > - if test "x$libgcob_cv_have_as_needed" = xno; then > - libgcob_cv_as_needed_option="--as-needed" > - libgcob_cv_no_as_needed_option="--no-as-needed" > + if test "x$USE_IEC_60559" != xyes; then > + dnl Check whether -Wl,--as-needed resp. -Wl,-zignore is supported > + dnl > + dnl Turn warnings into error to avoid testsuite breakage. So > enable > + dnl AC_LANG_WERROR, but there's currently (autoconf 2.64) no way to > turn > + dnl it off again. As a workaround, save and restore werror flag > like > + dnl AC_PATH_XTRA. > + dnl Cf. http://gcc.gnu.org/ml/gcc-patches/2010-05/msg01889.html > + > ac_xsave_[]_AC_LANG_ABBREV[]_werror_flag=$ac_[]_AC_LANG_ABBREV[]_werror_fl > ag > + AC_CACHE_CHECK([whether --as-needed/-z ignore works], > + [libgcob_cv_have_as_needed], > + [ > + # Test for native Solaris options first. > + # No whitespace after -z to pass it through -Wl. > + libgcob_cv_as_needed_option="-zignore" > + libgcob_cv_no_as_needed_option="-zrecord" > save_LDFLAGS="$LDFLAGS" > LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > libgcob_cv_have_as_needed=no > @@ -124,45 +118,51 @@ AC_DEFUN([LIBGCOBOL_CHECK_FLOAT128], [ > [libgcob_cv_have_as_needed=yes], > [libgcob_cv_have_as_needed=no]) > LDFLAGS="$save_LDFLAGS" > - fi > - > ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_xsave_[]_AC_LANG_ABBREV[]_werror_fl > ag > - ]) > - > - dnl Determine -Bstatic ... -Bdynamic etc. support from gfortran -### > stderr. > - touch conftest1.$ac_objext conftest2.$ac_objext > - LQUADMATH=-lquadmath > - $CXX -static-libgcobol -### -o conftest \ > - conftest1.$ac_objext -lgcobol conftest2.$ac_objext 2>&1 >/dev/null \ > - | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd > - if grep "conftest1.$ac_objext.* -Bstatic -lgcobol -Bdynamic > .*conftest2.$ac_objext" \ > - conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static- > libquadmath:-Bdynamic}" > - elif grep "conftest1.$ac_objext.* -bstatic -lgcobol -bdynamic > .*conftest2.$ac_objext" \ > - conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static- > libquadmath:-bdynamic}" > - elif grep "conftest1.$ac_objext.* -aarchive_shared -lgcobol -adefault > .*conftest2.$ac_objext" \ > - conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath > %{static-libquadmath:-adefault}" > - elif grep "conftest1.$ac_objext.*libgcobol.a .*conftest2.$ac_objext" > \ > + if test "x$libgcob_cv_have_as_needed" = xno; then > + libgcob_cv_as_needed_option="--as-needed" > + libgcob_cv_no_as_needed_option="--no-as-needed" > + save_LDFLAGS="$LDFLAGS" > + LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > + libgcob_cv_have_as_needed=no > + AC_LANG_WERROR > + AC_LINK_IFELSE([AC_LANG_PROGRAM([])], > + [libgcob_cv_have_as_needed=yes], > + [libgcob_cv_have_as_needed=no]) > + LDFLAGS="$save_LDFLAGS" > + fi > + > ac_[]_AC_LANG_ABBREV[]_werror_flag=$ac_xsave_[]_AC_LANG_ABBREV[]_wer > ror_flag > + ]) > + > + dnl Determine -Bstatic ... -Bdynamic etc. support from gfortran - > ### stderr. > + touch conftest1.$ac_objext conftest2.$ac_objext > + LQUADMATH=-lquadmath > + $CXX -static-libgcobol -### -o conftest \ > + conftest1.$ac_objext -lgcobol conftest2.$ac_objext 2>&1 >/dev/null > \ > + | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd > + if grep "conftest1.$ac_objext.* -Bstatic -lgcobol -Bdynamic > .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static- > libquadmath:-Bdynamic}" > + elif grep "conftest1.$ac_objext.* -bstatic -lgcobol -bdynamic > .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static- > libquadmath:-bdynamic}" > + elif grep "conftest1.$ac_objext.* -aarchive_shared -lgcobol - > adefault .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath > %{static-libquadmath:-adefault}" > + elif grep "conftest1.$ac_objext.*libgcobol.a > .*conftest2.$ac_objext" \ > conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}" > - fi > - rm -f conftest1.$ac_objext conftest2.$ac_objext conftest conftest.cmd > + LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}" > + fi > + rm -f conftest1.$ac_objext conftest2.$ac_objext conftest > conftest.cmd > > - dnl For static libgcobol linkage, depend on libquadmath only if > needed. > - dnl If using *f128 APIs from libc/libm, depend on libquadmath only if > needed > - dnl even for dynamic libgcobol linkage, and don't link libgcobol > against > - dnl -lquadmath. > - if test "x$libgcob_cv_have_as_needed" = xyes; then > - if test "x$USE_IEC_60559" = xyes; then > - LIBQUADSPEC="$libgcob_cv_as_needed_option $LQUADMATH > $libgcob_cv_no_as_needed_option" > + if test "x$libgcob_cv_have_as_needed" = xyes; then > + if test "x$USE_IEC_60559" = xyes; then > + LIBQUADSPEC="$libgcob_cv_as_needed_option $LQUADMATH > $libgcob_cv_no_as_needed_option" > + else > + LIBQUADSPEC="%{static-libgcobol:$libgcob_cv_as_needed_option} > $LQUADMATH %{static-libgcobol:$libgcob_cv_no_as_needed_option}" > + fi > else > - LIBQUADSPEC="%{static-libgcobol:$libgcob_cv_as_needed_option} > $LQUADMATH %{static-libgcobol:$libgcob_cv_no_as_needed_option}" > + LIBQUADSPEC="$LQUADMATH" > fi > - else > - LIBQUADSPEC="$LQUADMATH" > - fi > - if test "x$USE_IEC_60559" != xyes; then > if test -f ../libquadmath/libquadmath.la; then > LIBQUADLIB=../libquadmath/libquadmath.la > LIBQUADLIB_DEP=../libquadmath/libquadmath.la > --- libgcobol/libgcobol-fp.h.jj 2025-04-10 17:14:36.586277313 +0200 > +++ libgcobol/libgcobol-fp.h 2025-04-10 18:18:20.368674022 +0200 > @@ -28,17 +28,26 @@ see the files COPYING3 and COPYING.RUNTI > # define GCOB_FP128 long double > # define GCOB_FP128_LITERAL(lit) (lit ## l) > # define FP128_FUNC(funcname) funcname ## l > +# define FP128_FMT "L" > +# define strtofp128(nptr, endptr) strtold(nptr, endptr) > +# define strfromfp128(str, n, format, fp) snprintf(str, n, format, fp) > #elif __FLT128_MANT_DIG__ == 113 && __FLT128_MIN_EXP__ == -16381 \ > && defined(USE_IEC_60559) > // Use _Float128, f128 suffix on calls, f128 or F128 suffix on literals > # define GCOB_FP128 _Float128 > # define GCOB_FP128_LITERAL(lit) (lit ## f128) > # define FP128_FUNC(funcname) funcname ## f128 > +# define FP128_FMT "" > +# define strtofp128(nptr, endptr) strtof128(nptr, endptr) > +# define strfromfp128(str, n, format, fp) strfromf128(str, n, format, fp) > #elif __FLT128_MANT_DIG__ == 113 && __FLT128_MIN_EXP__ == -16381 > // Use __float128, q suffix on calls, q or Q suffix on literals > # define GCOB_FP128 __float128 > # define GCOB_FP128_LITERAL(lit) (lit ## q) > # define FP128_FUNC(funcname) funcname ## q > +# define FP128_FMT "Q" > +# define strtofp128(nptr, endptr) strtoflt128(nptr, endptr) > +# define strfromfp128(str, n, format, fp) quadmath_snprintf(str, n, > format, fp) > #else > # error "libgcobol requires 128b floating point" > #endif > --- libgcobol/intrinsic.cc.jj 2025-04-10 17:14:36.586277313 +0200 > +++ libgcobol/intrinsic.cc 2025-04-10 18:29:58.142064132 +0200 > @@ -55,19 +55,11 @@ > #include "charmaps.h" > > > -#if !defined (HAVE_STRTOF128) > -# if USE_QUADMATH > -# define strtof128 strtoflt128 > -# else > -# error "no available string to float 128" > -# endif > -#endif > - > #pragma GCC diagnostic ignored "-Wformat-truncation" > > #define JD_OF_1601_01_02 2305812.5 > > -#define WEIRD_TRANSCENDENT_RETURN_VALUE (0.0Q) > +#define WEIRD_TRANSCENDENT_RETURN_VALUE GCOB_FP128_LITERAL (0.0) > #define NO_RDIGITS (0) > > struct cobol_tm > @@ -5016,7 +5008,7 @@ __gg__numval_f( cblc_field_t *dest, > } > } > *p++ = '\0'; > - value = strtof128(ach, NULL); > + value = strtofp128(ach, NULL); > } > __gg__float128_to_field(dest, > value, > --- libgcobol/libgcobol.cc.jj 2025-04-10 17:14:36.591277244 +0200 > +++ libgcobol/libgcobol.cc 2025-04-10 18:17:29.393376065 +0200 > @@ -93,20 +93,6 @@ strfromf64 (char *s, size_t n, const cha > # endif > #endif > > -#if !defined (HAVE_STRFROMF128) > -# if !USE_QUADMATH > -# error "no available float 128 to string" > -# endif > -#endif > - > -#if !defined (HAVE_STRTOF128) > -# if USE_QUADMATH > -# define strtof128 strtoflt128 > -# else > -# error "no available string to float 128" > -# endif > -#endif > - > // This couldn't be defined in symbols.h because it conflicts with a > LEVEL66 > // in parse.h > #define LEVEL66 (66) > @@ -3265,11 +3251,7 @@ format_for_display_internal(char **dest, > // on a 16-bit boundary. > GCOB_FP128 floatval; > memcpy(&floatval, actual_location, 16); > -#if !defined (HAVE_STRFROMF128) && USE_QUADMATH > - quadmath_snprintf(ach, sizeof(ach), "%.36QE", floatval); > -#else > - strfromf128(ach, sizeof(ach), "%.36E", floatval); > -#endif > + strfromfp128(ach, sizeof(ach), "%.36" FP128_FMT "E", floatval); > char *p = strchr(ach, 'E'); > if( !p ) > { > @@ -3291,13 +3273,8 @@ format_for_display_internal(char **dest, > > int precision = 36 - exp; > char achFormat[24]; > -#if !defined (HAVE_STRFROMF128) && USE_QUADMATH > - sprintf(achFormat, "%%.%dQf", precision); > - quadmath_snprintf(ach, sizeof(ach), achFormat, floatval); > -#else > - sprintf(achFormat, "%%.%df", precision); > - strfromf128(ach, sizeof(ach), achFormat, floatval); > -#endif > + sprintf(achFormat, "%%.%d" FP128_FMT "f", precision); > + strfromfp128(ach, sizeof(ach), achFormat, floatval); > } > __gg__remove_trailing_zeroes(ach); > __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1); > @@ -3536,7 +3513,7 @@ get_float128( cblc_field_t *field, > { > if( __gg__decimal_point == '.' ) > { > - retval = strtof128(field->initial, NULL); > + retval = strtofp128(field->initial, NULL); > } > else > { > @@ -3554,7 +3531,7 @@ get_float128( cblc_field_t *field, > { > *p = '.'; > } > - retval = strtof128(buffer, NULL); > + retval = strtofp128(buffer, NULL); > } > } > else > @@ -4251,7 +4228,7 @@ __gg__compare_2(cblc_field_t *left_side, > //_Float128 left_value = *(_Float128 *)left_location; > GCOB_FP128 left_value; > memcpy(&left_value, left_location, 16); > - GCOB_FP128 right_value = strtof128(buffer, NULL); > + GCOB_FP128 right_value = strtofp128(buffer, NULL); > retval = 0; > retval = left_value < right_value ? -1 : retval; > retval = left_value > right_value ? 1 : retval; > @@ -6001,8 +5978,8 @@ __gg__move( cblc_field_t *fdest, > } > case 16: > { > - //*(_Float128 *)(fdest->data+dest_offset) = > strtof128(ach, NULL); > - GCOB_FP128 t = strtof128(ach, NULL); > + //*(_Float128 *)(fdest->data+dest_offset) = > strtofp128(ach, NULL); > + GCOB_FP128 t = strtofp128(ach, NULL); > memcpy(fdest->data+dest_offset, &t, 16); > break; > } > @@ -6171,7 +6148,7 @@ __gg__move_literala(cblc_field_t *field, > } > case 16: > { > - GCOB_FP128 t = strtof128(ach, NULL); > + GCOB_FP128 t = strtofp128(ach, NULL); > memcpy(field->data+field_offset, &t, 16); > break; > } > --- libgcobol/configure.jj 2025-04-10 17:14:36.554277754 +0200 > +++ libgcobol/configure 2025-04-10 17:34:21.897992410 +0200 > @@ -17172,6 +17172,10 @@ else > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > +#if __LDBL_MANT_DIG__ == 113 && __LDBL_MIN_EXP__ == -16381 > +#error "long double is IEEE quad, no need for libquadmath" > +#endif > + > _Float128 foo (_Float128 x) > { > _Complex _Float128 z1, z2; > @@ -17225,6 +17229,10 @@ fi > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > /* end confdefs.h. */ > > +#if __LDBL_MANT_DIG__ == 113 && __LDBL_MIN_EXP__ == -16381 > +#error "long double is IEEE quad, no need for libquadmath" > +#endif > + > _Float128 foo (_Float128 x) > { > _Complex _Float128 z1, z2; > @@ -17296,23 +17304,24 @@ $as_echo "#define USE_QUADMATH 1" >>conf > $as_echo "#define HAVE_FLOAT128 1" >>confdefs.h > > > - > ac_xsave_cxx_werror_flag=$ac_cxx_werror_flag > - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --as- > needed/-z ignore works" >&5 > + if test "x$USE_IEC_60559" != xyes; then > + > ac_xsave_cxx_werror_flag=$ac_cxx_werror_flag > + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --as- > needed/-z ignore works" >&5 > $as_echo_n "checking whether --as-needed/-z ignore works... " >&6; } > if ${libgcob_cv_have_as_needed+:} false; then : > $as_echo_n "(cached) " >&6 > else > > - # Test for native Solaris options first. > - # No whitespace after -z to pass it through -Wl. > - libgcob_cv_as_needed_option="-zignore" > - libgcob_cv_no_as_needed_option="-zrecord" > - save_LDFLAGS="$LDFLAGS" > - LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > - libgcob_cv_have_as_needed=no > + # Test for native Solaris options first. > + # No whitespace after -z to pass it through -Wl. > + libgcob_cv_as_needed_option="-zignore" > + libgcob_cv_no_as_needed_option="-zrecord" > + save_LDFLAGS="$LDFLAGS" > + LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > + libgcob_cv_have_as_needed=no > > ac_cxx_werror_flag=yes > - if test x$gcc_no_link = xyes; then > + if test x$gcc_no_link = xyes; then > as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." > "$LINENO" 5 > fi > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > @@ -17333,16 +17342,16 @@ else > fi > rm -f core conftest.err conftest.$ac_objext \ > conftest$ac_exeext conftest.$ac_ext > - LDFLAGS="$save_LDFLAGS" > - if test "x$libgcob_cv_have_as_needed" = xno; then > - libgcob_cv_as_needed_option="--as-needed" > - libgcob_cv_no_as_needed_option="--no-as-needed" > - save_LDFLAGS="$LDFLAGS" > - LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > - libgcob_cv_have_as_needed=no > + LDFLAGS="$save_LDFLAGS" > + if test "x$libgcob_cv_have_as_needed" = xno; then > + libgcob_cv_as_needed_option="--as-needed" > + libgcob_cv_no_as_needed_option="--no-as-needed" > + save_LDFLAGS="$LDFLAGS" > + LDFLAGS="$LDFLAGS -Wl,$libgcob_cv_as_needed_option -lm - > Wl,$libgcob_cv_no_as_needed_option" > + libgcob_cv_have_as_needed=no > > ac_cxx_werror_flag=yes > - if test x$gcc_no_link = xyes; then > + if test x$gcc_no_link = xyes; then > as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." > "$LINENO" 5 > fi > cat confdefs.h - <<_ACEOF >conftest.$ac_ext > @@ -17363,44 +17372,43 @@ else > fi > rm -f core conftest.err conftest.$ac_objext \ > conftest$ac_exeext conftest.$ac_ext > - LDFLAGS="$save_LDFLAGS" > - fi > - ac_cxx_werror_flag=$ac_xsave_cxx_werror_flag > + LDFLAGS="$save_LDFLAGS" > + fi > + ac_cxx_werror_flag=$ac_xsave_cxx_werror_flag > > fi > { $as_echo "$as_me:${as_lineno-$LINENO}: result: > $libgcob_cv_have_as_needed" >&5 > $as_echo "$libgcob_cv_have_as_needed" >&6; } > > - touch conftest1.$ac_objext conftest2.$ac_objext > - LQUADMATH=-lquadmath > - $CXX -static-libgcobol -### -o conftest \ > - conftest1.$ac_objext -lgcobol conftest2.$ac_objext 2>&1 >/dev/null \ > - | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd > - if grep "conftest1.$ac_objext.* -Bstatic -lgcobol -Bdynamic > .*conftest2.$ac_objext" \ > - conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static- > libquadmath:-Bdynamic}" > - elif grep "conftest1.$ac_objext.* -bstatic -lgcobol -bdynamic > .*conftest2.$ac_objext" \ > - conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static- > libquadmath:-bdynamic}" > - elif grep "conftest1.$ac_objext.* -aarchive_shared -lgcobol -adefault > .*conftest2.$ac_objext" \ > - conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath > %{static-libquadmath:-adefault}" > - elif grep "conftest1.$ac_objext.*libgcobol.a .*conftest2.$ac_objext" > \ > + touch conftest1.$ac_objext conftest2.$ac_objext > + LQUADMATH=-lquadmath > + $CXX -static-libgcobol -### -o conftest \ > + conftest1.$ac_objext -lgcobol conftest2.$ac_objext 2>&1 >/dev/null > \ > + | grep "conftest1.$ac_objext.*conftest2.$ac_objext" > conftest.cmd > + if grep "conftest1.$ac_objext.* -Bstatic -lgcobol -Bdynamic > .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-Bstatic} -lquadmath %{static- > libquadmath:-Bdynamic}" > + elif grep "conftest1.$ac_objext.* -bstatic -lgcobol -bdynamic > .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-bstatic} -lquadmath %{static- > libquadmath:-bdynamic}" > + elif grep "conftest1.$ac_objext.* -aarchive_shared -lgcobol - > adefault .*conftest2.$ac_objext" \ > + conftest.cmd >/dev/null 2>&1; then > + LQUADMATH="%{static-libquadmath:-aarchive_shared} -lquadmath > %{static-libquadmath:-adefault}" > + elif grep "conftest1.$ac_objext.*libgcobol.a > .*conftest2.$ac_objext" \ > conftest.cmd >/dev/null 2>&1; then > - LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}" > - fi > - rm -f conftest1.$ac_objext conftest2.$ac_objext conftest conftest.cmd > + LQUADMATH="%{static-libquadmath:libquadmath.a%s;:-lquadmath}" > + fi > + rm -f conftest1.$ac_objext conftest2.$ac_objext conftest > conftest.cmd > > - if test "x$libgcob_cv_have_as_needed" = xyes; then > - if test "x$USE_IEC_60559" = xyes; then > - LIBQUADSPEC="$libgcob_cv_as_needed_option $LQUADMATH > $libgcob_cv_no_as_needed_option" > + if test "x$libgcob_cv_have_as_needed" = xyes; then > + if test "x$USE_IEC_60559" = xyes; then > + LIBQUADSPEC="$libgcob_cv_as_needed_option $LQUADMATH > $libgcob_cv_no_as_needed_option" > + else > + LIBQUADSPEC="%{static-libgcobol:$libgcob_cv_as_needed_option} > $LQUADMATH %{static-libgcobol:$libgcob_cv_no_as_needed_option}" > + fi > else > - LIBQUADSPEC="%{static-libgcobol:$libgcob_cv_as_needed_option} > $LQUADMATH %{static-libgcobol:$libgcob_cv_no_as_needed_option}" > + LIBQUADSPEC="$LQUADMATH" > fi > - else > - LIBQUADSPEC="$LQUADMATH" > - fi > - if test "x$USE_IEC_60559" != xyes; then > if test -f ../libquadmath/libquadmath.la; then > LIBQUADLIB=../libquadmath/libquadmath.la > LIBQUADLIB_DEP=../libquadmath/libquadmath.la > > Jakub