public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc/gabriel/powerpc-ieee128-printscan] powerpc64le: Require a compiler with -mno-gnu-attribute
@ 2019-12-13 22:29 Gabriel F.T.Gomes
  0 siblings, 0 replies; 4+ messages in thread
From: Gabriel F.T.Gomes @ 2019-12-13 22:29 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b851fea5c875acdca549103493d0439e91360d7e

commit b851fea5c875acdca549103493d0439e91360d7e
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    Not for glibc-2.31 - Do not commit!
    
    No changes since v3.
    
    No changes since v2.
    
    Changes since v1:
    
      - Added mentions to the build requirement in manual/install.texi,
        INSTALL (regenerated) and NEWS.
    
    -- 8< --
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.
    
    Reviewed-by: Joseph Myers <joseph@codesourcery.com>

Diff:
---
 INSTALL                                   |  5 +++++
 NEWS                                      |  2 +-
 manual/install.texi                       |  5 +++++
 sysdeps/powerpc/powerpc64/le/configure    | 29 +++++++++++++++++++++++++++++
 sysdeps/powerpc/powerpc64/le/configure.ac | 15 +++++++++++++++
 5 files changed, 55 insertions(+), 1 deletion(-)

diff --git a/INSTALL b/INSTALL
index 392537c..1baa99f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -467,6 +467,11 @@ build the GNU C Library:
      better code.  As of release time, GCC 9.1.1 is the newest compiler
      verified to work to build the GNU C Library.
 
+     For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
+     support for -mno-gnu-attribute is required.  As of release time,
+     this means GCC 7 or higher.  The compiler option is required for
+     building the GNU C Library with support for IEEE long double.
+
      For multi-arch support it is recommended to use a GCC which has
      been built with support for GNU indirect functions.  This ensures
      that correct debugging information is generated for functions
diff --git a/NEWS b/NEWS
index 5a2d0a5..a39d782 100644
--- a/NEWS
+++ b/NEWS
@@ -101,7 +101,7 @@ Deprecated and removed features, and other changes affecting compatibility:
 
 Changes to build and runtime requirements:
 
-  [Add changes to build and runtime requirements here]
+* On powerpc64le, GCC 7 or later is required to build the GNU C Library.
 
 Security related changes:
 
diff --git a/manual/install.texi b/manual/install.texi
index b2d569a..85767eb 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -507,6 +507,11 @@ the newest version of the compiler that is known to work for building
 release time, GCC 9.1.1 is the newest compiler verified to work to build
 @theglibc{}.
 
+For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
+support for -mno-gnu-attribute is required.  As of release time, this
+means GCC 7 or higher. The compiler option is required for building the
+GNU C Library with support for IEEE long double.
+
 For multi-arch support it is recommended to use a GCC which has been built with
 support for GNU indirect functions.  This ensures that correct debugging
 information is generated for functions selected by IFUNC resolvers.  This
diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure
index bca80ce..c8e01af 100644
--- a/sysdeps/powerpc/powerpc64/le/configure
+++ b/sysdeps/powerpc/powerpc64/le/configure
@@ -32,4 +32,33 @@ if test "$libc_cv_target_power8_ok" != "yes"; then :
 fi
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports -mno-gnu-attribute" >&5
+$as_echo_n "checking if the compiler supports -mno-gnu-attribute... " >&6; }
+if ${libc_cv_no_gnu_attr_ok+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  libc_cv_no_gnu_attr_ok=yes
+else
+  libc_cv_no_gnu_attr_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_no_gnu_attr_ok" >&5
+$as_echo "$libc_cv_no_gnu_attr_ok" >&6; }
+if test "$libc_cv_no_gnu_attr_ok" != "yes"; then :
+  critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."
+fi
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5
diff --git a/sysdeps/powerpc/powerpc64/le/configure.ac b/sysdeps/powerpc/powerpc64/le/configure.ac
index 7f2c9fb..fdec696 100644
--- a/sysdeps/powerpc/powerpc64/le/configure.ac
+++ b/sysdeps/powerpc/powerpc64/le/configure.ac
@@ -17,4 +17,19 @@ AS_IF([test "$libc_cv_target_power8_ok" != "yes"],
       [critic_missing="$critic_missing POWER8 or newer is required on powerpc64le."])
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+dnl Require support for -mno-gnu-attribute
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+AC_CACHE_CHECK([if the compiler supports -mno-gnu-attribute],
+	       libc_cv_no_gnu_attr_ok, [
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+]])],
+	       [libc_cv_no_gnu_attr_ok=yes],
+	       [libc_cv_no_gnu_attr_ok=no])])
+AS_IF([test "$libc_cv_no_gnu_attr_ok" != "yes"],
+      [critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."])
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && AC_MSG_ERROR([*** $critic_missing])


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [glibc/gabriel/powerpc-ieee128-printscan] powerpc64le: Require a compiler with -mno-gnu-attribute
@ 2019-12-03 17:04 Gabriel F.T.Gomes
  0 siblings, 0 replies; 4+ messages in thread
From: Gabriel F.T.Gomes @ 2019-12-03 17:04 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b9d9986c6619d94750e5879df7f15190d9c85140

commit b9d9986c6619d94750e5879df7f15190d9c85140
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    No changes since v2.
    
    Changes since v1:
    
      - Added mentions to the build requirement in manual/install.texi,
        INSTALL (regenerated) and NEWS.
    
    -- 8< --
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.
    
    Reviewed-by: Joseph Myers <joseph@codesourcery.com>

Diff:
---
 INSTALL                                   |  5 +++++
 NEWS                                      |  2 +-
 manual/install.texi                       |  5 +++++
 sysdeps/powerpc/powerpc64/le/configure    | 29 +++++++++++++++++++++++++++++
 sysdeps/powerpc/powerpc64/le/configure.ac | 15 +++++++++++++++
 5 files changed, 55 insertions(+), 1 deletion(-)

diff --git a/INSTALL b/INSTALL
index 392537c..1baa99f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -467,6 +467,11 @@ build the GNU C Library:
      better code.  As of release time, GCC 9.1.1 is the newest compiler
      verified to work to build the GNU C Library.
 
+     For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
+     support for -mno-gnu-attribute is required.  As of release time,
+     this means GCC 7 or higher.  The compiler option is required for
+     building the GNU C Library with support for IEEE long double.
+
      For multi-arch support it is recommended to use a GCC which has
      been built with support for GNU indirect functions.  This ensures
      that correct debugging information is generated for functions
diff --git a/NEWS b/NEWS
index 5a2d0a5..a39d782 100644
--- a/NEWS
+++ b/NEWS
@@ -101,7 +101,7 @@ Deprecated and removed features, and other changes affecting compatibility:
 
 Changes to build and runtime requirements:
 
-  [Add changes to build and runtime requirements here]
+* On powerpc64le, GCC 7 or later is required to build the GNU C Library.
 
 Security related changes:
 
diff --git a/manual/install.texi b/manual/install.texi
index b2d569a..85767eb 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -507,6 +507,11 @@ the newest version of the compiler that is known to work for building
 release time, GCC 9.1.1 is the newest compiler verified to work to build
 @theglibc{}.
 
+For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
+support for -mno-gnu-attribute is required.  As of release time, this
+means GCC 7 or higher. The compiler option is required for building the
+GNU C Library with support for IEEE long double.
+
 For multi-arch support it is recommended to use a GCC which has been built with
 support for GNU indirect functions.  This ensures that correct debugging
 information is generated for functions selected by IFUNC resolvers.  This
diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure
index bca80ce..c8e01af 100644
--- a/sysdeps/powerpc/powerpc64/le/configure
+++ b/sysdeps/powerpc/powerpc64/le/configure
@@ -32,4 +32,33 @@ if test "$libc_cv_target_power8_ok" != "yes"; then :
 fi
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports -mno-gnu-attribute" >&5
+$as_echo_n "checking if the compiler supports -mno-gnu-attribute... " >&6; }
+if ${libc_cv_no_gnu_attr_ok+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  libc_cv_no_gnu_attr_ok=yes
+else
+  libc_cv_no_gnu_attr_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_no_gnu_attr_ok" >&5
+$as_echo "$libc_cv_no_gnu_attr_ok" >&6; }
+if test "$libc_cv_no_gnu_attr_ok" != "yes"; then :
+  critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."
+fi
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5
diff --git a/sysdeps/powerpc/powerpc64/le/configure.ac b/sysdeps/powerpc/powerpc64/le/configure.ac
index 7f2c9fb..fdec696 100644
--- a/sysdeps/powerpc/powerpc64/le/configure.ac
+++ b/sysdeps/powerpc/powerpc64/le/configure.ac
@@ -17,4 +17,19 @@ AS_IF([test "$libc_cv_target_power8_ok" != "yes"],
       [critic_missing="$critic_missing POWER8 or newer is required on powerpc64le."])
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+dnl Require support for -mno-gnu-attribute
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+AC_CACHE_CHECK([if the compiler supports -mno-gnu-attribute],
+	       libc_cv_no_gnu_attr_ok, [
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+]])],
+	       [libc_cv_no_gnu_attr_ok=yes],
+	       [libc_cv_no_gnu_attr_ok=no])])
+AS_IF([test "$libc_cv_no_gnu_attr_ok" != "yes"],
+      [critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."])
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && AC_MSG_ERROR([*** $critic_missing])


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [glibc/gabriel/powerpc-ieee128-printscan] powerpc64le: Require a compiler with -mno-gnu-attribute
@ 2019-10-25 15:35 Gabriel F.T.Gomes
  0 siblings, 0 replies; 4+ messages in thread
From: Gabriel F.T.Gomes @ 2019-10-25 15:35 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4992aa5de10a4877f97096c0afa5c5691f625762

commit 4992aa5de10a4877f97096c0afa5c5691f625762
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    Changes since v1:
    
      - Added mentions to the build requirement in manual/install.texi,
        INSTALL (regenerated) and NEWS.
    
    -- 8< --
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.

Diff:
---
 INSTALL                                   |  5 +++++
 NEWS                                      |  2 +-
 manual/install.texi                       |  5 +++++
 sysdeps/powerpc/powerpc64/le/configure    | 29 +++++++++++++++++++++++++++++
 sysdeps/powerpc/powerpc64/le/configure.ac | 15 +++++++++++++++
 5 files changed, 55 insertions(+), 1 deletion(-)

diff --git a/INSTALL b/INSTALL
index 392537c..1baa99f 100644
--- a/INSTALL
+++ b/INSTALL
@@ -467,6 +467,11 @@ build the GNU C Library:
      better code.  As of release time, GCC 9.1.1 is the newest compiler
      verified to work to build the GNU C Library.
 
+     For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
+     support for -mno-gnu-attribute is required.  As of release time,
+     this means GCC 7 or higher.  The compiler option is required for
+     building the GNU C Library with support for IEEE long double.
+
      For multi-arch support it is recommended to use a GCC which has
      been built with support for GNU indirect functions.  This ensures
      that correct debugging information is generated for functions
diff --git a/NEWS b/NEWS
index d728684..7fb3727 100644
--- a/NEWS
+++ b/NEWS
@@ -32,7 +32,7 @@ Deprecated and removed features, and other changes affecting compatibility:
 
 Changes to build and runtime requirements:
 
-  [Add changes to build and runtime requirements here]
+* On powerpc64le, GCC 7 or later is required to build the GNU C Library.
 
 Security related changes:
 
diff --git a/manual/install.texi b/manual/install.texi
index b2d569a..85767eb 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -507,6 +507,11 @@ the newest version of the compiler that is known to work for building
 release time, GCC 9.1.1 is the newest compiler verified to work to build
 @theglibc{}.
 
+For PowerPC 64-bits little-endian (powerpc64le), a GCC version with
+support for -mno-gnu-attribute is required.  As of release time, this
+means GCC 7 or higher. The compiler option is required for building the
+GNU C Library with support for IEEE long double.
+
 For multi-arch support it is recommended to use a GCC which has been built with
 support for GNU indirect functions.  This ensures that correct debugging
 information is generated for functions selected by IFUNC resolvers.  This
diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure
index bca80ce..c8e01af 100644
--- a/sysdeps/powerpc/powerpc64/le/configure
+++ b/sysdeps/powerpc/powerpc64/le/configure
@@ -32,4 +32,33 @@ if test "$libc_cv_target_power8_ok" != "yes"; then :
 fi
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports -mno-gnu-attribute" >&5
+$as_echo_n "checking if the compiler supports -mno-gnu-attribute... " >&6; }
+if ${libc_cv_no_gnu_attr_ok+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  libc_cv_no_gnu_attr_ok=yes
+else
+  libc_cv_no_gnu_attr_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_no_gnu_attr_ok" >&5
+$as_echo "$libc_cv_no_gnu_attr_ok" >&6; }
+if test "$libc_cv_no_gnu_attr_ok" != "yes"; then :
+  critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."
+fi
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5
diff --git a/sysdeps/powerpc/powerpc64/le/configure.ac b/sysdeps/powerpc/powerpc64/le/configure.ac
index 7f2c9fb..fdec696 100644
--- a/sysdeps/powerpc/powerpc64/le/configure.ac
+++ b/sysdeps/powerpc/powerpc64/le/configure.ac
@@ -17,4 +17,19 @@ AS_IF([test "$libc_cv_target_power8_ok" != "yes"],
       [critic_missing="$critic_missing POWER8 or newer is required on powerpc64le."])
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+dnl Require support for -mno-gnu-attribute
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+AC_CACHE_CHECK([if the compiler supports -mno-gnu-attribute],
+	       libc_cv_no_gnu_attr_ok, [
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+]])],
+	       [libc_cv_no_gnu_attr_ok=yes],
+	       [libc_cv_no_gnu_attr_ok=no])])
+AS_IF([test "$libc_cv_no_gnu_attr_ok" != "yes"],
+      [critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."])
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && AC_MSG_ERROR([*** $critic_missing])


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [glibc/gabriel/powerpc-ieee128-printscan] powerpc64le: Require a compiler with -mno-gnu-attribute
@ 2019-10-15 19:04 Gabriel F.T.Gomes
  0 siblings, 0 replies; 4+ messages in thread
From: Gabriel F.T.Gomes @ 2019-10-15 19:04 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b843c8d832cdb2a1000b45e853c17211de67b4e7

commit b843c8d832cdb2a1000b45e853c17211de67b4e7
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Fri Oct 11 15:20:05 2019 -0300

    powerpc64le: Require a compiler with -mno-gnu-attribute
    
    On powerpc64le, a few files are built on IEEE long double mode
    (-mabi=ieeelongdouble), whereas most are built on IBM long double mode
    (-mabi=ibmlongdouble, the default for -mlong-double-128). Since binutils
    2.31, linking object files with different long double modes causes
    errors similar to:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    The warnings are fair and correct, but in order for glibc to have
    support for both long double modes on powerpc64le, they have to be
    ignored.  This can be accomplished with the use of -mno-gnu-attribute
    option when building the few files that require IEEE long double mode.
    
    However, -mno-gnu-attribute is not available in GCC 6, the minimum
    version required to build glibc, so this patch adds a test for this
    feature in powerpc64le builds, and fails early if it's not available.
    
    Tested, on powerpc64le, that the build fails early with GCC 6 and that
    it succeeds with GCC 7 or greater.

Diff:
---
 sysdeps/powerpc/powerpc64/le/configure    | 29 +++++++++++++++++++++++++++++
 sysdeps/powerpc/powerpc64/le/configure.ac | 15 +++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure
index bca80ce..c8e01af 100644
--- a/sysdeps/powerpc/powerpc64/le/configure
+++ b/sysdeps/powerpc/powerpc64/le/configure
@@ -32,4 +32,33 @@ if test "$libc_cv_target_power8_ok" != "yes"; then :
 fi
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports -mno-gnu-attribute" >&5
+$as_echo_n "checking if the compiler supports -mno-gnu-attribute... " >&6; }
+if ${libc_cv_no_gnu_attr_ok+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  libc_cv_no_gnu_attr_ok=yes
+else
+  libc_cv_no_gnu_attr_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_no_gnu_attr_ok" >&5
+$as_echo "$libc_cv_no_gnu_attr_ok" >&6; }
+if test "$libc_cv_no_gnu_attr_ok" != "yes"; then :
+  critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."
+fi
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5
diff --git a/sysdeps/powerpc/powerpc64/le/configure.ac b/sysdeps/powerpc/powerpc64/le/configure.ac
index 7f2c9fb..fdec696 100644
--- a/sysdeps/powerpc/powerpc64/le/configure.ac
+++ b/sysdeps/powerpc/powerpc64/le/configure.ac
@@ -17,4 +17,19 @@ AS_IF([test "$libc_cv_target_power8_ok" != "yes"],
       [critic_missing="$critic_missing POWER8 or newer is required on powerpc64le."])
 CFLAGS="$OLD_CFLAGS"
 
+# Local configure fragment for sysdeps/powerpc/powerpc64le.
+
+dnl Require support for -mno-gnu-attribute
+OLD_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -mno-gnu-attribute"
+AC_CACHE_CHECK([if the compiler supports -mno-gnu-attribute],
+	       libc_cv_no_gnu_attr_ok, [
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+]])],
+	       [libc_cv_no_gnu_attr_ok=yes],
+	       [libc_cv_no_gnu_attr_ok=no])])
+AS_IF([test "$libc_cv_no_gnu_attr_ok" != "yes"],
+      [critic_missing="$critic_missing A compiler with -mno-gnu-attribute is required on powerpc64le."])
+CFLAGS="$OLD_CFLAGS"
+
 test -n "$critic_missing" && AC_MSG_ERROR([*** $critic_missing])


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-12-13 22:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-13 22:29 [glibc/gabriel/powerpc-ieee128-printscan] powerpc64le: Require a compiler with -mno-gnu-attribute Gabriel F.T.Gomes
  -- strict thread matches above, loose matches on Subject: below --
2019-12-03 17:04 Gabriel F.T.Gomes
2019-10-25 15:35 Gabriel F.T.Gomes
2019-10-15 19:04 Gabriel F.T.Gomes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).