+2005-02-22 Maciej W. Rozycki <macro@mips.com>
+
+ * config/tc-mips.c (append_insn): Call dwarf2_emit_insn() before
+ emitting insn.
+
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* config/obj-coff.c (obj_coff_section): Replace SEC_SHARED with
}
}
+#ifdef OBJ_ELF
+ /* The value passed to dwarf2_emit_insn is the distance between
+ the beginning of the current instruction and the address that
+ should be recorded in the debug tables. For MIPS16 debug info
+ we want to use ISA-encoded addresses, so we pass -1 for an
+ address higher by one than the current. */
+ dwarf2_emit_insn (mips_opts.mips16 ? -1 : 0);
+#endif
+
/* Record the frag type before frag_var. */
if (prev_insn_frag)
prev_insn_frag_type = prev_insn_frag->fr_type;
}
if (! mips_opts.mips16)
- {
- md_number_to_chars (f, ip->insn_opcode, 4);
-#ifdef OBJ_ELF
- dwarf2_emit_insn (4);
-#endif
- }
+ md_number_to_chars (f, ip->insn_opcode, 4);
else if (*reloc_type == BFD_RELOC_MIPS16_JMP)
{
md_number_to_chars (f, ip->insn_opcode >> 16, 2);
md_number_to_chars (f + 2, ip->insn_opcode & 0xffff, 2);
-#ifdef OBJ_ELF
- /* The value passed to dwarf2_emit_insn is the distance between
- the end of the current instruction and the address that should
- be recorded in the debug tables. Since we want to use ISA-encoded
- addresses in MIPS16 debug info, the value is one byte less than
- the real instruction length. */
- dwarf2_emit_insn (3);
-#endif
}
else
{
f += 2;
}
md_number_to_chars (f, ip->insn_opcode, 2);
-#ifdef OBJ_ELF
- dwarf2_emit_insn (ip->use_extend ? 3 : 1);
-#endif
}
/* Update the register mask information. */
+2005-02-22 Maciej W. Rozycki <macro@mips.com>
+
+ * gas/mips/mips16-dwarf2.d: New test to check DWARF2 line
+ information for MIPS16.
+ * gas/mips/mips16-dwarf2.s: Source for the new test.
+ * gas/mips/mips.exp: Run the new test.
+
2005-02-21 Alan Modra <amodra@bigpond.net.au>
* gas/d10v/instruction_packing-005.d: Adjust.
run_list_test "noat-5" ""
run_list_test "noat-6" ""
run_list_test "noat-7" ""
+
+ if { $elf && !$no_mips16 } {
+ run_dump_test "mips16-dwarf2"
+ }
}
--- /dev/null
+#readelf: -wl
+#name: MIPS16 DWARF2
+#as: -mips16 -no-mdebug -g0
+#source: mips16-dwarf2.s
+
+Dump of debug contents of section \.debug_line:
+
+ Length: 64
+ DWARF Version: 2
+ Prologue Length: 35
+ Minimum Instruction Length: 1
+ Initial value of 'is_stmt': 1
+ Line Base: -5
+ Line Range: 14
+ Opcode Base: 10
+ \(Pointer size: 4\)
+
+ 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
+
+ The Directory Table is empty\.
+
+ The File Name Table:
+ Entry Dir Time Size Name
+ 1 0 0 0 mips16-dwarf2\.s
+
+ Line Number Statements:
+ Extended opcode 2: set Address to 0x1
+ Special opcode 5: advance Address by 0 to 0x1 and Line by 0 to 1
+ Special opcode 34: advance Address by 2 to 0x3 and Line by 1 to 2
+ Special opcode 34: advance Address by 2 to 0x5 and Line by 1 to 3
+ Special opcode 62: advance Address by 4 to 0x9 and Line by 1 to 4
+ Special opcode 34: advance Address by 2 to 0xb and Line by 1 to 5
+ Special opcode 62: advance Address by 4 to 0xf and Line by 1 to 6
+ Special opcode 62: advance Address by 4 to 0x13 and Line by 1 to 7
+ Advance PC by 2286 to 901
+ Special opcode 6: advance Address by 0 to 0x901 and Line by 1 to 8
+ Advance PC by 15 to 910
+ Extended opcode 1: End of Sequence
--- /dev/null
+# Source file used to test DWARF2 information for MIPS16.
+
+ .set mips16
+
+ .text
+.Ltext0:
+ .p2align 2
+
+ .file 1 "mips16-dwarf2.s"
+stuff:
+ .loc 1 1 0
+ nop
+ .loc 1 2 0
+ li $2, 0
+ .loc 1 3 0
+ li $2, 0x1234
+ .loc 1 4 0
+ lw $2, 0f
+ .loc 1 5 0
+ lw $2, 1f
+ .loc 1 6 0
+ b 0f
+ nop
+ .loc 1 7 0
+ b 1f
+ nop
+ .loc 1 8 0
+
+ .p2align 8
+0:
+ .space 2048
+1:
+ nop
+# align section end to 16-byte boundary for easier testing on multiple targets
+ .p2align 4
+.Letext0:
+
+ .section .debug_info,"",@progbits
+.Ldebug_info0:
+ .4byte .Ledebug_info0 - .L1debug_info0 # length
+.L1debug_info0:
+ .2byte 2 # version
+ .4byte .Ldebug_abbrev0 # abbrev offset
+ .byte 4 # address size
+ .uleb128 0x1 # abbrev code
+ .4byte .Ldebug_line0 # DW_AT_stmt_list
+ .4byte .Ltext0 # DW_AT_low_pc
+ .4byte .Letext0 # DW_AT_high_pc
+.Ledebug_info0:
+
+ .section .debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+ .uleb128 0x1 # abbrev code
+ .uleb128 0x11 # DW_TAG_compile_unit
+ .byte 0x0 # DW_CHILDREN_no
+ .uleb128 0x10 # DW_AT_stmt_list
+ .uleb128 0x6 # DW_FORM_data4
+ .uleb128 0x11 # DW_AT_low_pc
+ .uleb128 0x1 # DW_FORM_addr
+ .uleb128 0x12 # DW_AT_high_pc
+ .uleb128 0x1 # DW_FORM_addr
+ .byte 0x0
+ .byte 0x0
+
+ .section .debug_line,"",@progbits
+.Ldebug_line0: