Robb Kistler
2010-Mar-12 01:47 UTC
[LLVMdev] large modules, PPC on OS X, "ld: 32-bit pic-base out of range in"
I'm trying to build a very large shared library (bundle) for PPC on Mac OS X 10.5. The build looks something like this, where mybundlebitcode.o is the large object llc -relocation-model=pic -o=mybundle.s mybundlebitcode.o gcc -arch ppc -c -x assembler -o mybundle.o mybundle.s g++ -o mybundle.bundle -bundle mybundle.o -lotherlibrary I get the following error: ld: 32-bit pic-base out of range in somefunction(Array<unsigned char, 40ul> const&)from mybundle.o Normally I'd try to build with the -mlongcall option, but it doesn't appear that llc has support for this. Is there some way to get llc to generate "long calls"? Thanks!
Chris Lattner
2010-Mar-12 02:07 UTC
[LLVMdev] large modules, PPC on OS X, "ld: 32-bit pic-base out of range in"
On Mar 11, 2010, at 5:47 PM, Robb Kistler wrote:> I'm trying to build a very large shared library (bundle) for PPC on Mac OS X 10.5. The build looks something like this, where mybundlebitcode.o is the large object > > llc -relocation-model=pic -o=mybundle.s mybundlebitcode.o > gcc -arch ppc -c -x assembler -o mybundle.o mybundle.s > g++ -o mybundle.bundle -bundle mybundle.o -lotherlibrary > > I get the following error: > ld: 32-bit pic-base out of range in somefunction(Array<unsigned char, 40ul> const&)from mybundle.o > > Normally I'd try to build with the -mlongcall option, but it doesn't appear that llc has support for this. Is there some way to get llc to generate "long calls"?I thought that -mlongcall was a linker option? Have you tried passing it to GCC/G++ when you link the .s file? -Chris
Nick Kledzik
2010-Mar-12 02:33 UTC
[LLVMdev] large modules, PPC on OS X, "ld: 32-bit pic-base out of range in"
On Mar 11, 2010, at 6:07 PM, Chris Lattner wrote:> On Mar 11, 2010, at 5:47 PM, Robb Kistler wrote: > >> I'm trying to build a very large shared library (bundle) for PPC on >> Mac OS X 10.5. The build looks something like this, where >> mybundlebitcode.o is the large object >> >> llc -relocation-model=pic -o=mybundle.s mybundlebitcode.o >> gcc -arch ppc -c -x assembler -o mybundle.o mybundle.s >> g++ -o mybundle.bundle -bundle mybundle.o -lotherlibrary >> >> I get the following error: >> ld: 32-bit pic-base out of range in somefunction(Array<unsigned >> char, 40ul> const&)from mybundle.o >> >> Normally I'd try to build with the -mlongcall option, but it >> doesn't appear that llc has support for this. Is there some way to >> get llc to generate "long calls"? > > I thought that -mlongcall was a linker option? Have you tried > passing it to GCC/G++ when you link the .s file?-mlongcall is deprecated. The linker ignores the "stubs" generated by the compiler. The linker is capable of synthesizing branch islands for calls that are > 16 MB away but within the same linkage unit. That error message happens not with a call site, but when there is a ppc code sequence that is using two instructions to add a 32-bit signed displacement to a "pic-base" register. The linker thinks the target of the relocations is > 2GB away from the pic-base. Just how large is this bundle? Are you bumping up to a 2GB mach-o file limit? Or are you using absolute addressing to symbols in another linkage unit? That is not a supported code model. -Nick
Maybe Matching Threads
- [LLVMdev] large modules, PPC on OS X, "ld: 32-bit pic-base out of range in"
- [LLVMdev] large modules, PPC on OS X, "ld: 32-bit pic-base out of range in"
- Title of bundled packages in the library index (PR#1017)
- Problems encountered/fixed making CrossCompileBuild
- [LLVMdev] way to determine which version of llvm for llvm-gcc? Xcode specifically