Add a dw2-3.S test
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 4 Apr 2015 14:18:17 +0000 (07:18 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 4 Apr 2015 14:34:25 +0000 (07:34 -0700)
This patch adds a dw2-3.S test for upcoming SHF_COMPRESSED test. The
existing dw2-1.S/dw2-2.S tests generate non-compressed debug sections
for SHF_COMPRESSED since SHF_COMPRESSED compressed debug sections are
bigger.

* binutils-all/compress.exp (testfile): Remove suffix.
(compressedfile): Likewise.
(compressedfile2): Likewise.
(libfile): Likewise.
(testfile3): New.
(compressedfile3): Likewise.
Updated.
Add a dw2-3.S test.
* binutils-all/dw2-3.S: New file.
* binutils-all/dw2-3.W: Likewise.

binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/compress.exp
binutils/testsuite/binutils-all/dw2-3.S [new file with mode: 0644]
binutils/testsuite/binutils-all/dw2-3.W [new file with mode: 0644]
binutils/testsuite/binutils-all/libdw2-compressed.out
binutils/testsuite/binutils-all/libdw2.out

index 04dfa46d1c27b98fea1e0d1bba416b60e7453249..827e836e83e6feb0caa94818fd63c28d15417f3b 100644 (file)
@@ -1,3 +1,19 @@
+2015-04-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * binutils-all/compress.exp (testfile): Remove suffix.
+       (compressedfile): Likewise.
+       (compressedfile2): Likewise.
+       (libfile): Likewise.
+       (testfile3): New.
+       (compressedfile3): Likewise.
+       Updated.
+       Add a dw2-3.S test.
+       (${libfile}.a): Add ${compressedfile3}.o.
+       * binutils-all/dw2-3.S: New file.
+       * binutils-all/dw2-3.W: Likewise.
+       * binutils-all/libdw2-compressed.out: Updated.
+       * binutils-all/libdw2.out: Likewise.
+
 2015-04-03  H.J. Lu  <hongjiu.lu@intel.com>
 
        * lib/binutils-common.exp (is_zlib_supported): Always return 1.
index 75b878337081a6550370b534923b01bcfc2879eb..02111f1af7d214491c4f3239f3bbe01b283ceb1a 100644 (file)
@@ -20,43 +20,55 @@ if { [is_remote host] || ![is_elf_format] || ![is_zlib_supported] } then {
     return
 }
 
-set testfile tmpdir/dw2-1.o
-set compressedfile tmpdir/dw2-1-compressed.o
+set testfile tmpdir/dw2-1
+set compressedfile tmpdir/dw2-1-compressed
 set copyfile tmpdir/dw2-copy
-set compressedfile2 tmpdir/dw2-2-compressed.o
-set libfile tmpdir/libdw2.a
+set compressedfile2 tmpdir/dw2-2-compressed
+set libfile tmpdir/libdw2
 set compressedcopyfile tmpdir/dw2-copy-compressed
+set testfile3 tmpdir/dw2-3
+set compressedfile3 tmpdir/dw2-3-compressed
 
-if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S $testfile --nocompress-debug-sections] } then {
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${testfile}.o --nocompress-debug-sections] } then {
     unsupported "compressed debug sections"
     return
 }
 
-if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S $compressedfile --compress-debug-sections] } then {
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}.o --compress-debug-sections] } then {
     unsupported "compressed debug sections"
     return
 }
 
-if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S $compressedfile2 --compress-debug-sections] } then {
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S ${compressedfile2}.o --compress-debug-sections] } then {
     unsupported "compressed debug sections"
     return
 }
 
-remote_file host delete $libfile
-set got [binutils_run $AR "rc $libfile $compressedfile $compressedfile2"]
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${testfile3}.o --nocompress-debug-sections] } then {
+    unsupported "compressed debug sections"
+    return
+}
+
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${compressedfile3}.o --compress-debug-sections] } then {
+    unsupported "compressed debug sections"
+    return
+}
+
+remote_file host delete ${libfile}.a
+set got [binutils_run $AR "rc ${libfile}.a ${compressedfile}.o ${compressedfile2}.o ${compressedfile3}.o"]
 if ![string match "" $got] then {
     fail "compressed debug sections"
     return
 }
 
 set testname "objcopy compress debug sections"
