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: -zcombreloc-less shared libs from ld


On Sun, Sep 29, 2002 at 11:37:18PM +0930, Alan Modra wrote:
> On Sun, Sep 29, 2002 at 09:07:19AM -0400, Jack Howarth wrote:
> >   Tag        Type                         Name/Value
> >  0x00000001 (NEEDED)                     Shared library: [libresolv.so.2]
> >  0x00000001 (NEEDED)                     Shared library: [libc.so.6]
> >  0x0000000e (SONAME)                     Library soname: [libhesiod.so.0]
> >  0x00000004 (HASH)                       0x94
> >  0x00000005 (STRTAB)                     0x75c
> >  0x00000006 (SYMTAB)                     0x2cc
> >  0x0000000a (STRSZ)                      712 (bytes)
> >  0x0000000b (SYMENT)                     16 (bytes)
> >  0x00000003 (PLTGOT)                     0x12fc8
> >  0x00000002 (PLTRELSZ)                   444 (bytes)
> >  0x00000014 (PLTREL)                     RELA
> >  0x00000017 (JMPREL)                     0xb38
> >  0x00000007 (RELA)                       0xb38
> >  0x00000008 (RELASZ)                     756 (bytes)
> >  0x00000009 (RELAENT)                    12 (bytes)
> >  0x6ffffffe (VERNEED)                    0xab8
> >  0x6fffffff (VERNEEDNUM)                 2
> >  0x6ffffff0 (VERSYM)                     0xa24
> >  0x00000000 (NULL)                       0x0
> 
> This is somewhat perplexing.  We have DT_JMPREL (ie. .rela.plt) and
> DT_RELA at the same address.  ppc includes plt relocs in DT_RELASZ,
> so we actually have
> 
>  .rela.plt at 0xb38, 444 = 0x1bc bytes long.
>  .rela.* (other reloc sections) at 0xcf4, 756-444 = 0x138 bytes long.
> 
> But elf32ppc.xsc should ensure the other relocs sections come
> before .rela.plt.  What is going on here?

Just from looking at readelf -Sd I think it may be wrong section placement
for .rela.* sections not named in the linker script (.rela.got2 in
this case) if there is just .rela.plt and no other .rela.* sections.
That could explain why linking with gcc -shared works - it links in some
crt* objects which have some .rela.data, .rela.got etc. relocs.
Debugging should show.
Certainly I wonder why .got2 and .rela.got2 is not in the linker script on
PPC, but even if it is not, it should work of course.

	Jakub


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