gas/:
* config/tc-mips.c (append_insn): Call dwarf2_emit_insn() before emitting insn. gas/testsuite/: * 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.
This commit is contained in:
parent
e4d180c27b
commit
58e2ea4d1c
6 changed files with 139 additions and 17 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
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>
|
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* config/obj-coff.c (obj_coff_section): Replace SEC_SHARED with
|
* config/obj-coff.c (obj_coff_section): Replace SEC_SHARED with
|
||||||
|
|
|
@ -2009,6 +2009,15 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#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. */
|
/* Record the frag type before frag_var. */
|
||||||
if (prev_insn_frag)
|
if (prev_insn_frag)
|
||||||
prev_insn_frag_type = prev_insn_frag->fr_type;
|
prev_insn_frag_type = prev_insn_frag->fr_type;
|
||||||
|
@ -2243,24 +2252,11 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! mips_opts.mips16)
|
if (! mips_opts.mips16)
|
||||||
{
|
md_number_to_chars (f, ip->insn_opcode, 4);
|
||||||
md_number_to_chars (f, ip->insn_opcode, 4);
|
|
||||||
#ifdef OBJ_ELF
|
|
||||||
dwarf2_emit_insn (4);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else if (*reloc_type == BFD_RELOC_MIPS16_JMP)
|
else if (*reloc_type == BFD_RELOC_MIPS16_JMP)
|
||||||
{
|
{
|
||||||
md_number_to_chars (f, ip->insn_opcode >> 16, 2);
|
md_number_to_chars (f, ip->insn_opcode >> 16, 2);
|
||||||
md_number_to_chars (f + 2, ip->insn_opcode & 0xffff, 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
|
else
|
||||||
{
|
{
|
||||||
|
@ -2270,9 +2266,6 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
|
||||||
f += 2;
|
f += 2;
|
||||||
}
|
}
|
||||||
md_number_to_chars (f, ip->insn_opcode, 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. */
|
/* Update the register mask information. */
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
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>
|
2005-02-21 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* gas/d10v/instruction_packing-005.d: Adjust.
|
* gas/d10v/instruction_packing-005.d: Adjust.
|
||||||
|
|
|
@ -746,4 +746,8 @@ if { [istarget mips*-*-*] } then {
|
||||||
run_list_test "noat-5" ""
|
run_list_test "noat-5" ""
|
||||||
run_list_test "noat-6" ""
|
run_list_test "noat-6" ""
|
||||||
run_list_test "noat-7" ""
|
run_list_test "noat-7" ""
|
||||||
|
|
||||||
|
if { $elf && !$no_mips16 } {
|
||||||
|
run_dump_test "mips16-dwarf2"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
47
gas/testsuite/gas/mips/mips16-dwarf2.d
Normal file
47
gas/testsuite/gas/mips/mips16-dwarf2.d
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#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
|
66
gas/testsuite/gas/mips/mips16-dwarf2.s
Normal file
66
gas/testsuite/gas/mips/mips16-dwarf2.s
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# 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:
|
Loading…
Reference in a new issue