summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2018-06-01 03:46:10 +0200
committerMark Wielaard <mark@klomp.org>2018-06-01 16:40:44 +0200
commita6a783a32ee0e6428c15c87e62476b74ecd77686 (patch)
treee63f2bbcbd3a65aa8f3eb50de503f34bcfeb42e3 /tests
parent0f5b772dec3f7c6fdd99739468706956b1bd04b9 (diff)
downloadelfutils-a6a783a32ee0e6428c15c87e62476b74ecd77686.tar.gz
readelf: Fix .debug_types printing with implicit section_info.
Commit 314e9d7d "readelf: Handle .debug_info first if any other debug section needs it" disabled section_info printing if it was already handled. But section_types was an alias for section_info. So unless section_info was explicitly printed, .debug_types wasn't. Make section_types its own thing to print .debug_types and make section_info imply section_types. Add a testcase to make sure .debug_types is now printed. Signed-off-by: Mark Wielaard <mark@klomp.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog6
-rw-r--r--tests/Makefile.am2
-rwxr-xr-xtests/run-readelf-types.sh122
3 files changed, 130 insertions, 0 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 04b6e753..e3599b24 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,5 +1,11 @@
2018-05-31 Mark Wielaard <mark@klomp.org>
+ * run-readelf-types.sh: New test.
+ * Makefile.am (TESTS): Add run-readelf-types.sh.
+ (EXTRA_DIST): Likewise.
+
+2018-05-31 Mark Wielaard <mark@klomp.org>
+
* splitdwarf4-not-split4.dwo.bz2: New test file.
* testfile-splitdwarf4-not-split4.debug.bz2: Likewise.
* run-readelf-loc.sh: Add test for splitdwarf4-not-split4.dwo
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 28ba9f79..b45ecdc5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -131,6 +131,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
run-backtrace-demangle.sh run-stack-d-test.sh run-stack-i-test.sh \
run-stack-demangled-test.sh run-readelf-zx.sh run-readelf-zp.sh \
run-readelf-addr.sh run-readelf-str.sh \
+ run-readelf-types.sh \
run-readelf-dwz-multi.sh run-allfcts-multi.sh run-deleted.sh \
run-linkmap-cut.sh run-aggregate-size.sh run-peel-type.sh \
vdsosyms run-readelf-A.sh \
@@ -250,6 +251,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
testfile_multi.dwz.bz2 testfile_multi_main.bz2 \
testfile-dwzstr.bz2 testfile-dwzstr.multi.bz2 \
run-readelf-addr.sh run-readelf-str.sh \
+ run-readelf-types.sh \
run-allfcts-multi.sh \
test-offset-loop.bz2 test-offset-loop.alt.bz2 \
run-prelink-addr-test.sh \
diff --git a/tests/run-readelf-types.sh b/tests/run-readelf-types.sh
new file mode 100755
index 00000000..a7af5734
--- /dev/null
+++ b/tests/run-readelf-types.sh
@@ -0,0 +1,122 @@
+#! /bin/sh
+# Copyright (C) 2018 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
+
+# Make sure --debug-dump=info implies .debug_types, even when implicit.
+# See run-typeiter.sh
+testfiles testfile-debug-types
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=str --debug-dump=info testfile-debug-types<<\EOF
+
+DWARF section [28] '.debug_info' at offset 0x1089:
+ [Offset]
+ Compilation unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ [ b] compile_unit abbrev: 8
+ producer (strp) "GNU C++ 4.8.2 20140120 (Red Hat 4.8.2-16) -mtune=generic -march=x86-64 -g -fdebug-types-section"
+ language (data1) C_plus_plus (4)
+ comp_dir (strp) "/home/mark/src/elfutils/tests"
+ low_pc (addr) 0x00000000004005b0 <main>
+ high_pc (data8) 11 (0x00000000004005bb)
+ stmt_list (sec_offset) 0
+ [ 29] subprogram abbrev: 9
+ external (flag_present) yes
+ name (strp) "main"
+ decl_file (data1) <stdin> (1)
+ decl_line (data1) 1
+ type (ref4) [ 46]
+ low_pc (addr) 0x00000000004005b0 <main>
+ high_pc (data8) 11 (0x00000000004005bb)
+ frame_base (exprloc)
+ [ 0] call_frame_cfa
+ GNU_all_call_sites (flag_present) yes
+ [ 46] base_type abbrev: 10
+ byte_size (data1) 4
+ encoding (data1) signed (5)
+ name (string) "int"
+ [ 4d] variable abbrev: 11
+ name (string) "a"
+ decl_file (data1) <stdin> (1)
+ decl_line (data1) 1
+ type (ref_sig8) {18763953736e2de0}
+ external (flag_present) yes
+ location (exprloc)
+ [ 0] addr 0x601030 <a>
+ [ 64] variable abbrev: 11
+ name (string) "b"
+ decl_file (data1) <stdin> (1)
+ decl_line (data1) 1
+ type (ref_sig8) {7cf9bbf793fcaf13}
+ external (flag_present) yes
+ location (exprloc)
+ [ 0] addr 0x601031 <b>
+
+DWARF section [31] '.debug_str' at offset 0x11dd:
+ Offset String
+ [ 0] "/home/mark/src/elfutils/tests"
+ [ 1e] "GNU C++ 4.8.2 20140120 (Red Hat 4.8.2-16) -mtune=generic -march=x86-64 -g -fdebug-types-section"
+ [ 7e] "main"
+
+DWARF section [32] '.debug_types' at offset 0x1260:
+ [Offset]
+ Type unit at offset 0:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ Type signature: 0x7cf9bbf793fcaf13, Type offset: 0x38 [38]
+ [ 17] type_unit abbrev: 1
+ language (data1) C_plus_plus (4)
+ GNU_odr_signature (data8) 4783233826607187165
+ stmt_list (sec_offset) 0
+ [ 25] structure_type abbrev: 2
+ name (string) "A"
+ signature (ref_sig8) {18763953736e2de0}
+ declaration (flag_present) yes
+ sibling (ref4) [ 38]
+ [ 34] structure_type abbrev: 3
+ name (string) "B"
+ declaration (flag_present) yes
+ [ 38] structure_type abbrev: 4
+ name (string) "B"
+ byte_size (data1) 1
+ decl_file (data1) <stdin> (1)
+ decl_line (data1) 1
+ specification (ref4) [ 34]
+ Type unit at offset 67:
+ Version: 4, Abbreviation section offset: 0, Address size: 8, Offset size: 4
+ Type signature: 0x18763953736e2de0, Type offset: 0x25 [25]
+ [ 5a] type_unit abbrev: 1
+ language (data1) C_plus_plus (4)
+ GNU_odr_signature (data8) 16005269134005989797
+ stmt_list (sec_offset) 0
+ [ 68] structure_type abbrev: 5
+ name (string) "A"
+ byte_size (data1) 1
+ decl_file (data1) <stdin> (1)
+ decl_line (data1) 1
+ [ 6e] structure_type abbrev: 6
+ name (string) "B"
+ declaration (flag_present) yes
+ signature (ref_sig8) {7cf9bbf793fcaf13}
+ [ 79] member abbrev: 7
+ name (string) "x"
+ decl_file (data1) <stdin> (1)
+ decl_line (data1) 1
+ type (ref4) [ 6e]
+ data_member_location (data1) 0
+EOF
+
+exit 0