From 5862107c33031d3a5ec20582e3f55cd2b2d21675 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Tue, 15 Mar 2005 05:28:17 +0000 Subject: [PATCH] ==> ChangeLog <== 2005-03-14 Eric Christopher * 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 * 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. --- gas/ChangeLog | 11 ++++++++ gas/Makefile.am | 2 +- gas/Makefile.in | 2 +- gas/config/tc-mips.c | 9 +++++++ gas/config/tc-mips.h | 8 ++++++ gas/testsuite/ChangeLog | 9 +++++++ gas/testsuite/gas/cfi/cfi-common-1.d | 2 +- gas/testsuite/gas/cfi/cfi-common-2.d | 2 +- gas/testsuite/gas/cfi/cfi-common-3.d | 2 +- gas/testsuite/gas/cfi/cfi-common-4.d | 2 +- gas/testsuite/gas/cfi/cfi-mips-1.d | 27 +++++++++++++++++++ gas/testsuite/gas/cfi/cfi-mips-1.s | 39 ++++++++++++++++++++++++++++ gas/testsuite/gas/cfi/cfi.exp | 2 ++ 13 files changed, 111 insertions(+), 6 deletions(-) create mode 100644 gas/testsuite/gas/cfi/cfi-mips-1.d create mode 100644 gas/testsuite/gas/cfi/cfi-mips-1.s diff --git a/gas/ChangeLog b/gas/ChangeLog index cbca7e43aa9..d98f5b031cd 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,14 @@ +2005-03-14 Eric Christopher + + * 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 * po/es.po: Commit new Spanish translation. diff --git a/gas/Makefile.am b/gas/Makefile.am index 450852ac750..38676b84839 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 3b045810fba..26623f730f3 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 655be764c67..84f58e3e9d9 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 720f644fe38..a5d5cf19847 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 09706cfe982..4ea866d0280 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2005-03-14 Eric Christopher + + * 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 * 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 332c4774c0c..9f5d9932a7d 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 a1f1d068541..a54e542cbc3 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 82a4193280f..70055aa0b8c 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 c6bbae8200d..9d6527023b4 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 00000000000..7a8d8e8b29a --- /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 00000000000..cf7d5e2fc81 --- /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 21483b14e1f..eeb55109829 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 } -- 2.30.2