This is the mail archive of the
ecos-devel@sourceware.org
mailing list for the eCos project.
Re: RedBoot built with gcc 3.4.4
On Fri, 9 Feb 2007, Guennadi Liakhovetski wrote:
Looking further
Auch... I came as far as to the loop
/*------------------------------------------------------------------------*/
/* C++ support - run initial constructors */
#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
cyg_bool cyg_hal_stop_constructors;
#endif
typedef void (*pfunc) (void);
extern pfunc __CTOR_LIST__[];
extern pfunc __CTOR_END__[];
void
cyg_hal_invoke_constructors (void)
{
#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
static pfunc *p = &__CTOR_END__[-1];
cyg_hal_stop_constructors = 0;
for (; p >= __CTOR_LIST__; p--) {
diag_printf("Invoking constructor @ 0x%08x\n", *p);
(*p) ();
if (cyg_hal_stop_constructors) {
p--;
break;
}
}
#else
pfunc *p;
for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--) {
diag_printf("Invoking constructor @ 0x%08x\n", *p);
(*p) ();
}
#endif
And put the diag_printf() there... And it prints 1 address and that's
it... So, do I understand it right that here it is supposed to call C++
constructors?... Oh, no... and already in the first one it crashes... So,
some C++ internal calling conventions have changed. I am pretty helpless
in what concerns C++ ABI... Anyone?
Thanks
Guennadi
---------------------------------
Guennadi Liakhovetski, Ph.D.
DSA Daten- und Systemtechnik GmbH
Pascalstr. 28
D-52076 Aachen
Germany