From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fabrice Gautier To: 'Jonathan Larmour' , Fabrice Gautier Cc: "Ecos-List (E-mail)" Subject: RE: [ECOS] Multi thread Debugging Date: Wed, 30 Aug 2000 16:39:00 -0000 Message-id: <8AE4B526B977D411841F00A0CC334020052C34@cuz-exchange.sdesigns.net> X-SW-Source: 2000-08/msg00350.html > -----Original Message----- > From: Jonathan Larmour [ mailto:jlarmour@redhat.co.uk ] > Subject: Re: [ECOS] Multi thread Debugging > > > > The stack_ptr member is there for a different purpose than > saved_context. > saved_context is for GDB debugging purposes only and provides the full > context. AFAIK interrupt_end is the only place that stores > the context in > saved_context. In fact I've seen that when saved_context member is NULL, the stack_ptr is used instead. > This is interesting - it's not clear to me either how > saved_context is set > if threads get rescheduled for any reason other than an interrupt. It is not set at all. But get_saved_context get the registers from stack_ptr. > Is this a bug? It doesn't seem > I wouldn't have thought this would have caused a problem on the scale > Fabrice is seeing at any rate. The problem may be elsewhere. May be here: (Warning, this is i386 PC specific stuff now) void hal_get_gdb_registers(target_register_t * d, HAL_SavedRegisters * s) { int i ; for (i = 0; i < NUMREGS; i++) d[i] = hal_pc_trap_registers[i] ; } This is seen in hal/i386/pc/current/src/plf_stub.c. Note how this function does not use the 's' parameter while all we need is in there. This is called in dbg_getthreadreg and 's' would be either saved_context or stack_ptr. I found another version of this function in hal/i386/arch/current/src/i386_stub.c #if 0 void hal_get_gdb_registers(target_register_t * d, HAL_SavedRegisters * s) { d[ESP] = s->esp ; d[ESP] = s->esp ; d[EBP] = s->ebp ; d[EBX] = s->ebx ; d[ESI] = s->esi ; d[EDI] = s->edi ; d[PC] = s->eip ; } #endif This one looks better, but unfortunately there is no s->eip. The HAL_SavedRegister doesn't have one. Unfortunate. If someone know why this version has been discarded and what the other is intented to do it sould be fun. Thanks A+ -- Fabrice Gautier fabrice_gautier@sdesigns.com