Re: relocation error: R_AMD64_PC32

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>There seems to be at least two things that can cause position
>dependent code to be created when the -fPIC option is used.
>
> * Assembly code
> * Use of of the GNU extension to C (I hate this ****ing extensions)
>that use "computed gotos"

Well not really!  The problem was that at a certain point during
the configuration stage, the Configure script asks the following
question:

Any special flags to pass to x86_64-pc-solaris2.11-gcc to
create a dynamically loaded library? [ -G -m64 -fstack-protector]

And quite naturally (!) one presses enter because Solaris users
know that the Solaris linker accepts the -G option. But for starnge
reason this does not work. One has to enter the following:

-shared -m64 -fstack-protector

Now what is even more curious is that the man page of Solaris ld
says among others the following:

     -G
     -shared

         In dynamic mode only, produces a  shared  object.  Unde-
         fined   symbols  are  allowed.  See  Chapter  4,  Shared
         Objects, in Linker and Libraries Guide.

In different words, both -G and -shared are supposed to do the
same thing but apparently they don't. Maybe, -shared forces GCC
to some things, while the -G thing is passed directly to the linker
without touching anything else.


>Finding the bad library with non-PIC code is easy - just use:
>
>$ elfdump -d library | fgrep TEXTREL

Thanks. This helped me to find the solution.

Regards,

Apostolos









[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux