Jump to content
trev

error when compiling with clang

Recommended Posts

Hello,

compiling systemc-ams-2.1  with clang version 7.0.0

using systemc-2.3.3 

yields the following error :

make[5]: Entering directory '/home/tools/src/sysc/build/src/scams/impl/core'
  CXX      sca_globals.lo
  CXX      sca_interface.lo
  CXX      sca_implementation_info.lo
  CXX      sca_max_time.lo
  CXX      sca_module.lo
In file included from ../../../../../systemc-ams-2.1/src/scams/impl/core/sca_module.cpp:40:
In file included from ../../../../../systemc-ams-2.1/src/systemc-ams:180:
../../../../../systemc-ams-2.1/src/scams/predefined_moc/tdf/sca_tdf_sc_out.h:549:27: error: 'pobj' is a private member of 'sca_tdf::sca_implementation::sca_port_attributes'
                 str << "for port: " << pobj->sca_name();
                                        ^
../../../../../systemc-ams-2.1/src/scams/impl/predefined_moc/tdf/sca_tdf_port_attributes.h:154:47: note: declared private here
        sca_core::sca_implementation::sca_port_base* pobj;
                                                     ^
1 error generated.
make[5]: *** [Makefile:496: sca_module.lo] Error 1
make[5]: Leaving directory '/home/tools/src/sysc/build/src/scams/impl/core'
make[4]: *** [Makefile:400: all-recursive] Error 1
make[4]: Leaving directory '/home/tools/src/sysc/build/src/scams/impl'
make[3]: *** [Makefile:597: all-recursive] Error 1
make[3]: Leaving directory '/home/tools/src/sysc/build/src/scams'
make[2]: *** [Makefile:423: all-recursive] Error 1
make[2]: Leaving directory '/home/tools/src/sysc/build/src'
make[1]: *** [Makefile:361: all] Error 2
make[1]: Leaving directory '/home/tools/src/sysc/build/src'
make: *** [Makefile:430: all-recursive] Error 1

moving 

 

   sca_core::sca_implementation::sca_port_base* pobj; 

in the file

systemc-ams-2.1/src/scams/impl/predefined_moc/tdf/sca_tdf_port_attributes.h

from private to protected fixes the issue.

Any ideas ? Is this a compiler issue ? Not really that confident about changing from private to protected.

(I tried gcc just as a sanity check and it doesn't give this error or warning).

apart from that, the fix for memcpy() and memset() and a few warnings  about

warning: 'register' storage class specifier is deprecated and incompatible with C++17 [-Wdeprecated-register]

it compiles fine.

Thanks in advance and thanks for the code !

Best Regards

Trevor

Share this post


Link to post
Share on other sites

Thanks for reporting these compilation issues! These will need to get addressed by the COSEDA Technologies GmbH with a new SystemC AMS release. In the meantime, you can fix the compilation issue by replacing:

pobj->sca_name()

with

this->name()

The calls to memcpy() and memset() need to get prefixed with the std:: namespace prefix. The "register" storage class specifiers can be safely removed. If I see it correctly, they are only remaining in file scams/impl/analysis/ac/sca_ac_domain_entity.cpp.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...