This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Strange KEEP behavior in linker script


Well, my issue is the fact that the output section is discarded.
I tried the --no-gc-sections but it has no effect.
I can stop the linker from discarding the section adding a contribution like below, but that's ....strange ;-)


.mysec :
{
  . += 1;                  /* dummy contribution */
   mysec_start = .;

KEEP(*(.mysec));

   mysec_end = .;
}

When there are no contributions, the section seems to be removed in ldlang.c:

strip_excluded_output_sections (void)
{
...
     exclude = (output_section->rawsize == 0
        && (output_section->flags & SEC_KEEP) == 0
        && !bfd_section_removed_from_list (output_bfd,
                           output_section));
...
     if (exclude)
   {
     /* We don't set bfd_section to NULL since bfd_section of the
        removed output section statement may still be used.  */
     if (!os->section_relative_symbol
         && !os->update_dot_tree)
       os->ignored = TRUE;
           output_section->flags |= SEC_EXCLUDE;
     bfd_section_list_remove (output_bfd, output_section);
     output_bfd->section_count--;
   }
...
}
The SEC_KEEP flag is tested on the output section.

I see your point about the KEEP() semantic, but then do you see a solution to avoid the discard of the output section (without adding artificial contributions in the linker script)?


Daniel Jacobowitz wrote:
On Tue, May 06, 2008 at 03:29:27PM +0200, Denis FERRANTI wrote:
Shouldn't the KEEP() statement force the generation of the output section in the ELF file, even if there are no input sections.

No, why should it? It is supposed to keep the input sections, not the output section. I'm not sure why ld started discarding the empty output section.


-- Denis Ferranti


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]