On Tue, Apr 25, 2006 at 05:41:18PM +0100, Andrew Haley wrote:
> Rene Rebe writes:
> > On Tuesday 25 April 2006 14:21, Andrew Haley wrote:
> > > Rene Rebe writes:
> > > > jackd: error while loading shared libraries: /usr/lib64/libjack.so.0:
> > > > R_PPC64_ADDR32 40000056b70 for symbol `' out of range
> > > >
> > > > There only R_PPC64_ADDR32 in .text+0*.
Hmm, R_PPC64_ADDR32 relocs ought to only appear in debug sections, and
debug sections don't have dynamic relocs on ppc64. Is there some
assembly somewhere that uses ".long" instead of ".quad" perhaps?
> > I further narrowed it stripping down the preprocessed sources. The
> > culprit appears to be a function pointer passed as reference to a thread
> > creation function:.
> >
> > client.c:1696:
> > #else
> > if (jack_client_create_thread (client,
> > &client->thread,
> > client->engine->client_priority,
> > client->engine->real_time,
> > jack_client_thread, client)) {
> > return -1;
> > }
> > #endif
>
> ppc64 function pointers point to a function descriptor, which
> specifies both the entry point and TOC for the function.
>
> I'm guessing the problem may be with the desriptor, but I'll bow out
> now to let the PPC experts answer.
But these don't use R_PPC64_ADDR32 relocs.
--
Alan Modra
IBM OzLabs - Linux Technology Centre