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

Re: relocation failed, recompile with -fPIC?

On 10/08/2014 10:13 AM, Eduard Bloch wrote:
Hello Mips porters,

can anyone advise how to process on this FTBFS?

It fails with:
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I.. -I../intl -D_FORTIFY_SOURCE=2 -D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26 -D__STDC_FORMAT_MACROS -DRLOG_COMPONENT=encfs -I/usr/include -DLOCALEDIR=\"/usr/share/locale\" -W -Wall -Wpointer-arith -Wwrite-strings -g -O2 -Wformat -Werror=format-security -flto -flto -pthread -c SSL_Cipher.cpp  -fPIC -DPIC -o .libs/SSL_Cipher.o
SSL_Cipher.cpp:199:13: warning: 'BF_Cipher_registered' defined but not used [-Wunused-variable]
  static bool BF_Cipher_registered = Cipher::Register("Blowfish",
SSL_Cipher.cpp:244:13: warning: 'AES_Cipher_registered' defined but not used [-Wunused-variable]
  static bool AES_Cipher_registered = Cipher::Register("AES",
/bin/bash ../libtool --tag=CXX   --mode=link g++ -DRLOG_COMPONENT="encfs" -I/usr/include  -DLOCALEDIR=\"/usr/share/locale\" -W -Wall -Wpointer-arith -Wwrite-strings -g -O2 -Wformat -Werror=format-security -flto -flto -pthread  -version-info 6:1:0 -Wl,-z,relro -Wl,-z,now -flto -flto   -o libencfs.la -rpath /usr/lib readpassphrase.lo base64.lo ConfigReader.lo ConfigVar.lo Context.lo Cipher.lo CipherKey.lo FileIO.lo RawFileIO.lo BlockFileIO.lo CipherFileIO.lo MACFileIO.lo NameIO.lo StreamNameIO.lo BlockNameIO.lo NullNameIO.lo Interface.lo MemoryPool.lo NullCipher.lo DirNode.lo FileNode.lo FileUtils.lo openssl.lo autosprintf.lo SSL_Cipher.lo -lrlog -lssl -lcrypto -lboost_serialization -lboost_filesystem -lboost_system
libtool: link: g++ -shared -nostdlib /usr/lib/gcc/mips-linux-gnu/4.9/../../../mips-linux-gnu/crti.o /usr/lib/gcc/mips-linux-gnu/4.9/crtbeginS.o  .libs/readpassphrase.o .libs/base64.o .libs/ConfigReader.o .libs/ConfigVar.o .libs/Context.o .libs/Cipher.o .libs/CipherKey.o .libs/FileIO.o .libs/RawFileIO.o .libs/BlockFileIO.o .libs/CipherFileIO.o .libs/MACFileIO.o .libs/NameIO.o .libs/StreamNameIO.o .libs/BlockNameIO.o .libs/NullNameIO.o .libs/Interface.o .libs/MemoryPool.o .libs/NullCipher.o .libs/DirNode.o .libs/FileNode.o .libs/FileUtils.o .libs/openssl.o .libs/autosprintf.o .libs/SSL_Cipher.o   /usr/lib/librlog.so -lssl -lcrypto -lboost_serialization -lboost_filesystem -lboost_system -L/usr/lib/gcc/mips-linux-gnu/4.9 -L/usr/lib/gcc/mips-linux-gnu/4.9/../../../mips-linux-gnu -L/usr/lib/gcc/mips-linux-gnu/4.9/../../../../lib -L/lib/mips-linux-gnu -L/lib/../lib -L/usr/lib/mips-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/mips-linux-gnu/4.9/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/
ips-linux-gnu/4.9/crtendS.o /usr/lib/gcc/mips-linux-gnu/4.9/../../../mips-linux-gnu/crtn.o  -pthread -Wl,-z -Wl,relro -Wl,-z -Wl,now   -pthread -Wl,-soname -Wl,libencfs.so.6 -o .libs/libencfs.so.6.0.1
/usr/bin/ld: /tmp/ccuNHoVF.ltrans0.ltrans.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC
/tmp/ccuNHoVF.ltrans0.ltrans.o: error adding symbols: Bad value

You have to find the commands that are generating /tmp/ccuNHoVF.ltrans0.ltrans.o

They are not shown in the logs.

The error message is correct, '__gnu_local_gp' cannot be used in position independent code. If the offending file is being generated by gcc/g++ then you should be able to show the command line that led to its being created.

But -fPIC is used everywhere AFAICS (except for the linking call).

It should probably be used for linking too.  Why isn't it?

If the linking step is generating /tmp/ccuNHoVF.ltrans0.ltrans.o, this could explain your problem.

It also happens on mipsel.

Not surprising, it is not an endian specific issue.


Reply to: