Problems with MIPS cross compiler/linker

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

 



Hello.

I'm having problems getting an embedded MIPS application to link.

The error messages I'm getting during the final link are as follows:

Linking...
	/home/ihamilto/crosstools/mipsel-elf/bin/mipsel-elf-ld -EL -T
/vob/generic_runtime/Templates/macbeth.cmd
/vob/generic_runtime/Target/MacbethCode/obj.suimacbethmips/crt0.o
/vob/generic_runtime/lib/libsuimacbethmipsMacbeth_lib40_07_00.a
/vob/generic_runtime/lib/libsuimacbethmipsTest_lib40_07_00.a
/vob/generic_runtime/lib/libsuimacbethmipsCommon_lib40_07_00.a
/vob/generic_runtime/lib/libsuimacbethmipsTest_lib40_07_00.a
/vob/generic_runtime/lib/libsuimacbethmipsMacbeth_lib40_07_00.a
/vob/generic_runtime/lib/libsuimacbethmipsCommon_lib40_07_00.a
/vob/generic_runtime/lib/libsuimacbethmipsMacbeth_lib40_07_00.a
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libc.a
/home/ihamilto/crosstools/mipsel-elf/lib/gcc-lib/mipsel-elf/3.3.2/libgcc.a
-Map
/vob/generic_runtime/Target/MacbethCode/obj.suimacbethmips/generic_runtime.m
ap  -o
/vob/generic_runtime/Target/MacbethCode/obj.suimacbethmips/generic_runtime
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a(streambuf-in
st.o)(.gnu.linkonce.t._ZNSt15basic_streambufIcSt11char_traitsIcEE15_M_pback_
createEv+0x30): In function `int std::__copy_streambufs<char,
std::char_traits<char> >(std::basic_ios<char, std::char_traits<char> >&,
std::basic_streambuf<char, std::char_traits<char> >*,
std::basic_streambuf<char, std::char_traits<char> >*)':
/home/ihamilto/crossbuild/build-gcc/mipsel-elf/libstdc++-v3/include/bits/str
eambuf.tcc:165: relocation truncated to fit: R_MIPS_GPREL16
std::basic_streambuf<char, std::char_traits<char> >::_S_pback_size
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a(streambuf-in
st.o)(.gnu.linkonce.t._ZNSt15basic_streambufIcSt11char_traitsIcEE15_M_pback_
createEv+0x4c): In function `int std::__copy_streambufs<char,
std::char_traits<char> >(std::basic_ios<char, std::char_traits<char> >&,
std::basic_streambuf<char, std::char_traits<char> >*,
std::basic_streambuf<char, std::char_traits<char> >*)':
/home/ihamilto/crossbuild/build-gcc/mipsel-elf/libstdc++-v3/include/bits/stl
_algobase.h:153: relocation truncated to fit: R_MIPS_GPREL16
std::basic_streambuf<char, std::char_traits<char> >::_S_pback_size
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a(fstream-inst
.o)(.gnu.linkonce.t._ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi+0x
e8):/home/ihamilto/crossbuild/build-gcc/mipsel-elf/libstdc++-v3/include/fstr
eam:770: relocation truncated to fit: R_MIPS_GPREL16
std::basic_streambuf<char, std::char_traits<char> >::_S_pback_size
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a(fstream-inst
.o)(.gnu.linkonce.t._ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi+0x
100):/home/ihamilto/crossbuild/build-gcc/mipsel-elf/libstdc++-v3/include/bit
s/basic_ios.h:255: relocation truncated to fit: R_MIPS_GPREL16
std::basic_streambuf<char, std::char_traits<char> >::_S_pback_size
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a(fstream-inst
.o)(.gnu.linkonce.t._ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi+0x
228):/home/ihamilto/crossbuild/build-gcc/mipsel-elf/libstdc++-v3/include/bit
s/fstream.tcc:466: relocation truncated to fit: R_MIPS_GPREL16
std::basic_streambuf<char, std::char_traits<char> >::_S_pback_size
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/libstdc++.a(fstream-inst
.o)(.gnu.linkonce.t._ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi+0x
240):/home/ihamilto/crossbuild/build-gcc/mipsel-elf/libstdc++-v3/include/bit
s/fstream.tcc:467: relocation truncated to fit: R_MIPS_GPREL16
std::basic_streambuf<char, std::char_traits<char> >::_S_pback_size
*** Error code 1



I've investigated the object files supplying the symbol causing the problem,
and have made the following discoveries:



The (mangled) symbol causing the link problem is:

_ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE



In the streambuf-inst.o file (part of linstdc++), the symbol appears in the
symbol
table like this:

00000000  w    O
.gnu.linkonce.s._ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE
00000004 _ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE



In the DebugMsgTest.o file (part of the application), the symbol appears in
the symbol
table like this:

00000000  w    O
.gnu.linkonce.r._ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE
00000004 _ZNSt15basic_streambufIcSt11char_traitsIcEE13_S_pback_sizeE



The same symbol is appearing in two diffeent linkonce sections. If I am
reading the
section names correctly, the section generated by streambuf-inst.cc is
trying to
place the symbol in the read-only section of the memory map, while the
section
generated by DebugMsgTes.cc is trying to place the symbol in the small data
(GP
referenced) section of the memory map.


The declaration of this symbol is in std_streambuf.h:

  template<typename _CharT, typename _Traits>
    class basic_streambuf 
    {
...
    protected:
...
      static const size_t   	_S_pback_size = 1; 



The definition of this symbol is in streambuf.tcc:

namespace std 
{
  template<typename _CharT, typename _Traits>
    const size_t
    basic_streambuf<_CharT, _Traits>::_S_pback_size;


The streambuf-inst.cc file is compiled like this:

/home/ihamilto/crossbuild/build-gcc/gcc/xgcc -shared-libgcc
-B/home/ihamilto/crossbuild/build-gcc/gcc/ -nostdinc++
-L/home/ihamilto/crossbuild/build-gcc/mipsel-elf/soft-float/libstdc++-v3/src
-L/home/ihamilto/crossbuild/build-gcc/mipsel-elf/soft-float/libstdc++-v3/src
/.libs -nostdinc
-B/home/ihamilto/crossbuild/build-gcc/mipsel-elf/soft-float/newlib/ -isystem
/home/ihamilto/crossbuild/build-gcc/mipsel-elf/soft-float/newlib/targ-includ
e -isystem /home/ihamilto/crossbuild/gcc-3.3.2/newlib/libc/include
-B/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/bin/
-B/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/lib/ -isystem
/home/ihamilto/crosstools/mipsel-elf/mipsel-elf/include -msoft-float
-nostdinc++
-I/home/ihamilto/crossbuild/build-gcc/mipsel-elf/soft-float/libstdc++-v3/inc
lude/mipsel-elf
-I/home/ihamilto/crossbuild/build-gcc/mipsel-elf/soft-float/libstdc++-v3/inc
lude -I../../../../../gcc-3.3.2/libstdc++-v3/libsupc++
-I../../../../../gcc-3.3.2/libstdc++-v3/libmath -g -O2 -msoft-float
-fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings
-fdiagnostics-show-location=once -c
../../../../../gcc-3.3.2/libstdc++-v3/src/streambuf-inst.cc -o
streambuf-inst.o



The DebugMsgTest.cc file is compiled like this:

Compiling DebugMsg.cc...
	/home/ihamilto/crosstools/mipsel-elf/bin/mipsel-elf-g++ -c -mips2 -G
0 -O0 -EL -DEL -Wa,-G0,-non_shared -I. -fno-exceptions -D_REENTRANT
-DNO_NAMESPACES -DNEW_STL -DTARGET_sui -DHARDWARE_macbeth -DPROCESSOR_mips
-g -Wall -W -Wno-format -Wno-reorder -Wno-deprecated -fno-exceptions
-I/vob/generic_runtime -I/vob/generic_runtime/Common
-I/vob/generic_runtime/Common/DebugMsg -I/vob/generic_runtime/Common/Toolkit
-I/vob/generic_runtime/Common/defs -I/vob/generic_runtime/Common/Drivers
-I/vob/generic_runtime/Common/network
-I/vob/generic_runtime/Common/Nonordered -I/vob/generic_runtime/Common/Pci
-I/vob/generic_runtime/Common/Registers -I/vob/generic_runtime/Common/rpc
-I/vob/generic_runtime/Common/Rtasks -I/vob/generic_runtime/Common/RuntimeIF
-I/vob/generic_runtime/Common/Tasks -I/vob/generic_runtime/Common/Tftp
-I/vob/generic_runtime/Common/Utils
-I/vob/generic_runtime/Target/MacbethCode/DebugMsg
-I/vob/generic_runtime/Target/MacbethCode/Drivers
-I/vob/generic_runtime/Target/MacbethCode/network
-I/vob/generic_runtime/Target/MacbethCode/Nonordered
-I/vob/generic_runtime/Target/MacbethCode/Tasks
-I/vob/generic_runtime/Target/MacbethCode/Utils
-I/vob/generic_runtime/Target/MacbethCode  -o obj.suimacbethmips/DebugMsg.o
DebugMsg/DebugMsg.cc


Can anyone give me some help to get this application to link?

Thanks for reading this far!

Regards,
Ian Hamilton



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux