problems running hello in fiasco
Alexander Warg
alex.warg at gmx.net
Sun Mar 30 17:14:10 CEST 2003
On Sat, 2003-03-29 at 07:52, Fabian Sturm wrote:
> Its true that I don't have any serial port, but even with this function
> it doesn't boot any further.
>
> I now tried to debug more of my problem with puts.
> Unfortunately I didn't have much results.
> I definitely now can say that I reach the last line of
> void Timer::init() in ia32/timer-rtc.c.
> (If I don't have sideeffects of puts and it is not buffered)
There should be no side effects on puts, and the output is completely
unbuffered.
I'm not sure which constructors are called after the Timer, but I'll
look for it tomorrow.
> What is initialized next I can only guess.
> It seems to be some kind of linker magic with the minilib/construction.c
> which calls all the functions which are declared with
> STATIC_INITIALIZER_P?
The "magic" in construction.c does simply run all C++ and C
constructors, that is not our invention but C standard. The
STATIC_INITIALIZE[R][_P] macros declare certain functions as such
constructors. The ...INITIALIZER (you see the R) macros are for
declaring a special function as constructor and the variants without the
R are for static initialization of classes that must have a static init
method per convention. The last thing is the _P at the end, these macros
take a second argument specifing the priority of the constructor (needed
if the order of construction is relevant).
> I have put a puts in uart_console_init() before the line
> with the if strstr -noserial. But this already doesn't seem to
> be called. Or it is just not compiled in?
I saw you have enabled KDB (GDB debugging stub) in your config, and in
that case the uart_console_init() function is indeed not called because
the GDB stub is responsible for handling the UART, if you have no UART
you should say 'no' to the GDB debugger stub (KDB) option, because it
tries to enable the UART on bootup. (It should not with -noserial, but
it is safer to say 'no' for your setup.)
> I have also a puts in kdb.cpp in the void kdb::init() function.
> But it is never reached.
I'll look for the concrete bootup sequence tomorrow and try to give some
further advice.
>
> Here I have some problems, why is the macro called with
> STATIC_INITIALIZE_P(kdb, KDB_INIT_PRIO);
> but only a kdb::init exists.
see above.
>
> And in uart_console.cpp it is
> STATIC_INITIALIZER_P(uart_console_init ,UART_INIT_PRIO);
> and a function uartconsole_init() exists.
see above.
>
> Hmm I am little bit confused now and would appreciate some advice
> for debbuging.
I hope there I could clear some confusions.
--
Alexander Warg <alex.warg at gmx.net>
More information about the l4-hackers
mailing list