[COMMITTED] tests: Test readelf --debug-dump=[decoded]line with min_inst_len > 1.

Mark Wielaard mark@klomp.org
Mon Apr 16 09:56:00 GMT 2018


This testcase tests the fix for the readelf --debug-dump=line bug fixed
in commit 40b1f18 "readelf: Fix advance_pc to use op_addr_advance, not
just op_advance."

This tests both the --debug-dump=line (readelf) implementation and the
--debug-dump=decodedline (libdw) implementation. The first fails without
the bug fix. The second was already correct.

Signed-off-by: Mark Wielaard <mark@klomp.org>
---
 tests/ChangeLog                    |   6 +++
 tests/Makefile.am                  |   1 +
 tests/run-readelf-line.sh          |  89 +++++++++++++++++++++++++++++++++++++
 tests/testfile-ppc64-min-instr.bz2 | Bin 0 -> 3106 bytes
 4 files changed, 96 insertions(+)
 create mode 100755 tests/testfile-ppc64-min-instr.bz2

diff --git a/tests/ChangeLog b/tests/ChangeLog
index c9403fb..27e5bd8 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2018-04-16  Mark Wielaard  <mark@klomp.org>
+
+	* testfile-ppc64-min-instr.bz2: New testfile.
+	* run-readelf-line.sh: Run against testfile-ppc64-min-instr.bz2.
+	* Makefile.am (EXTRA_DIST): Add testfile-ppc64-min-instr.bz2.
+
 2018-04-11  Mark Wielaard  <mark@klomp.org>
 
 	* run-addrcfi.sh: Adjust expected rule for aarch64 sp.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a8cc2df..16abfb0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -230,6 +230,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
 	     run-readelf-macro.sh testfilemacro.bz2 \
 	     run-readelf-loc.sh testfileloc.bz2 \
 	     run-readelf-aranges.sh run-readelf-line.sh testfilefoobarbaz.bz2 \
+	     testfile-ppc64-min-instr.bz2 \
 	     run-readelf-z.sh \
 	     run-readelf-dwz-multi.sh libtestfile_multi_shared.so.bz2 \
 	     testfile_multi.dwz.bz2 testfile_multi_main.bz2 \
diff --git a/tests/run-readelf-line.sh b/tests/run-readelf-line.sh
index 32bcf9d..f93bf47 100755
--- a/tests/run-readelf-line.sh
+++ b/tests/run-readelf-line.sh
@@ -256,4 +256,93 @@ DWARF section [30] '.debug_line' at offset 0x15f6:
 
 EOF
 
+# A .debug_line table with mininum instruction length > 1.
+#
+# = hello.c
+# #include <stdio.h>
+#
+# int
+# main (int argc, char **argv)
+# {
+#   printf ("Hello, %s\n", (argc > 0
+# 			  ? argv[1]: "World"));
+#   return 0;
+# }
+#
+# clang version 5.0.1 (tags/RELEASE_501/final)
+# Target: powerpc64-unknown-linux-gnu
+# clang -g -O2 -o testfile-ppc64-min-instr hello.c
+testfiles testfile-ppc64-min-instr
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=line testfile-ppc64-min-instr <<\EOF
+
+DWARF section [29] '.debug_line' at offset 0xdf6:
+
+Table at offset 0:
+
+ Length:                     69
+ DWARF version:              2
+ Prologue length:            30
+ Minimum instruction length: 4
+ Maximum operations per instruction: 1
+ Initial value if 'is_stmt': 1
+ Line base:                  -5
+ Line range:                 14
+ Opcode base:                13
+
+Opcodes:
+  [ 1]  0 arguments
+  [ 2]  1 argument
+  [ 3]  1 argument
+  [ 4]  1 argument
+  [ 5]  1 argument
+  [ 6]  0 arguments
+  [ 7]  0 arguments
+  [ 8]  0 arguments
+  [ 9]  1 argument
+  [10]  0 arguments
+  [11]  0 arguments
+  [12]  1 argument
+
+Directory table:
+
+File name table:
+ Entry Dir   Time      Size      Name
+ 1     0     0         0         hello.c
+
+Line number statements:
+ [    28] extended opcode 2:  set address to 0x100005a4 <main>
+ [    33] special opcode 22: address+0 = 0x100005a4 <main>, line+4 = 5
+ [    34] set column to 27
+ [    36] set prologue end flag
+ [    37] special opcode 19: address+0 = 0x100005a4 <main>, line+1 = 6
+ [    38] set column to 8
+ [    3a] special opcode 47: address+8 = 0x100005ac <main+0x8>, line+1 = 7
+ [    3b] set 'is_stmt' to 0
+ [    3c] advance line by constant -7 to 0
+ [    3e] special opcode 32: address+4 = 0x100005b0 <main+0xc>, line+0 = 0
+ [    3f] set column to 3
+ [    41] set 'is_stmt' to 1
+ [    42] special opcode 108: address+24 = 0x100005c8 <main+0x24>, line+6 = 6
+ [    43] special opcode 76: address+16 = 0x100005d8 <main+0x34>, line+2 = 8
+ [    44] advance address by 32 to 0x100005f8
+ [    46] extended opcode 1:  end of sequence
+EOF
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=decodedline testfile-ppc64-min-instr <<\EOF
+
+DWARF section [29] '.debug_line' at offset 0xdf6:
+
+ CU [b] hello.c
+  line:col SBPE* disc isa op address (Statement Block Prologue Epilogue *End)
+  /home/fedora/mjw/hello.c (mtime: 0, length: 0)
+     5:0   S        0   0  0 0x00000000100005a4 <main>
+     6:27  S P      0   0  0 0x00000000100005a4 <main>
+     7:8   S        0   0  0 0x00000000100005ac <main+0x8>
+     0:8            0   0  0 0x00000000100005b0 <main+0xc>
+     6:3   S        0   0  0 0x00000000100005c8 <main+0x24>
+     8:3   S        0   0  0 0x00000000100005d8 <main+0x34>
+     8:3   S   *    0   0  0 0x00000000100005f7 <main+0x53>
+
+EOF
 exit 0
diff --git a/tests/testfile-ppc64-min-instr.bz2 b/tests/testfile-ppc64-min-instr.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..85bef57be5819daecec07592b3e5044c4ef4953f
GIT binary patch
literal 3106
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

literal 0
HcmV?d00001

-- 
1.8.3.1



More information about the Elfutils-devel mailing list