diff options
| author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-01-18 11:22:10 +0000 |
|---|---|---|
| committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-01-18 11:22:10 +0000 |
| commit | c98ffa6dcde2172b9df8fca62162e71bc6c22371 (patch) | |
| tree | f5eeca6e0ce57ed0dbc5bf6b1f539db803ed664c /libstdc++-v3/libsupc++ | |
| parent | 10c77d2b4d6c2244dd7fba02f80733c03c6c4b20 (diff) | |
| download | ppe42-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.cc | 5 | ||||
| -rw-r--r-- | libstdc++-v3/libsupc++/eh_globals.cc | 17 |
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); |

