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


Date: Sat, 01 Apr 2006 23:01:31 -0600
From: Dan Gibson <degibson@xxxxxxxx>
Subject: Re: [Gems-users] GEMS+Ruby+x86 patch build problems
Chris,
The current version of the patch is intended to be used on the GEMS 1.1 Release. It doesn't work for the GEMS 1.2 Release, yet. However, if you look at the changes that the x86 patch makes to GEMS/Ruby, it probably won't be hard to port from 1.1 to 1.2.

In short, try GEMS 1.1 for now, unless you are attached to the LogTM component of GEMS 1.2.

Regards,
Dan

Chris Rossbach wrote:

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

_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users

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