summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/libsupc++
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-18 11:22:10 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-18 11:22:10 +0000
commitc98ffa6dcde2172b9df8fca62162e71bc6c22371 (patch)
treef5eeca6e0ce57ed0dbc5bf6b1f539db803ed664c /libstdc++-v3/libsupc++
parent10c77d2b4d6c2244dd7fba02f80733c03c6c4b20 (diff)
downloadppe42-gcc-c98ffa6dcde2172b9df8fca62162e71bc6c22371.tar.gz
ppe42-gcc-c98ffa6dcde2172b9df8fca62162e71bc6c22371.zip
2006-01-18 Perry Smith <pedz@easesoftware.net>
PR libstdc++/25823 PR libstdc++/25824 * libsupc++/eh_alloc.cc: Fix return type of memset declaration. * libsupc++/eh_globals.cc: If !_GLIBCXX_HOSTED declare malloc and free. 2006-01-18 Paolo Carlini <pcarlini@suse.de> * include/ext/pb_assoc/detail/value_type_adapter/ value_type_adapter.hpp: Include <tr1/type_traits>. * include/ext/pb_assoc/detail/value_type_adapter/ it_value_type_traits.hpp (it_value_type_traits_<>::value_type_holder): Use tr1::aligned_storage and tr1::alignment_of. (it_value_type_traits_<>::buf_t): Remove. (it_value_type_traits_<>::make_valid, recast): Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109883 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/libsupc++')
-rw-r--r--libstdc++-v3/libsupc++/eh_alloc.cc5
-rw-r--r--libstdc++-v3/libsupc++/eh_globals.cc17
2 files changed, 17 insertions, 5 deletions
diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc
index b9097812a75..9a922af9c2a 100644
--- a/libstdc++-v3/libsupc++/eh_alloc.cc
+++ b/libstdc++-v3/libsupc++/eh_alloc.cc
@@ -1,5 +1,6 @@
// -*- C++ -*- Allocate exception objects.
-// Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// Free Software Foundation, Inc.
//
// This file is part of GCC.
//
@@ -49,7 +50,7 @@ using std::memcpy;
// -- but for now, we assume that they are.
extern "C" void *malloc (std::size_t);
extern "C" void free(void *);
-extern "C" int memset (void *, int, std::size_t);
+extern "C" void *memset (void *, int, std::size_t);
#endif
using namespace __cxxabiv1;
diff --git a/libstdc++-v3/libsupc++/eh_globals.cc b/libstdc++-v3/libsupc++/eh_globals.cc
index 9b7e916716d..5f44e13a7a1 100644
--- a/libstdc++-v3/libsupc++/eh_globals.cc
+++ b/libstdc++-v3/libsupc++/eh_globals.cc
@@ -1,5 +1,6 @@
// -*- C++ -*- Manage the thread-local exception globals.
-// Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// Free Software Foundation, Inc.
//
// This file is part of GCC.
//
@@ -34,6 +35,16 @@
#include "unwind-cxx.h"
#include "bits/gthr.h"
+#if _GLIBCXX_HOSTED
+using std::free;
+using std::malloc;
+#else
+// In a freestanding environment, these functions may not be
+// available -- but for now, we assume that they are.
+extern "C" void *malloc (std::size_t);
+extern "C" void free(void *);
+#endif
+
using namespace __cxxabiv1;
#if _GLIBCXX_HAVE_TLS
@@ -81,7 +92,7 @@ eh_globals_dtor(void* ptr)
_Unwind_DeleteException(&exn->unwindHeader);
exn = next;
}
- std::free(ptr);
+ free(ptr);
}
}
@@ -125,7 +136,7 @@ __cxxabiv1::__cxa_get_globals() throw()
g = static_cast<__cxa_eh_globals*>(__gthread_getspecific(init._M_key));
if (!g)
{
- void* v = std::malloc(sizeof(__cxa_eh_globals));
+ void* v = malloc(sizeof(__cxa_eh_globals));
if (v == 0 || __gthread_setspecific(init._M_key, v) != 0)
std::terminate();
g = static_cast<__cxa_eh_globals*>(v);
OpenPOWER on IntegriCloud