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: GCC >= 3 problems


On Wed, Jan 23, 2002 at 07:45:26PM +0100, Maciej W. Rozycki wrote:
> On Wed, 23 Jan 2002, H . J . Lu wrote:
> 
> > >  It may not necessarily be a linker bug.  It's a result of crtendS.o
> > > referencing atexit() in older versions of gcc.  But there is no atexit() 
> > > in libc.so -- it's only defined in libc_nonshared.a (thus it may be pulled
> > > in and provided by executables).  A recompilation of libglut.so with the
> > > new gcc should fix the problem. 
> > 
> > That is why I call it a linker bug. Why do you have to recompile a
> > library?  Everything should work fine without recompiling.
> 
>  You have to recompile it because it bogusly references a symbol that was
> unknown at the library's link time and therefore has to be provided by an
> executable.  If an executable does not provide it, linking obviously
> fails.  IOW, the library was built incorrectly and thus needs a rebuild. 

Here is the related thread:

http://sources.redhat.com/ml/binutils/2001-05/msg00124.html

My current patch is different from it. The Linux binutils will do the
similar thing as the ld.so. Here are the ChangeLog entries:

        * elf-bfd.h (elf_link_loaded_list): New structure.
        (elf_link_hash_table): Add "loaded".

        * elf.c (_bfd_elf_link_hash_table_init): Initialize the
         "loaded" field to NULL.

        * elflink.h (elf_link_check_versioned_symbol): New function.
        Return true if there is one hidden definition for the undefined
        symbol.

        * elflink.h (elf_link_output_extsym): For undefined symbol in
        DSO from DT_NEEDED, Call elf_link_check_versioned_symbol to
        check if there is one hidden definition.


H.J.


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