glibc/misc
Siddhesh Poyarekar 884ddc5081 Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266)
The check for only __GNUC_STDC_INLINE__ and __GNUC_GNU_INLINE__ may
not be sufficient since those flags were added during initial support
for C99 inlining semantics.  There is also a problem with always
defining __extern_inline and __extern_always_inline, since it enables
inline wrapper functions even when GNU inlining semantics are not
guaranteed.  This, along with the possibility of such wrappers using
redirection (btowc for example) could result in compiler generating an
infinitely recusrive call to the function.

In fact it was such a recursion that led to this code being written
the way it was; see:

https://bugzilla.redhat.com/show_bug.cgi?id=186410

The initial change was to fix bugs 14530 and 13741, but they can be
resolved by checking if __fortify_function and/or
__extern_always_inline are defined, as it has been done in this patch.
In addition, I have audited uses of __extern_always_inline to make
sure that none of the uses result in compilation errors.

There is however a regression in this patch for llvm, since it reverts
the llvm expectation that __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__
definition imply proper extern inline semantics.

2014-09-16  Siddhesh Poyarekar  <siddhesh@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	[BZ #17266]
	* libio/stdio.h: Check definition of __fortify_function
	instead of __extern_always_inline to include bits/stdio2.h.
	* math/bits/math-finite.h [__USE_XOPEN || __USE_ISOC99]: Also
	check if __extern_always_inline is defined.
	[__USE_MISC || __USE_XOPEN]: Likewise.
	[__USE_ISOC99] Likewise.
	* misc/sys/cdefs.h (__fortify_function): Define only if
	__extern_always_inline is defined.
	[!__cplusplus || __GNUC_PREREQ (4,3)]: Revert to defining
	__extern_always_inline and __extern_inline only for g++-4.3
	and newer or a compatible gcc.
2014-09-16 14:08:48 +05:30
..
bits Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
sys Revert to defining __extern_inline only for gcc-4.3+ (BZ #17266) 2014-09-16 14:08:48 +05:30
acct.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ar.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
brk.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
bug-hsearch1.c .. 2009-01-23 20:41:36 +00:00
chflags.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
chroot.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
daemon.c Update. 2004-09-25 06:49:33 +00:00
dirname.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
efgcvt_r.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
efgcvt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
err.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
err.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
error.c Sync up error.c with gnulib 2014-07-10 14:24:30 +05:30
error.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fchflags.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fdatasync.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fgetxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
flistxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fremovexattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fsetxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fstab.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fstab.h Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
fsync.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ftruncate64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ftruncate.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
futimes.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
futimesat.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getauxval.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getclktck.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getdomain.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getdtsz.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
gethostid.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
gethostname.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getloadavg.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getpagesize.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getpass.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getsysstats.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
getttyent.c Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
getusershell.c Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
getxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
gtty.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
hsearch_r.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
hsearch.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ifunc-impl-list.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
init-misc.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
insremque.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ioctl.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
lgetxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
libgen.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
listxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
llistxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
lremovexattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
lsearch.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
lsetxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
lutimes.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
madvise.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Makefile Use existing makefile variables for dependencies on glibc libraries. 2014-05-16 21:38:08 +00:00
mincore.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkdtemp.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkostemp64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkostemp.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkostemps64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkostemps.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkstemp64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkstemp.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkstemps64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mkstemps.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mktemp.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mlock.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mlockall.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mmap64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mmap.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mntent_r.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mntent.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mntent.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mprotect.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
msync.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
munlock.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
munlockall.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
munmap.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
preadv64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
preadv.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
pselect.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
ptrace.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
pwritev64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
pwritev.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
qefgcvt_r.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
qefgcvt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
readv.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
reboot.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
regexp.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
regexp.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
remap_file_pages.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
removexattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
revoke.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sbrk.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
search.h Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
select.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setdomain.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setegid.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
seteuid.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sethostid.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sethostname.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setregid.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setreuid.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
setxattr.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sgtty.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sstk.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
stab.h Update. 1997-06-21 02:59:26 +00:00
stty.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
swapoff.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
swapon.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
sync.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
syncfs.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
syscall.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
syscall.h update from main archive 960107 1997-01-07 23:29:44 +00:00
sysexits.h Update. 1999-06-09 13:08:30 +00:00
syslog.c Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
syslog.h initial import 1995-02-18 01:27:10 +00:00
truncate64.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
truncate.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tsearch.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-dirname.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-efgcvt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-error1.c * stdio-common/Makefile (aux): Add fxprintf. 2005-07-19 23:46:55 +00:00
tst-fdset.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
tst-hsearch.c Update. 2002-01-29 08:25:15 +00:00
tst-insremque.c [BZ #2766] 2006-06-17 17:01:42 +00:00
tst-mntent2.c * sysdeps/unix/sysv/linux/rtld-lowlevel.h 2006-12-09 22:29:37 +00:00
tst-mntent.c (main): Use tmpfile instead of tmpnam. 2004-03-22 10:50:50 +00:00
tst-pselect.c Fix build warnings in some test cases 2013-02-18 18:17:05 +05:30
tst-tsearch.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ttyent.h Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
ttyslot.c Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
ualarm.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
usleep.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ustat.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ustat.h Thu Jul 18 04:33:21 1996 Roland McGrath <roland@baalperazim.frob.com> 1996-07-18 08:43:26 +00:00
utimes.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Versions Hide reference to mktemp in libpthread 2013-01-16 15:57:11 +01:00
vhangup.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
writev.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00