rs6000: Fix up -D_FORTIFY_SOURCE* with -mabi=ieeelongdouble [PR104380]
authorJakub Jelinek <jakub@redhat.com>
Fri, 4 Feb 2022 17:30:59 +0000 (18:30 +0100)
committerJakub Jelinek <jakub@redhat.com>
Fri, 4 Feb 2022 17:30:59 +0000 (18:30 +0100)
commit8d6fffc4bcd4afa0beb0efad4f3b95394aa15618
tree2da01478bcc60232f7bc6e6cecce6d81f60673ff
parent1f722e35ab3805de6eeace770508a9085944e93e
rs6000: Fix up -D_FORTIFY_SOURCE* with -mabi=ieeelongdouble [PR104380]

The following testcase FAILs when configured with
--with-long-double-format=ieee .  Only happens in the -std=c* modes, not the
GNU modes; while the glibc headers have __asm redirects of
vsnprintf and __vsnprinf_chk to __vsnprintfieee128 and
__vsnprintf_chkieee128, the vsnprintf fortification extern inline gnu_inline
always_inline wrapper calls __builtin_vsnprintf_chk and we actually emit
a call to __vsnprinf_chk (i.e. with IBM extended long double) instead of
__vsnprintf_chkieee128.

rs6000_mangle_decl_assembler_name already had cases for *printf and *scanf,
so this just adds another case for *printf_chk.  *scanf_chk doesn't exist.
__ prefixing isn't done because *printf_chk already starts with __.

2022-02-04  Jakub Jelinek  <jakub@redhat.com>

PR target/104380
* config/rs6000/rs6000.cc (rs6000_mangle_decl_assembler_name): Also
adjust mangling of __builtin*printf_chk.

* gcc.dg/pr104380.c: New test.
gcc/config/rs6000/rs6000.cc
gcc/testsuite/gcc.dg/pr104380.c [new file with mode: 0644]