This is the mail archive of the binutils@sources.redhat.com 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: is main() provided by a library valid C ?


> -----Original Message-----
> From: Daniel Jacobowitz [mailto:drow@false.org]
> On Wed, May 18, 2005 at 10:23:24PM +0200, Peter S. Mazinger wrote:
> > On Wed, 18 May 2005, Daniel Jacobowitz wrote:
> > 
> > > On Wed, May 18, 2005 at 09:34:53PM +0200, Peter S. Mazinger wrote:
> > > > On Fri, 13 May 2005, Daniel Jacobowitz wrote:
> > > > 
> > > > > On Fri, May 13, 2005 at 09:47:01AM +0200, Peter S. Mazinger wrote:
> > > > > > The circumstances:
> > > > > > The weak definition of main() is moved from libc.so to crt1.o written in 
> > > > > > asm as '.protected main'.
> > > > > 
> > > > > Why?
> > > > > 
> > > > > You certainly can't declare main as a protected symbol if it lives in a
> > > > > library.  I don't see why you want it to be a protected symbol, either.
> > > > 
> > > > I wasn't clear enough.
> > > > libc does not define anything about main (not even as weak:
> > > > glibc/uclibc/dietlibc). It is obvious that it can't be defined as 
> > > > protected in a library. To remove any weak declaration of main from libc, 
> > > > one solution was to put it into crt1.o. This change (although .protected) 
> > > > does not fail on most of the apps, but fails 2 tests (subversion and 
> > > > bind), because those tests "deliver" main() from a library.
> > > > 
> > > > My question is:
> > > > Is it valid to provide main() from a library or not? If it is valid, then 
> > > > the solution to do '.protected main' in crt1.S is not ok and/or linker 
> > > > fails. If it is not valid, then the apps themselves should be corrected.
> > > 
> > > No, my question above is my response to this, which is what I figured
> > > you were doing.  You haven't explained why you're making this change.
> > > What is the problem with a weak reference from libc?
> > 
> > the change would be "good to have", to be able to build libc w/ -z defs, 
> > that weak is "disturbing" this ;)
> 
> Then how about doing it the same way glibc does, by a non-protected
> reference?
> 
> You're going to a lot of effort to do something invalid, for a cosmetic
> benefit.

If my memory serves me right, to build libc w/ -z defs, main needs to be declared
weak in libc. Doing so introduces another problem, compiling an app that has no main
does NOT fail with an error message about missing main function. To solve that,
main was declared .protected in crtX.S but that led to the problem Peter mentioned
above.

Is the above problem solved in glibc and, if so, how?

 Jocke


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