[Gems-users] compiling ruby and opal with gcc 4.1.1


Date: Wed, 15 Nov 2006 23:04:38 +0100
From: "Patrick De Pinguin" <patrickdepinguin@xxxxxxxxx>
Subject: [Gems-users] compiling ruby and opal with gcc 4.1.1
Hi,

I am trying to compile ruby and opal using a gcc version 4 compiler.

With Ruby I received some "extra qualification" errors, which were solved using the following patch:

diff -uNr -x generated -x html -x module gems-1.3.1-orig/ruby/common/NetDest.h gems-1.3.1/ruby/common/NetDest.h
--- gems-1.3.1-orig/ruby/common/NetDest.h       2006-09-25 16:31:09.000000000 +0200
+++ gems-1.3.1/ruby/common/NetDest.h    2006-11-15 16:44:02.000000000 +0100
@@ -137,13 +137,13 @@

   // Private Methods
   // returns a value >= MachineType_base_level("this machine") and < MachineType_base_level("next highest machine")
-  int NetDest::vecIndex(MachineID m) const {
+  int vecIndex(MachineID m) const {
     int vec_index = MachineType_base_level(m.type);
     assert(vec_index < m_bits.size());
     return vec_index;
   }

-  NodeID NetDest::bitIndex(NodeID index) const {
+  NodeID bitIndex(NodeID index) const {
     return index;
   }

diff -uNr -x generated -x html -x module gems-1.3.1-orig/ruby/nuca/GenericNUCAPredictor.h gems-1.3.1/ruby/nuca/GenericNUCAPredictor.h
--- gems-1.3.1-orig/ruby/nuca/GenericNUCAPredictor.h    2006-09-25 16:31:07.000000000 +0200
+++ gems-1.3.1/ruby/nuca/GenericNUCAPredictor.h 2006-11-15 16:44:02.000000000 +0100
@@ -35,7 +35,7 @@

 class GenericNUCAPredictor {
 public:
-  GenericNUCAPredictor::GenericNUCAPredictor(AbstractChip* chip_ptr, NodeID m_id);
+  GenericNUCAPredictor(AbstractChip* chip_ptr, NodeID m_id);
   ~GenericNUCAPredictor();

   // determines which L2 cache banks to send the initial L1 request




For Opal, I also get these "extra qualification" errors, but correcting these is a little less trivial.
There were problems in opal/system/dx.h, opal/system/ix.h, and opal/common/listalloc.h

I think that the error in listalloc.h is not a problem (fixed as above).
The file dx.h is included from dx.C and dynamic.h. In dynamic.h, dx.h is included from within the class, so we get the "extra qualification" error.
In dx.C however, this is not the case, and removing the dynamic_inst_t:: generates other errors.
I was able to get by this, by copying the dx.h file to dx2.h, removing the dynamic_inst_t:: only in one of the two. The file dynamic.h should include the version without the qualifier, and dx.C the version with it.
However, other errors appear, which I don't know how to solve:

Opal: building module
make generated/generated
make[1]: Entering directory `/home/thomas/kth/thesis/simulation/gems- 1.3.1/opal'
make[1]: `generated/generated' is up to date.
make[1]: Leaving directory `/home/thomas/kth/thesis/simulation/gems-1.3.1/opal'
make BUILD_FLAGS=-DSIMICS module_go
make[1]: Entering directory `/home/thomas/kth/thesis/simulation/gems- 1.3.1/opal'
/usr/bin/g++ -o x86-linux/obj/dx.o -c system/dx.C -DGEMS_32_BIT -DADD_ARCH_TO_API -DSIMICS_3_0  -DTARGET_SPARC_V9 -DTARGET_ULTRA -DTARGET_VA_BITS=64 -DTARGET_PA_BITS=64 -DYY_NO_UNPUT -Wall -W -Wwrite-strings -Woverloaded-virtual -Wno-unused  -march=i686 -g -ggdb -g3 -O3 -march=pentium-m -pipe -DSIMICS -DIS_OPAL -DVERIFY_SIMICS -DRETIRE_ZERO_TOLERANCE -DREDECODE_EACH -Icommon -Ifetch -Isparc -Isystem -Imodule -Itrace -Itester -I../common/ioutil -Igenerated -I/mnt/linuxshare/simics- 3.0.22/src/include -I/mnt/linuxshare/simics-3.0.22/src/include/simics -I/mnt/linuxshare/simics-3.0.22/src/include/simics/core -I/mnt/linuxshare/simics-3.0.22/src/include/simics/arch -I/mnt/linuxshare/simics-3.0.22/src/include/simics/util
In file included from system/dx.C:71:
system/dx.h:59:1: warning: "DX_RETURNT" redefined
In file included from system/dynamic.h:425,
                 from common/hfacore.h:107,
                 from system/dx.C:67:
system/dx2.h:59:1: warning: this is the location of the previous definition
system/wait.h:118: warning: 'class waiter_t' has virtual functions but non-virtual destructor
system/wait.h:285: warning: 'class tail_waiter_t' has virtual functions but non-virtual destructor
common/directbp.h:83: warning: 'class direct_predictor_t' has virtual functions but non-virtual destructor
system/memop.h:279: warning: 'class load_interface_t' has virtual functions but non-virtual destructor
system/mshr.h:182: warning: 'class miss_t' has virtual functions but non-virtual destructor
system/cache.h:88: warning: 'class cache_t' has virtual functions but non-virtual destructor
system/dx.h:63: error: declaration of 'void dynamic_inst_t::dx_add()' outside of class is not definition
system/dx.h:64: error: declaration of 'void dynamic_inst_t::dx_addcc()' outside of class is not definition
system/dx.h:65: error: declaration of 'void dynamic_inst_t::dx_addc()' outside of class is not definition
system/dx.h:66: error: declaration of 'void dynamic_inst_t::dx_addccc()' outside of class is not definition
system/dx.h:67: error: declaration of 'void dynamic_inst_t::dx_and()' outside of class is not definition
system/dx.h:68: error: declaration of 'void dynamic_inst_t::dx_andcc()' outside of class is not definition
system/dx.h:69: error: declaration of 'void dynamic_inst_t::dx_andn()' outside of class is not definition
system/dx.h:70: error: declaration of 'void dynamic_inst_t::dx_andncc()' outside of class is not definition
system/dx.h:71: error: declaration of 'void dynamic_inst_t::dx_fba()' outside of class is not definition
system/dx.h:72: error: declaration of 'void dynamic_inst_t::dx_ba()' outside of class is not definition
........
and so on.


I don't know if all this is clear.
Does someone know how to solve this problem?


I use gems version 1.3.1
gcc 4.1.1
[← Prev in Thread] Current Thread [Next in Thread→]
  • [Gems-users] compiling ruby and opal with gcc 4.1.1, Patrick De Pinguin <=