This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 4/4] tests: Add C++ self test binary.


Only build and tested by self tests if a g++ with C++x0 is available.
Almost empty C++ program, can be extended to test more features.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 ChangeLog                      |   4 ++
 configure.ac                   |   5 ++
 m4/ChangeLog                   |   4 ++
 m4/ax_cxx_compile_stdcxx_0x.m4 | 107 +++++++++++++++++++++++++++++++++++++++++
 tests/ChangeLog                |  10 ++++
 tests/Makefile.am              |   6 +++
 tests/cxx-various.cc           |  65 +++++++++++++++++++++++++
 tests/test-subr.sh             |  12 +++++
 tests/testfile-cxx-various.bz2 | Bin 0 -> 11377 bytes
 9 files changed, 213 insertions(+)
 create mode 100644 m4/ax_cxx_compile_stdcxx_0x.m4
 create mode 100644 tests/cxx-various.cc
 create mode 100755 tests/testfile-cxx-various.bz2

diff --git a/ChangeLog b/ChangeLog
index 5842492..3be157c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2012-07-24  Mark Wielaard  <mjw@redhat.com>
 
+	* configure.ac: Add AX_CXX_COMPILE_STDCXX_0X check.
+
+2012-07-24  Mark Wielaard  <mjw@redhat.com>
+
 	* TODO: Add note on shdrs after elf_cntl (ELF_C_FDREAD).
 
 2012-06-22  Mark Wielaard  <mjw@redhat.com>
diff --git a/configure.ac b/configure.ac
index 31ab21c..088dde3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -72,6 +72,11 @@ AC_PROG_RANLIB
 AC_PROG_YACC
 AM_PROG_LEX
 
+# Check whether we can use g++ with -std=c++0x for the test.
+AC_PROG_CXX
+AX_CXX_COMPILE_STDCXX_0X
+AM_CONDITIONAL(HAVE_STDCXX_0X, test "x$ax_cv_cxx_compile_cxx0x_cxx" == "xyes")
+
 AC_CACHE_CHECK([for gcc with C99 support], ac_cv_c99, [dnl
 old_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -std=gnu99"
diff --git a/m4/ChangeLog b/m4/ChangeLog
index d4f2bc1..af717c4 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,7 @@
+2012-07-24  Mark Wielaard  <mjw@redhat.com>
+
+	* ax_cxx_compile_stdcxx_0x.m4: Add from autoconf-archive.
+
 2010-04-14  Roland McGrath  <roland@redhat.com>
 
 	* gettext.m4: Upgrade to gettext-0.17.
diff --git a/m4/ax_cxx_compile_stdcxx_0x.m4 b/m4/ax_cxx_compile_stdcxx_0x.m4
new file mode 100644
index 0000000..a4e556f
--- /dev/null
+++ b/m4/ax_cxx_compile_stdcxx_0x.m4
@@ -0,0 +1,107 @@
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_0x.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX_0X
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++0x
+#   standard.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 7
+
+AU_ALIAS([AC_CXX_COMPILE_STDCXX_0X], [AX_CXX_COMPILE_STDCXX_0X])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_0X], [
+  AC_CACHE_CHECK(if g++ supports C++0x features without additional flags,
+  ax_cv_cxx_compile_cxx0x_native,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_native=yes, ax_cv_cxx_compile_cxx0x_native=no)
+  AC_LANG_RESTORE
+  ])
+
+  AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x,
+  ax_cv_cxx_compile_cxx0x_cxx,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=c++0x"
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_cxx=yes, ax_cv_cxx_compile_cxx0x_cxx=no)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  ])
+
+  AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x,
+  ax_cv_cxx_compile_cxx0x_gxx,
+  [AC_LANG_SAVE
+  AC_LANG_CPLUSPLUS
+  ac_save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -std=gnu++0x"
+  AC_TRY_COMPILE([
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);],,
+  ax_cv_cxx_compile_cxx0x_gxx=yes, ax_cv_cxx_compile_cxx0x_gxx=no)
+  CXXFLAGS="$ac_save_CXXFLAGS"
+  AC_LANG_RESTORE
+  ])
+
+  if test "$ax_cv_cxx_compile_cxx0x_native" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_cxx" = yes ||
+     test "$ax_cv_cxx_compile_cxx0x_gxx" = yes; then
+    AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
+  fi
+])
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 33535d2..64b39b6 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,13 @@
+2012-07-24  Mark Wielaard  <mjw@redhat.com>
+
+	* testfile-cxx-various.bz2: New testfile.
+	* cxx-various.cxx: New test source.
+	* Makefile.am (cxx_various_SOURCES): New.
+	(HAVE_STDCXX_0X): Add cxx-various and -std=c++0x if exists.
+	(EXTRA_DIST): Add cxx-various.cxx and testfile-cxx-various.bz2.
+	* test-subr.sh: Add testfile-cxx-various and cxx-various to
+	self_test_files if they exist.
+
 2012-07-19  Mark Wielaard  <mjw@redhat.com>
 
 	* run-readelf-unknown-self.sh: New test.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3585ce9..13f3fa1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -95,6 +95,11 @@ check_PROGRAMS += $(asm_TESTS)
 TESTS += $(asm_TESTS)
 endif
 
