ld 2.18 --gc-sections bug? (with testcase)

Rask Ingemann Lambertsen rask@sygehus.dk
Mon Dec 10 16:11:00 GMT 2007


On Sat, Sep 08, 2007 at 08:34:39PM +0930, Alan Modra wrote:
> This one turns out to be nothing to do with --gc-sections, but a
> rather more serious bug.  If an input section with contents is linked
> in to a bss output section, the ELF linker currently leaves the output
> section as NOBITS.  File space is thus not allocated for the output
> section, but a number of places write to the file regardless,
> typically trashing the symbol table, string table, or debug sections.
[snip]
> 
> Index: bfd/elf.c
> ===================================================================
> RCS file: /cvs/src/src/bfd/elf.c,v
> retrieving revision 1.413
> diff -u -p -r1.413 elf.c
> --- bfd/elf.c	25 Aug 2007 13:20:41 -0000	1.413
> +++ bfd/elf.c	8 Sep 2007 08:07:42 -0000
> @@ -2084,7 +2084,7 @@ static const struct bfd_elf_special_sect
[...]
> +    this_hdr->sh_type = sh_type;
> +  else if (this_hdr->sh_type == SHT_NOBITS
> +	   && sh_type == SHT_PROGBITS
> +	   && (asect->flags & SEC_ALLOC) != 0)
> +    {
> +      /* Warn if we are changing a NOBITS section to PROGBITS, but
> +	 allow the link to proceed.  This can happen when users link
> +	 non-bss input sections to bss output sections, or emit data
> +	 to a bss output section via a linker script.  */
> +      (*_bfd_error_handler)
> +	(_("section `%A' type changed to PROGBITS"), asect);
> +      this_hdr->sh_type = sh_type;
>      }

   This triggers all the time on m32r-unknown-elf (as least with GCC
compiled programs):
ld-new: section `.sbss' type changed to PROGBITS

1) Is it something which should be fixed? If so, pointers appreciated. For
example, I can't even tell which file is causing it in spite of trying
"--verbose --print-map".

2) If it is really a warning rather than an error message, shouldn't it be
prefixed with "warning: " or so? Dejagnu currently counts it as an error.

-- 
Rask Ingemann Lambertsen
Danish law requires addresses in e-mail to be logged and stored for a year



More information about the Binutils mailing list