Change the .section directive for the AVR assembler so that the .noinit section is always given the ELF NOBITS section type.

PR gas/23570
	* config/tc-avr.c (md_pseudo_table): Add entry for "secction".
	(avr_set_section): New function.  Ensures that the .noinit section
	gets the NOBITS ELF section type.
This commit is contained in:
Nick Clifton 2018-09-03 17:06:05 +01:00
parent 78a3b0fab8
commit 8744470dea
2 changed files with 26 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2018-09-03 Nick Clifton <nickc@redhat.com>
PR gas/23570
* config/tc-avr.c (md_pseudo_table): Add entry for "secction".
(avr_set_section): New function. Ensures that the .noinit section
gets the NOBITS ELF section type.
2018-08-31 Kito Cheng <kito@andestech.com>
* testsuite/gas/riscv/c-fld-fsd-fail.d: New.

View File

@ -481,11 +481,13 @@ const char EXP_CHARS[] = "eE";
const char FLT_CHARS[] = "dD";
static void avr_set_arch (int);
static void avr_set_section (int);
/* The target specific pseudo-ops which we support. */
const pseudo_typeS md_pseudo_table[] =
{
{"arch", avr_set_arch, 0},
{"section", avr_set_section, 0},
{ NULL, NULL, 0}
};
@ -702,6 +704,23 @@ avr_set_arch (int dummy ATTRIBUTE_UNUSED)
bfd_set_arch_mach (stdoutput, TARGET_ARCH, avr_mcu->mach);
}
static void
avr_set_section (int push)
{
obj_elf_section (push);
/* PR 23570. The .noinit section needs to be explicitly
set to the NOBITS type. */
if (seg_info (now_seg)->bss == 0
&& strcmp (bfd_get_section_name (stdoutput, now_seg), ".noinit") == 0)
{
bfd_set_section_flags (stdoutput, now_seg, SEC_ALLOC | SEC_RELOC);
seg_info (now_seg)->bss = 1;
elf_section_type (now_seg) = SHT_NOBITS;
elf_section_flags (now_seg) = SHF_ALLOC | SHF_WRITE;
}
}
int
md_parse_option (int c, const char *arg)
{