X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gas%2Fsubsegs.c;h=cb598e84bef8ac4e0d3aad8951cd0c160e3a5812;hb=025f768ffc3aeb5561bb60a9c8f3841faa53bd6f;hp=ab0836c227840147efdf1903672b09a12fa027ef;hpb=4cbd84083ea89e870526ed0c80d462084887ba6e;p=binutils-gdb.git diff --git a/gas/subsegs.c b/gas/subsegs.c index ab0836c2278..cb598e84bef 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -1,5 +1,5 @@ /* subsegs.c - subsegments - - Copyright (C) 1987-2016 Free Software Foundation, Inc. + Copyright (C) 1987-2022 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -65,7 +65,7 @@ subseg_change (segT seg, int subseg) { seginfo = XCNEW (segment_info_type); seginfo->bfd_section = seg; - bfd_set_section_userdata (stdoutput, seg, seginfo); + bfd_set_section_userdata (seg, seginfo); } } @@ -89,6 +89,10 @@ subseg_set_rest (segT seg, subsegT subseg) seginfo = seg_info (seg); + /* Should the section symbol be kept? */ + if (bfd_keep_unused_section_symbols (stdoutput)) + seg->symbol->flags |= BSF_SECTION_SYM_USED; + /* Attempt to find or make a frchain for that subsection. We keep the list sorted by subsection number. */ for (frcP = *(lastPP = &seginfo->frchainP); @@ -146,9 +150,7 @@ subseg_get (const char *segname, int force_new) { segT secptr; segment_info_type *seginfo; - const char *now_seg_name = (now_seg - ? bfd_get_section_name (stdoutput, now_seg) - : 0); + const char *now_seg_name = now_seg ? bfd_section_name (now_seg) : 0; if (!force_new && now_seg_name @@ -167,7 +169,7 @@ subseg_get (const char *segname, int force_new) secptr->output_section = secptr; seginfo = XCNEW (segment_info_type); seginfo->bfd_section = secptr; - bfd_set_section_userdata (stdoutput, secptr, seginfo); + bfd_set_section_userdata (secptr, seginfo); } return secptr; } @@ -224,7 +226,7 @@ section_symbol (segT sec) if (! EMIT_SECTION_SYMBOLS || symbol_table_frozen) { /* Here we know it won't be going into the symbol table. */ - s = symbol_create (sec->symbol->name, sec, 0, &zero_address_frag); + s = symbol_create (sec->symbol->name, sec, &zero_address_frag, 0); } else { @@ -235,7 +237,7 @@ section_symbol (segT sec) if (s == NULL || ((seg = S_GET_SEGMENT (s)) != sec && seg != undefined_section)) - s = symbol_new (sec->symbol->name, sec, 0, &zero_address_frag); + s = symbol_new (sec->symbol->name, sec, &zero_address_frag, 0); else if (seg == undefined_section) { S_SET_SEGMENT (s, sec); @@ -260,7 +262,7 @@ section_symbol (segT sec) int subseg_text_p (segT sec) { - return (bfd_get_section_flags (stdoutput, sec) & SEC_CODE) != 0; + return (bfd_section_flags (sec) & SEC_CODE) != 0; } /* Return non zero if SEC has at least one byte of data. It is