diff mbox

Fix invalid attributes in libstdc++

Message ID 20150201151029.GM3360@redhat.com
State New
Headers show

Commit Message

Jonathan Wakely Feb. 1, 2015, 3:10 p.m. UTC
On 01/02/15 15:08 +0000, Jonathan Wakely wrote:
>I failed to CC gcc-patches on this patch ...
>
>On 29/01/15 13:02 +0000, Jonathan Wakely wrote:
>>Jakub pointed out that we have some attributes that don't use the
>>reserved namespace, e.g. __attribute__ ((always_inline)).
>>
>>This is a 4.9/5 regression and the fix was pre-approved by Jakub so
>>I've committed it to trunk.
>>
>>When we're back in stage1 I'll fix the TODO comments in the new tests
>>(see PR64857) and will also rename testsuite/17_intro/headers/c++200x
>>to .../c++2011.
>>

The new test fails on darwin (PR64883) and --enable-threads=single
targets (PR64885).

This is a workaround for 64883. Tested x86_64-linux, committed to
trunk.
diff mbox

Patch

commit beb7b1c1af3f84a1762eed750c7728f1d10dc333
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Sat Jan 31 21:09:31 2015 +0000

    	PR libstdc++/64883
    	* include/c_global/cstdio (gets): Use __deprecated__ attribute instead
    	of deprecated.
    	* include/c_std/cstdio (gets): Likewise.
    	* testsuite/17_intro/headers/c++1998/all_attributes.cc: Avoid clashing
    	with attributes used in darwin headers.

diff --git a/libstdc++-v3/include/c_global/cstdio b/libstdc++-v3/include/c_global/cstdio
index ef024bf..d1c958b 100644
--- a/libstdc++-v3/include/c_global/cstdio
+++ b/libstdc++-v3/include/c_global/cstdio
@@ -45,7 +45,7 @@ 
 #define _GLIBCXX_CSTDIO 1
 
 #ifndef _GLIBCXX_HAVE_GETS
-extern "C" char* gets (char* __s) __attribute__((deprecated));
+extern "C" char* gets (char* __s) __attribute__((__deprecated__));
 #endif
 
 // Get rid of those macros defined in <stdio.h> in lieu of real functions.
diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio
index 1f8ae7c..37f01ca 100644
--- a/libstdc++-v3/include/c_std/cstdio
+++ b/libstdc++-v3/include/c_std/cstdio
@@ -45,7 +45,7 @@ 
 #include <stdio.h>
 
 #ifndef _GLIBCXX_HAVE_GETS
-extern "C" char* gets (char* __s) __attribute__((deprecated));
+extern "C" char* gets (char* __s) __attribute__((__deprecated__));
 #endif
 
 // Get rid of those macros defined in <stdio.h> in lieu of real functions.
diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
index c7ed8ae..76a935e 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
@@ -22,8 +22,11 @@ 
 // Don't test 'const' because it is reserved anyway.
 #define abi_tag 1
 #define always_inline 1
-#define deprecated 1
-#define noreturn 1
+#ifndef __APPLE__
+// darwin headers use these, see PR 64883
+# define deprecated 1
+# define noreturn 1
+#endif
 #define packed 1
 #define pure 1
 #define unused 1