This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 0/2] Fix attributes for fortify functions


On Tue, Apr 24, 2012 at 01:05:39PM -0700, Roland McGrath wrote:
> The first patch without the second regresses the state of all the
> _FORTIFY_SOURCE functions.  So just make it all one patch/commit instead.

Hopefully done this time around.  Regtested on x86_64, ok for trunk?

2012-04-27  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.

--- libc/libio/bits/stdio-ldbl.h.mp	2012-04-27 21:24:12.111546925 +0200
+++ libc/libio/bits/stdio-ldbl.h	2012-04-27 21:35:12.004110146 +0200
@@ -75,7 +75,7 @@ __LDBL_REDIR_DECL (obstack_printf)
 __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
--- libc/libio/bits/stdio2.h.mp	2012-04-27 21:24:12.110546923 +0200
+++ libc/libio/bits/stdio2.h	2012-04-27 21:35:12.006110150 +0200
@@ -27,7 +27,7 @@ extern int __vsprintf_chk (char *__restr
 			   _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,
@@ -39,7 +39,7 @@ __NTH (sprintf (char *__restrict __s, co
 			   __VA_ARGS__)
 #endif
 
-__extern_always_inline int
+__fortify_function int
 __NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,
 		 _G_va_list __ap))
 {
@@ -57,7 +57,7 @@ extern int __vsnprintf_chk (char *__rest
 			    _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, ...))
 {
@@ -70,7 +70,7 @@ __NTH (snprintf (char *__restrict __s, s
 			    __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))
 {
@@ -91,14 +91,14 @@ extern int __vprintf_chk (int __flag, co
 			  _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 ());
@@ -110,7 +110,7 @@ printf (const char *__restrict __fmt, ..
   __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
@@ -120,7 +120,7 @@ vprintf (const char *__restrict __fmt, _
 #endif
 }
 
-__extern_always_inline int
+__fortify_function int
 vfprintf (FILE *__restrict __stream,
 	  const char *__restrict __fmt, _G_va_list __ap)
 {
@@ -151,14 +151,14 @@ extern int __obstack_vprintf_chk (struct
      __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,
 		   ...))
 {
@@ -166,14 +166,14 @@ __NTH (__asprintf (char **__restrict __p
 			 __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, ...))
 {
@@ -191,20 +191,20 @@ __NTH (obstack_printf (struct obstack *_
   __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))
 {
@@ -223,7 +223,7 @@ extern char *__REDIRECT (__gets_warn, (c
      __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)
@@ -243,7 +243,7 @@ extern char *__REDIRECT (__fgets_chk_war
      __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)
@@ -272,7 +272,7 @@ extern size_t __REDIRECT (__fread_chk_wa
      __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)
 {
@@ -301,7 +301,7 @@ extern char *__REDIRECT (__fgets_unlocke
      __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)
@@ -333,7 +333,7 @@ extern size_t __REDIRECT (__fread_unlock
      __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)
 {
--- libc/libio/bits/stdio.h.mp	2012-04-27 21:24:12.109546921 +0200
+++ libc/libio/bits/stdio.h	2012-04-27 21:35:12.008110154 +0200
@@ -30,7 +30,7 @@
 #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)
--- libc/string/string.h.mp	2012-04-27 21:24:12.105546909 +0200
+++ libc/string/string.h	2012-04-27 21:35:12.011110163 +0200
@@ -634,7 +634,7 @@ extern char *basename (const char *__fil
 #  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
--- libc/string/bits/string3.h.mp	2012-04-27 21:24:12.104546906 +0200
+++ libc/string/bits/string3.h	2012-04-27 21:35:12.012110166 +0200
@@ -44,21 +44,21 @@ __warndecl (__warn_memset_zero_len,
 #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))
 {
@@ -72,7 +72,7 @@ __NTH (mempcpy (void *__restrict __dest,
    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
@@ -85,27 +85,27 @@ __NTH (memset (void *__dest, int __ch, s
 }
 
 #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));
@@ -113,7 +113,7 @@ __NTH (stpcpy (char *__restrict __dest,
 #endif
 
 
-__extern_always_inline char *
+__fortify_function char *
 __NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
 		size_t __len))
 {
@@ -126,7 +126,7 @@ extern char *__stpncpy_chk (char *__dest
 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
@@ -136,14 +136,14 @@ __NTH (stpncpy (char *__dest, const char
 }
 
 
-__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))
 {
--- libc/include/stdio.h.mp	2012-04-27 21:24:12.102546901 +0200
+++ libc/include/stdio.h	2012-04-27 21:35:12.013110169 +0200
@@ -176,7 +176,7 @@ extern char *__REDIRECT (__gets_warn, (c
      __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)
--- libc/stdlib/bits/stdlib.h.mp	2012-04-27 21:24:12.101546899 +0200
+++ libc/stdlib/bits/stdlib.h	2012-04-27 21:35:12.015110175 +0200
@@ -33,7 +33,7 @@ extern char *__REDIRECT_NTH (__realpath_
      __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)
@@ -60,7 +60,7 @@ extern int __REDIRECT_NTH (__ptsname_r_c
      __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)
@@ -79,7 +79,7 @@ extern int __wctomb_chk (char *__s, wcha
 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.
@@ -109,7 +109,7 @@ extern size_t __REDIRECT_NTH (__mbstowcs
      __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))
 {
@@ -140,7 +140,7 @@ extern size_t __REDIRECT_NTH (__wcstombs
 			       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))
 {
--- libc/stdlib/stdlib.h.mp	2012-04-27 21:24:12.099546894 +0200
+++ libc/stdlib/stdlib.h	2012-04-27 21:35:12.017110179 +0200
@@ -953,7 +953,7 @@ extern int getloadavg (double __loadavg[
 
 
 /* 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
--- libc/rt/bits/mqueue2.h.mp	2012-04-27 21:24:12.098546891 +0200
+++ libc/rt/bits/mqueue2.h	2012-04-27 21:35:12.018110181 +0200
@@ -34,7 +34,7 @@ __errordecl (__mq_open_wrong_number_of_a
 __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)
--- libc/rt/mqueue.h.mp	2012-04-27 21:24:12.097546888 +0200
+++ libc/rt/mqueue.h	2012-04-27 21:35:12.018110181 +0200
@@ -90,7 +90,7 @@ extern int mq_timedsend (mqd_t __mqdes,
 #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
--- libc/posix/bits/unistd.h.mp	2012-04-27 21:24:12.095546882 +0200
+++ libc/posix/bits/unistd.h	2012-04-27 21:35:12.019110183 +0200
@@ -30,7 +30,7 @@ extern ssize_t __REDIRECT (__read_chk_wa
      __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)
@@ -68,7 +68,7 @@ extern ssize_t __REDIRECT (__pread64_chk
 		       "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)
@@ -83,7 +83,7 @@ pread (int __fd, void *__buf, size_t __n
   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)
@@ -101,7 +101,7 @@ pread (int __fd, void *__buf, size_t __n
 # 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)
@@ -135,7 +135,7 @@ extern ssize_t __REDIRECT_NTH (__readlin
      __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))
 {
@@ -169,7 +169,7 @@ extern ssize_t __REDIRECT_NTH (__readlin
 					  "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))
 {
@@ -196,7 +196,7 @@ extern char *__REDIRECT_NTH (__getcwd_ch
      __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)
@@ -217,7 +217,7 @@ extern char *__REDIRECT_NTH (__getwd_war
      __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)
@@ -236,7 +236,7 @@ extern size_t __REDIRECT_NTH (__confstr_
      __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)
@@ -261,7 +261,7 @@ extern int __REDIRECT_NTH (__getgroups_c
      __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)
@@ -287,7 +287,7 @@ extern int __REDIRECT_NTH (__ttyname_r_c
      __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)
@@ -313,7 +313,7 @@ extern int __REDIRECT (__getlogin_r_chk_
      __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)
@@ -340,7 +340,7 @@ extern int __REDIRECT_NTH (__gethostname
      __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)
@@ -369,7 +369,7 @@ extern int __REDIRECT_NTH (__getdomainna
 				       "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)
--- libc/posix/unistd.h.mp	2012-04-27 21:24:12.094546879 +0200
+++ libc/posix/unistd.h	2012-04-27 21:35:12.020110185 +0200
@@ -1165,7 +1165,7 @@ extern char *ctermid (char *__s) __THROW
 
 
 /* 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
 
--- libc/io/bits/poll2.h.mp	2012-04-27 21:24:12.093546876 +0200
+++ libc/io/bits/poll2.h	2012-04-27 21:35:12.021110188 +0200
@@ -32,7 +32,7 @@ extern int __REDIRECT (__poll_chk_warn,
 		       __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)
@@ -61,7 +61,7 @@ extern int __REDIRECT (__ppoll_chk_warn,
 		       __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)
 {
--- libc/io/bits/fcntl2.h.mp	2012-04-27 21:24:12.092546873 +0200
+++ libc/io/bits/fcntl2.h	2012-04-27 21:35:12.022110191 +0200
@@ -37,7 +37,7 @@ __errordecl (__open_too_many_args,
 __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)
@@ -69,7 +69,7 @@ __errordecl (__open64_too_many_args,
 __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)
@@ -113,7 +113,7 @@ __errordecl (__openat_too_many_args,
 __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)
@@ -147,7 +147,7 @@ __errordecl (__openat64_too_many_args,
 __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)
--- libc/io/fcntl.h.mp	2012-04-27 21:24:12.091546871 +0200
+++ libc/io/fcntl.h	2012-04-27 21:35:12.022110191 +0200
@@ -263,7 +263,7 @@ extern int posix_fallocate64 (int __fd,
 
 
 /* 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
--- libc/io/sys/poll.h.mp	2012-04-27 21:24:12.090546869 +0200
+++ libc/io/sys/poll.h	2012-04-27 21:35:12.023110194 +0200
@@ -72,7 +72,7 @@ __END_DECLS
 
 
 /* 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
 
--- libc/misc/bits/syslog.h.mp	2012-04-27 21:24:12.088546865 +0200
+++ libc/misc/bits/syslog.h	2012-04-27 21:35:12.024110197 +0200
@@ -25,7 +25,7 @@ extern void __syslog_chk (int __pri, int
      __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 ());
@@ -41,7 +41,7 @@ extern void __vsyslog_chk (int __pri, in
 			   __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);
--- libc/misc/bits/syslog-ldbl.h.mp	2012-04-27 21:24:12.087546862 +0200
+++ libc/misc/bits/syslog-ldbl.h	2012-04-27 21:35:12.024110197 +0200
@@ -1,5 +1,5 @@
 /* -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
@@ -26,7 +26,7 @@ __LDBL_REDIR_DECL (syslog)
 __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
--- libc/misc/sys/syslog.h.mp	2012-04-27 21:24:12.086546859 +0200
+++ libc/misc/sys/syslog.h	2012-04-27 21:35:12.025110200 +0200
@@ -203,7 +203,7 @@ extern void vsyslog (int __pri, const ch
 
 
 /* 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
--- libc/misc/sys/cdefs.h.mp	2012-04-27 21:24:49.547646848 +0200
+++ libc/misc/sys/cdefs.h	2012-04-27 21:36:22.562297436 +0200
@@ -140,6 +140,7 @@
 /* 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) \
@@ -309,26 +310,24 @@
 # 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
 
--- libc/socket/bits/socket2.h.mp	2012-04-27 21:24:12.085546856 +0200
+++ libc/socket/bits/socket2.h	2012-04-27 21:35:12.026110203 +0200
@@ -1,5 +1,5 @@
 /* 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
@@ -30,7 +30,7 @@ extern ssize_t __REDIRECT (__recv_chk_wa
      __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)
@@ -60,7 +60,7 @@ extern ssize_t __REDIRECT (__recvfrom_ch
      __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)
 {
--- libc/socket/sys/socket.h.mp	2012-04-27 21:24:12.084546853 +0200
+++ libc/socket/sys/socket.h	2012-04-27 21:35:12.027110206 +0200
@@ -246,7 +246,7 @@ extern int isfdtype (int __fd, int __fdt
 
 
 /* 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
 
--- libc/debug/tst-chk1.c.mp	2012-04-27 21:24:12.082546847 +0200
+++ libc/debug/tst-chk1.c	2012-04-27 21:35:12.028110209 +0200
@@ -148,7 +148,7 @@ do_test (void)
 #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;
--- libc/wcsmbs/bits/wchar2.h.mp	2012-04-27 21:24:12.080546841 +0200
+++ libc/wcsmbs/bits/wchar2.h	2012-04-27 21:35:12.029110212 +0200
@@ -35,7 +35,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemcp
      __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))
 {
@@ -64,7 +64,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemmo
      __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)
@@ -96,7 +96,7 @@ extern wchar_t *__REDIRECT_NTH (__wmempc
      __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))
 {
@@ -125,7 +125,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemse
      __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)
@@ -148,7 +148,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy
 				(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)
@@ -164,7 +164,7 @@ extern wchar_t *__REDIRECT_NTH (__wcpcpy
 				(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)
@@ -187,7 +187,7 @@ extern wchar_t *__REDIRECT_NTH (__wcsncp
      __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))
 {
@@ -218,7 +218,7 @@ extern wchar_t *__REDIRECT_NTH (__wcpncp
      __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))
 {
@@ -242,7 +242,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat
 				(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)
@@ -259,7 +259,7 @@ extern wchar_t *__REDIRECT_NTH (__wcsnca
 				 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))
 {
@@ -281,7 +281,7 @@ extern int __REDIRECT_NTH_LDBL (__swprin
 				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, ...))
 {
@@ -311,7 +311,7 @@ extern int __REDIRECT_NTH_LDBL (__vswpri
 				 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))
 {
@@ -335,13 +335,13 @@ extern int __vwprintf_chk (int __flag, c
 			   __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,
@@ -354,13 +354,13 @@ fwprintf (__FILE *__restrict __stream, c
   __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)
 {
@@ -380,7 +380,7 @@ extern wchar_t *__REDIRECT (__fgetws_chk
      __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)
@@ -411,7 +411,7 @@ extern wchar_t *__REDIRECT (__fgetws_unl
      __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)
@@ -436,7 +436,7 @@ extern size_t __REDIRECT_NTH (__wcrtomb_
 			      (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))
 {
@@ -470,7 +470,7 @@ extern size_t __REDIRECT_NTH (__mbsrtowc
      __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))
 {
@@ -504,7 +504,7 @@ extern size_t __REDIRECT_NTH (__wcsrtomb
 			       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))
 {
@@ -538,7 +538,7 @@ extern size_t __REDIRECT_NTH (__mbsnrtow
      __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))
 {
@@ -574,7 +574,7 @@ extern size_t __REDIRECT_NTH (__wcsnrtom
 			       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))
 {
--- libc/wcsmbs/bits/wchar-ldbl.h.mp	2012-04-27 21:20:29.052951550 +0200
+++ libc/wcsmbs/bits/wchar-ldbl.h	2012-04-27 21:35:12.029110212 +0200
@@ -1,5 +1,5 @@
 /* -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
@@ -32,7 +32,7 @@ __LDBL_REDIR_DECL (vswprintf);
      && !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);
@@ -48,7 +48,7 @@ __LDBL_REDIR1_DECL (wcstold, wcstod);
 # 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);
@@ -62,7 +62,7 @@ __END_NAMESPACE_C99
 __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
--- libc/wcsmbs/wchar.h.mp	2012-04-27 21:20:29.050951545 +0200
+++ libc/wcsmbs/wchar.h	2012-04-27 21:35:12.030110215 +0200
@@ -880,7 +880,7 @@ extern size_t wcsftime_l (wchar_t *__res
 #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
 
	Marek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]