-set got [binutils_run $OBJCOPY "--compress-debug-sections $testfile ${copyfile}.o"]
+set got [binutils_run $OBJCOPY "--compress-debug-sections ${testfile}.o ${copyfile}.o"]
 if ![string match "" $got] then {
     fail "objcopy ($testname)"
 } else {
-    send_log "cmp $compressedfile ${copyfile}.o\n"
-    verbose "cmp $compressedfile ${copyfile}.o"
-    set src1 ${compressedfile}
+    send_log "cmp ${compressedfile}.o ${copyfile}.o\n"
+    verbose "cmp ${compressedfile}.o ${copyfile}.o"
+    set src1 ${compressedfile}.o
     set src2 ${copyfile}.o
     set status [remote_exec build cmp "${src1} ${src2}"]
     set exec_output [lindex $status 1]
@@ -72,13 +84,13 @@ if ![string match "" $got] then {
 }
 
 set testname "objcopy decompress compressed debug sections"
-set got [binutils_run $OBJCOPY "--decompress-debug-sections $compressedfile ${copyfile}.o"]
+set got [binutils_run $OBJCOPY "--decompress-debug-sections ${compressedfile}.o ${copyfile}.o"]
 if ![string match "" $got] then {
     fail "objcopy ($testname)"
 } else {
-    send_log "cmp $testfile ${copyfile}.o\n"
-    verbose "cmp $testfile ${copyfile}.o"
-    set src1 ${testfile}
+    send_log "cmp ${testfile}.o ${copyfile}.o\n"
+    verbose "cmp ${testfile}.o ${copyfile}.o"
+    set src1 ${testfile}.o
     set src2 ${copyfile}.o
     set status [remote_exec build cmp "${src1} ${src2}"]
     set exec_output [lindex $status 1]
@@ -94,7 +106,7 @@ if ![string match "" $got] then {
 }
 
 set testname "objcopy decompress debug sections in archive"
-set got [binutils_run $OBJCOPY "--decompress-debug-sections $libfile ${copyfile}.a"]
+set got [binutils_run $OBJCOPY "--decompress-debug-sections ${libfile}.a ${copyfile}.a"]
 if ![string match "" $got] then {
     fail "objcopy ($testname)"
 } else {
@@ -134,7 +146,7 @@ if ![string match "" $got] then {
 }
 
 set testname "objdump compress debug sections"
-set got [remote_exec host "$OBJDUMP -W $compressedfile" "" "/dev/null" "objdump.out"]
+set got [remote_exec host "$OBJDUMP -W ${compressedfile}.o" "" "/dev/null" "objdump.out"]
 if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
     fail "$testname"
     send_log "$got\n"
@@ -145,22 +157,32 @@ if { [regexp_diff objdump.out $srcdir/$subdir/dw2-1.W] } then {
     pass "$testname"
 }
 
-set testfile tmpdir/dw2-emty.o
+set testname "objdump compress debug sections 3"
+set got [remote_exec host "$OBJDUMP -W ${compressedfile3}.o" "" "/dev/null" "objdump.out"]
+if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+    fail "$testname"
+    send_log "$got\n"
+}
+if { [regexp_diff objdump.out $srcdir/$subdir/dw2-3.W] } then {
+    fail "$testname"
+} else {
+    pass "$testname"
+}
 
-if { ![binutils_assemble_flags $srcdir/$subdir/dw2-empty.S $testfile --nocompress-debug-sections] } then {
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-empty.S ${testfile}empty.o --nocompress-debug-sections] } then {
     unsupported "compressed debug sections"
     return
 }
 
 set testname "objcopy compress empty debug sections"
-set got [binutils_run $OBJCOPY "--compress-debug-sections $testfile ${copyfile}.o"]
+set got [binutils_run $OBJCOPY "--compress-debug-sections ${testfile}empty.o ${copyfile}empty.o"]
 if ![string match "" $got] then {
     fail "objcopy ($testname)"
 } else {
-    send_log "cmp $testfile ${copyfile}.o\n"
-    verbose "cmp $testfile ${copyfile}.o"
-    set src1 ${testfile}
-    set src2 ${copyfile}.o
+    send_log "cmp ${testfile}empty.o ${copyfile}empty.o\n"
+    verbose "cmp ${testfile}empty.o ${copyfile}empty.o"
+    set src1 ${testfile}empty.o
+    set src2 ${copyfile}empty.o
     set status [remote_exec build cmp "${src1} ${src2}"]
     set exec_output [lindex $status 1]
     set exec_output [prune_warnings $exec_output]
diff --git a/binutils/testsuite/binutils-all/dw2-3.S b/binutils/testsuite/binutils-all/dw2-3.S
new file mode 100644 (file)
index 0000000..c033e4d
--- /dev/null
@@ -0,0 +1,316 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2004-2015 Free Software Foundation, Inc.
+
+   This program 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.
+
+   This program 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/>.  */
+
+/* Test a minimal file containing DWARF-2 information.  This test also
+   serves as a skeleton for other DWARF-2 tests.  Most other tests will
+   not be this extensively itemized and commented...  */
+
+/* Dummy function to provide debug information for.  */
+
+       .text
+.Lbegin_text1:
+       .globl func_cu1
+       .type func_cu1, %function
+func_cu1:
+.Lbegin_func_cu1:
+       .int 0
+.Lend_func_cu1:
+       .size func_cu1, .-func_cu1
+.Lend_text1:
+
+/* Debug information */
+
+       .section .debug_info
+.Lcu1_begin:
+       /* CU header */
+       .4byte  .Lcu1_end - .Lcu1_start         /* Length of Compilation Unit */
+.Lcu1_start:
+       .2byte  2                               /* DWARF Version */
+       .4byte  .Labbrev1_begin                 /* Offset into abbrev section */
+       .byte   4                               /* Pointer size */
+
+       /* CU die */
+       .uleb128 1                              /* Abbrev: DW_TAG_compile_unit */
+       .4byte  .Lline1_begin                   /* DW_AT_stmt_list */
+       .4byte  .Lend_text1                     /* DW_AT_high_pc */
+       .4byte  .Lbegin_text1                   /* DW_AT_low_pc */
+       .ascii  "file1.txt\0"                   /* DW_AT_name */
+       .ascii  "GNU C 3.3.3\0"                 /* DW_AT_producer */
+       .byte   1                               /* DW_AT_language (C) */
+
+       /* func_cu1 */
+       .uleb128        2                       /* Abbrev: DW_TAG_subprogram */
+       .byte           1                       /* DW_AT_external */
+       .byte           1                       /* DW_AT_decl_file */
+       .byte           2                       /* DW_AT_decl_line */
+       .ascii          "func_cu1\0"            /* DW_AT_name */
+       .4byte          .Ltype_int2_in_cu2      /* DW_AT_type */
+       .4byte          .Lbegin_func_cu1        /* DW_AT_low_pc */
+       .4byte          .Lend_func_cu1          /* DW_AT_high_pc */
+       .byte           1                       /* DW_AT_frame_base: length */
+       .byte           0x55                    /* DW_AT_frame_base: DW_OP_reg5 */
+
+       /* This type is named "int1" and not "int" to ensure it is unique,
+          and thus we can easily ensure we expand this CU and not some
+          other CU with "int".  */
+.Ltype_int1_in_cu1:
+       .uleb128        3                       /* Abbrev: DW_TAG_base_type */
+       .ascii          "int1\0"                /* DW_AT_name */
+       .byte           4                       /* DW_AT_byte_size */
+       .byte           5                       /* DW_AT_encoding */
+
+.Ltype_const_int1_in_cu1:
+       .uleb128        4                       /* Abbrev: DW_TAG_const_type */
+       .4byte           .Ltype_int1_in_cu1-.Lcu1_begin /* DW_AT_type */
+
+       .uleb128        5                       /* Abbrev: DW_TAG_variable */
+       .ascii          "one\0"                 /* DW_AT_name */
+       .4byte          .Ltype_const_int1_in_cu1-.Lcu1_begin   /* DW_AT_type */
+       .byte           1                       /* DW_AT_const_value */
+
+       .byte           0                       /* End of children of CU */
+
+.Lcu1_end:
+
+       /* Second compilation unit.  */
+.Lcu2_begin:
+       /* CU header */
+       .4byte  .Lcu2_end - .Lcu2_start         /* Length of Compilation Unit */
+.Lcu2_start:
+       .2byte  2                               /* DWARF Version */
+       .4byte  .Labbrev2_begin                 /* Offset into abbrev section */
+       .byte   4                               /* Pointer size */
+
+       /* CU die */
+       .uleb128 1                              /* Abbrev: DW_TAG_compile_unit */
+       .ascii  "file1.txt\0"                   /* DW_AT_name */
+       .ascii  "GNU C 3.3.3\0"                 /* DW_AT_producer */
+       .byte   1                               /* DW_AT_language (C) */
+
+       /* This type is named "int2" and not "int" to ensure it is unique,
+          and thus we can easily ensure we expand this CU and not some
+          other CU with "int".  */
+.Ltype_int2_in_cu2:
+       .uleb128        2                       /* Abbrev: DW_TAG_base_type */
+       .ascii          "int2\0"                /* DW_AT_name */
+       .byte           4                       /* DW_AT_byte_size */
+       .byte           5                       /* DW_AT_encoding */
+
+.Ltype_const_int2_in_cu2:
+       .uleb128        3                       /* Abbrev: DW_TAG_const_type */
+       .4byte           .Ltype_int2_in_cu2-.Lcu2_begin /* DW_AT_type */
+
+       .uleb128        4                       /* Abbrev: DW_TAG_variable */
+       .ascii          "two\0"                 /* DW_AT_name */
+       .4byte          .Ltype_const_int2_in_cu2-.Lcu2_begin   /* DW_AT_type */
+       .byte           2                       /* DW_AT_const_value */
+
+       .byte           0                       /* End of children of CU */
+
+.Lcu2_end:
+
+/* Abbrev table */
+       .section .debug_abbrev
+.Labbrev1_begin:
+       .uleb128        1                       /* Abbrev code */
+       .uleb128        0x11                    /* DW_TAG_compile_unit */
+       .byte           1                       /* has_children */
+       .uleb128        0x10                    /* DW_AT_stmt_list */
+       .uleb128        0x6                     /* DW_FORM_data4 */
+       .uleb128        0x12                    /* DW_AT_high_pc */
+       .uleb128        0x1                     /* DW_FORM_addr */
+       .uleb128        0x11                    /* DW_AT_low_pc */
+       .uleb128        0x1                     /* DW_FORM_addr */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x25                    /* DW_AT_producer */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x13                    /* DW_AT_language */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        2                       /* Abbrev code */
+       .uleb128        0x2e                    /* DW_TAG_subprogram */
+       .byte           0                       /* has_children */
+       .uleb128        0x3f                    /* DW_AT_external */
+       .uleb128        0xc                     /* DW_FORM_flag */
+       .uleb128        0x3a                    /* DW_AT_decl_file */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .uleb128        0x3b                    /* DW_AT_decl_line */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x49                    /* DW_AT_type */
+       .uleb128        0x10                    /* DW_FORM_ref_addr */
+       .uleb128        0x11                    /* DW_AT_low_pc */
+       .uleb128        0x1                     /* DW_FORM_addr */
+       .uleb128        0x12                    /* DW_AT_high_pc */
+       .uleb128        0x1                     /* DW_FORM_addr */
+       .uleb128        0x40                    /* DW_AT_frame_base */
+       .uleb128        0xa                     /* DW_FORM_block1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        3                       /* Abbrev code */
+       .uleb128        0x24                    /* DW_TAG_base_type */
+       .byte           0                       /* has_children */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0xb                     /* DW_AT_byte_size */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .uleb128        0x3e                    /* DW_AT_encoding */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        4                       /* Abbrev code */
+       .uleb128        0x26                    /* DW_TAG_const_type */
+       .byte           0x0                     /* DW_children_no */
+       .uleb128        0x49                    /* DW_AT_type */
+       .uleb128        0x13                    /* DW_FORM_ref4 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        5                       /* Abbrev code */
+       .uleb128        0x34                    /* DW_TAG_variable */
+       .byte           0x0                     /* DW_children_no */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x49                    /* DW_AT_type */
+       .uleb128        0x13                    /* DW_FORM_ref4 */
+       .uleb128        0x1c                    /* DW_AT_const_value */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+.Labbrev2_begin:
+       .uleb128        1                       /* Abbrev code */
+       .uleb128        0x11                    /* DW_TAG_compile_unit */
+       .byte           1                       /* has_children */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x25                    /* DW_AT_producer */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x13                    /* DW_AT_language */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        2                       /* Abbrev code */
+       .uleb128        0x24                    /* DW_TAG_base_type */
+       .byte           0                       /* has_children */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0xb                     /* DW_AT_byte_size */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .uleb128        0x3e                    /* DW_AT_encoding */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        3                       /* Abbrev code */
+       .uleb128        0x26                    /* DW_TAG_const_type */
+       .byte           0x0                     /* DW_children_no */
+       .uleb128        0x49                    /* DW_AT_type */
+       .uleb128        0x13                    /* DW_FORM_ref4 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .uleb128        4                       /* Abbrev code */
+       .uleb128        0x34                    /* DW_TAG_variable */
+       .byte           0x0                     /* DW_children_no */
+       .uleb128        0x3                     /* DW_AT_name */
+       .uleb128        0x8                     /* DW_FORM_string */
+       .uleb128        0x49                    /* DW_AT_type */
+       .uleb128        0x13                    /* DW_FORM_ref4 */
+       .uleb128        0x1c                    /* DW_AT_const_value */
+       .uleb128        0xb                     /* DW_FORM_data1 */
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+       .byte           0x0                     /* Terminator */
+       .byte           0x0                     /* Terminator */
+
+/* Line table */
+       .section .debug_line
+.Lline1_begin:
+       .4byte          .Lline1_end - .Lline1_start     /* Initial length */
+.Lline1_start:
+       .2byte          2                       /* Version */
+       .4byte          .Lline1_lines - .Lline1_hdr     /* header_length */
+.Lline1_hdr:
+       .byte           1                       /* Minimum insn length */
+       .byte           1                       /* default_is_stmt */
+       .byte           1                       /* line_base */
+       .byte           1                       /* line_range */
+       .byte           0x10                    /* opcode_base */
+
+       /* Standard lengths */
+       .byte           0
+       .byte           1
+       .byte           1
+       .byte           1
+       .byte           1
+       .byte           0
+       .byte           0
+       .byte           0
+       .byte           1
+       .byte           0
+       .byte           0
+       .byte           1
+       .byte           0
+       .byte           0
+       .byte           0
+
+       /* Include directories */
+       .byte           0
+
+       /* File names */
+       .ascii          "file1.txt\0"
+       .uleb128        0
+       .uleb128        0
+       .uleb128        0
+
+       .byte           0
+
+.Lline1_lines:
+       .byte           0       /* DW_LNE_set_address */
+       .uleb128        5
+       .byte           2
+       .4byte          .Lbegin_func_cu1
+
+       .byte           3       /* DW_LNS_advance_line */
+       .sleb128        3       /* ... to 4 */
+
+       .byte           1       /* DW_LNS_copy */
+
+       .byte           1       /* DW_LNS_copy (second time as an end-of-prologue marker) */
+
+       .byte           0       /* DW_LNE_set_address */
+       .uleb128        5
+       .byte           2
+       .4byte          .Lend_func_cu1
+
+       .byte           0       /* DW_LNE_end_of_sequence */
+       .uleb128        1
+       .byte           1
+
+.Lline1_end:
diff --git a/binutils/testsuite/binutils-all/dw2-3.W b/binutils/testsuite/binutils-all/dw2-3.W
new file mode 100644 (file)
index 0000000..0d0fe6a
--- /dev/null
@@ -0,0 +1,156 @@
+
+.*: +file format .*
+
+Contents of the .debug_info section:
+
+  Compilation Unit @ offset 0x0:
+   Length:        0x5e \(32-bit\)
+   Version:       2
+   Abbrev Offset: 0x0
+   Pointer Size:  4
+ <0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+    <c>   DW_AT_stmt_list   : 0x0
+    <10>   DW_AT_high_pc     : 0x4
+    <14>   DW_AT_low_pc      : 0x0
+    <18>   DW_AT_name        : file1.txt
+    <22>   DW_AT_producer    : GNU C 3.3.3
+    <2e>   DW_AT_language    : 1       \(ANSI C\)
+ <1><2f>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+    <30>   DW_AT_external    : 1
+    <31>   DW_AT_decl_file   : 1
+    <32>   DW_AT_decl_line   : 2
+    <33>   DW_AT_name        : func_cu1
+    <3c>   DW_AT_type        : <0x85>
+    <40>   DW_AT_low_pc      : 0x0
+    <44>   DW_AT_high_pc     : 0x4
+    <48>   DW_AT_frame_base  : 1 byte block: 55        \(DW_OP_reg5 \([^()]*\)\)
+ <1><4a>: Abbrev Number: 3 \(DW_TAG_base_type\)
+    <4b>   DW_AT_name        : int1
+    <50>   DW_AT_byte_size   : 4
+    <51>   DW_AT_encoding    : 5       \(signed\)
+ <1><52>: Abbrev Number: 4 \(DW_TAG_const_type\)
+    <53>   DW_AT_type        : <0x4a>
+ <1><57>: Abbrev Number: 5 \(DW_TAG_variable\)
+    <58>   DW_AT_name        : one
+    <5c>   DW_AT_type        : <0x52>
+    <60>   DW_AT_const_value : 1
+ <1><61>: Abbrev Number: 0
+  Compilation Unit @ offset 0x62:
+   Length:        0x37 \(32-bit\)
+   Version:       2
+   Abbrev Offset: 0x45
+   Pointer Size:  4
+ <0><6d>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+    <6e>   DW_AT_name        : file1.txt
+    <78>   DW_AT_producer    : GNU C 3.3.3
+    <84>   DW_AT_language    : 1       \(ANSI C\)
+ <1><85>: Abbrev Number: 2 \(DW_TAG_base_type\)
+    <86>   DW_AT_name        : int2
+    <8b>   DW_AT_byte_size   : 4
+    <8c>   DW_AT_encoding    : 5       \(signed\)
+ <1><8d>: Abbrev Number: 3 \(DW_TAG_const_type\)
+    <8e>   DW_AT_type        : <0x85>
+ <1><92>: Abbrev Number: 4 \(DW_TAG_variable\)
+    <93>   DW_AT_name        : two
+    <97>   DW_AT_type        : <0x8d>
+    <9b>   DW_AT_const_value : 2
+ <1><9c>: Abbrev Number: 0
+
+Contents of the .debug_abbrev section:
+
+  Number TAG \(0x0\)
+   1      DW_TAG_compile_unit    \[has children\]
+    DW_AT_stmt_list    DW_FORM_data4
+    DW_AT_high_pc      DW_FORM_addr
+    DW_AT_low_pc       DW_FORM_addr
+    DW_AT_name         DW_FORM_string
+    DW_AT_producer     DW_FORM_string
+    DW_AT_language     DW_FORM_data1
+    DW_AT value: 0     DW_FORM value: 0
+   2      DW_TAG_subprogram    \[no children\]
+    DW_AT_external     DW_FORM_flag
+    DW_AT_decl_file    DW_FORM_data1
+    DW_AT_decl_line    DW_FORM_data1
+    DW_AT_name         DW_FORM_string
+    DW_AT_type         DW_FORM_ref_addr
+    DW_AT_low_pc       DW_FORM_addr
+    DW_AT_high_pc      DW_FORM_addr
+    DW_AT_frame_base   DW_FORM_block1
+    DW_AT value: 0     DW_FORM value: 0
+   3      DW_TAG_base_type    \[no children\]
+    DW_AT_name         DW_FORM_string
+    DW_AT_byte_size    DW_FORM_data1
+    DW_AT_encoding     DW_FORM_data1
+    DW_AT value: 0     DW_FORM value: 0
+   4      DW_TAG_const_type    \[no children\]
+    DW_AT_type         DW_FORM_ref4
+    DW_AT value: 0     DW_FORM value: 0
+   5      DW_TAG_variable    \[no children\]
+    DW_AT_name         DW_FORM_string
+    DW_AT_type         DW_FORM_ref4
+    DW_AT_const_value  DW_FORM_data1
+    DW_AT value: 0     DW_FORM value: 0
+  Number TAG \(0x45\)
+   1      DW_TAG_compile_unit    \[has children\]
+    DW_AT_name         DW_FORM_string
+    DW_AT_producer     DW_FORM_string
+    DW_AT_language     DW_FORM_data1
+    DW_AT value: 0     DW_FORM value: 0
+   2      DW_TAG_base_type    \[no children\]
+    DW_AT_name         DW_FORM_string
+    DW_AT_byte_size    DW_FORM_data1
+    DW_AT_encoding     DW_FORM_data1
+    DW_AT value: 0     DW_FORM value: 0
+   3      DW_TAG_const_type    \[no children\]
+    DW_AT_type         DW_FORM_ref4
+    DW_AT value: 0     DW_FORM value: 0
+   4      DW_TAG_variable    \[no children\]
+    DW_AT_name         DW_FORM_string
+    DW_AT_type         DW_FORM_ref4
+    DW_AT_const_value  DW_FORM_data1
+    DW_AT value: 0     DW_FORM value: 0
+
+Raw dump of debug contents of section .debug_line:
+
+  Offset:                      0x0
+  Length:                      62
+  DWARF Version:               2
+  Prologue Length:             35
+  Minimum Instruction Length:  1
+  Initial value of 'is_stmt':  1
+  Line Base:                   1
+  Line Range:                  1
+  Opcode Base:                 16
+
+ Opcodes:
+  Opcode 1 has 0 args
+  Opcode 2 has 1 args
+  Opcode 3 has 1 args
+  Opcode 4 has 1 args
+  Opcode 5 has 1 args
+  Opcode 6 has 0 args
+  Opcode 7 has 0 args
+  Opcode 8 has 0 args
+  Opcode 9 has 1 args
+  Opcode 10 has 0 args
+  Opcode 11 has 0 args
+  Opcode 12 has 1 args
+  Opcode 13 has 0 args
+  Opcode 14 has 0 args
+  Opcode 15 has 0 args
+
+ The Directory Table is empty.
+
+ The File Name Table \(offset 0x1f\):
+  Entry        Dir     Time    Size    Name
+  1    0       0       0       file1.txt
+
+ Line Number Statements:
+  \[0x0000002d\]  Extended opcode 2: set Address to 0x0
+  \[0x00000034\]  Advance Line by 3 to 4
+  \[0x00000036\]  Copy
+  \[0x00000037\]  Copy
+  \[0x00000038\]  Extended opcode 2: set Address to 0x4
+  \[0x0000003f\]  Extended opcode 1: End of Sequence
+
+
index 6c1f7f5ef2ffd7612022917075270649a5d8aaba..ccee796764b4b4550aa17e5c72903dd58abcc94d 100644 (file)
@@ -2,4 +2,6 @@
  .* ZLIB.*
 #...
  .* ZLIB.*
+#...
+ .* ZLIB.*
 #pass
index 457774c05dd4b86ff70485ffc8ee8ff2cec19c39..1255cf39906a225ebf06f4a4136203953f8b3271 100644 (file)
   \[[ 0-9]+\] \.debug_line[    ]+(PROGBITS|MIPS_DWARF)[        0-9a-z]+ [^Z]*
 #...
   \[[ 0-9]+\] \.debug_abbrev[  ]+(PROGBITS|MIPS_DWARF)[        0-9a-z]+ [^Z]*
+#...
+  \[[ 0-9]+\] \.debug_info[    ]+(PROGBITS|MIPS_DWARF)[        0-9a-z]+ [^Z]*
+#...
+  \[[ 0-9]+\] \.debug_abbrev[  ]+(PROGBITS|MIPS_DWARF)[        0-9a-z]+ [^Z]*
+#...
+  \[[ 0-9]+\] \.debug_line[    ]+(PROGBITS|MIPS_DWARF)[        0-9a-z]+ [^Z]*
 #pass