From: Alan Modra Date: Fri, 28 Feb 2014 04:39:32 +0000 (+1030) Subject: Incorrect .debug_line prologue header length for 64-bit DWARF X-Git-Tag: gdb-7.8-release~938 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=02fe846e43cb0190251a6fefbd322201b4bbe02d;p=external%2Fbinutils.git Incorrect .debug_line prologue header length for 64-bit DWARF Don't be clever, calculate the length directly as the difference of two symbols. * dwarf2dbg.c (out_debug_line): Correct .debug_line header_length field for 64-bit dwarf. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 3469821..09dd757 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2014-02-28 Alan Modra + + * dwarf2dbg.c (out_debug_line): Correct .debug_line header_length + field for 64-bit dwarf. + 2014-02-21 Ilya Tocar * config/tc-i386.c (cpu_arch): Add .prefetchwt1. diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 6d6ee2d..ac6148f 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -1515,7 +1515,7 @@ static void out_debug_line (segT line_seg) { expressionS exp; - symbolS *prologue_end; + symbolS *prologue_start, *prologue_end; symbolS *line_end; struct line_seg *s; int sizeof_offset; @@ -1527,10 +1527,14 @@ out_debug_line (segT line_seg) out_two (DWARF2_LINE_VERSION); /* Length of the prologue following this length. */ + prologue_start = symbol_temp_make (); prologue_end = symbol_temp_make (); + exp.X_op = O_subtract; exp.X_add_symbol = prologue_end; - exp.X_add_number = - (4 + 2 + 4); + exp.X_op_symbol = prologue_start; + exp.X_add_number = 0; emit_expr (&exp, sizeof_offset); + symbol_set_value_now (prologue_start); /* Parameters of the state machine. */ out_byte (DWARF2_LINE_MIN_INSN_LENGTH);