* dw2gencfi.c (output_cfi_insn): Initialize fragment before rs_cfa
authorJakub Jelinek <jakub@redhat.com>
Tue, 9 Jun 2009 15:12:45 +0000 (15:12 +0000)
committerJakub Jelinek <jakub@redhat.com>
Tue, 9 Jun 2009 15:12:45 +0000 (15:12 +0000)
to DW_CFA_advance_loc4.

* gas/cfi/cfi-common-7.d: New test.
* gas/cfi/cfi-common-7.s: New.
* gas/cfi/cfi.exp: Add cfi-common-7 test.

gas/ChangeLog
gas/dw2gencfi.c
gas/testsuite/ChangeLog
gas/testsuite/gas/cfi/cfi-common-7.d [new file with mode: 0644]
gas/testsuite/gas/cfi/cfi-common-7.s [new file with mode: 0644]
gas/testsuite/gas/cfi/cfi.exp

index 23ba55b..8922aa0 100644 (file)
@@ -1,3 +1,9 @@
+2009-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR gas/10255
+       * dw2gencfi.c (output_cfi_insn): Initialize fragment before rs_cfa
+       to DW_CFA_advance_loc4.
+
 2009-06-08  Dave Korn  <dave.korn.cygwin@gmail.com>
 
        PR gas/977
index a9b58d4..639362f 100644 (file)
@@ -1,5 +1,6 @@
 /* dw2gencfi.c - Support for generating Dwarf2 CFI information.
-   Copyright 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+   Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009
+   Free Software Foundation, Inc.
    Contributed by Michal Ludvig <mludvig@suse.cz>
 
    This file is part of GAS, the GNU Assembler.
@@ -1001,7 +1002,7 @@ output_cfi_insn (struct cfi_insn_data *insn)
               is already allocated to the frag.  This comes from the way
               that it scans the .eh_frame section looking first for the
               .byte DW_CFA_advance_loc4.  */
-           frag_more (1);
+           *frag_more (1) = DW_CFA_advance_loc4;
 
            frag_var (rs_cfa, 4, 0, DWARF2_LINE_MIN_INSN_LENGTH << 3,
                      make_expr_symbol (&exp), frag_now_fix () - 1,
index 38e2b48..2d92d05 100644 (file)
@@ -1,3 +1,10 @@
+2009-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR gas/10255
+       * gas/cfi/cfi-common-7.d: New test.
+       * gas/cfi/cfi-common-7.s: New.
+       * gas/cfi/cfi.exp: Add cfi-common-7 test.
+
 2009-06-08  Dave Korn  <dave.korn.cygwin@gmail.com>
 
        * gas/i386/jump.d:  Tweak patterns to also match PE platform output.
diff --git a/gas/testsuite/gas/cfi/cfi-common-7.d b/gas/testsuite/gas/cfi/cfi-common-7.d
new file mode 100644 (file)
index 0000000..d222f62
--- /dev/null
@@ -0,0 +1,22 @@
+#readelf: -wf
+#name: CFI common 7
+Contents of the .eh_frame section:
+
+00000000 00000010 00000000 CIE
+  Version:               1
+  Augmentation:          "zR"
+  Code alignment factor: .*
+  Data alignment factor: .*
+  Return address column: .*
+  Augmentation data:     [01]b
+
+  DW_CFA_nop
+  DW_CFA_nop
+  DW_CFA_nop
+
+00000014 000000(1c|20) 00000018 FDE cie=00000000 pc=.*
+  DW_CFA_advance_loc: 16 to .*
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 16
+  DW_CFA_advance_loc4: 75031 to .*
+  DW_CFA_def_cfa: r0( \([er]ax\)|) ofs 64
+#...
diff --git a/gas/testsuite/gas/cfi/cfi-common-7.s b/gas/testsuite/gas/cfi/cfi-common-7.s
new file mode 100644 (file)
index 0000000..02deee0
--- /dev/null
@@ -0,0 +1,6 @@
+       .cfi_startproc simple
+       .skip 16
+       .cfi_def_cfa 0, 16
+       .skip 75031
+       .cfi_def_cfa 0, 64
+       .cfi_endproc
index cd36f7f..0d4c419 100644 (file)
@@ -89,6 +89,7 @@ if { ![istarget "hppa64*-*"] } then {
   run_dump_test "cfi-common-3"
   run_dump_test "cfi-common-4"
   run_dump_test "cfi-common-5"
+  run_dump_test "cfi-common-7"
 }
 
 # MIPS doesn't support PC relative cfi directives.