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: 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.


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