From: Mark Mitchell Date: Wed, 9 May 2007 05:21:36 +0000 (+0000) Subject: cxxabi.h (_GLIBCXX_NOTHROW): New macro. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=357480cec516f0c3e2ad527bd944dde9ad39bdab;p=gcc.git cxxabi.h (_GLIBCXX_NOTHROW): New macro. * libstdc++-v3/libsupc++/cxxabi.h (_GLIBCXX_NOTHROW): New macro. (__cxa_atexit): Use it. * testsuite/lib/libstdc++.exp (v3_target_compile_as_c): For installed-tree testing, search more include directories. From-SVN: r124565 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a7f62f99ed6..2e8282eba07 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2007-05-07 Mark Mitchell + + * libstdc++-v3/libsupc++/cxxabi.h (_GLIBCXX_NOTHROW): New macro. + (__cxa_atexit): Use it. + + * testsuite/lib/libstdc++.exp (v3_target_compile_as_c): For + installed-tree testing, search more include directories. + 2007-05-08 Benjamin Kosnik * include/std/type_traits (make_signed): Remove specializations @@ -94,8 +102,12 @@ * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Likewise. +>>>>>>> .r124554 2007-05-07 Mark Mitchell + * testsuite/lib/libstdc++.exp (v3_target_compile_as_c): For + installed-tree testing, search more include directories. + * testsuite/22_locale/num_put/put/char/14220.cc: XFAIL on Solaris 2.10. * testsuite/22_locale/num_put/put/wchar_t/14220.cc: Likewise. diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h index 7f0307834d3..d75515e07c4 100644 --- a/libstdc++-v3/libsupc++/cxxabi.h +++ b/libstdc++-v3/libsupc++/cxxabi.h @@ -52,6 +52,12 @@ #include #include +#ifdef __cplusplus +#define _GLIBCXX_NOTHROW throw() +#else +#define _GLIBCXX_NOTHROW __attribute__((nothrow)) +#endif + #ifdef __cplusplus namespace __cxxabiv1 { @@ -137,11 +143,7 @@ namespace __cxxabiv1 // DSO destruction. int - __cxa_atexit(void (*)(void*), void*, void*) -#ifdef __cplusplus - throw () -#endif - ; + __cxa_atexit(void (*)(void*), void*, void*) _GLIBCXX_NOTHROW; int __cxa_finalize(void*); diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index b990f46bed5..7a27ad1977d 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -398,6 +398,9 @@ proc v3_target_compile_as_c { source dest type options } { # the includes variable is not likely to include the necessary # info. if { ![file exists $flags_file] } { + # ??? We need a --print-include-dirs option to GCC, so that + # we can avoid these hacks. The heuristics here will not + # work with non-standard --with-includedir= options. set version [remote_exec host ${cc} -dumpversion] # Remove the trailing newline from the output. set version [string trimright [lindex $version 1]] @@ -406,6 +409,13 @@ proc v3_target_compile_as_c { source dest type options } { set comp_base_dir [remote_exec host ${cc} --print-prog-name=cc1] set comp_base_dir [lindex $comp_base_dir 1] set comp_base_dir [file dirname [file dirname [file dirname [file dirname [file dirname $comp_base_dir]]]]] + # For a cross compiler, the header files will be located in a + # machine-specific subdirectory. + set crossbase "${comp_base_dir}/${machine}/include/c++/${version}" + set crosstarget "${crossbase}/${machine}" + set cc_final [concat $cc_final "-I$crossbase -I$crosstarget"] + # For a native compiler, the header files will be located at + # the top level. set includesbase "${comp_base_dir}/include/c++/${version}" set includestarget "${includesbase}/${machine}" set cc_final [concat $cc_final "-I$includesbase -I$includestarget"]