about summary refs log tree commit diff
path: root/stdio-common/printf.h
diff options
context:
space:
mode:
authorGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-10-11 15:20:05 -0300
committerGabriel F. T. Gomes <gabrielftg@linux.ibm.com>2019-12-13 19:06:02 -0300
commitb851fea5c875acdca549103493d0439e91360d7e (patch)
treee39ff572f270fd52ba3eb205aab6098acac73871 /stdio-common/printf.h
parent5a304cd40f534884f583e0b08c6db9d4a98f9a20 (diff)
downloadglibc-b851fea5c875acdca549103493d0439e91360d7e.tar.gz
glibc-b851fea5c875acdca549103493d0439e91360d7e.tar.xz
glibc-b851fea5c875acdca549103493d0439e91360d7e.zip
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>
Diffstat (limited to 'stdio-common/printf.h')
0 files changed, 0 insertions, 0 deletions