[aspectc-user] Missing forward declaration after weaving.

Olaf Spinczyk os at aspectc.org
Fri Apr 15 14:04:32 CEST 2011


Hi!

All sources of your project must be described by a -p option. To me it 
looks as if the directory tree with ecos header files does not belong to 
your project. In this case ac++ does not generate the declaration of the 
exec_old... function. Be a bit more generous with -p. :-)

An error message that explains  the problem would be nice in this 
situation. I have added a bug report (#421) about this issue at 
www.aspectc.org/bugzilla.

- Olaf


On 04/15/2011 01:47 PM, Guilherme . wrote:
> Hi!
>
> Sorry to be bothering this mailing list so much.
>
> I have complied this simple aspect:
>
> #ifndef __SIMPLE_ASPECT_AH__
> #define __SIMPLE_ASPECT_AH__
>
> aspect tiresome {
>
> 	advice execution("% ...::%(...)") : before()
> 	{
> 		int i = 0;
> 	}
>
> };
>
> #endif // __SIMPLE_ASPECT_AH__
>
> Into a source with this command line:
>
> ag++ -k -v9 --c_compiler i386-elf-gcc --keep_woven --repository
> rep.xml -p /opt/sigubufo/branch/aspects/  -a
> /opt/sigubufo/branch/aspects/simple_aspect.ah -p
> /opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current/src/
>   -c  -I/opt/sigubufo/branch/ecos_apps/hello_world/ecos/install/include
> -I/opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current
> -I/opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current/src
> -I/opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current/tests
> -I. -I/opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current/src/
> -finline-limit=7000 -Wall -Wpointer-arith  -Wundef
> -Woverloaded-virtual -Wno-write-strings -g -O2 -ffunction-sections
> -fdata-sections -fno-rtti -fno-exceptions -D_KERNEL
> -Wp,-MD,src/ds12887.tmp -o src/devs_wallclock_dallas_ds12887_ds12887.o
> /opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current/src/ds12887.cxx
>
> And i get follwing errors:
>
> src/ds12887.acc: In member function ‘cyg_uint32
> Cyg_WallClock::get_hw_seconds()’:
> src/ds12887.acc:409: error: ‘class Cyg_WallClock’ has no member named
> ‘__exec_old_get_hw_seconds’
> src/ds12887.acc: At global scope:
> src/ds12887.acc:413: error: no ‘cyg_uint32
> Cyg_WallClock::__exec_old_get_hw_seconds()’ member function declared
> in class ‘Cyg_WallClock’
> src/ds12887.acc: In member function ‘void
> Cyg_WallClock::set_hw_seconds(cyg_uint32)’:
> src/ds12887.acc:433: error: ‘class Cyg_WallClock’ has no member named
> ‘__exec_old_set_hw_seconds’
> src/ds12887.acc: At global scope:
> src/ds12887.acc:436: error: no ‘void
> Cyg_WallClock::__exec_old_set_hw_seconds(cyg_uint32)’ member function
> declared in class ‘Cyg_WallClock’
> src/ds12887.acc: In member function ‘void Cyg_WallClock::init_hw_seconds()’:
> src/ds12887.acc:454: error: ‘class Cyg_WallClock’ has no member named
> ‘__exec_old_init_hw_seconds’
> src/ds12887.acc: At global scope:
> src/ds12887.acc:457: error: no ‘void
> Cyg_WallClock::__exec_old_init_hw_seconds()’ member function declared
> in class ‘Cyg_WallClock’
> /opt/sigubufo/branch/aspects/simple_aspect.ah: In member function
> ‘void tiresome::__a0_before()’:
> /opt/sigubufo/branch/aspects/simple_aspect.ah:8: warning: unused variable ‘i’
>
> Now if i look into src/ds12887.acc @ line 409 i see:
>
> // Returns the number of seconds elapsed since 1970-01-01 00:00:00.
> 402 cyg_uint32
> 403 Cyg_WallClock::get_hw_seconds(void)
> 404
> 405 #line 406 "src/ds12887.acc"
> 406 {
> 407   ::cyg_uint32 result;
> 408   AC::invoke_tiresome_tiresome_a0_before ();
> 409     result = this->__exec_old_get_hw_seconds();
> 410   return (::cyg_uint32&)result;
> 411
> 412 }
> 413 __attribute__((always_inline)) inline ::cyg_uint32
> Cyg_WallClock::__exec_old_get_hw_seconds()
> 414 #line 261 "/opt/sigubufo/branch/tools/../ecos_hg/packages/devs/wallclock/dallas/ds12887/current/src/ds12887.cxx"
> 415 {
> 416     cyg_uint32 year, month, mday, hour, minute, second;
> 417
> 418     get_ds_hwclock(&year,&month,&mday,&hour,&minute,&second);
> 419
> 420     cyg_uint32 now = _simple_mktime(year, month, mday, hour,
> minute, second);
> 421     return now;
> 422 }
>
> The functions are there but what is missing is the forward declaration.
>
> Is there a known bug relevant to this?
>
> Greetings,
> Guilherme
>
> _______________________________________________
> aspectc-user mailing list
> aspectc-user at aspectc.org
> http://www.aspectc.org/mailman/listinfo/aspectc-user
>
>    




More information about the aspectc-user mailing list