This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Linker Bug or Design Intent (Absolute symbols in zero sized sections)
On Tue, Sep 26, 2006 at 12:14:36PM -0400, Vivek Goyal wrote:
> H. J. Lu wrote:
> >On Tue, Sep 26, 2006 at 11:06:19AM -0400, Vivek Goyal wrote:
> >
> >>Daniel Jacobowitz wrote:
> >>
> >>>On Tue, Sep 26, 2006 at 07:51:59AM -0700, H. J. Lu wrote:
> >>>
> >>>
> >>>>I think for --emit-relocs, we can keep an empty output section if its
> >>>>address is taken.
> >>>>
> >>>>Of course, we need to update linker doc.
> >>>
> >>>
> >>>I think we're being too specific to this case.
> >>>
> >>>Why are we changing what the linker script clearly defines as section
> >>>relative symbols to absolute symbols? This isn't the only use case
> >>>I've encountered where that will break. We should either discard the
> >>>symbols, or leave the empty section.
> >>>
> >>
> >>I think retaining the zero sized section might be more logical otherwise
> >>a user who has specifically defined a section relative symbol in linker
> >>script file will be surprised to know that in some cases symbol is not
> >>present at all.
> >
> >
> >
> >I think removing empty output sections isn't a bad idea. Otherwise,
> >a normal executable/DSO may have many empty output sections since
> >the default linker scripts may have many unused output sections.
> >
> >However, I agree that removing empty output sections shouldn't lead
> >to many surprises for user. I think linker
> >
> >1. Should remove an empty output section if it isn't used to define
> >section relative symbol which may be changed at run time.
> >2. Shouldn't convert a section relative symbol to absolute symbol
> >if it may be changed at run time.
>
> How does one determine at compile time if a section relative symbol will
> be modified or not? ("if it may be changed at run time?").
How can you reasonably modify a section relative symbol at run time?
Do you need to use --emit-relocs?
>
> >3. Should preserve the pre-set constant VMA of an empty output section.
> >
> >Is there anything I missed?
>
> I think if we just stick to the behaviour as described in "info ld" that
> should be good enough. So linker will get rid of zero sized sections
> except in following situation.
>
> 3.6.7 Output Section Discarding
> -------------------------------
>
> "If you use anything other than an input section description as an
> output section command, such as a symbol assignment, then the output
> section will always be created, even if there are no matching input
> sections."
Convert section relative symbol to absolute shouldn't be a problem
in most cases. If we know it may be a problem at link time, we can
keep it section relative.
H.J.