+2012-04-29 Marek Polacek <polacek@redhat.com>
+
+ * misc/sys/cdefs.h (__attribute_artificial__): New macro.
+ (__fortify_function): New macro.
+ (__extern_always_inline): Don't use __attribute__ ((__artificial__)).
+ * libio/bits/stdio-ldbl.h: Use __fortify_function in place of
+ __extern_always_inline.
+ * libio/bits/stdio2.h: Likewise.
+ * libio/bits/stdio.h: Likewise.
+ * string/string.h: Likewise.
+ * string/bits/string3.h: Likewise.
+ * include/stdio.h: Likewise.
+ * stdlib/bits/stdlib.h: Likewise.
+ * stdlib/stdlib.h: Likewise.
+ * rt/bits/mqueue2.h: Likewise.
+ * rt/mqueue.h: Likewise.
+ * posix/bits/unistd.h: Likewise.
+ * posix/unistd.h: Likewise.
+ * io/bits/poll2.h: Likewise.
+ * io/bits/fcntl2.h: Likewise.
+ * io/fcntl.h: Likewise.
+ * io/sys/poll.h: Likewise.
+ * misc/bits/syslog.h: Likewise.
+ * misc/bits/syslog-ldbl.h: Likewise.
+ * misc/sys/syslog.h: Likewise.
+ * socket/bits/socket2.h: Likewise.
+ * socket/sys/socket.h: Likewise.
+ * debug/tst-chk1.c: Likewise.
+ * wcsmbs/bits/wchar2.h: Likewise.
+ * wcsmbs/bits/wchar-ldbl.h: Likewise.
+ * wcsmbs/wchar.h: Likewise.
+
2012-04-29 Andreas Jaeger <aj@suse.de>
* Makerules (tests): Remove enable-check-abi protection.
#endif
);
-#if defined __USE_FORTIFY_LEVEL && !defined __extern_always_inline
+#if defined __USE_FORTIFY_LEVEL && !defined __fortify_function
printf ("Test skipped");
if (l0 == 0)
return 0;
__wur __warnattr ("please use fgets or getline instead, gets can't "
"specify buffer size");
-__extern_always_inline __wur char *
+__fortify_function __wur char *
gets (char *__str)
{
if (__bos (__str) != (size_t) -1)
__errordecl (__open_missing_mode,
"open with O_CREAT in second argument needs 3 arguments");
-__extern_always_inline int
+__fortify_function int
open (const char *__path, int __oflag, ...)
{
if (__va_arg_pack_len () > 1)
__errordecl (__open64_missing_mode,
"open64 with O_CREAT in second argument needs 3 arguments");
-__extern_always_inline int
+__fortify_function int
open64 (const char *__path, int __oflag, ...)
{
if (__va_arg_pack_len () > 1)
__errordecl (__openat_missing_mode,
"openat with O_CREAT in third argument needs 4 arguments");
-__extern_always_inline int
+__fortify_function int
openat (int __fd, const char *__path, int __oflag, ...)
{
if (__va_arg_pack_len () > 1)
__errordecl (__openat64_missing_mode,
"openat64 with O_CREAT in third argument needs 4 arguments");
-__extern_always_inline int
+__fortify_function int
openat64 (int __fd, const char *__path, int __oflag, ...)
{
if (__va_arg_pack_len () > 1)
__poll_chk)
__warnattr ("poll called with fds buffer too small file nfds entries");
-__extern_always_inline int
+__fortify_function int
poll (struct pollfd *__fds, nfds_t __nfds, int __timeout)
{
if (__bos (__fds) != (__SIZE_TYPE__) -1)
__ppoll_chk)
__warnattr ("ppoll called with fds buffer too small file nfds entries");
-__extern_always_inline int
+__fortify_function int
ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout,
const __sigset_t *__ss)
{
/* Define some inlines helping to catch common problems. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline \
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
&& defined __va_arg_pack_len
# include <bits/fcntl2.h>
#endif
/* Define some inlines helping to catch common problems. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/poll2.h>
#endif
__LDBL_REDIR_DECL (obstack_vprintf)
#endif
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
__LDBL_REDIR_DECL (__sprintf_chk)
__LDBL_REDIR_DECL (__vsprintf_chk)
# if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
#ifdef __USE_EXTERN_INLINES
/* For -D_FORTIFY_SOURCE{,=2} bits/stdio2.h will define a different
inline. */
-# if !(__USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline)
+# if !(__USE_FORTIFY_LEVEL > 0 && defined __fortify_function)
/* Write formatted output to stdout from argument list ARG. */
__STDIO_INLINE int
vprintf (const char *__restrict __fmt, _G_va_list __arg)
_G_va_list __ap) __THROW;
#ifdef __va_arg_pack
-__extern_always_inline int
+__fortify_function int
__NTH (sprintf (char *__restrict __s, const char *__restrict __fmt, ...))
{
return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
__VA_ARGS__)
#endif
-__extern_always_inline int
+__fortify_function int
__NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,
_G_va_list __ap))
{
_G_va_list __ap) __THROW;
# ifdef __va_arg_pack
-__extern_always_inline int
+__fortify_function int
__NTH (snprintf (char *__restrict __s, size_t __n,
const char *__restrict __fmt, ...))
{
__VA_ARGS__)
# endif
-__extern_always_inline int
+__fortify_function int
__NTH (vsnprintf (char *__restrict __s, size_t __n,
const char *__restrict __fmt, _G_va_list __ap))
{
_G_va_list __ap);
# ifdef __va_arg_pack
-__extern_always_inline int
+__fortify_function int
fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)
{
return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
__va_arg_pack ());
}
-__extern_always_inline int
+__fortify_function int
printf (const char *__restrict __fmt, ...)
{
return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
__fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
# endif
-__extern_always_inline int
+__fortify_function int
vprintf (const char *__restrict __fmt, _G_va_list __ap)
{
#ifdef __USE_EXTERN_INLINES
#endif
}
-__extern_always_inline int
+__fortify_function int
vfprintf (FILE *__restrict __stream,
const char *__restrict __fmt, _G_va_list __ap)
{
__THROW __attribute__ ((__format__ (__printf__, 3, 0)));
# ifdef __va_arg_pack
-__extern_always_inline int
+__fortify_function int
__NTH (asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...))
{
return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
__va_arg_pack ());
}
-__extern_always_inline int
+__fortify_function int
__NTH (__asprintf (char **__restrict __ptr, const char *__restrict __fmt,
...))
{
__va_arg_pack ());
}
-__extern_always_inline int
+__fortify_function int
dprintf (int __fd, const char *__restrict __fmt, ...)
{
return __dprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt,
__va_arg_pack ());
}
-__extern_always_inline int
+__fortify_function int
__NTH (obstack_printf (struct obstack *__restrict __obstack,
const char *__restrict __fmt, ...))
{
__obstack_printf_chk (obstack, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
# endif
-__extern_always_inline int
+__fortify_function int
__NTH (vasprintf (char **__restrict __ptr, const char *__restrict __fmt,
_G_va_list __ap))
{
return __vasprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
-__extern_always_inline int
+__fortify_function int
vdprintf (int __fd, const char *__restrict __fmt, _G_va_list __ap)
{
return __vdprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
-__extern_always_inline int
+__fortify_function int
__NTH (obstack_vprintf (struct obstack *__restrict __obstack,
const char *__restrict __fmt, _G_va_list __ap))
{
__wur __warnattr ("please use fgets or getline instead, gets can't "
"specify buffer size");
-__extern_always_inline __wur char *
+__fortify_function __wur char *
gets (char *__str)
{
if (__bos (__str) != (size_t) -1)
__wur __warnattr ("fgets called with bigger size than length "
"of destination buffer");
-__extern_always_inline __wur char *
+__fortify_function __wur char *
fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
{
if (__bos (__s) != (size_t) -1)
__wur __warnattr ("fread called with bigger size * nmemb than length "
"of destination buffer");
-__extern_always_inline __wur size_t
+__fortify_function __wur size_t
fread (void *__restrict __ptr, size_t __size, size_t __n,
FILE *__restrict __stream)
{
__wur __warnattr ("fgets_unlocked called with bigger size than length "
"of destination buffer");
-__extern_always_inline __wur char *
+__fortify_function __wur char *
fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
{
if (__bos (__s) != (size_t) -1)
__wur __warnattr ("fread_unlocked called with bigger size * nmemb than "
"length of destination buffer");
-__extern_always_inline __wur size_t
+__fortify_function __wur size_t
fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
FILE *__restrict __stream)
{
/* -mlong-double-64 compatibility mode for syslog functions.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
__LDBL_REDIR_DECL (vsyslog)
#endif
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
__LDBL_REDIR_DECL (__syslog_chk)
# ifdef __USE_BSD
__attribute__ ((__format__ (__printf__, 3, 4)));
#ifdef __va_arg_pack
-__extern_always_inline void
+__fortify_function void
syslog (int __pri, const char *__fmt, ...)
{
__syslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
__gnuc_va_list __ap)
__attribute__ ((__format__ (__printf__, 3, 0)));
-__extern_always_inline void
+__fortify_function void
vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
{
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
/* Fortify support. */
#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
#define __bos0(ptr) __builtin_object_size (ptr, 0)
+#define __fortify_function __extern_always_inline __attribute_artificial__
#if __GNUC_PREREQ (4,3)
# define __warndecl(name, msg) \
# define __always_inline __inline
#endif
+/* Associate error messages with the source location of the call site rather
+ than with the source location inside the function. */
+#if __GNUC_PREREQ (4,3)
+# define __attribute_artificial__ __attribute__ ((__artificial__))
+#else
+# define __attribute_artificial__ /* Ignore */
+#endif
+
/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
inline semantics, unless -fgnu89-inline is used. */
#if !defined __cplusplus || __GNUC_PREREQ (4,3)
# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
-# if __GNUC_PREREQ (4,3)
-# define __extern_always_inline \
- extern __always_inline __attribute__ ((__gnu_inline__, __artificial__))
-# else
-# define __extern_always_inline \
+# define __extern_always_inline \
extern __always_inline __attribute__ ((__gnu_inline__))
-# endif
# else
# define __extern_inline extern __inline
-# if __GNUC_PREREQ (4,3)
-# define __extern_always_inline \
- extern __always_inline __attribute__ ((__artificial__))
-# else
-# define __extern_always_inline extern __always_inline
-# endif
+# define __extern_always_inline extern __always_inline
# endif
#endif
/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/syslog.h>
#endif
#ifdef __LDBL_COMPAT
__wur __warnattr ("read called with bigger length than size of "
"the destination buffer");
-__extern_always_inline __wur ssize_t
+__fortify_function __wur ssize_t
read (int __fd, void *__buf, size_t __nbytes)
{
if (__bos0 (__buf) != (size_t) -1)
"the destination buffer");
# ifndef __USE_FILE_OFFSET64
-__extern_always_inline __wur ssize_t
+__fortify_function __wur ssize_t
pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
{
if (__bos0 (__buf) != (size_t) -1)
return __pread_alias (__fd, __buf, __nbytes, __offset);
}
# else
-__extern_always_inline __wur ssize_t
+__fortify_function __wur ssize_t
pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
{
if (__bos0 (__buf) != (size_t) -1)
# endif
# ifdef __USE_LARGEFILE64
-__extern_always_inline __wur ssize_t
+__fortify_function __wur ssize_t
pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
{
if (__bos0 (__buf) != (size_t) -1)
__nonnull ((1, 2)) __wur __warnattr ("readlink called with bigger length "
"than size of destination buffer");
-__extern_always_inline __nonnull ((1, 2)) __wur ssize_t
+__fortify_function __nonnull ((1, 2)) __wur ssize_t
__NTH (readlink (const char *__restrict __path, char *__restrict __buf,
size_t __len))
{
"length than size of destination "
"buffer");
-__extern_always_inline __nonnull ((2, 3)) __wur ssize_t
+__fortify_function __nonnull ((2, 3)) __wur ssize_t
__NTH (readlinkat (int __fd, const char *__restrict __path,
char *__restrict __buf, size_t __len))
{
__wur __warnattr ("getcwd caller with bigger length than size of "
"destination buffer");
-__extern_always_inline __wur char *
+__fortify_function __wur char *
__NTH (getcwd (char *__buf, size_t __size))
{
if (__bos (__buf) != (size_t) -1)
__nonnull ((1)) __wur __warnattr ("please use getcwd instead, as getwd "
"doesn't specify buffer size");
-__extern_always_inline __nonnull ((1)) __attribute_deprecated__ __wur char *
+__fortify_function __nonnull ((1)) __attribute_deprecated__ __wur char *
__NTH (getwd (char *__buf))
{
if (__bos (__buf) != (size_t) -1)
__warnattr ("confstr called with bigger length than size of destination "
"buffer");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (confstr (int __name, char *__buf, size_t __len))
{
if (__bos (__buf) != (size_t) -1)
__wur __warnattr ("getgroups called with bigger group count than what "
"can fit into destination buffer");
-__extern_always_inline int
+__fortify_function int
__NTH (getgroups (int __size, __gid_t __list[]))
{
if (__bos (__list) != (size_t) -1)
__nonnull ((2)) __warnattr ("ttyname_r called with bigger buflen than "
"size of destination buffer");
-__extern_always_inline int
+__fortify_function int
__NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
{
if (__bos (__buf) != (size_t) -1)
__nonnull ((1)) __warnattr ("getlogin_r called with bigger buflen than "
"size of destination buffer");
-__extern_always_inline int
+__fortify_function int
getlogin_r (char *__buf, size_t __buflen)
{
if (__bos (__buf) != (size_t) -1)
__nonnull ((1)) __warnattr ("gethostname called with bigger buflen than "
"size of destination buffer");
-__extern_always_inline int
+__fortify_function int
__NTH (gethostname (char *__buf, size_t __buflen))
{
if (__bos (__buf) != (size_t) -1)
"buflen than size of destination "
"buffer");
-__extern_always_inline int
+__fortify_function int
__NTH (getdomainname (char *__buf, size_t __buflen))
{
if (__bos (__buf) != (size_t) -1)
/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/unistd.h>
#endif
__errordecl (__mq_open_missing_mode_and_attr,
"mq_open with O_CREAT in second argument needs 4 arguments");
-__extern_always_inline mqd_t
+__fortify_function mqd_t
__NTH (mq_open (const char *__name, int __oflag, ...))
{
if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2)
#endif
/* Define some inlines helping to catch common problems. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline \
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
&& defined __va_arg_pack_len
# include <bits/mqueue2.h>
#endif
/* Checking macros for socket functions.
- Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2005-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
__warnattr ("recv called with bigger length than size of destination "
"buffer");
-__extern_always_inline ssize_t
+__fortify_function ssize_t
recv (int __fd, void *__buf, size_t __n, int __flags)
{
if (__bos0 (__buf) != (size_t) -1)
__warnattr ("recvfrom called with bigger length than size of "
"destination buffer");
-__extern_always_inline ssize_t
+__fortify_function ssize_t
recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
__SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
{
/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/socket2.h>
#endif
__warnattr ("second argument of realpath must be either NULL or at "
"least PATH_MAX bytes long buffer");
-__extern_always_inline __wur char *
+__fortify_function __wur char *
__NTH (realpath (const char *__restrict __name, char *__restrict __resolved))
{
if (__bos (__resolved) != (size_t) -1)
__nonnull ((2)) __warnattr ("ptsname_r called with buflen bigger than "
"size of buf");
-__extern_always_inline int
+__fortify_function int
__NTH (ptsname_r (int __fd, char *__buf, size_t __buflen))
{
if (__bos (__buf) != (size_t) -1)
extern int __REDIRECT_NTH (__wctomb_alias, (char *__s, wchar_t __wchar),
wctomb) __wur;
-__extern_always_inline __wur int
+__fortify_function __wur int
__NTH (wctomb (char *__s, wchar_t __wchar))
{
/* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
__warnattr ("mbstowcs called with dst buffer smaller than len "
"* sizeof (wchar_t)");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,
size_t __len))
{
size_t __len, size_t __dstlen), __wcstombs_chk)
__warnattr ("wcstombs called with dst buffer smaller than len");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (wcstombs (char *__restrict __dst, const wchar_t *__restrict __src,
size_t __len))
{
/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/stdlib.h>
#endif
#ifdef __LDBL_COMPAT
#endif
-__extern_always_inline void *
+__fortify_function void *
__NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
size_t __len))
{
return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
}
-__extern_always_inline void *
+__fortify_function void *
__NTH (memmove (void *__dest, const void *__src, size_t __len))
{
return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
}
#ifdef __USE_GNU
-__extern_always_inline void *
+__fortify_function void *
__NTH (mempcpy (void *__restrict __dest, const void *__restrict __src,
size_t __len))
{
especially problematic if the intended fill value is zero. In this
case no work is done at all. We detect these problems by referring
non-existing functions. */
-__extern_always_inline void *
+__fortify_function void *
__NTH (memset (void *__dest, int __ch, size_t __len))
{
if (__builtin_constant_p (__len) && __len == 0
}
#ifdef __USE_BSD
-__extern_always_inline void
+__fortify_function void
__NTH (bcopy (const void *__src, void *__dest, size_t __len))
{
(void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
}
-__extern_always_inline void
+__fortify_function void
__NTH (bzero (void *__dest, size_t __len))
{
(void) __builtin___memset_chk (__dest, '\0', __len, __bos0 (__dest));
}
#endif
-__extern_always_inline char *
+__fortify_function char *
__NTH (strcpy (char *__restrict __dest, const char *__restrict __src))
{
return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
}
#ifdef __USE_GNU
-__extern_always_inline char *
+__fortify_function char *
__NTH (stpcpy (char *__restrict __dest, const char *__restrict __src))
{
return __builtin___stpcpy_chk (__dest, __src, __bos (__dest));
#endif
-__extern_always_inline char *
+__fortify_function char *
__NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
size_t __len))
{
extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,
size_t __n), stpncpy);
-__extern_always_inline char *
+__fortify_function char *
__NTH (stpncpy (char *__dest, const char *__src, size_t __n))
{
if (__bos (__dest) != (size_t) -1
}
-__extern_always_inline char *
+__fortify_function char *
__NTH (strcat (char *__restrict __dest, const char *__restrict __src))
{
return __builtin___strcat_chk (__dest, __src, __bos (__dest));
}
-__extern_always_inline char *
+__fortify_function char *
__NTH (strncat (char *__restrict __dest, const char *__restrict __src,
size_t __len))
{
# include <bits/string2.h>
# endif
-# if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+# if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
/* Functions with security checks. */
# include <bits/string3.h>
# endif
/* -mlong-double-64 compatibility mode for <wchar.h> functions.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
&& !defined __REDIRECT \
&& (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
__LDBL_REDIR1_DECL (fwscanf, __nldbl___isoc99_fwscanf)
-__LDBL_REDIR1_DECL (wscanf, __nldbl___isoc99_wscanf)
+__LDBL_REDIR1_DECL (wscanf, __nldbl___isoc99_wscanf)
__LDBL_REDIR1_DECL (swscanf, __nldbl___isoc99_swscanf)
# else
__LDBL_REDIR_DECL (fwscanf);
# if !defined __USE_GNU && !defined __REDIRECT \
&& (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
__LDBL_REDIR1_DECL (vfwscanf, __nldbl___isoc99_vfwscanf)
-__LDBL_REDIR1_DECL (vwscanf, __nldbl___isoc99_vwscanf)
+__LDBL_REDIR1_DECL (vwscanf, __nldbl___isoc99_vwscanf)
__LDBL_REDIR1_DECL (vswscanf, __nldbl___isoc99_vswscanf)
# else
__LDBL_REDIR_DECL (vfwscanf);
__LDBL_REDIR1_DECL (wcstold_l, wcstod_l);
#endif
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
__LDBL_REDIR_DECL (__swprintf_chk)
__LDBL_REDIR_DECL (__vswprintf_chk)
# if __USE_FORTIFY_LEVEL > 1
__warnattr ("wmemcpy called with length bigger than size of destination "
"buffer");
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
size_t __n))
{
__warnattr ("wmemmove called with length bigger than size of destination "
"buffer");
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n))
{
if (__bos0 (__s1) != (size_t) -1)
__warnattr ("wmempcpy called with length bigger than size of destination "
"buffer");
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
size_t __n))
{
__warnattr ("wmemset called with length bigger than size of destination "
"buffer");
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n))
{
if (__bos0 (__s) != (size_t) -1)
(wchar_t *__restrict __dest,
const wchar_t *__restrict __src), wcscpy);
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
{
if (__bos (__dest) != (size_t) -1)
(wchar_t *__restrict __dest,
const wchar_t *__restrict __src), wcpcpy);
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
{
if (__bos (__dest) != (size_t) -1)
__warnattr ("wcsncpy called with length bigger than size of destination "
"buffer");
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
size_t __n))
{
__warnattr ("wcpncpy called with length bigger than size of destination "
"buffer");
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
size_t __n))
{
(wchar_t *__restrict __dest,
const wchar_t *__restrict __src), wcscat);
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
{
if (__bos (__dest) != (size_t) -1)
const wchar_t *__restrict __src,
size_t __n), wcsncat);
-__extern_always_inline wchar_t *
+__fortify_function wchar_t *
__NTH (wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
size_t __n))
{
swprintf);
#ifdef __va_arg_pack
-__extern_always_inline int
+__fortify_function int
__NTH (swprintf (wchar_t *__restrict __s, size_t __n,
const wchar_t *__restrict __fmt, ...))
{
const wchar_t *__restrict __fmt,
__gnuc_va_list __ap), vswprintf);
-__extern_always_inline int
+__fortify_function int
__NTH (vswprintf (wchar_t *__restrict __s, size_t __n,
const wchar_t *__restrict __fmt, __gnuc_va_list __ap))
{
__gnuc_va_list __ap);
# ifdef __va_arg_pack
-__extern_always_inline int
+__fortify_function int
wprintf (const wchar_t *__restrict __fmt, ...)
{
return __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
}
-__extern_always_inline int
+__fortify_function int
fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
{
return __fwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
__fwprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
# endif
-__extern_always_inline int
+__fortify_function int
vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
{
return __vwprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
-__extern_always_inline int
+__fortify_function int
vfwprintf (__FILE *__restrict __stream,
const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
{
__wur __warnattr ("fgetws called with bigger size than length "
"of destination buffer");
-__extern_always_inline __wur wchar_t *
+__fortify_function __wur wchar_t *
fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
{
if (__bos (__s) != (size_t) -1)
__wur __warnattr ("fgetws_unlocked called with bigger size than length "
"of destination buffer");
-__extern_always_inline __wur wchar_t *
+__fortify_function __wur wchar_t *
fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
{
if (__bos (__s) != (size_t) -1)
(char *__restrict __s, wchar_t __wchar,
mbstate_t *__restrict __ps), wcrtomb) __wur;
-__extern_always_inline __wur size_t
+__fortify_function __wur size_t
__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar,
mbstate_t *__restrict __ps))
{
__warnattr ("mbsrtowcs called with dst buffer smaller than len "
"* sizeof (wchar_t)");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
size_t __len, mbstate_t *__restrict __ps))
{
size_t __dstlen), __wcsrtombs_chk)
__warnattr ("wcsrtombs called with dst buffer smaller than len");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
size_t __len, mbstate_t *__restrict __ps))
{
__warnattr ("mbsnrtowcs called with dst buffer smaller than len "
"* sizeof (wchar_t)");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
size_t __nmc, size_t __len, mbstate_t *__restrict __ps))
{
size_t __dstlen), __wcsnrtombs_chk)
__warnattr ("wcsnrtombs called with dst buffer smaller than len");
-__extern_always_inline size_t
+__fortify_function size_t
__NTH (wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
size_t __nwc, size_t __len, mbstate_t *__restrict __ps))
{
#endif
/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __extern_always_inline
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/wchar2.h>
#endif