Build issues on Ubuntu

48 views
Skip to first unread message

stone

unread,
Mar 8, 2008, 9:56:35 AM3/8/08
to armware
Hi,
When I build ARMWare on Ubuntu, some link errors occurs.
+++++++++++++++++++++++++++++++++++++++
--- Linking ARMWare (Custom)
--- Linking ARMWare (Optimize)
/home/stone/ARMWare/ARMware/obj/ARMInstInfo.o.opti: In function
`ARMware::exec_CRT_STORE_TC(ARMware::Inst)':
ARMInstInfo.cpp:(.text+0x145e): undefined reference to
`ARMware::ExecResultEnum
ARMware::Core::exec_CRT<(ARMware::IsLoad)1>(ARMware::Inst)'
/home/stone/ARMWare/ARMware/obj/ARMInstInfo.o.opti: In function
`ARMware::exec_CRT_LOAD_TC(ARMware::Inst)':
ARMInstInfo.cpp:(.text+0x147a): undefined reference to
`ARMware::ExecResultEnum
ARMware::Core::exec_CRT<(ARMware::IsLoad)0>(ARMware::Inst)'
/home/stone/ARMWare/ARMware/obj/ARMInstInfo.o.opti: In function
`ARMware::ExecResultEnum
ARMware::exec_CRT_TC<(ARMware::IsLoad)1>(ARMware::Inst)':
ARMInstInfo.cpp:
(.text._ZN7ARMware11exec_CRT_TCILNS_6IsLoadE1EEENS_14ExecResultEnumENS_4InstE[ARMware::ExecResultEnum
ARMware::exec_CRT_TC<(ARMware::IsLoad)1>(ARMware::Inst)]+0x14):
undefined reference to `ARMware::ExecResultEnum
ARMware::Core::exec_CRT<(ARMware::IsLoad)1>(ARMware::Inst)'
/home/stone/ARMWare/ARMware/obj/ARMInstInfo.o.opti: In function
`ARMware::ExecResultEnum
ARMware::exec_CRT_TC<(ARMware::IsLoad)0>(ARMware::Inst)':
ARMInstInfo.cpp:
(.text._ZN7ARMware11exec_CRT_TCILNS_6IsLoadE0EEENS_14ExecResultEnumENS_4InstE[ARMware::ExecResultEnum
ARMware::exec_CRT_TC<(ARMware::IsLoad)0>(ARMware::Inst)]+0x14):
undefined reference to `ARMware::ExecResultEnum
ARMware::Core::exec_CRT<(ARMware::IsLoad)0>(ARMware::Inst)'
collect2: ld returned 1 exit status
+++++++++++++++++++++++++++++++++++++++++++
I have checked the code, located the definition in core.hpp file.
But I cann't locate the implementation of the function.
+++++++++++++++++++++++++++++++++++++++
In core.hpp lines 818-821
// CRT

template<IsLoad isLoad>
ExecResultEnum exec_CRT(Inst const inst);
+++++++++++++++++++++++++++++++++

I don't the issue is invoked by build env or source code.

wei....@gmail.com

unread,
Mar 20, 2008, 5:06:00 AM3/20/08
to armware
Dear Stone,

The functions you refered are:

exec_CRT_STORE_TC
exec_CRT_LOAD_TC
exec_CRT_TC
exec_CRT

The _TC postfix is the abbreviation of "Threaded Code". This is an
optimization method used by ARMware.

Anyway, I use C++ template to implement these functions because I
think templates will be faster than function calls (templated codes
will be expanded inline). I am used to put any templated codes
into .tcc files, so that you can find them there.

You can find the definitions of the above functions in:

exec_CRT_STORE_TC -> Global_DT.tcc
exec_CRT_LOAD_TC -> Global_DT.tcc
exce_CRT_TC -> Global_TC.tcc
exec_CRT -> Core.tcc

You can check if these .tcc files are compiled and linked.
I'm afraid your makefiles is corrupted or unsuitable for your build
environment.
Please download the source codes again or help me find the bug.

Thx.
Wei.
Reply all
Reply to author
Forward
0 new messages