diff options
-rw-r--r-- | gas/ChangeLog | 12 | ||||
-rw-r--r-- | gas/dwarf2dbg.c | 39 | ||||
-rw-r--r-- | gas/symbols.c | 32 | ||||
-rw-r--r-- | gas/symbols.h | 2 |
4 files changed, 22 insertions, 63 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 1eefec9..1751b00 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,15 @@ +2019-11-25 Christian Eggers <ceggers@gmx.de> + + * dwarf2dbg.c (out_set_addr): Revert 2019-03-13 change. + (out_debug_line, out_debug_aranges, out_debug_info): Likewise. + * symbols.h (symbol_set_value_now_octets, symbol_octets_p): Remove. + * symbols.c (struct symbol_flags): Remove member sy_octets. + (symbol_temp_new_now_octets): Don't set symbol_flags::sy_octets. + (resolve_symbol_value): Revert: Return octets instead of bytes if + sy_octets is set. + (symbol_set_value_now_octets): Remove. + (symbol_octets_p): Remove. + 2019-11-22 Mihail Ionescu <mihail.ionescu@arm.com> * config/tc-arm.c (arm_ext_crc): New. diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 90b47b0..dce9603 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -1137,27 +1137,15 @@ get_frag_fix (fragS *frag, segT seg) /* Set an absolute address (may result in a relocation entry). */ static void -out_inc_line_addr (int line_delta, addressT addr_delta); - -static void out_set_addr (symbolS *sym) { expressionS exp; - addressT expr_addr, expr_addr_aligned; memset (&exp, 0, sizeof exp); + out_opcode (DW_LNS_extended_op); + out_uleb128 (sizeof_address + 1); - /* The expression at the bottom must be aligned to OCTETS_PER_BYTE. The - statements after the for loop will contribute 3 more octets. */ - expr_addr = frag_now_fix_octets () + 3; - expr_addr_aligned = (expr_addr + OCTETS_PER_BYTE - 1) & -OCTETS_PER_BYTE; - for ( ; expr_addr != expr_addr_aligned; expr_addr++) - out_inc_line_addr (0, 0); /* NOP */ - - out_opcode (DW_LNS_extended_op); /* 1 octet */ - out_uleb128 (sizeof_address + 1); /* 1 octet */ - - out_opcode (DW_LNE_set_address); /* 1 octet */ + out_opcode (DW_LNE_set_address); exp.X_op = O_symbol; exp.X_add_symbol = sym; exp.X_add_number = 0; @@ -1827,7 +1815,6 @@ out_debug_line (segT line_seg) symbolS *line_end; struct line_seg *s; int sizeof_offset; - addressT section_end, section_end_aligned; memset (&exp, 0, sizeof exp); sizeof_offset = out_header (line_seg, &exp); @@ -1844,7 +1831,7 @@ out_debug_line (segT line_seg) exp.X_op_symbol = prologue_start; exp.X_add_number = 0; emit_expr (&exp, sizeof_offset); - symbol_set_value_now_octets (prologue_start); + symbol_set_value_now (prologue_start); /* Parameters of the state machine. */ out_byte (DWARF2_LINE_MIN_INSN_LENGTH); @@ -1869,7 +1856,7 @@ out_debug_line (segT line_seg) out_file_list (); - symbol_set_value_now_octets (prologue_end); + symbol_set_value_now (prologue_end); /* For each section, emit a statement program. */ for (s = all_segs; s; s = s->next) @@ -1889,17 +1876,7 @@ out_debug_line (segT line_seg) in the DWARF Line Number header. */ subseg_set (subseg_get (".debug_line_end", FALSE), 0); - /* Pad size of .debug_line section to a multiple of OCTETS_PER_BYTE. - Simply sizing the section in md_section_align() is not sufficient, - also the size field in the .debug_line header must be a multiple - of OCTETS_PER_BYTE. Not doing so will introduce gaps within the - .debug_line sections after linking. */ - section_end = frag_now_fix_octets (); - section_end_aligned = (section_end + OCTETS_PER_BYTE - 1) & -OCTETS_PER_BYTE; - for ( ; section_end != section_end_aligned; section_end++) - out_inc_line_addr (0, 0); /* NOP */ - - symbol_set_value_now_octets (line_end); + symbol_set_value_now (line_end); } static void @@ -2018,7 +1995,7 @@ out_debug_aranges (segT aranges_seg, segT info_seg) md_number_to_chars (p, 0, addr_size); md_number_to_chars (p + addr_size, 0, addr_size); - symbol_set_value_now_octets (aranges_end); + symbol_set_value_now (aranges_end); } /* Emit data for .debug_abbrev. Note that this must be kept in @@ -2133,7 +2110,7 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT ranges_seg, dwarf2 draft has no standard code for assembler. */ out_two (DW_LANG_Mips_Assembler); - symbol_set_value_now_octets (info_end); + symbol_set_value_now (info_end); } /* Emit the three debug strings needed in .debug_str and setup symbols diff --git a/gas/symbols.c b/gas/symbols.c index 34ec145..cff2405 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -73,10 +73,6 @@ struct symbol_flags before. It is cleared as soon as any direct reference to the symbol is present. */ unsigned int sy_weakrefd : 1; - - /* This if set if the unit of the symbol value is "octets" instead - of "bytes". */ - unsigned int sy_octets : 1; }; /* The information we keep for a symbol. Note that the symbol table @@ -850,9 +846,7 @@ symbol_temp_new_now (void) symbolS * symbol_temp_new_now_octets (void) { - symbolS * symb = symbol_temp_new (now_seg, frag_now_fix_octets (), frag_now); - symb->sy_flags.sy_octets = 1; - return symb; + return symbol_temp_new (now_seg, frag_now_fix_octets (), frag_now); } symbolS * @@ -1336,10 +1330,7 @@ resolve_symbol_value (symbolS *symp) /* Fall through. */ case O_constant: - if (symp->sy_flags.sy_octets) - final_val += symp->sy_frag->fr_address; - else - final_val += symp->sy_frag->fr_address / OCTETS_PER_BYTE; + final_val += symp->sy_frag->fr_address / OCTETS_PER_BYTE; if (final_seg == expr_section) final_seg = absolute_section; /* Fall through. */ @@ -2651,18 +2642,6 @@ symbol_set_value_now (symbolS *sym) symbol_set_frag (sym, frag_now); } -/* Set the value of SYM to the current position in the current segment, - in octets. */ - -void -symbol_set_value_now_octets (symbolS *sym) -{ - S_SET_SEGMENT (sym, now_seg); - S_SET_VALUE (sym, frag_now_fix_octets ()); - symbol_set_frag (sym, frag_now); - sym->sy_flags.sy_octets = 1; -} - /* Set the frag of a symbol. */ void @@ -2934,13 +2913,6 @@ symbol_set_bfdsym (symbolS *s, asymbol *bsym) /* else XXX - What do we do now ? */ } -/* Return whether symbol unit is "octets" (instead of "bytes"). */ - -int symbol_octets_p (symbolS *s) -{ - return s->sy_flags.sy_octets; -} - #ifdef OBJ_SYMFIELD_TYPE /* Get a pointer to the object format information for a symbol. */ diff --git a/gas/symbols.h b/gas/symbols.h index f8429d9..cffa821 100644 --- a/gas/symbols.h +++ b/gas/symbols.h @@ -182,7 +182,6 @@ extern expressionS *symbol_get_value_expression (symbolS *); extern void symbol_set_value_expression (symbolS *, const expressionS *); extern offsetT *symbol_X_add_number (symbolS *); extern void symbol_set_value_now (symbolS *); -extern void symbol_set_value_now_octets (symbolS *); extern void symbol_set_frag (symbolS *, fragS *); extern fragS *symbol_get_frag (symbolS *); extern void symbol_mark_used (symbolS *); @@ -208,7 +207,6 @@ extern symbolS *symbol_symbolS (symbolS *); extern asymbol *symbol_get_bfdsym (symbolS *); extern void symbol_set_bfdsym (symbolS *, asymbol *); extern int symbol_same_p (symbolS *, symbolS *); -extern int symbol_octets_p (symbolS *); #ifdef OBJ_SYMFIELD_TYPE OBJ_SYMFIELD_TYPE *symbol_get_obj (symbolS *); |