diff options
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-mips.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 8d380e9..c3a9e3c 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -2242,7 +2242,12 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, md_number_to_chars (f, ip->insn_opcode >> 16, 2); md_number_to_chars (f + 2, ip->insn_opcode & 0xffff, 2); #ifdef OBJ_ELF - dwarf2_emit_insn (4); + /* 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 @@ -2254,7 +2259,7 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr, } md_number_to_chars (f, ip->insn_opcode, 2); #ifdef OBJ_ELF - dwarf2_emit_insn (ip->use_extend ? 4 : 2); + dwarf2_emit_insn (ip->use_extend ? 3 : 1); #endif } |