Patchwork [v3] fix libstdc++/44647

login
register
mail settings
Submitter Jonathan Wakely
Date Oct. 2, 2010, 11:17 a.m.
Message ID <AANLkTinz9dw1LAvkznDabDh4e9UG7py+T_apZ39dF1r-@mail.gmail.com>
Download mbox | patch
Permalink /patch/66563/
State New
Headers show

Comments

Jonathan Wakely - Oct. 2, 2010, 11:17 a.m.
http://gcc.gnu.org/PR44647 requests that std::new_handler  and
std::bad_alloc be put in separate files as this helps reduce code size
for embedded code linking to libstdc++.a.  I think the request is
reasonable so I plan to commit the attached patch to trunk unless I
hear objections.

        PR libstdc++/44647
        * libsupc++/Makefile.am (sources): Add bad_alloc.cc.
        * libsupc++/Makefile.in: Regenerate.
        * libsupc++/new_handler.cc (bad_alloc): Move to ...
        * libsupc++/bad_alloc.cc (bad_alloc): * New.

Tested x86_64/Linux
Paolo Carlini - Oct. 5, 2010, 9:20 a.m.
On 10/02/2010 01:17 PM, Jonathan Wakely wrote:
> http://gcc.gnu.org/PR44647 requests that std::new_handler  and
> std::bad_alloc be put in separate files as this helps reduce code size
> for embedded code linking to libstdc++.a.  I think the request is
> reasonable so I plan to commit the attached patch to trunk unless I
> hear objections.
>   
Indeed, let's go ahead with this Jon. Minor nit: please fix the list of
Copyright years in the new file to just 2010.

Thanks,
Paolo.
Jonathan Wakely - Oct. 5, 2010, 10:56 a.m.
On 5 October 2010 10:20, Paolo Carlini wrote:
>
> Indeed, let's go ahead with this Jon. Minor nit: please fix the list of
> Copyright years in the new file to just 2010.

OK, thanks.   I'm always confused by that so will try to remember in
future:  the new file contains old code,  and now it looks as though
the bad_alloc definition was not copyrighted prior to 2010 ... which I
find odd.
Paolo Carlini - Oct. 5, 2010, 11:52 a.m.
On 10/05/2010 12:56 PM, Jonathan Wakely wrote:
> OK, thanks. I'm always confused by that so will try to remember in
> future:  the new file contains old code,  and now it looks as though
> the bad_alloc definition was not copyrighted prior to 2010 ... which I
> find odd.
>   
The rule I always followed is that a new file has only the Copyright
year of the current year. Otherwise, if each specific bit of content
counts one would have to track back the year each appeared in the
repository or just guess (often wrongly) and add also years predating
its existence. That said, I have no problem with changing the rules I
followed so far...

Paolo.

Patch

Index: libsupc++/Makefile.am
===================================================================
--- libsupc++/Makefile.am	(revision 164901)
+++ libsupc++/Makefile.am	(working copy)
@@ -43,6 +43,7 @@  endif
 sources = \
 	array_type_info.cc \
 	atexit_arm.cc \
+	bad_alloc.cc \
 	bad_cast.cc \
 	bad_typeid.cc \
 	class_type_info.cc \
Index: libsupc++/new_handler.cc
===================================================================
--- libsupc++/new_handler.cc	(revision 164901)
+++ libsupc++/new_handler.cc	(working copy)
@@ -1,7 +1,7 @@ 
 // Implementation file for the -*- C++ -*- dynamic memory management header.
 
 // Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-// 2005, 2006, 2007, 2009
+// 2005, 2006, 2007, 2009, 2010
 // Free Software Foundation
 //
 // This file is part of GCC.
@@ -40,10 +40,3 @@  std::set_new_handler (new_handler handle
   return prev_handler;
 }
 
-std::bad_alloc::~bad_alloc() throw() { }
-
-const char* 
-std::bad_alloc::what() const throw()
-{
-  return "std::bad_alloc";
-}
Index: libsupc++/bad_alloc.cc
===================================================================
--- libsupc++/bad_alloc.cc	(revision 0)
+++ libsupc++/bad_alloc.cc	(revision 0)
@@ -0,0 +1,36 @@ 
+// Implementation file for the -*- C++ -*- dynamic memory management header.
+
+// Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+// 2005, 2006, 2007, 2009, 2010
+// Free Software Foundation
+//
+// This file is part of GCC.
+//
+// GCC 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 3, or (at your option)
+// any later version.
+//
+// GCC 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.
+//
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "new"
+
+std::bad_alloc::~bad_alloc() throw() { }
+
+const char* 
+std::bad_alloc::what() const throw()
+{
+  return "std::bad_alloc";
+}