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

Reply via email to