Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/modules/uClibcxx/exception.cpp

Source at commit 1146 created 12 years 11 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*Copyright (C) 2004 Garrett A. Kajmowicz
2
3This file is part of the uClibc++ Library.
4
5This library is free software; you can redistribute it and/or
6modify it under the terms of the GNU Lesser General Public
7License as published by the Free Software Foundation; either
8version 2.1 of the License, or (at your option) any later version.
9
10This library is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public
16License along with this library; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19*/
20
21#include <exception>
22#include <func_exception>
23#include <stdexcept>
24#include <cstdlib>
25
26//We can't do this yet because gcc is too stupid to be able to handle
27//different implementations of exception class.
28
29//#undef __UCLIBCXX_EXCEPTION_SUPPORT__
30
31#ifdef __UCLIBCXX_EXCEPTION_SUPPORT__
32
33namespace std{
34_UCXXEXPORT static const char * __std_exception_what_value = "exception";
35
36//We are providing our own versions to be sneaky
37
38
39_UCXXEXPORT exception::~exception() throw(){
40//Empty function
41}
42
43_UCXXEXPORT const char* exception::what() const throw(){
44return __std_exception_what_value;
45}
46
47_UCXXEXPORT bad_exception::~bad_exception() throw(){
48
49}
50
51}
52#else
53namespace std{
54_UCXXEXPORT exception::~exception() {
55abort();
56}
57
58_UCXXEXPORT const char* exception::what() const {
59abort();
60}
61
62_UCXXEXPORT bad_exception::~bad_exception() {
63abort();
64}
65
66}
67#endif
68
69void
70std::terminate()
71{
72#ifdef __UCLIBCXX_EXCEPTION_SUPPORT__
73 try
74 {
75#endif // __UCLIBCXX_EXCEPTION_SUPPORT__
76 (*std::terminate_handler())();
77 // handler should not return
78abort ();
79#ifdef __UCLIBCXX_EXCEPTION_SUPPORT__
80 }
81 catch (...)
82 {
83 // handler should not throw exception
84 abort ();
85 }
86#endif // __UCLIBCXX_EXCEPTION_SUPPORT__
87}
88

Archive Download this file

Revision: 1146