This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See crosstool-NG for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: need -fPIC cc flag?


Reinoud, list,

On Tue, 2015-04-14 at 14:04 -0700, Bryan Hundven wrote:
> Reinoud, list,
> 
> On Mon, 2015-04-13 at 12:59 -0600, Reinoud Koornstra wrote:
> > Hi Everyone,
> > 
> > I kind of asked this question already, but I can't seem to get the
> > -fPIC as flag in the final gcc compilation. This is for mips with ssp
> > and uclibc. The problem complained about it:
> > /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/ld:
> > .libs/compatibility.o: relocation R_MIPS_HI16 against `__gnu_local_gp'
> > can not be used when making a shared object; recompile with -fPIC
> > as you can see below.
> > Any hints as to how I can get -fPIC inserted as a cflag argument?
> > 
> > 
> > [ALL  ]    libtool: compile: mv -f "compatibility-chrono.o"
> > ".libs/compatibility-chrono.o"
> > [ALL  ]    libtool: compile:
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -shared-libgcc -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -nostdinc++ -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include/mipsel-coconut-linux-uclibc
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/libsupc++
> > -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
> > -Wabi -fdiagnostics-show-location=once -ffunction-sections
> > -fdata-sections -frandom-seed=compatibility-chrono.lo -g -Os
> > -std=gnu++11 -c
> > /media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/src/c++11/compatibility-chrono.cc
> > >/dev/null 2>&1
> > [ALL  ]    /bin/bash ../libtool --tag CXX   --mode=compile
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -shared-libgcc -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -nostdinc++ -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> >     -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include/mipsel-coconut-linux-uclibc
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/libsupc++
> >   -fno-implicit-templates  -Wall -Wextra -Wwrite-strings -Wcast-qual
> > -Wabi  -fdiagnostics-show-location=once   -ffunction-sections
> > -fdata-sections  -frandom-seed=compatibility-condvar.lo -g -Os
> > -std=gnu++11 -c
> > /media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/src/c++11/compatibility-condvar.cc
> > [ALL  ]    libtool: compile:
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -shared-libgcc -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -nostdinc++ -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include/mipsel-coconut-linux-uclibc
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/libsupc++
> > -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
> > -Wabi -fdiagnostics-show-location=once -ffunction-sections
> > -fdata-sections -frandom-seed=compatibility-condvar.lo -g -Os
> > -std=gnu++11 -c
> > /media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/src/c++11/compatibility-condvar.cc
> >  -D_GLIBCXX_SHARED
> > [ALL  ]    /tmp/ccFVSe46.s: Assembler messages:
> > [ALL  ]    /tmp/ccFVSe46.s: Warning: .gnu_attribute 4,3 requires `softfloat'
> > [ALL  ]    libtool: compile: mv -f "compatibility-condvar.o"
> > ".libs/compatibility-condvar.o"
> > [ALL  ]    libtool: compile:
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -shared-libgcc -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -nostdinc++ -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include/mipsel-coconut-linux-uclibc
> > -I/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/include
> > -I/media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/libsupc++
> > -fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
> > -Wabi -fdiagnostics-show-location=once -ffunction-sections
> > -fdata-sections -frandom-seed=compatibility-condvar.lo -g -Os
> > -std=gnu++11 -c
> > /media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/src/c++11/compatibility-condvar.cc
> > >/dev/null 2>&1
> > [ALL  ]    cp /media/SSD/Reinoud/latest_crosstools/.build/src/gcc-4.9.2/libstdc++-v3/config/abi/pre/gnu.ver
> > libstdc++-symbols.ver.tmp
> > [ALL  ]    chmod +w libstdc++-symbols.ver.tmp
> > [ALL  ]    if test "x" != x; then         if grep '^# Appended to
> > version file.'                /dev/null > /dev/null 2>&1; then
> >    cat  >> libstdc++-symbols.ver.tmp;    else      sed -n '1,/DO NOT
> > DELETE/p' libstdc++-symbols.ver.tmp > tmp.top;           sed -n '/DO
> > NOT DELETE/,$p' libstdc++-symbols.ver.tmp > tmp.bottom;
> > cat tmp.top  tmp.bottom > libstdc++-symbols.ver.tmp;            rm
> > tmp.top tmp.bottom;           fi;   fi
> > [ALL  ]    /media/SSD/Reinoud/latest_crosstools/.build/tools/bin/grep
> > -E -v '^[         ]*#(#| |$)' libstdc++-symbols.ver.tmp |
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> >    -E -P -include ../config.h - > libstdc++-symbols.ver || (rm -f
> > libstdc++-symbols.ver ; exit 1)
> > [ALL  ]    rm -f libstdc++-symbols.ver.tmp
> > [ALL  ]    /bin/bash ../libtool --tag CXX   --mode=link
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -shared-libgcc -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -nostdinc++ -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> >     -Wl,-O1 -Wl,-z,relro -Wl,--gc-sections   -fno-implicit-templates
> > -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi
> > -fdiagnostics-show-location=once   -ffunction-sections -fdata-sections
> >  -frandom-seed=libstdc++.la  '-Wl,-EL' -o libstdc++.la -version-info
> > 6:20:0 -Wl,--version-script=libstdc++-symbols.ver -lm -rpath
> > /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib
> > compatibility.lo compatibility-debug_list.lo
> > compatibility-debug_list-2.lo  compatibility-c++0x.lo
> > compatibility-atomic-c++0x.lo compatibility-thread-c++0x.lo
> > compatibility-chrono.lo compatibility-condvar.lo
> > ../libsupc++/libsupc++convenience.la
> > ../src/c++98/libc++98convenience.la
> > ../src/c++11/libc++11convenience.la
> > [ALL  ]    libtool: link:
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/xgcc
> > -shared-libgcc -B/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -nostdinc++ -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/
> > -B/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib/
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/include
> > -isystem /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sys-include
> >    -shared -nostdlib
> > /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sysroot/usr/lib/crti.o
> > /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/crtbeginS.o
> >  .libs/compatibility.o .libs/compatibility-debug_list.o
> > .libs/compatibility-debug_list-2.o .libs/compatibility-c++0x.o
> > .libs/compatibility-atomic-c++0x.o .libs/compatibility-thread-c++0x.o
> > .libs/compatibility-chrono.o .libs/compatibility-condvar.o
> > -Wl,--whole-archive ../libsupc++/.libs/libsupc++convenience.a
> > ../src/c++98/.libs/libc++98convenience.a
> > ../src/c++11/.libs/libc++11convenience.a -Wl,--no-whole-archive
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/libsupc++/.libs
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src
> > -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/mipsel-coconut-linux-uclibc/libstdc++-v3/src/.libs
> > -lm -L/media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc
> > -L/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin
> > -L/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/lib
> > -L/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sysroot/lib
> > -L/media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sysroot/usr/lib
> > -lc -lgcc_s /media/SSD/Reinoud/latest_crosstools/.build/mipsel-coconut-linux-uclibc/build/build-cc-final/./gcc/crtendS.o
> > /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/sysroot/usr/lib/crtn.o
> >  -Wl,-O1 -Wl,-z -Wl,relro -Wl,--gc-sections -Wl,-EL
> > -Wl,--version-script=libstdc++-symbols.ver   -Wl,-soname
> > -Wl,libstdc++.so.6 -o .libs/libstdc++.so.6.0.20
> > [ALL  ]    /media/SSD/Reinoud/latest_crosstools/linux-mips/mipsel-coconut-linux-uclibc/bin/ld:
> > .libs/compatibility.o: relocation R_MIPS_HI16 against `__gnu_local_gp'
> > can not be used when making a shared object; recompile with -fPIC
> > [ALL  ]    .libs/compatibility.o: error adding symbols: Bad value
> > [ERROR]    collect2: error: ld returned 1 exit status
> 
> 
> So, I was in need of doing some build testing, and I did builds on other
> architectures and found no issues.
> 
> However, when building mipsel-unknown-linux-gnu, I got the same error
> with final gcc's libatomic.la. It should be a static library that is
> being built shared for some reason.
> 
> I'm trying a mips64el build right now. I'll update with more info.

As I expected, mips64el didn't have a problem. This seems to be specific
to crosstool-ng and mipsel (regardless of libc). I'll look into this
more this evening.

> -Bryan


-Bryan

Attachment: signature.asc
Description: This is a digitally signed message part


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]