Browse Source

miscellaneous SEC_SMALL_DATA

This patch arranges for symbols defined in .sdata and .sbss to be
reported by nm with 'g' and 's' flags, for coff targets that support
.sdata and .sbss.

The assembler changes regarding SEC_SMALL_DATA are really just
documentation.  As far as I'm aware, this won't change any assembler
output.

bfd/
	* coff-alpha.c (alpha_ecoff_le_vec): Add SEC_SMALL_DATA to
	applicable section flags.
	* coff-mips.c (mips_ecoff_le_vec, mips_ecoff_be_vec): Likewise.
	(mips_ecoff_bele_vec): Likewise.
	* coffcode.h (sec_to_styp_flags): Set SEC_SMALL_DATA for .sdata
	and .sbss sections.
	* ecoff.c (_bfd_ecoff_new_section_hook): Likewise.
	(_bfd_ecoff_styp_to_sec_flags): Likewise.
gas/
	* config/tc-m32r.c (md_begin): Set SEC_SMALL_DATA on .scommon section.
	* config/tc-mips.c (s_change_sec): Set SEC_SMALL_DATA for .sdata
	and .sbss sections.
	* config/tc-score.c: Delete !BFD_ASSEMBLER code throughout.
	(s3_s_change_sec): Set SEC_SMALL_DATA for .sbss section.
	(s3_s_score_lcomm): Likewise.
	* config/tc-score7.c: Similarly.
	* read.c (bss_alloc): Set SEC_SMALL_DATA for .sbss section.
binutils-2_35-branch
Alan Modra 7 years ago
parent
commit
a4dd6c97bd
  1. 11
      bfd/ChangeLog
  2. 3
      bfd/coff-alpha.c
  3. 9
      bfd/coff-mips.c
  4. 12
      bfd/coffcode.h
  5. 17
      bfd/ecoff.c
  6. 11
      gas/ChangeLog
  7. 4
      gas/config/tc-m32r.c
  8. 6
      gas/config/tc-mips.c
  9. 28
      gas/config/tc-score.c
  10. 31
      gas/config/tc-score7.c
  11. 2
      gas/read.c

11
bfd/ChangeLog

@ -1,3 +1,14 @@
2020-03-02 Alan Modra <amodra@gmail.com>
* coff-alpha.c (alpha_ecoff_le_vec): Add SEC_SMALL_DATA to
applicable section flags.
* coff-mips.c (mips_ecoff_le_vec, mips_ecoff_be_vec): Likewise.
(mips_ecoff_bele_vec): Likewise.
* coffcode.h (sec_to_styp_flags): Set SEC_SMALL_DATA for .sdata
and .sbss sections.
* ecoff.c (_bfd_ecoff_new_section_hook): Likewise.
(_bfd_ecoff_styp_to_sec_flags): Likewise.
2020-03-02 Alan Modra <amodra@gmail.com> 2020-03-02 Alan Modra <amodra@gmail.com>
* elf32-m32r.c (m32r_elf_section_flags): New function. * elf32-m32r.c (m32r_elf_section_flags): New function.

3
bfd/coff-alpha.c

@ -2424,7 +2424,8 @@ const bfd_target alpha_ecoff_le_vec =
| HAS_LINENO | HAS_DEBUG | HAS_LINENO | HAS_DEBUG
| HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
| SEC_DATA | SEC_SMALL_DATA),
0, /* leading underscore */ 0, /* leading underscore */
' ', /* ar_pad_char */ ' ', /* ar_pad_char */
15, /* ar_max_namelen */ 15, /* ar_max_namelen */

9
bfd/coff-mips.c

@ -1440,7 +1440,8 @@ const bfd_target mips_ecoff_le_vec =
| HAS_LINENO | HAS_DEBUG | HAS_LINENO | HAS_DEBUG
| HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED), | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
| SEC_DATA | SEC_SMALL_DATA),
0, /* leading underscore */ 0, /* leading underscore */
' ', /* ar_pad_char */ ' ', /* ar_pad_char */
15, /* ar_max_namelen */ 15, /* ar_max_namelen */
@ -1497,7 +1498,8 @@ const bfd_target mips_ecoff_be_vec =
| HAS_LINENO | HAS_DEBUG | HAS_LINENO | HAS_DEBUG
| HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED), | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
| SEC_DATA | SEC_SMALL_DATA),
0, /* leading underscore */ 0, /* leading underscore */
' ', /* ar_pad_char */ ' ', /* ar_pad_char */
15, /* ar_max_namelen */ 15, /* ar_max_namelen */
@ -1554,7 +1556,8 @@ const bfd_target mips_ecoff_bele_vec =
| HAS_LINENO | HAS_DEBUG | HAS_LINENO | HAS_DEBUG
| HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED), | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE
| SEC_DATA | SEC_SMALL_DATA),
0, /* leading underscore */ 0, /* leading underscore */
' ', /* ar_pad_char */ ' ', /* ar_pad_char */
15, /* ar_max_namelen */ 15, /* ar_max_namelen */

12
bfd/coffcode.h

@ -717,7 +717,7 @@ sec_to_styp_flags (const char *sec_name, flagword sec_flags)
#ifndef COFF_WITH_PE #ifndef COFF_WITH_PE
static bfd_boolean static bfd_boolean
styp_to_sec_flags (bfd *abfd ATTRIBUTE_UNUSED, styp_to_sec_flags (bfd *abfd,
void * hdr, void * hdr,
const char *name, const char *name,
asection *section ATTRIBUTE_UNUSED, asection *section ATTRIBUTE_UNUSED,
@ -850,6 +850,11 @@ styp_to_sec_flags (bfd *abfd ATTRIBUTE_UNUSED,
sec_flags = (SEC_LOAD | SEC_ALLOC); sec_flags = (SEC_LOAD | SEC_ALLOC);
#endif /* STYP_SDATA */ #endif /* STYP_SDATA */
if ((bfd_applicable_section_flags (abfd) & SEC_SMALL_DATA) != 0
&& (CONST_STRNEQ (name, ".sbss")
|| CONST_STRNEQ (name, ".sdata")))
sec_flags |= SEC_SMALL_DATA;
#if defined (COFF_LONG_SECTION_NAMES) && defined (COFF_SUPPORT_GNU_LINKONCE) #if defined (COFF_LONG_SECTION_NAMES) && defined (COFF_SUPPORT_GNU_LINKONCE)
/* As a GNU extension, if the name begins with .gnu.linkonce, we /* As a GNU extension, if the name begins with .gnu.linkonce, we
only link a single copy of the section. This is used to support only link a single copy of the section. This is used to support
@ -1312,6 +1317,11 @@ styp_to_sec_flags (bfd *abfd,
} }
} }
if ((bfd_applicable_section_flags (abfd) & SEC_SMALL_DATA) != 0
&& (CONST_STRNEQ (name, ".sbss")
|| CONST_STRNEQ (name, ".sdata")))
sec_flags |= SEC_SMALL_DATA;
#if defined (COFF_LONG_SECTION_NAMES) && defined (COFF_SUPPORT_GNU_LINKONCE) #if defined (COFF_LONG_SECTION_NAMES) && defined (COFF_SUPPORT_GNU_LINKONCE)
/* As a GNU extension, if the name begins with .gnu.linkonce, we /* As a GNU extension, if the name begins with .gnu.linkonce, we
only link a single copy of the section. This is used to support only link a single copy of the section. This is used to support

17
bfd/ecoff.c

@ -156,14 +156,14 @@ _bfd_ecoff_new_section_hook (bfd *abfd, asection *section)
{ _INIT, SEC_ALLOC | SEC_CODE | SEC_LOAD }, { _INIT, SEC_ALLOC | SEC_CODE | SEC_LOAD },
{ _FINI, SEC_ALLOC | SEC_CODE | SEC_LOAD }, { _FINI, SEC_ALLOC | SEC_CODE | SEC_LOAD },
{ _DATA, SEC_ALLOC | SEC_DATA | SEC_LOAD }, { _DATA, SEC_ALLOC | SEC_DATA | SEC_LOAD },
{ _SDATA, SEC_ALLOC | SEC_DATA | SEC_LOAD }, { _SDATA, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_SMALL_DATA },
{ _RDATA, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY}, { _RDATA, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
{ _LIT8, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY}, { _LIT8, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY | SEC_SMALL_DATA},
{ _LIT4, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY}, { _LIT4, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY | SEC_SMALL_DATA},
{ _RCONST, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY}, { _RCONST, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
{ _PDATA, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY}, { _PDATA, SEC_ALLOC | SEC_DATA | SEC_LOAD | SEC_READONLY},
{ _BSS, SEC_ALLOC}, { _BSS, SEC_ALLOC},
{ _SBSS, SEC_ALLOC}, { _SBSS, SEC_ALLOC | SEC_SMALL_DATA},
/* An Irix 4 shared libary. */ /* An Irix 4 shared libary. */
{ _LIB, SEC_COFF_SHARED_LIBRARY} { _LIB, SEC_COFF_SHARED_LIBRARY}
}; };
@ -412,16 +412,19 @@ _bfd_ecoff_styp_to_sec_flags (bfd *abfd ATTRIBUTE_UNUSED,
|| styp_flags == STYP_PDATA || styp_flags == STYP_PDATA
|| styp_flags == STYP_RCONST) || styp_flags == STYP_RCONST)
sec_flags |= SEC_READONLY; sec_flags |= SEC_READONLY;
if (styp_flags & STYP_SDATA)
sec_flags |= SEC_SMALL_DATA;
} }
else if ((styp_flags & STYP_BSS) else if (styp_flags & STYP_SBSS)
|| (styp_flags & STYP_SBSS)) sec_flags |= SEC_ALLOC | SEC_SMALL_DATA;
else if (styp_flags & STYP_BSS)
sec_flags |= SEC_ALLOC; sec_flags |= SEC_ALLOC;
else if ((styp_flags & STYP_INFO) || styp_flags == STYP_COMMENT) else if ((styp_flags & STYP_INFO) || styp_flags == STYP_COMMENT)
sec_flags |= SEC_NEVER_LOAD; sec_flags |= SEC_NEVER_LOAD;
else if ((styp_flags & STYP_LITA) else if ((styp_flags & STYP_LITA)
|| (styp_flags & STYP_LIT8) || (styp_flags & STYP_LIT8)
|| (styp_flags & STYP_LIT4)) || (styp_flags & STYP_LIT4))
sec_flags |= SEC_DATA | SEC_LOAD | SEC_ALLOC | SEC_READONLY; sec_flags |= SEC_DATA |SEC_SMALL_DATA | SEC_LOAD | SEC_ALLOC | SEC_READONLY;
else if (styp_flags & STYP_ECOFF_LIB) else if (styp_flags & STYP_ECOFF_LIB)
sec_flags |= SEC_COFF_SHARED_LIBRARY; sec_flags |= SEC_COFF_SHARED_LIBRARY;
else else

11
gas/ChangeLog

@ -1,3 +1,14 @@
2020-03-02 Alan Modra <amodra@gmail.com>
* config/tc-m32r.c (md_begin): Set SEC_SMALL_DATA on .scommon section.
* config/tc-mips.c (s_change_sec): Set SEC_SMALL_DATA for .sdata
and .sbss sections.
* config/tc-score.c: Delete !BFD_ASSEMBLER code throughout.
(s3_s_change_sec): Set SEC_SMALL_DATA for .sbss section.
(s3_s_score_lcomm): Likewise.
* config/tc-score7.c: Similarly.
* read.c (bss_alloc): Set SEC_SMALL_DATA for .sbss section.
2020-02-28 YunQiang Su <syq@debian.org> 2020-02-28 YunQiang Su <syq@debian.org>
PR gas/25539 PR gas/25539

4
gas/config/tc-m32r.c

@ -713,7 +713,8 @@ md_begin (void)
/* This is copied from perform_an_assembly_pass. */ /* This is copied from perform_an_assembly_pass. */
applicable = bfd_applicable_section_flags (stdoutput); applicable = bfd_applicable_section_flags (stdoutput);
bfd_set_section_flags (sbss_section, applicable & SEC_ALLOC); bfd_set_section_flags (sbss_section,
applicable & (SEC_ALLOC | SEC_SMALL_DATA));
subseg_set (seg, subseg); subseg_set (seg, subseg);
@ -721,6 +722,7 @@ md_begin (void)
but with the name .scommon. */ but with the name .scommon. */
scom_section = *bfd_com_section_ptr; scom_section = *bfd_com_section_ptr;
scom_section.name = ".scommon"; scom_section.name = ".scommon";
scom_section.flags = SEC_IS_COMMON | SEC_SMALL_DATA;
scom_section.output_section = & scom_section; scom_section.output_section = & scom_section;
scom_section.symbol = & scom_symbol; scom_section.symbol = & scom_symbol;
scom_section.symbol_ptr_ptr = & scom_section.symbol; scom_section.symbol_ptr_ptr = & scom_section.symbol;

6
gas/config/tc-mips.c

@ -16365,8 +16365,8 @@ s_change_sec (int sec)
case 's': case 's':
seg = subseg_new (".sdata", (subsegT) get_absolute_expression ()); seg = subseg_new (".sdata", (subsegT) get_absolute_expression ());
bfd_set_section_flags (seg, bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA); | SEC_DATA | SEC_SMALL_DATA));
if (strncmp (TARGET_OS, "elf", 3) != 0) if (strncmp (TARGET_OS, "elf", 3) != 0)
record_alignment (seg, 4); record_alignment (seg, 4);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
@ -16374,7 +16374,7 @@ s_change_sec (int sec)
case 'B': case 'B':
seg = subseg_new (".sbss", (subsegT) get_absolute_expression ()); seg = subseg_new (".sbss", (subsegT) get_absolute_expression ());
bfd_set_section_flags (seg, SEC_ALLOC); bfd_set_section_flags (seg, SEC_ALLOC | SEC_SMALL_DATA);
if (strncmp (TARGET_OS, "elf", 3) != 0) if (strncmp (TARGET_OS, "elf", 3) != 0)
record_alignment (seg, 4); record_alignment (seg, 4);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();

28
gas/config/tc-score.c

@ -5569,14 +5569,16 @@ s3_s_change_sec (int sec)
{ {
case 'r': case 'r':
seg = subseg_new (s3_RDATA_SECTION_NAME, (subsegT) get_absolute_expression ()); seg = subseg_new (s3_RDATA_SECTION_NAME, (subsegT) get_absolute_expression ());
bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_RELOC | SEC_DATA)); bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY
| SEC_RELOC | SEC_DATA));
if (strcmp (TARGET_OS, "elf") != 0) if (strcmp (TARGET_OS, "elf") != 0)
record_alignment (seg, 4); record_alignment (seg, 4);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
break; break;
case 's': case 's':
seg = subseg_new (".sdata", (subsegT) get_absolute_expression ()); seg = subseg_new (".sdata", (subsegT) get_absolute_expression ());
bfd_set_section_flags (seg, SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA); bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
| SEC_DATA | SEC_SMALL_DATA));
if (strcmp (TARGET_OS, "elf") != 0) if (strcmp (TARGET_OS, "elf") != 0)
record_alignment (seg, 4); record_alignment (seg, 4);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
@ -5685,17 +5687,10 @@ s3_s_score_ent (int aent)
if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-') if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-')
s3_get_number (); s3_get_number ();
#ifdef BFD_ASSEMBLER
if ((bfd_section_flags (now_seg) & SEC_CODE) != 0) if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
maybe_text = 1; maybe_text = 1;
else else
maybe_text = 0; maybe_text = 0;
#else
if (now_seg != data_section && now_seg != bss_section)
maybe_text = 1;
else
maybe_text = 0;
#endif
if (!maybe_text) if (!maybe_text)
as_warn (_(".ent or .aent not in text section.")); as_warn (_(".ent or .aent not in text section."));
if (!aent && s3_cur_proc_ptr) if (!aent && s3_cur_proc_ptr)
@ -5794,17 +5789,10 @@ s3_s_score_end (int x ATTRIBUTE_UNUSED)
else else
p = NULL; p = NULL;
#ifdef BFD_ASSEMBLER
if ((bfd_section_flags (now_seg) & SEC_CODE) != 0) if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
maybe_text = 1; maybe_text = 1;
else else
maybe_text = 0; maybe_text = 0;
#else
if (now_seg != data_section && now_seg != bss_section)
maybe_text = 1;
else
maybe_text = 0;
#endif
if (!maybe_text) if (!maybe_text)
as_warn (_(".end not in text section")); as_warn (_(".end not in text section"));
@ -6132,11 +6120,9 @@ s3_s_score_lcomm (int bytes_p)
{ {
bss_seg = subseg_new (".sbss", 1); bss_seg = subseg_new (".sbss", 1);
seg_info (bss_seg)->bss = 1; seg_info (bss_seg)->bss = 1;
#ifdef BFD_ASSEMBLER if (!bfd_set_section_flags (bss_seg, SEC_ALLOC | SEC_SMALL_DATA))
if (!bfd_set_section_flags (bss_seg, SEC_ALLOC))
as_warn (_("error setting flags for \".sbss\": %s"), as_warn (_("error setting flags for \".sbss\": %s"),
bfd_errmsg (bfd_get_error ())); bfd_errmsg (bfd_get_error ()));
#endif
} }
} }
#endif #endif
@ -6215,12 +6201,8 @@ s3_s_score_lcomm (int bytes_p)
if ( if (
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
#ifdef BFD_ASSEMBLER
(OUTPUT_FLAVOR != bfd_target_aout_flavour (OUTPUT_FLAVOR != bfd_target_aout_flavour
|| (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0)) && || (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0)) &&
#else
(S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0) &&
#endif
#endif #endif
(S_GET_SEGMENT (symbolP) == bss_seg || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0))) (S_GET_SEGMENT (symbolP) == bss_seg || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0)))
{ {

31
gas/config/tc-score7.c

@ -5422,14 +5422,16 @@ s7_s_change_sec (int sec)
{ {
case 'r': case 'r':
seg = subseg_new (s7_RDATA_SECTION_NAME, (subsegT) get_absolute_expression ()); seg = subseg_new (s7_RDATA_SECTION_NAME, (subsegT) get_absolute_expression ());
bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_RELOC | SEC_DATA)); bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_READONLY
| SEC_RELOC | SEC_DATA));
if (strcmp (TARGET_OS, "elf") != 0) if (strcmp (TARGET_OS, "elf") != 0)
record_alignment (seg, 4); record_alignment (seg, 4);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
break; break;
case 's': case 's':
seg = subseg_new (".sdata", (subsegT) get_absolute_expression ()); seg = subseg_new (".sdata", (subsegT) get_absolute_expression ());
bfd_set_section_flags (seg, SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA); bfd_set_section_flags (seg, (SEC_ALLOC | SEC_LOAD | SEC_RELOC
| SEC_DATA | SEC_SMALL_DATA));
if (strcmp (TARGET_OS, "elf") != 0) if (strcmp (TARGET_OS, "elf") != 0)
record_alignment (seg, 4); record_alignment (seg, 4);
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
@ -5539,17 +5541,10 @@ s7_s_score_ent (int aent)
if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-') if (ISDIGIT (*input_line_pointer) || *input_line_pointer == '-')
s7_get_number (); s7_get_number ();
#ifdef BFD_ASSEMBLER
if ((bfd_section_flags (now_seg) & SEC_CODE) != 0) if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
maybe_text = 1; maybe_text = 1;
else else
maybe_text = 0; maybe_text = 0;
#else
if (now_seg != data_section && now_seg != bss_section)
maybe_text = 1;
else
maybe_text = 0;
#endif
if (!maybe_text) if (!maybe_text)
as_warn (_(".ent or .aent not in text section.")); as_warn (_(".ent or .aent not in text section."));
if (!aent && s7_cur_proc_ptr) if (!aent && s7_cur_proc_ptr)
@ -5649,17 +5644,10 @@ s7_s_score_end (int x ATTRIBUTE_UNUSED)
else else
p = NULL; p = NULL;
#ifdef BFD_ASSEMBLER
if ((bfd_section_flags (now_seg) & SEC_CODE) != 0) if ((bfd_section_flags (now_seg) & SEC_CODE) != 0)
maybe_text = 1; maybe_text = 1;
else else
maybe_text = 0; maybe_text = 0;
#else
if (now_seg != data_section && now_seg != bss_section)
maybe_text = 1;
else
maybe_text = 0;
#endif
if (!maybe_text) if (!maybe_text)
as_warn (_(".end not in text section")); as_warn (_(".end not in text section"));
@ -5992,10 +5980,9 @@ s7_s_score_lcomm (int bytes_p)
{ {
bss_seg = subseg_new (".sbss", 1); bss_seg = subseg_new (".sbss", 1);
seg_info (bss_seg)->bss = 1; seg_info (bss_seg)->bss = 1;
#ifdef BFD_ASSEMBLER if (!bfd_set_section_flags (bss_seg, SEC_ALLOC | SEC_SMALL_DATA))
if (!bfd_set_section_flags (bss_seg, SEC_ALLOC)) as_warn (_("error setting flags for \".sbss\": %s"),
as_warn (_("error setting flags for \".sbss\": %s"), bfd_errmsg (bfd_get_error ())); bfd_errmsg (bfd_get_error ()));
#endif
} }
} }
#endif #endif
@ -6074,12 +6061,8 @@ s7_s_score_lcomm (int bytes_p)
if ( if (
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT)) #if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
#ifdef BFD_ASSEMBLER
(OUTPUT_FLAVOR != bfd_target_aout_flavour (OUTPUT_FLAVOR != bfd_target_aout_flavour
|| (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0)) && || (S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0)) &&
#else
(S_GET_OTHER (symbolP) == 0 && S_GET_DESC (symbolP) == 0) &&
#endif
#endif #endif
(S_GET_SEGMENT (symbolP) == bss_seg || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0))) (S_GET_SEGMENT (symbolP) == bss_seg || (!S_IS_DEFINED (symbolP) && S_GET_VALUE (symbolP) == 0)))
{ {

2
gas/read.c

@ -2465,7 +2465,7 @@ bss_alloc (symbolS *symbolP, addressT size, unsigned int align)
{ {
bss_seg = subseg_new (".sbss", 1); bss_seg = subseg_new (".sbss", 1);
seg_info (bss_seg)->bss = 1; seg_info (bss_seg)->bss = 1;
if (!bfd_set_section_flags (bss_seg, SEC_ALLOC)) if (!bfd_set_section_flags (bss_seg, SEC_ALLOC | SEC_SMALL_DATA))
as_warn (_("error setting flags for \".sbss\": %s"), as_warn (_("error setting flags for \".sbss\": %s"),
bfd_errmsg (bfd_get_error ())); bfd_errmsg (bfd_get_error ()));
} }

Loading…
Cancel
Save