This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


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

Re: Broken include/c_std/bits/std_cerrno.h



after a review of the other files, we're not really defining these
macros or checking to see if they are or aren't defined. For the c_std
headers, this is probably not worth the trouble to do correctly and
consistently with all the macros. (assert, errno, offsetof, setjmp,
va_arg, va_end, va_start)

Here's a patch, assuming no screaming, it will go in later today.

2001-03-06  Nathan Myers  <ncm@cantrip.org> 
	    Benjamin Kosnik  <bkoz@redhat.com>

	* include/c_std/bits/std_cerrno.h: Don't define errno in std::.
	* testsuite/17_intro/header_cerrno.cc (test01): New file.
	* testsuite/17_intro/header_cassert.cc (test01): New file.
	* testsuite/17_intro/header_cstddef.cc (test01): New file.
	* testsuite/17_intro/header_csetjmp.cc (test01): New file.	
	* testsuite/17_intro/header_cstdarg.cc (test01): New file.	

Index: include/c_std/bits/std_cerrno.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/c_std/bits/std_cerrno.h,v
retrieving revision 1.5
diff -c -p -r1.5 std_cerrno.h
*** std_cerrno.h	2001/02/05 22:27:40	1.5
--- std_cerrno.h	2001/03/06 20:50:51
***************
*** 1,6 ****
  // The -*- C++ -*- error number header.
  
! // Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
--- 1,6 ----
  // The -*- C++ -*- error number header.
  
! // Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
***************
*** 39,51 ****
  #pragma GCC system_header
  #include <errno.h>
  
- namespace std 
- {
-   extern "C" int errno;
- }
- 
  #endif
- 
- 
- 
- 
--- 39,42 ----
Index: testsuite/17_intro/header_cassert.cc
===================================================================
RCS file: header_cassert.cc
diff -N header_cassert.cc
*** /dev/null	Tue May  5 13:32:27 1998
--- header_cassert.cc	Tue Mar  6 12:52:08 2001
***************
*** 0 ****
--- 1,40 ----
+ // 2001-02-06  Benjamin Kosnik  <bkoz@redhat.com>
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ // 17.4.1.2 Headers, cassert
+ 
+ #include <cassert>
+ 
+ namespace gnu
+ {
+   void test01()
+   { 
+     assert (true);
+ #ifndef assert
+     #error "assert_must_be_a_macro"
+ #endif
+   }
+ }
+   
+ int main()
+ {
+   gnu::test01();
+   return 0;
+ }
Index: testsuite/17_intro/header_cerrno.cc
===================================================================
RCS file: header_cerrno.cc
diff -N header_cerrno.cc
*** /dev/null	Tue May  5 13:32:27 1998
--- header_cerrno.cc	Tue Mar  6 12:52:08 2001
***************
*** 0 ****
--- 1,40 ----
+ // 2001-02-06  Benjamin Kosnik  <bkoz@redhat.com>
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ // 17.4.1.2 Headers, cerrno
+ 
+ #include <cerrno>
+ 
+ namespace gnu
+ {
+   void test01()
+   { 
+     int i = errno;
+ #ifndef errno
+     #error "errno_must_be_a_macro"
+ #endif
+   }
+ }
+   
+ int main()
+ {
+   gnu::test01();
+   return 0;
+ }
Index: testsuite/17_intro/header_csetjmp.cc
===================================================================
RCS file: header_csetjmp.cc
diff -N header_csetjmp.cc
*** /dev/null	Tue May  5 13:32:27 1998
--- header_csetjmp.cc	Tue Mar  6 12:52:08 2001
***************
*** 0 ****
--- 1,41 ----
+ // 2001-02-06  Benjamin Kosnik  <bkoz@redhat.com>
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ // 17.4.1.2 Headers, csetjmp
+ 
+ #include <csetjmp>
+ 
+ namespace gnu
+ {
+   void test01()
+   { 
+     std::jmp_buf env;
+     int i = setjmp(env);
+ #ifndef setjmp
+     #error "setjmp_must_be_a_macro"
+ #endif
+   }
+ }
+   
+ int main()
+ {
+   gnu::test01();
+   return 0;
+ }
Index: testsuite/17_intro/header_cstdarg.cc
===================================================================
RCS file: header_cstdarg.cc
diff -N header_cstdarg.cc
*** /dev/null	Tue May  5 13:32:27 1998
--- header_cstdarg.cc	Tue Mar  6 12:52:08 2001
***************
*** 0 ****
--- 1,46 ----
+ // 2001-02-06  Benjamin Kosnik  <bkoz@redhat.com>
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ // 17.4.1.2 Headers, cstdarg
+ 
+ #include <cstdarg>
+ 
+ namespace gnu
+ {
+   void test01()
+   { 
+     std::va_list list;
+ #ifndef va_arg
+     #error "va_arg_must_be_a_macro"
+ #endif
+ #ifndef va_end
+     #error "va_end_must_be_a_macro"
+ #endif
+ #ifndef va_start
+     #error "va_start_must_be_a_macro"
+ #endif
+   }
+ }
+   
+ int main()
+ {
+   gnu::test01();
+   return 0;
+ }
Index: testsuite/17_intro/header_cstddef.cc
===================================================================
RCS file: header_cstddef.cc
diff -N header_cstddef.cc
*** /dev/null	Tue May  5 13:32:27 1998
--- header_cstddef.cc	Tue Mar  6 12:52:08 2001
***************
*** 0 ****
--- 1,46 ----
+ // 2001-02-06  Benjamin Kosnik  <bkoz@redhat.com>
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ // 17.4.1.2 Headers, cstddef
+ 
+ #include <cstddef>
+ 
+ namespace gnu
+ {
+   struct test_type
+   {
+     int i;
+     int j;
+   };
+ 
+   void test01()
+   { 
+     std::size_t i = offsetof(struct test_type, i);
+ #ifndef offsetof
+     #error "offsetof_must_be_a_macro"
+ #endif
+   }
+ }
+   
+ int main()
+ {
+   gnu::test01();
+   return 0;
+ }


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