This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Calling exit in a Redboot standalone Arm program
Jonathan Larmour wrote:
>
> Just to avoid any doubt, Pierre, are you going to look at this?
> You're the one with the incentive to do it :-).
Sure, I'm going to look at it ! I just can't promise when I'll do it:
I am just a full time teacher, not a developer, not even a researcher,
and have very few time only left for working on development/debugging
tasks...
> Look at the various places that
> go_saved_context is used in redboot's src/main.c.
>
> I think the attached patch might do it, but it's purely off the top
> of my head. If it does then all you need to do to finish it off is
> just rename go_saved_context to redboot_return_context or something
> like that, and something similar for go_trampoline; and then most
> importantly test it with the below exit status change as well to
> verify it all builds and works. Oh, and add ChangeLog entries :).
OK. I still have to understand all this stuff (not really easy to follow
all these macro-defined functions with concatenated names operating on
indirection table(s) !)... I'll apply and test your patch as soon as
possible and let you know the results.
Pierre
PS: I assume that the main argument for sending a SIGTRAP when an app
terminates is that it provides the developer with a way to back trace to
the location in his/her source code where exit() was called. Besides
that, do you see any other argument in favor of this behavior ?
> Mark Salter wrote:
> >>>>>>Jonathan Larmour writes:
> >
> >
> >>Pierre Habraken wrote:
> >>
> >>>Mark Salter wrote:
> >>>
> >>>
> >>>>[...]
> >>>>Something to watch out for is that any patch not break the ability to
> >>>>quit GDB and return to the RedBoot prompt.
> >
> >
> >>Haven't tried it so I'm probably way off base, but could this maybe simply
> >>be done by making the code in question just be:
> >
> >
> >> __send_exit_status((int)arg1);
> >> CYGACC_CALL_IF_MONITOR_RETURN(arg1);
> >
> >
> > This isn't way off base, but it won't work right now. The context used by
> > CYGACC_CALL_IF_MONITOR_RETURN is only setup through the 'go' command right
> > now. The return back to stub is handled by saving a context on the first
> > entry to the stub and then restoring that context when a 'k' packet is
> > received from GDB. We could get rid of that mechanism (good riddance) and
> > setup a context for CYGACC_CALL_IF_MONITOR_RETURN before entering the stub.
> >
> > --Mark
> >
>
> --
> eCosCentric http://www.eCosCentric.com/ The eCos and RedBoot experts
> --[ "You can complain because roses have thorns, or you ]--
> --[ can rejoice because thorns have roses." -Lincoln ]-- Opinions==mine
>
> ------------------------------------------------------------------------
> ? src/flash.c.at91flash.dead
> Index: src/main.c
> ===================================================================
> RCS file: /cvs/ecos/ecos/packages/redboot/current/src/main.c,v
> retrieving revision 1.44
> diff -u -5 -p -r1.44 main.c
> --- src/main.c 8 Apr 2003 05:09:06 -0000 1.44
> +++ src/main.c 24 Apr 2003 02:24:53 -0000
> @@ -314,14 +314,20 @@ cyg_start(void)
> __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
> CYGACC_COMM_IF_CONTROL( *__chan, __COMMCTL_IRQ_DISABLE );
> }
>
> CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
> + // set up a temporary context that will take us to the trampoline
> + HAL_THREAD_INIT_CONTEXT((CYG_ADDRESS)workspace_end, &breakpoint, go_trampoline, 0);
> +
> + // switch context to trampoline
> + HAL_THREAD_SWITCH_CONTEXT(&go_saved_context, &workspace_end);
> +
> #ifdef HAL_ARCH_PROGRAM_NEW_STACK
> - HAL_ARCH_PROGRAM_NEW_STACK(breakpoint);
> + // HAL_ARCH_PROGRAM_NEW_STACK(breakpoint);
> #else
> - breakpoint(); // Get GDB stubs started, with a proper environment, etc.
> + // breakpoint(); // Get GDB stubs started, with a proper environment, etc.
> #endif
> dbgchan = CYGACC_CALL_IF_SET_DEBUG_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
> CYGACC_CALL_IF_SET_CONSOLE_COMM(dbgchan);
> } else
> #endif // CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
--
________________________________________________________________________
Pierre HABRAKEN - mailto:Pierre dot Habraken at imag dot fr
Tél: 04 76 82 72 83 - Fax: 04 76 82 72 87
IMAG-LSR BP72 38402 SAINT MARTIN D'HERES Cedex
________________________________________________________________________
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss