Re: [Gems-users] Compile Opal: Error: Dx.i Functions


Date: Mon, 27 Nov 2006 11:15:52 -0600
From: Dan Gibson <degibson@xxxxxxxx>
Subject: Re: [Gems-users] Compile Opal: Error: Dx.i Functions
You should also verify that your Makefile.simics_version is set to Simics 3.0.X.

Regards,
Dan

Luke Yen wrote:
   dx.C/h contains definitions to the dx.i macros that are used by all
dynamic_inst_t class objects.  Grep dynamic.h to see where dx.h is
included as a header file for this class.

  All these macros and function defintions are dereferenced under the
scope of dynamic_inst_t, during Execute() (for each instruction type)  This is
possible through function pointers set up in dynamic_inst_t::initialize().

  I have not personally compiled Opal with Simics 3.0, so there may be
compiler issues like you are seeing.  Try 2.0 or 2.2 if you have access to
them and don't need the functionality of 3.0.

  Luke


On Mon, 27 Nov 2006, Datta, Kushal wrote:

Hello Everyone,

I experienced a lot of difficulties while compiling Opal. No matter which compiler version I used, it was throwing the same errors in the step "make module DESTINATION=MOSI_SMP_bcast" of the compilation process. FYI, I could compile ruby successfully. Here's a few questions I wanted to ask.

The errors were about three fucntions getSourceReg, getDestReg, getStaticInst used in the file "dx.i" and g++ was not able to link these functions properly. The dx.i file is included from dx.C and ix.C.

The functions getSourceReg, getDestReg, getStaticInst are defined as private members of the class dynamic_inst_t (defined in $GEMS/opal/system/dynamic.h) and they are accessed in dx.i file as:


DX_RETURNT dx_add( DX_PLIST ) {
  IREGISTER result = (SOURCE1 + S2ORI);
  //ED  m_pseq->out_info("   source1 0x%0llx\n", (SOURCE1));
  //ED  m_pseq->out_info("   source2 0x%0llx\n",  S2ORI);
  //ED  m_pseq->out_info("   result == 0x%0llx\n", result );
  WRITE_DEST(result);
}

where macro SOURCE1 is defined as "#define SOURCE1    getSourceReg(0).getARF()->readInt64( getSourceReg(0) )".

How is it possible to access a private member function of a class like that? What am I missing here?

Thanks,
Kushal.

P.S. I am using

GEMS: gems-1.3.1
CC: I have tried with gcc/g++ version 3.4, 4.1, 4.0.3.
SIMICS: 3.0.23

_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding "site:https://lists.cs.wisc.edu/archive/gems-users/"; to your search.


--
http://www.cs.wisc.edu/~gibson [esc]:wq!

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