]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
tests: Test addr2line -i with lexical blocks present
authorJosh Stone <jistone@redhat.com>
Fri, 12 Dec 2014 01:19:23 +0000 (17:19 -0800)
committerJosh Stone <jistone@redhat.com>
Sat, 13 Dec 2014 21:31:09 +0000 (13:31 -0800)
This test is for the fix in commit aecdf2670c02, but it was hampered by
unlucky sorting of line records.  With the new stable sort, the test now
gets the desired line numbers.

Signed-off-by: Josh Stone <jistone@redhat.com>
tests/ChangeLog
tests/Makefile.am
tests/run-addr2line-i-lex-test.sh [new file with mode: 0755]
tests/testfile-lex-inlines.bz2 [new file with mode: 0755]

index 9d229c9d639c5b2972958311cc772850fa9a82d5..85826f339f5405e0fccd588507fed58d7f8f0d8a 100644 (file)
@@ -1,3 +1,11 @@
+2014-12-11  Josh Stone  <jistone@redhat.com>
+
+       * run-addr2line-i-lex-test.sh: New test.
+       * testfile-lex-inlines.bz2: New testfile.
+       * Makefile.am (EXTRA_DIST): Add run-addr2line-i-lex-test.sh and
+       testfile-lex-inlines.bz2.
+       (TESTS): Add run-addr2line-i-lex-test.sh.
+
 2014-12-10  Josh Stone  <jistone@redhat.com>
 
        * run-addr2line-i-test.sh: Test 0x5f0 to make sure linkage_name is
index 5b381130616bf25817dac0fbc444ded968a6341b..bdd2997d955784de91f9c05368c9e5314773e029 100644 (file)
@@ -101,7 +101,8 @@ TESTS = run-arextract.sh run-arsymtest.sh newfile test-nlist \
        run-test-archive64.sh run-readelf-vmcoreinfo.sh \
        run-readelf-mixed-corenote.sh run-dwfllines.sh \
        run-dwfl-report-elf-align.sh run-addr2line-test.sh \
-       run-addr2line-i-test.sh run-varlocs.sh run-funcretval.sh \
+       run-addr2line-i-test.sh run-addr2line-i-lex-test.sh \
+       run-varlocs.sh run-funcretval.sh \
        run-backtrace-native.sh run-backtrace-data.sh run-backtrace-dwarf.sh \
        run-backtrace-native-biarch.sh run-backtrace-native-core.sh \
        run-backtrace-native-core-biarch.sh run-backtrace-core-x86_64.sh \
@@ -243,6 +244,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh \
             testfilenolines.bz2 test-core-lib.so.bz2 test-core.core.bz2 \
             test-core.exec.bz2 run-addr2line-test.sh \
             run-addr2line-i-test.sh testfile-inlines.bz2 \
+            run-addr2line-i-lex-test.sh testfile-lex-inlines.bz2 \
             testfileppc32.bz2 testfileppc64.bz2 \
             testfiles390.bz2 testfiles390x.bz2 \
             testfilearm.bz2 testfileaarch64.bz2 \
diff --git a/tests/run-addr2line-i-lex-test.sh b/tests/run-addr2line-i-lex-test.sh
new file mode 100755 (executable)
index 0000000..c391fd9
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2014 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/>.
+
+. $srcdir/test-subr.sh
+
+# // g++ x.cpp -g -fPIC -olibx.so -shared -O3 -fvisibility=hidden
+#
+# void foobar()
+# {
+#   __asm__ ( "nop" ::: );
+# }
+#
+# void foo()
+# {
+#   {
+#     void (*bar) () = foobar;
+#     bar();
+#   }
+# }
+
+testfiles testfile-lex-inlines
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000680 <<\EOF
+/tmp/x.cpp:5
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000681 <<\EOF
+/tmp/x.cpp:5
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000690 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:12
+EOF
+
+testrun_compare ${abs_top_builddir}/src/addr2line -i -e testfile-lex-inlines 0x0000000000000691 <<\EOF
+/tmp/x.cpp:5
+/tmp/x.cpp:12
+EOF
+
+# All together now (plus function names).
+testrun_compare ${abs_top_builddir}/src/addr2line -f -i -e testfile-lex-inlines 0x0000000000000680 0x0000000000000681 0x0000000000000690 0x0000000000000691 <<\EOF
+_Z6foobarv
+/tmp/x.cpp:5
+_Z6foobarv
+/tmp/x.cpp:5
+foobar inlined at /tmp/x.cpp:12 in _Z3foov
+/tmp/x.cpp:5
+_Z3foov
+/tmp/x.cpp:12
+foobar inlined at /tmp/x.cpp:12 in _Z3foov
+/tmp/x.cpp:5
+_Z3foov
+/tmp/x.cpp:12
+EOF
+
+exit 0
diff --git a/tests/testfile-lex-inlines.bz2 b/tests/testfile-lex-inlines.bz2
new file mode 100755 (executable)
index 0000000..716e792
Binary files /dev/null and b/tests/testfile-lex-inlines.bz2 differ