+if HAVE_STDCXX_0X
+check_PROGRAMS += cxx-various
+AM_CXXFLAGS = -std=c++0x
+cxx_various_SOURCES = cxx-various.cc
+endif
 
 EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     run-show-die-info.sh run-get-files.sh run-get-lines.sh \
@@ -132,6 +137,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
 	     run-readelf-test1.sh run-readelf-test2.sh run-readelf-test3.sh \
 	     run-readelf-test4.sh run-readelf-twofiles.sh \
 	     run-readelf-unknown-self.sh \
+	     cxx-various.cc testfile-cxx-various.bz2 \
 	     run-bug1-test.sh testfile28.bz2 testfile28.rdwr.bz2 \
 	     testfile29.bz2 testfile29.rdwr.bz2 \
 	     testfile30.bz2 testfile31.bz2 testfile32.bz2 testfile33.bz2 \
diff --git a/tests/cxx-various.cc b/tests/cxx-various.cc
new file mode 100644
index 0000000..5ddfc30
--- /dev/null
+++ b/tests/cxx-various.cc
@@ -0,0 +1,65 @@
+/* Test program for testing C++11 features are recognized.
+   Copyright (C) 2012 Red Hat, Inc.
+   This file is part of elfutils.
+
+   This file 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 3 of the License, or
+   (at your option) any later version.
+
+   elfutils 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 program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+// NOTE this file is the source of the binary testfile-cxx-various created
+// with g++ -std=c++0x -g -o testfile-cxx-various cxx-various.cc
+//
+// When you edit this file to add more C++ contructs either create
+// a new source file, or regenerate the binary test file.  We always
+// want to include the source code of all our test binaries.
+
+#include <iostream>
+using namespace std;
+
+// Make sure we recognize the encoding of some of the standard types.
+// char16_t and char_32_t use DW_ATE_UTF.
+char c;
+signed char sc;
+unsigned char uc;
+int i;
+float f;
+double d;
+wchar_t wc;
+char16_t c16;
+char32_t c32;
+long l;
+
+long
+standard_types_func (char ac, signed char asc, unsigned char auc,
+		     int ai, float af, double ad, wchar_t awc,
+		     char16_t ac16, char32_t ac32, long al)
+{
+  c = ac;
+  sc = asc;
+  uc = auc;
+  i = ai;
+  f = af;
+  d = ad;
+  wc = awc;
+  c16 = ac16;
+  c32 = ac32;
+  l = al;
+  return ac + asc + auc + ai + af + ad + awc + ac16 + ac32 + al;
+}
+
+int main ()
+{
+  long answer;
+  answer = standard_types_func (1, 2, 3, 4, 5.0, 6.0, 7, 8, 9, -10L);
+  cout << "answer: " << answer << endl;
+  return 0;
+}
diff --git a/tests/test-subr.sh b/tests/test-subr.sh
index 5637f62..1b9ef2c 100644
--- a/tests/test-subr.sh
+++ b/tests/test-subr.sh
@@ -109,11 +109,21 @@ self_test_files=`echo ../src/addr2line ../src/elfcmp ../src/elflint \
 ../src/size ../src/strip ../libelf/libelf.so ../libdw/libdw.so \
 ../libasm/libasm.so ../backends/libebl_*.so`
 
+# Prebuild binary in case we don't have a C++11 capable compiler around.
+extra_self_test_files=testfile-cxx-various
+self_test_files="$self_test_files $extra_self_test_files"
+
+# This file might not exist if we don't have a C++ compiler around.
+if test -f cxx-various; then
+  self_test_files="$self_test_files cxx-various"
+fi
+
 # Provide a command to run on all self-test files with testrun.
 testrun_on_self()
 {
   exit_status=0
 
+  testfiles $extra_self_test_files
   for file in $self_test_files; do
       testrun $* $file \
 	  || { echo "*** failure in $* $file"; exit_status=1; }
@@ -128,6 +138,7 @@ testrun_on_self_quiet()
 {
   exit_status=0
 
+  testfiles $extra_self_test_files
   for file in $self_test_files; do
       testrun $* $file > /dev/null \
 	  || { echo "*** failure in $* $file"; exit_status=1; }
@@ -148,6 +159,7 @@ testrun_on_self_nomatch()
   exit_status=0
   tempfiles self_matches.out
 
+  testfiles $extra_self_test_files
   for file in $self_test_files; do
       testrun $* $file | egrep -o "$pattern" | sort -u > self_matches.out \
 	  || :
diff --git a/tests/testfile-cxx-various.bz2 b/tests/testfile-cxx-various.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..518bcf8b7023490fe31f9850f2305ea76ac3c426
GIT binary patch
literal 11377
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

literal 0
HcmV?d00001

-- 
1.7.11.2


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]