From 3c6430a3146d2961f538cc733930118318493a0e Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Mon, 9 Oct 2006 23:53:35 +0000 Subject: [PATCH] re PR libstdc++/29095 (cxxabi.h __cxa_cdtor_type not declared when included from "C") 2006-10-09 Benjamin Kosnik PR libstdc++/29095 * libsupc++/cxxabi.h (__cxa_cdtor_type): Explicit "C" linkage. * config/cpu/arm/cxxabi_tweaks.h: Same. * config/cpu/generic/cxxabi_tweaks.h: Same. * testsuite/abi: Add. * testsuite/abi/header_cxxabi.cc: New. * testsuite/demangle: Move... * testsuite/abi/demangle: ...here. * testsuite/libstdc++-dg/conformance.exp: Adjust testsuite file calculation. * scripts/create_testsuite_files: Same. * testsuite/lib/libstdc++.exp (v3_target_compile_as_c): New. (libstdc++-dg-test): Use it. From-SVN: r117589 --- libstdc++-v3/ChangeLog | 16 ++++++ libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h | 7 ++- .../config/cpu/generic/cxxabi_tweaks.h | 7 ++- libstdc++-v3/libsupc++/cxxabi.h | 6 +-- libstdc++-v3/scripts/create_testsuite_files | 2 +- .../{ => abi}/demangle/abi_examples/01.cc | 0 .../{ => abi}/demangle/abi_examples/02.cc | 0 .../{ => abi}/demangle/abi_examples/03.cc | 0 .../{ => abi}/demangle/abi_examples/04.cc | 0 .../{ => abi}/demangle/abi_examples/05.cc | 0 .../{ => abi}/demangle/abi_examples/06.cc | 0 .../{ => abi}/demangle/abi_examples/07.cc | 0 .../{ => abi}/demangle/abi_examples/08.cc | 0 .../{ => abi}/demangle/abi_examples/09.cc | 0 .../{ => abi}/demangle/abi_examples/10.cc | 0 .../{ => abi}/demangle/abi_examples/11.cc | 0 .../{ => abi}/demangle/abi_examples/12.cc | 0 .../{ => abi}/demangle/abi_examples/13.cc | 0 .../{ => abi}/demangle/abi_examples/14.cc | 0 .../{ => abi}/demangle/abi_examples/15.cc | 0 .../{ => abi}/demangle/abi_examples/16.cc | 0 .../{ => abi}/demangle/abi_examples/17.cc | 0 .../{ => abi}/demangle/abi_examples/18.cc | 0 .../{ => abi}/demangle/abi_examples/19.cc | 0 .../{ => abi}/demangle/abi_examples/20.cc | 0 .../{ => abi}/demangle/abi_examples/21.cc | 0 .../{ => abi}/demangle/abi_examples/22.cc | 0 .../{ => abi}/demangle/abi_examples/23.cc | 0 .../{ => abi}/demangle/abi_examples/24.cc | 0 .../{ => abi}/demangle/abi_examples/25.cc | 0 .../{ => abi}/demangle/abi_examples/26.cc | 0 .../{ => abi}/demangle/abi_text/01.cc | 0 .../{ => abi}/demangle/abi_text/02.cc | 0 .../{ => abi}/demangle/abi_text/03.cc | 0 .../{ => abi}/demangle/abi_text/04.cc | 0 .../{ => abi}/demangle/abi_text/05.cc | 0 .../{ => abi}/demangle/abi_text/06.cc | 0 .../{ => abi}/demangle/abi_text/07.cc | 0 .../{ => abi}/demangle/abi_text/08.cc | 0 .../{ => abi}/demangle/abi_text/09.cc | 0 .../{ => abi}/demangle/abi_text/10.cc | 0 .../{ => abi}/demangle/abi_text/11.cc | 0 .../{ => abi}/demangle/abi_text/12.cc | 0 .../{ => abi}/demangle/abi_text/13.cc | 0 .../{ => abi}/demangle/abi_text/14.cc | 0 .../{ => abi}/demangle/regression/3111-1.cc | 0 .../{ => abi}/demangle/regression/3111-2.cc | 0 .../{ => abi}/demangle/regression/7986-01.cc | 0 .../{ => abi}/demangle/regression/7986-02.cc | 0 .../{ => abi}/demangle/regression/7986-03.cc | 0 .../{ => abi}/demangle/regression/7986-04.cc | 0 .../{ => abi}/demangle/regression/7986-05.cc | 0 .../{ => abi}/demangle/regression/7986-06.cc | 0 .../{ => abi}/demangle/regression/7986-07.cc | 0 .../{ => abi}/demangle/regression/7986-08.cc | 0 .../{ => abi}/demangle/regression/7986-09.cc | 0 .../{ => abi}/demangle/regression/7986-10.cc | 0 .../{ => abi}/demangle/regression/7986-11.cc | 0 .../{ => abi}/demangle/regression/7986-12.cc | 0 .../{ => abi}/demangle/regression/7986.cc | 0 .../{ => abi}/demangle/regression/8897.cc | 0 .../{ => abi}/demangle/regression/cw-01.cc | 0 .../{ => abi}/demangle/regression/cw-02.cc | 0 .../{ => abi}/demangle/regression/cw-03.cc | 0 .../{ => abi}/demangle/regression/cw-04.cc | 0 .../{ => abi}/demangle/regression/cw-05.cc | 0 .../{ => abi}/demangle/regression/cw-06.cc | 0 .../{ => abi}/demangle/regression/cw-07.cc | 0 .../{ => abi}/demangle/regression/cw-08.cc | 0 .../{ => abi}/demangle/regression/cw-09.cc | 0 .../{ => abi}/demangle/regression/cw-10.cc | 0 .../{ => abi}/demangle/regression/cw-11.cc | 0 .../{ => abi}/demangle/regression/cw-12.cc | 0 .../{ => abi}/demangle/regression/cw-13.cc | 0 .../{ => abi}/demangle/regression/cw-14.cc | 0 .../{ => abi}/demangle/regression/cw-15.cc | 0 .../{ => abi}/demangle/regression/cw-16.cc | 0 .../{ => abi}/demangle/regression/old.cc | 0 libstdc++-v3/testsuite/abi/header_cxxabi.c | 22 ++++++++ libstdc++-v3/testsuite/lib/libstdc++.exp | 51 ++++++++++++++----- .../testsuite/libstdc++-dg/conformance.exp | 4 +- 81 files changed, 93 insertions(+), 22 deletions(-) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/01.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/02.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/03.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/04.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/05.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/06.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/07.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/08.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/09.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/10.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/11.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/12.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/13.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/14.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/15.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/16.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/17.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/18.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/19.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/20.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/21.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/22.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/23.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/24.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/25.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_examples/26.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/01.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/02.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/03.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/04.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/05.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/06.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/07.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/08.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/09.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/10.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/11.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/12.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/13.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/abi_text/14.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/3111-1.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/3111-2.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-01.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-02.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-03.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-04.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-05.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-06.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-07.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-08.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-09.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-10.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-11.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986-12.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/7986.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/8897.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-01.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-02.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-03.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-04.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-05.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-06.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-07.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-08.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-09.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-10.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-11.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-12.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-13.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-14.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-15.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/cw-16.cc (100%) rename libstdc++-v3/testsuite/{ => abi}/demangle/regression/old.cc (100%) create mode 100644 libstdc++-v3/testsuite/abi/header_cxxabi.c diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index f9123f136f1..c88fb9984b1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,19 @@ +2006-10-09 Benjamin Kosnik + + PR libstdc++/29095 + * libsupc++/cxxabi.h (__cxa_cdtor_type): Explicit "C" linkage. + * config/cpu/arm/cxxabi_tweaks.h: Same. + * config/cpu/generic/cxxabi_tweaks.h: Same. + * testsuite/abi: Add. + * testsuite/abi/header_cxxabi.cc: New. + * testsuite/demangle: Move... + * testsuite/abi/demangle: ...here. + * testsuite/libstdc++-dg/conformance.exp: Adjust testsuite file + calculation. + * scripts/create_testsuite_files: Same. + * testsuite/lib/libstdc++.exp (v3_target_compile_as_c): New. + (libstdc++-dg-test): Use it. + 2006-10-09 Paolo Carlini PR libstdc++/28277 (partial: __add_grouping) diff --git a/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h b/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h index 76c8a36400e..f8a1820b734 100644 --- a/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h +++ b/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h @@ -1,6 +1,6 @@ // Control various target specific ABI tweaks. ARM version. -// Copyright (C) 2004 Free Software Foundation, Inc. +// Copyright (C) 2004, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -33,6 +33,8 @@ #ifdef __cplusplus namespace __cxxabiv1 { + extern "C" + { #endif #ifdef __ARM_EABI__ @@ -67,7 +69,8 @@ namespace __cxxabiv1 #endif //!__ARM_EABI__ #ifdef __cplusplus + } } // namespace __cxxabiv1 #endif -#endif // __cxxabiv1 +#endif diff --git a/libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h b/libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h index 4b74805d8b0..4b1e7320851 100644 --- a/libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h +++ b/libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h @@ -1,6 +1,6 @@ // Control various target specific ABI tweaks. Generic version. -// Copyright (C) 2004 Free Software Foundation, Inc. +// Copyright (C) 2004, 2006 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -33,6 +33,8 @@ #ifdef __cplusplus namespace __cxxabiv1 { + extern "C" + { #endif // The generic ABI uses the first byte of a 64-bit guard variable. @@ -47,7 +49,8 @@ namespace __cxxabiv1 typedef void __cxa_cdtor_return_type; #ifdef __cplusplus + } } // namespace __cxxabiv1 #endif -#endif // __cxxabiv1 +#endif diff --git a/libstdc++-v3/libsupc++/cxxabi.h b/libstdc++-v3/libsupc++/cxxabi.h index e7b2857bb22..c0418d82588 100644 --- a/libstdc++-v3/libsupc++/cxxabi.h +++ b/libstdc++-v3/libsupc++/cxxabi.h @@ -1,6 +1,6 @@ // new abi support -*- C++ -*- -// Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc. +// Copyright (C) 2000, 2002, 2003, 2004, 2006 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -54,12 +54,12 @@ #ifdef __cplusplus namespace __cxxabiv1 { - typedef __cxa_cdtor_return_type (*__cxa_cdtor_type)(void *); - extern "C" { #endif + typedef __cxa_cdtor_return_type (*__cxa_cdtor_type)(void *); + // Allocate array. void* __cxa_vec_new(size_t __element_count, size_t __element_size, diff --git a/libstdc++-v3/scripts/create_testsuite_files b/libstdc++-v3/scripts/create_testsuite_files index 74b2455d061..8d87e09d017 100755 --- a/libstdc++-v3/scripts/create_testsuite_files +++ b/libstdc++-v3/scripts/create_testsuite_files @@ -32,7 +32,7 @@ cd $srcdir # This is the ugly version of "everything but the current directory". It's # what has to happen when find(1) doesn't support -mindepth, or -xtype. dlist=`echo [0-9][0-9]*` -dlist="$dlist backward demangle ext performance thread tr1" +dlist="$dlist abi backward ext performance thread tr1" find $dlist "(" -type f -o -type l ")" -name "*.cc" -print > $tmp.01 find $dlist "(" -type f -o -type l ")" -name "*.c" -print > $tmp.02 cat $tmp.01 $tmp.02 | sort > $tmp.1 diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/01.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/01.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/02.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/02.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/03.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/03.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/04.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/04.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/05.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/05.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/06.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/06.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/07.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/07.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/08.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/08.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/09.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/09.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/10.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/10.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/11.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/11.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/12.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/12.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/13.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/13.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/14.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/14.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/15.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/15.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/16.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/16.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/17.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/17.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/18.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/18.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/19.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/19.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/20.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/20.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/21.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/21.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/22.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/22.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/23.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/23.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/24.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/24.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/25.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/25.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/26.cc b/libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_examples/26.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/01.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/01.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/02.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/02.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/03.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/03.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/04.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/04.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/05.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/05.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/06.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/06.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/07.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/07.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/08.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/08.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/09.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/09.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/10.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/10.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/11.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/11.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/12.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/12.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/13.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/13.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc diff --git a/libstdc++-v3/testsuite/demangle/abi_text/14.cc b/libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/abi_text/14.cc rename to libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/3111-1.cc b/libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/3111-1.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/3111-2.cc b/libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/3111-2.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-01.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-01.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-02.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-02.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-03.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-03.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-04.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-04.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-05.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-05.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-06.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-06.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-07.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-07.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-08.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-08.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-09.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-09.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-10.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-10.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-11.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-11.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-12.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986-12.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/7986.cc b/libstdc++-v3/testsuite/abi/demangle/regression/7986.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/7986.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/7986.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/8897.cc b/libstdc++-v3/testsuite/abi/demangle/regression/8897.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/8897.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/8897.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-01.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-01.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-02.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-02.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-03.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-03.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-04.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-04.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-05.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-05.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-06.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-06.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-07.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-07.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-08.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-08.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-09.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-09.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-10.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-10.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-11.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-11.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-12.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-12.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-13.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-13.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-14.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-14.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-15.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-15.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/cw-16.cc b/libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/cw-16.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc diff --git a/libstdc++-v3/testsuite/demangle/regression/old.cc b/libstdc++-v3/testsuite/abi/demangle/regression/old.cc similarity index 100% rename from libstdc++-v3/testsuite/demangle/regression/old.cc rename to libstdc++-v3/testsuite/abi/demangle/regression/old.cc diff --git a/libstdc++-v3/testsuite/abi/header_cxxabi.c b/libstdc++-v3/testsuite/abi/header_cxxabi.c new file mode 100644 index 00000000000..de6ae7ec6ca --- /dev/null +++ b/libstdc++-v3/testsuite/abi/header_cxxabi.c @@ -0,0 +1,22 @@ +// { dg-do compile } +// { dg-options "-x c" } +// Copyright (C) 2006 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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 2, or (at your option) +// any later version. + +// This library 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. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// Must be compilable as "C" +#include diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp index 0d059cf1d76..9aa32665c09 100644 --- a/libstdc++-v3/testsuite/lib/libstdc++.exp +++ b/libstdc++-v3/testsuite/lib/libstdc++.exp @@ -272,6 +272,7 @@ proc libstdc++-dg-test { prog do_what extra_tool_flags } { } } + set select_compile "v3_target_compile" set options "" if { $extra_tool_flags != "" } { verbose -log "extra_tool_flags are:" @@ -279,16 +280,17 @@ proc libstdc++-dg-test { prog do_what extra_tool_flags } { if { [string first "-x c" $extra_tool_flags ] != -1 } { # Short-circut a bunch of complicated goo here for the # special case of compiling a test file as a "C" file, not - # as C++: just use target_compile, instead of the usual - # gimmicks. + # as C++. Why? So -nostdc++ doesn't trip us up. So all the + # extra object files don't trip us up. So automatically + # linking in libstdc++ doesn't happen. So CXXFLAGS don't + # error. verbose -log "compiling and executing as C, not C++" - set compile_type "executable" - set output_file "./[file rootname [file tail $prog]].exe" - remote_file build delete $output_file; - lappend options "additional_flags=$extra_tool_flags" - set comp_output [target_compile "$prog" "$output_file" "$compile_type" $options]; - set comp_output [ prune_g++_output $comp_output ]; - return [list $comp_output $output_file] + + set edit_tool_flags $extra_tool_flags + regsub -all ".x c" $edit_tool_flags "" edit_tool_flags + lappend options "additional_flags=$edit_tool_flags" + + set select_compile "v3_target_compile_as_c" } else { lappend options "additional_flags=$extra_tool_flags" } @@ -296,7 +298,7 @@ proc libstdc++-dg-test { prog do_what extra_tool_flags } { # There is a libstdc++_compile made for us by default (via the tool- # and-target file), but the defaults are lacking in goodness. - set comp_output [v3_target_compile "$prog" "$output_file" "$compile_type" $options]; + set comp_output [$select_compile "$prog" "$output_file" "$compile_type" $options]; set comp_output [ prune_g++_output $comp_output ]; return [list $comp_output $output_file] @@ -323,7 +325,6 @@ proc v3_target_compile { source dest type options } { global cxxflags global cxxldflags global includes - global blddir global v3-test_objs if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { @@ -340,8 +341,9 @@ proc v3_target_compile { source dest type options } { # Flag setting based on type argument. if { $type == "executable" } { # Link the support objects into executables. - set cxx_final [concat $cxx_final ${v3-test_objs}] set cxx_final [concat $cxx_final $cxxldflags] + # lappend options "additional_flags=./libtestc++.a" + set cxx_final [concat $cxx_final ${v3-test_objs}] } else { if { $type == "sharedlib" } { # Don't link in anything. @@ -356,6 +358,31 @@ proc v3_target_compile { source dest type options } { } +# Called from libstdc++-dg-test above, but only for "C" compilation. +# Calls back into system's target_compile to actually do the work. +proc v3_target_compile_as_c { source dest type options } { + global gluefile + global wrap_flags + global includes + + if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { + lappend options "libs=${gluefile}" + lappend options "ldflags=${wrap_flags}" + } + + set tname [target_info name] + set cc_final [board_info $tname compiler] + set cxxlibglossflags [libgloss_link_flags] + set cc_final [concat $cc_final $cxxlibglossflags] + set cc_final [concat $cc_final $includes] + regsub -all ".nostdinc.." $cc_final "" cc_final + + lappend options "compiler=$cc_final" + lappend options "timeout=600" + + return [target_compile $source $dest $type $options] +} + # Build the support objects linked in with the libstdc++ tests. In # addition, set v3-wchar_t, v3-threads, v3-test_objs, and v3-symver # appropriately. diff --git a/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp b/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp index a05ad3adb3f..6a05a27ff8d 100644 --- a/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp +++ b/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp @@ -53,12 +53,12 @@ if {[info exists tests_file] && [file exists $tests_file]} { } else { # Find directories that might have tests. set subdirs [glob "$srcdir/\[0-9\]\[0-9\]*"] + lappend subdirs "$srcdir/abi" lappend subdirs "$srcdir/backward" - lappend subdirs "$srcdir/demangle" lappend subdirs "$srcdir/ext" lappend subdirs "$srcdir/performance" - lappend subdirs "$srcdir/tr1" lappend subdirs "$srcdir/thread" + lappend subdirs "$srcdir/tr1" verbose "subdirs are $subdirs" # Find all the tests.