Danny Backx wrote:
> Guys,
> 
> I've been digging in gcc internals and succeeded in implementing stuff
> that allows us to write code such as
>       int main(int argc, char *argv[])
>               __attribute__((__exception_handler__(handler)));
> to indicate that handler is the exception handler for function main.
> 
> The patch is attached, it only affects four files in gcc.
> 
> What this gcc patch does is to generate an additional couple of lines of
> assembler code for those functions that have an exception handler.
> 
> Attached is an example in C and the assembler code generated for it. In
> the arm-wince-mingw32ce world, only patches to gcc are required, no
> changes to any runtime are needed. (I need to look into the cegcc
> environment, things are slightly different there because a default
> exception handler is in place there.)
> 

I think you should push this down to wince-pe.h to have it shared by
mingw32ce and cegcc.  We can then convert cegcc.dll to use the
attribute too if we want.  If we don't want to, then, we just don't
use it.

> Comments are welcome as always.
> 
> Pedro, is it ok to commit this to SVN ?
> 

Can we do a little bit of reorganizing/cleanup first please?

* Please (and sorry for being picky about it), please follow
  the GNU coding standards - whitespace/tabbing, spaces before (,
  comments, etc.  Better do it early, while the patch is
  easily 'diffable'.

* Could you rename the pe.h macros you are overriding to something
  like the pseudo-patch:

  ++ pe.h
  -#define ASM_DECLARE_FUNCTION_NAME
  +#define ARM_PE_DECLARE_FUNCTION_NAME
  +#define ASM_DECLARE_FUNCTION_NAME ARM_PE_DECLARE_FUNCTION_NAME

  , and then in wince-pe.h, reuse ARM_PE_DECLARE_FUNCTION_NAME,
  similarly to how ARM_DECLARE_FUNCTION_NAME is reused?  I'd like
  to avoid code duplication.

* I'm sure this is incomplete, and there are a few things that
  need to be done - like limiting some optimizations/re-orderings in
  functions with handlers - but you can leave this for phase
  two for now.

* could you contemplate using local symbols with local label
  prefix (.L) instead of _cegcc_ prefix on the size/end
  symbols?  There shouldn't be a need  to export all those
  auxilary symbols, is there?

* I don't see the prolog size in the .pdata structure?  Did I miss
  something?

Cheers,
Pedro Alves




-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel

Reply via email to