aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2005-03-15 05:28:17 +0000
committerEric Christopher <echristo@gmail.com>2005-03-15 05:28:17 +0000
commit5862107c33031d3a5ec20582e3f55cd2b2d21675 (patch)
tree2f3eb9c334cabedccd28d179d7ed2f4d4c7c3d8c
parent729ae8d20e264b0b4577be580ab2349b0391383b (diff)
downloadgdb-5862107c33031d3a5ec20582e3f55cd2b2d21675.zip
gdb-5862107c33031d3a5ec20582e3f55cd2b2d21675.tar.gz
gdb-5862107c33031d3a5ec20582e3f55cd2b2d21675.tar.bz2
==> ChangeLog <==
2005-03-14 Eric Christopher <echristo@redhat.com> * config/tc-mips.c: Include dw2gencfi.h. (mips_cfi_frame_initial_instructions): New. * config/tc-mips.h (TARGET_USE_CFIPOP): Define. (tc_cfi_frame_initial_instructions): Ditto. (DWARF2_DEFAULT_RETURN_COLUMN): Ditto. (DWARF2_CIE_DATA_ALIGNMENT): Ditto. * Makefile.am: Update dependencies. * Makefile.in: Regenerate. ==> testsuite/ChangeLog <== 2005-03-14 Eric Christopher <echristo@redhat.com> * gas/cfi/cfi-mips-1.d, gas/cfi/cfi-mips-1.s: New dump test. * gas/cfi/cfi.exp: Run it. * gas/cfi/cfi-common-1.d: Update. * gas/cfi/cfi-common-2.d: Ditto. * gas/cfi/cfi-common-3.d: Ditto. * gas/cfi/cfi-common-4.d: Ditto.
-rw-r--r--gas/ChangeLog11
-rw-r--r--gas/Makefile.am2
-rw-r--r--gas/Makefile.in2
-rw-r--r--gas/config/tc-mips.c9
-rw-r--r--gas/config/tc-mips.h8
-rw-r--r--gas/testsuite/ChangeLog9
-rw-r--r--gas/testsuite/gas/cfi/cfi-common-1.d2
-rw-r--r--gas/testsuite/gas/cfi/cfi-common-2.d2
-rw-r--r--gas/testsuite/gas/cfi/cfi-common-3.d2
-rw-r--r--gas/testsuite/gas/cfi/cfi-common-4.d2
-rw-r--r--gas/testsuite/gas/cfi/cfi-mips-1.d27
-rw-r--r--gas/testsuite/gas/cfi/cfi-mips-1.s39
-rw-r--r--gas/testsuite/gas/cfi/cfi.exp2
13 files changed, 111 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index cbca7e4..d98f5b0 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,14 @@
+2005-03-14 Eric Christopher <echristo@redhat.com>
+
+ * config/tc-mips.c: Include dw2gencfi.h.
+ (mips_cfi_frame_initial_instructions): New.
+ * config/tc-mips.h (TARGET_USE_CFIPOP): Define.
+ (tc_cfi_frame_initial_instructions): Ditto.
+ (DWARF2_DEFAULT_RETURN_COLUMN): Ditto.
+ (DWARF2_CIE_DATA_ALIGNMENT): Ditto.
+ * Makefile.am: Update dependencies.
+ * Makefile.in: Regenerate.
+
2005-03-15 Alan Modra <amodra@bigpond.net.au>
* po/es.po: Commit new Spanish translation.
diff --git a/gas/Makefile.am b/gas/Makefile.am
index 450852a..38676b8 100644
--- a/gas/Makefile.am
+++ b/gas/Makefile.am
@@ -1302,7 +1302,7 @@ DEPTC_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \
subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
- $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(INCDIR)/elf/mips.h \
+ $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/mips.h \
$(INCDIR)/elf/reloc-macros.h ecoff.h $(INCDIR)/coff/sym.h \
$(INCDIR)/coff/ecoff.h
DEPTC_mmix_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
diff --git a/gas/Makefile.in b/gas/Makefile.in
index 3b04581..26623f7 100644
--- a/gas/Makefile.in
+++ b/gas/Makefile.in
@@ -1141,7 +1141,7 @@ DEPTC_mips_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
$(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
$(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-mips.h \
subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
- $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h $(INCDIR)/elf/mips.h \
+ $(INCDIR)/opcode/mips.h itbl-ops.h dwarf2dbg.h dw2gencfi.h $(INCDIR)/elf/mips.h \
$(INCDIR)/elf/reloc-macros.h ecoff.h $(INCDIR)/coff/sym.h \
$(INCDIR)/coff/ecoff.h
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 655be76..84f58e3 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -33,6 +33,7 @@
#include "opcode/mips.h"
#include "itbl-ops.h"
#include "dwarf2dbg.h"
+#include "dw2gencfi.h"
#ifdef DEBUG
#define DBG(x) printf x
@@ -14016,3 +14017,11 @@ mips_dwarf2_addr_size (void)
else
return 4;
}
+
+/* Standard calling conventions leave the CFA at SP on entry. */
+void
+mips_cfi_frame_initial_instructions (void)
+{
+ cfi_add_CFA_def_cfa_register (SP);
+}
+
diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h
index 720f644..a5d5cf1 100644
--- a/gas/config/tc-mips.h
+++ b/gas/config/tc-mips.h
@@ -161,4 +161,12 @@ extern enum dwarf2_format mips_dwarf2_format (void);
extern int mips_dwarf2_addr_size (void);
#define DWARF2_ADDR_SIZE(bfd) mips_dwarf2_addr_size ()
+#define TARGET_USE_CFIPOP 1
+
+#define tc_cfi_frame_initial_instructions mips_cfi_frame_initial_instructions
+extern void mips_cfi_frame_initial_instructions (void);
+
+#define DWARF2_DEFAULT_RETURN_COLUMN 31
+#define DWARF2_CIE_DATA_ALIGNMENT -4
+
#endif /* TC_MIPS */
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 09706cf..4ea866d 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2005-03-14 Eric Christopher <echristo@redhat.com>
+
+ * gas/cfi/cfi-mips-1.d, gas/cfi/cfi-mips-1.s: New dump test.
+ * gas/cfi/cfi.exp: Run it.
+ * gas/cfi/cfi-common-1.d: Update.
+ * gas/cfi/cfi-common-2.d: Ditto.
+ * gas/cfi/cfi-common-3.d: Ditto.
+ * gas/cfi/cfi-common-4.d: Ditto.
+
2005-03-12 Zack Weinberg <zack@codesourcery.com>
* gas/arm/thumbv6k.d, gas/arm/thumbv6k.s: New dump test.
diff --git a/gas/testsuite/gas/cfi/cfi-common-1.d b/gas/testsuite/gas/cfi/cfi-common-1.d
index 332c477..9f5d993 100644
--- a/gas/testsuite/gas/cfi/cfi-common-1.d
+++ b/gas/testsuite/gas/cfi/cfi-common-1.d
@@ -8,7 +8,7 @@ The section .eh_frame contains:
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
- Augmentation data: 1b
+ Augmentation data: [01]b
DW_CFA_nop
DW_CFA_nop
diff --git a/gas/testsuite/gas/cfi/cfi-common-2.d b/gas/testsuite/gas/cfi/cfi-common-2.d
index a1f1d06..a54e542 100644
--- a/gas/testsuite/gas/cfi/cfi-common-2.d
+++ b/gas/testsuite/gas/cfi/cfi-common-2.d
@@ -8,7 +8,7 @@ The section .eh_frame contains:
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
- Augmentation data: 1b
+ Augmentation data: [01]b
#...
00000014 000000[12][c0] 00000018 FDE cie=00000000 pc=.*
DW_CFA_advance_loc: 4 to .*
diff --git a/gas/testsuite/gas/cfi/cfi-common-3.d b/gas/testsuite/gas/cfi/cfi-common-3.d
index 82a4193..70055aa 100644
--- a/gas/testsuite/gas/cfi/cfi-common-3.d
+++ b/gas/testsuite/gas/cfi/cfi-common-3.d
@@ -8,7 +8,7 @@ The section .eh_frame contains:
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
- Augmentation data: 1b
+ Augmentation data: [01]b
#...
00000014 00000010 00000018 FDE cie=00000000 pc=.*
DW_CFA_advance_loc: 4 to .*
diff --git a/gas/testsuite/gas/cfi/cfi-common-4.d b/gas/testsuite/gas/cfi/cfi-common-4.d
index c6bbae8..9d65270 100644
--- a/gas/testsuite/gas/cfi/cfi-common-4.d
+++ b/gas/testsuite/gas/cfi/cfi-common-4.d
@@ -8,7 +8,7 @@ The section .eh_frame contains:
Code alignment factor: .*
Data alignment factor: .*
Return address column: .*
- Augmentation data: 1b
+ Augmentation data: [01]b
#...
00000014 00000010 00000018 FDE cie=00000000 pc=.*
DW_CFA_remember_state
diff --git a/gas/testsuite/gas/cfi/cfi-mips-1.d b/gas/testsuite/gas/cfi/cfi-mips-1.d
new file mode 100644
index 0000000..7a8d8e8
--- /dev/null
+++ b/gas/testsuite/gas/cfi/cfi-mips-1.d
@@ -0,0 +1,27 @@
+#readelf: -wf
+#name: CFI on mips, 1
+The section .eh_frame contains:
+
+00000000 00000014 00000000 CIE
+ Version: 1
+ Augmentation: "zR"
+ Code alignment factor: 1
+ Data alignment factor: -4
+ Return address column: 31
+ Augmentation data: 0b
+
+ DW_CFA_def_cfa_reg: r29
+ DW_CFA_def_cfa: r29 ofs 0
+ DW_CFA_nop
+ DW_CFA_nop
+
+00000018 0000001c 0000001c FDE cie=00000000 pc=00000000..0000002c
+ DW_CFA_advance_loc: 4 to 00000004
+ DW_CFA_def_cfa_offset: 8
+ DW_CFA_advance_loc: 4 to 00000008
+ DW_CFA_offset: r30 at cfa-8
+ DW_CFA_advance_loc: 4 to 0000000c
+ DW_CFA_def_cfa: r30 ofs 8
+ DW_CFA_advance_loc: 24 to 00000024
+ DW_CFA_def_cfa: r29 ofs 0
+ DW_CFA_nop
diff --git a/gas/testsuite/gas/cfi/cfi-mips-1.s b/gas/testsuite/gas/cfi/cfi-mips-1.s
new file mode 100644
index 0000000..cf7d5e2
--- /dev/null
+++ b/gas/testsuite/gas/cfi/cfi-mips-1.s
@@ -0,0 +1,39 @@
+ .file 1 "foo.c"
+ .section .mdebug.abi64
+ .previous
+ .text
+ .align 2
+ .globl foo
+ .ent foo
+ .cfi_startproc
+foo:
+ .frame $fp,8,$31 # vars= 8, regs= 1/0, args= 0, gp= 0
+ .mask 0x40000000,-8
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+
+ .cfi_def_cfa $sp, 0
+ addiu $sp,$sp,-8
+ .cfi_adjust_cfa_offset 8
+ sw $fp,0($sp)
+ .cfi_offset $30, -8
+ move $fp,$sp
+ .cfi_def_cfa $fp, 8
+
+ nop
+ nop
+ nop
+
+ move $sp,$fp
+ lw $fp,0($sp)
+ addiu $sp,$sp,8
+ .cfi_def_cfa $sp, 0
+ j $31
+ nop
+ .set macro
+ .set reorder
+ .end foo
+ .cfi_endproc
+ .size foo, .-foo
+ .ident "GCC: (GNU) 4.0.0 20041226 (experimental)"
diff --git a/gas/testsuite/gas/cfi/cfi.exp b/gas/testsuite/gas/cfi/cfi.exp
index 21483b1..eeb5510 100644
--- a/gas/testsuite/gas/cfi/cfi.exp
+++ b/gas/testsuite/gas/cfi/cfi.exp
@@ -59,6 +59,8 @@ if [istarget "x86_64-*"] then {
} elseif { [istarget "arm*-*"] || [istarget "xscale*-*"] } then {
run_dump_test "cfi-arm-1"
+} elseif { [istarget "mips*-*"] } then {
+ run_dump_test "cfi-mips-1"
} else {
return
}