Add a testcase for PR gas/18087
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 18 Mar 2015 16:20:38 +0000 (09:20 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 18 Mar 2015 16:39:02 +0000 (09:39 -0700)
PR gas/18087
* gas/i386/dw2-compress-1.d: Revert the last change.
* gas/i386/dw2-compress-3.d: New.
* gas/i386/dw2-compress-3.s: Likewise.
* gas/i386/i386.exp: Run dw2-compress-3 for ELF targets.

binutils/doc/binutils.texi
gas/testsuite/ChangeLog
gas/testsuite/gas/i386/dw2-compress-1.d
gas/testsuite/gas/i386/dw2-compress-3.d [new file with mode: 0644]
gas/testsuite/gas/i386/dw2-compress-3.s [new file with mode: 0644]
gas/testsuite/gas/i386/i386.exp
gas/write.c

index da50163..e0527aa 100644 (file)
@@ -1847,7 +1847,7 @@ linker input file.
 Compress DWARF debug sections using zlib.  The debug sections are
 renamed to begin with @samp{.zdebug} instead of @samp{.debug}.  Note -
 if compression would actually make a section @emph{larger} then it is
-not compressed or renamed. 
+not compressed or renamed.
 
 @item --decompress-debug-sections
 Decompress DWARF debug sections using zlib.  The original section
index 5b16085..f814d36 100644 (file)
@@ -1,3 +1,11 @@
+2015-03-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/18087
+       * gas/i386/dw2-compress-1.d: Revert the last change.
+       * gas/i386/dw2-compress-3.d: New.
+       * gas/i386/dw2-compress-3.s: Likewise.
+       * gas/i386/i386.exp: Run dw2-compress-3 for ELF targets.
+
 2015-03-18  Jon Turney  <jon.turney@dronecode.org.uk>
            Nick Clifton  <nickc@redhat.com>
 
index 2b2fd8d..c29a26c 100644 (file)
@@ -2,7 +2,7 @@
 #readelf: -w
 #name: DWARF2 debugging information 1
 
-Contents of the .debug_info section:
+Contents of the .zdebug_info section:
 
   Compilation Unit @ offset 0x0:
    Length:        0x4e \(32-bit\)
diff --git a/gas/testsuite/gas/i386/dw2-compress-3.d b/gas/testsuite/gas/i386/dw2-compress-3.d
new file mode 100644 (file)
index 0000000..d2aa8ef
--- /dev/null
@@ -0,0 +1,103 @@
+#as: --compress-debug-sections
+#readelf: -w
+#name: DWARF2 debugging information 3
+
+Contents of the .debug_info section:
+
+  Compilation Unit @ offset 0x0:
+   Length:        0x32 \(32-bit\)
+   Version:       4
+   Abbrev Offset: 0x0
+   Pointer Size:  4
+ <0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+    <c>   DW_AT_producer    : \(indirect string, offset: 0x2\): GNU C 4.8.3
+    <10>   DW_AT_language    : 1       \(ANSI C\)
+    <11>   DW_AT_name        : \(indirect string, offset: 0xe\): dw2-compress-3.c
+    <15>   DW_AT_comp_dir    : \(indirect string, offset: 0x0\): .
+    <19>   DW_AT_stmt_list   : 0x0
+ <1><1d>: Abbrev Number: 2 \(DW_TAG_variable\)
+    <1e>   DW_AT_name        : foo
+    <22>   DW_AT_decl_file   : 1
+    <23>   DW_AT_decl_line   : 1
+    <24>   DW_AT_type        : <0x2e>
+    <28>   DW_AT_external    : 1
+    <28>   DW_AT_location    : 5 byte block: 3 4 0 0 0         \(DW_OP_addr: 4\)
+ <1><2e>: Abbrev Number: 3 \(DW_TAG_base_type\)
+    <2f>   DW_AT_byte_size   : 4
+    <30>   DW_AT_encoding    : 5       \(signed\)
+    <31>   DW_AT_name        : int
+ <1><35>: Abbrev Number: 0
+
+Contents of the .debug_abbrev section:
+
+  Number TAG \(0x0\)
+   1      DW_TAG_compile_unit    \[has children\]
+    DW_AT_producer     DW_FORM_strp
+    DW_AT_language     DW_FORM_data1
+    DW_AT_name         DW_FORM_strp
+    DW_AT_comp_dir     DW_FORM_strp
+    DW_AT_stmt_list    DW_FORM_sec_offset
+    DW_AT value: 0     DW_FORM value: 0
+   2      DW_TAG_variable    \[no children\]
+    DW_AT_name         DW_FORM_string
+    DW_AT_decl_file    DW_FORM_data1
+    DW_AT_decl_line    DW_FORM_data1
+    DW_AT_type         DW_FORM_ref4
+    DW_AT_external     DW_FORM_flag_present
+    DW_AT_location     DW_FORM_exprloc
+    DW_AT value: 0     DW_FORM value: 0
+   3      DW_TAG_base_type    \[no children\]
+    DW_AT_byte_size    DW_FORM_data1
+    DW_AT_encoding     DW_FORM_data1
+    DW_AT_name         DW_FORM_string
+    DW_AT value: 0     DW_FORM value: 0
+
+Contents of the .debug_aranges section:
+
+  Length:                   20
+  Version:                  2
+  Offset into .debug_info:  0x0
+  Pointer Size:             4
+  Segment Size:             0
+
+    Address    Length
+    00000000 00000000 
+
+Raw dump of debug contents of section .debug_line:
+
+  Offset:                      0x0
+  Length:                      45
+  DWARF Version:               2
+  Prologue Length:             39
+  Minimum Instruction Length:  1
+  Initial value of 'is_stmt':  1
+  Line Base:                   -5
+  Line Range:                  14
+  Opcode Base:                 13
+
+ 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
+
+ The Directory Table is empty.
+
+ The File Name Table \(offset 0x1c\):
+  Entry        Dir     Time    Size    Name
+  1    0       0       0       dw2-compress-3.c
+
+ No Line Number Statements.
+Contents of the .debug_str section:
+
+  0x00000000 2e00474e 55204320 342e382e 33006477 ..GNU C 4.8.3.dw
+  0x00000010 322d636f 6d707265 73732d33 2e6300   2-compress-3.c.
+
diff --git a/gas/testsuite/gas/i386/dw2-compress-3.s b/gas/testsuite/gas/i386/dw2-compress-3.s
new file mode 100644 (file)
index 0000000..c2e6f2e
--- /dev/null
@@ -0,0 +1,96 @@
+       .file   "dw2-compress-3.c"
+       .text
+.Ltext0:
+       .comm   foo,4,4
+.Letext0:
+       .file 1 "dw2-compress-3.c"
+       .section        .debug_info,"",@progbits
+.Ldebug_info0:
+       .long   0x32
+       .value  0x4
+       .long   .Ldebug_abbrev0
+       .byte   0x4
+       .uleb128 0x1
+       .long   .LASF0
+       .byte   0x1
+       .long   .LASF1
+       .long   .LASF2
+       .long   .Ldebug_line0
+       .uleb128 0x2
+       .string "foo"
+       .byte   0x1
+       .byte   0x1
+       .long   0x2e
+       .uleb128 0x5
+       .byte   0x3
+       .long   foo
+       .uleb128 0x3
+       .byte   0x4
+       .byte   0x5
+       .string "int"
+       .byte   0
+       .section        .debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+       .uleb128 0x1
+       .uleb128 0x11
+       .byte   0x1
+       .uleb128 0x25
+       .uleb128 0xe
+       .uleb128 0x13
+       .uleb128 0xb
+       .uleb128 0x3
+       .uleb128 0xe
+       .uleb128 0x1b
+       .uleb128 0xe
+       .uleb128 0x10
+       .uleb128 0x17
+       .byte   0
+       .byte   0
+       .uleb128 0x2
+       .uleb128 0x34
+       .byte   0
+       .uleb128 0x3
+       .uleb128 0x8
+       .uleb128 0x3a
+       .uleb128 0xb
+       .uleb128 0x3b
+       .uleb128 0xb
+       .uleb128 0x49
+       .uleb128 0x13
+       .uleb128 0x3f
+       .uleb128 0x19
+       .uleb128 0x2
+       .uleb128 0x18
+       .byte   0
+       .byte   0
+       .uleb128 0x3
+       .uleb128 0x24
+       .byte   0
+       .uleb128 0xb
+       .uleb128 0xb
+       .uleb128 0x3e
+       .uleb128 0xb
+       .uleb128 0x3
+       .uleb128 0x8
+       .byte   0
+       .byte   0
+       .byte   0
+       .section        .debug_aranges,"",@progbits
+       .long   0x14
+       .value  0x2
+       .long   .Ldebug_info0
+       .byte   0x4
+       .byte   0
+       .value  0
+       .value  0
+       .long   0
+       .long   0
+       .section        .debug_line,"",@progbits
+.Ldebug_line0:
+       .section        .debug_str,"MS",@progbits,1
+.LASF2:
+       .string "."
+.LASF0:
+       .string "GNU C 4.8.3"
+.LASF1:
+       .string "dw2-compress-3.c"
index 381a1e3..19ef914 100644 (file)
@@ -426,6 +426,7 @@ if [expr [istarget "i*86-*-*"] || [istarget "x86_64-*-*"]] then {
        run_list_test_stdin "list-2" "-al"
        run_list_test_stdin "list-3" "-al"
        run_dump_test "dw2-compress-1"
+       run_dump_test "dw2-compress-3"
     }
 }
 
index e3570ac..397ea48 100644 (file)
@@ -1530,7 +1530,7 @@ compress_debug (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED)
      the section smaller, just keep it uncompressed.  */
   if (compressed_size > sec->size)
     return;
-  
+
   /* Replace the uncompressed frag list with the compressed frag list.  */
   seginfo->frchainP->frch_root = first_newf;
   seginfo->frchainP->frch_last = last_newf;