Bill Allombert on Fri, 28 Sep 2007 22:25:40 +0200


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

Re: ticket #627: pari 2.3.2 build fix for Linux PPC 32 bit


On Fri, Sep 28, 2007 at 12:56:18AM +0200, Michael.Abshoff wrote:
> Bill Allombert wrote:
> 
> Hello Bill, folks,
> >>>[mabshoff@localhost sage-2.8.4]$ gp
> >>>gp: error while loading shared libraries: 
> >>>/tmp/Work/sage-2.8.4/spkg/build/pari-2.3.2.p1/src/Olinux-ppc/libpari-gmp.so.2: 
> >>>R_PPC_REL24 relocation at 0x0fc77278 for symbol `sqrt' out of range
> >>>
> >>>The fix is obvious: add -fPIC to DLCFLAGS for linux-ppc.  A path can be 
> >>>found at
> >>>
> >>>http://fsmath.mathematik.uni-dortmund.de/~mabshoff/patches/pari-add_-fPIC_to_DLCFLAGS_for_PPC_Linux.patch
> >
> >Well I cannot reproduce this issue with either binutils 2.15 or
> >binutils 2.17 on debian-ppc, but this might have changed with newer 
> >versions,
> >like on alpha.  Which distribution and release of binutils are you using ?
> >
> 
> Fedora Core 7, all current patches applied. Binutils ought to be
> 
> ld -v
> GNU ld version 2.17.50.0.12-4 20070128
> 
> but I cannot check on the specific box I build due to lack of access (I 
> am on the road). I would speculate that Debian's gcc or binutils package 
> might be patched to force -fPIC on PPC because as far as I know it is 
> mandatory on PPC. 

I checked that Debian gcc does not force -fPIC on PPC and -fPIC is
certainly not mandatory on PPC. So either Fedora apply some security
patches that make -fPIC mandatory (this is probable) or newer binutils
require it.

In any case I proposed to Karim to use -fPIC on all non-x86 platform
but he had reservations so instead I checked every available platforms
to see whether -fPIC was mandatory (on Debian GNU/linux only)

The results were:
-fPIC mandatory: hppa ia64 arm amd64 sparc64
-fPIC not mandatory: x86 sparc32 ppc s390 mips alpha m68k

Since that date, -fPIC has moved from "not mandatory" to "mandatory"
on alpha and m68k. Maybe ppc is the next one.
I did not try linux-ppc64.

> At least the Cygwin gcc does so (-fPIC is mandatory on 
> Windows) and that certainly isn't the default behavior on x86.
> 
> >We should adress the issue for non-Linux system using binutils as well.
> >
> 
> Sure, I would assume that means AIX?

Rather NetBSD/FreeBSD/OpenBSD.

Cheers,
Bill.