[Gems-users] GEMS+Ruby+x86 patch build problems


Date: Sat, 1 Apr 2006 12:49:58 -0600
From: Chris Rossbach <rossbach@xxxxxxxxxxxxx>
Subject: [Gems-users] GEMS+Ruby+x86 patch build problems
Hi-

I'm new to GEMS, trying to build it to use the Ruby x86 patch, and it's 
turning into quite an ordeal. Any advice would be warmly appreciated:

It's not entirely clear from the GEMS download page if the x86 patch is 
intended to be forward compatible with GEMS 1.1, or 1.2 or if it's supposed 
to work only with 1.0. My guess, given the release dates is that it works 
only with GEMS 1.0, but I've explored all scenarios in depth. I'll detail the 
build errors using 1.0 and 1.2 below.

host environment: x86 Ubuntu linux, 
Simics 2.2.19
gcc 3.4.5. 
command line:
make PROTOCOL=MOSI_SMP_bcast DESTINATION=MOSI_SMP_bcast

Building with GEMS 1.0 + ruby patch:
----------------------------------------------------------
....lots of text omitted before arriving at...:
/bin/sh -ec '/usr/bin/g++-3.4 -MM -MG -DIS_RUBY -DTARGET_X86 
-DTARGET_VA_BITS=64 -DTARGET_PA_BITS=64 -Wall -W -Wwrite-strings 
-Woverloaded-virtual -Wno-unused  -march=i686 -g -ggdb -g3 -O2 
-finline-functions -DNO_VECTOR_BOUNDS_CHECKS -DMULTIFACET_NO_OPT_WARN  
-DRUBY_DEBUG=false  -Inetwork/simple -I. -I../common -I../common/gzstream 
-Ibuffers -Icommon -Islicc_interface -Iprofiler -Iconfig -Ieventqueue 
-Isystem -Iinterfaces -Isimics -Itester -Irecorder -Igenerated/MOSI_SMP_bcast 
-I../common/ioutil -Inetwork -I../simics/x86-linux/obj/include/ 
-I../simics/x86-linux/obj/include/simics -I../simics/x86-linux/config  
generated/MOSI_SMP_bcast/attrparse.c | sed -e 
'\''s@^\(.*\)\.o:@x86-linux/generated/MOSI_SMP_bcast/obj/attrparse.d:@'\'' | 
sed -e '\''s@^\(.*\)\.d:@\1.d \1.o:@'\'' > 
x86-linux/generated/MOSI_SMP_bcast/obj/attrparse.d #'
make[1]: Leaving directory `/d1/rossbach/tx/gems-1.0/ruby'
make[1]: Entering directory `/d1/rossbach/tx/gems-1.0/ruby'
make[1]: *** No rule to make target `simics_api.h', needed by 
`x86-linux/generated/MOSI_SMP_bcast/obj/init.d'.  Stop.
make[1]: Leaving directory `/d1/rossbach/tx/gems-1.0/ruby'
make: *** [all] Error 2

I noticed there is a simics_api.h in 
$GEMS/simics/x86-linux/obj/include/simics-api-1/simics_api.h
and did try creating a symbolic link from $GEMS/simics/x86-linux..../simics/ 
to that include. The results are that the build gets a great deal further, 
but chokes at:
/usr/bin/g++-3.4 -o x86-linux/generated/MOSI_SMP_bcast/obj/Sequencer.o -c 
system/Sequencer.C -DIS_RUBY -DTARGET_X86 -DTARGET_VA_BITS=64 
-DTARGET_PA_BITS=64 -Wall -W -Wwrite-strings -Woverloaded-virtual -Wno-unused  
-march=i686 -g -ggdb -g3 -O2 -finline-functions -DNO_VECTOR_BOUNDS_CHECKS 
-DMULTIFACET_NO_OPT_WARN  -DRUBY_DEBUG=false  -Inetwork/simple -I. 
-I../common -I../common/gzstream -Ibuffers -Icommon -Islicc_interface 
-Iprofiler -Iconfig -Ieventqueue -Isystem -Iinterfaces -Isimics -Itester 
-Irecorder -Igenerated/MOSI_SMP_bcast -I../common/ioutil -Inetwork 
-I../simics/x86-linux/obj/include/ -I../simics/x86-linux/obj/include/simics 
-I../simics/x86-linux/config
system/Sequencer.C:66: error: prototype for 
`Sequencer::Sequencer(AbstractChip*)' does not match any in class `Sequencer'
system/STD_Sequencer.h:122: error: candidates are: Sequencer::Sequencer(const 
Sequencer&)
system/STD_Sequencer.h:84: error:                 
Sequencer::Sequencer(AbstractChip*, int)
make[1]: *** [x86-linux/generated/MOSI_SMP_bcast/obj/Sequencer.o] Error 1
make[1]: Leaving directory `/d1/rossbach/tx/gems-1.0/ruby'
make: *** [all] Error 2


Building with GEMS 1.2 + ruby patch:
----------------------------------------------------------
This chokes on a bunch of include files that can be found easily in the 
$GEMS/ruby/nuca directory and then the $GEMS/ruby/log_tm directory.
Updating the makefile to make sure those directories are on the include path
results in being able to get to the link stage for tester.exec

Ruby: Generating ruby objects
make x86-linux/generated/MOSI_SMP_bcast/bin/tester.exec
make[1]: Entering directory `/d1/rossbach/tx/gems/ruby'
Linking tester binary ...
<--snip long list of .o files -->
 x86-linux/generated/MOSI_SMP_bcast/obj/SimpleNetwork.o 
x86-linux/generated/MOSI_SMP_bcast/obj/Throttle.o
x86-linux/generated/MOSI_SMP_bcast/obj/Profiler.o: In function `Profiler':
profiler/Profiler.C:107: undefined reference to `NUCAProfiler::NUCAProfiler()'
profiler/Profiler.C:107: undefined reference to `NUCAProfiler::NUCAProfiler()'
x86-linux/generated/MOSI_SMP_bcast/obj/RubySlicc_Profiler_interface.o: In 
function `profileDNUCAHit(MachineID, MachineID, int, int, 
GenericRequestType)':
slicc_interface/RubySlicc_Profiler_interface.C:190: undefined reference to 
`NUCAProfiler::profileHit(MachineID, MachineID, int, int, 
GenericRequestType)'
collect2: ld returned 1 exit status
make[1]: *** [x86-linux/generated/MOSI_SMP_bcast/bin/tester.exec] Error 1
make[1]: Leaving directory `/d1/rossbach/tx/gems/ruby'
make: *** [all] Error 2

So, what can I do to get around these issues? Am I overlooking something 
really obvious?

Thanks,
Chris

[← Prev in Thread] Current Thread [Next in Thread→]