I haven't exactly done stress testing on it but it works for me, thanks. I've been chasing a bug or two of my own, seem to have found one just now.
Danny
On Sun, 2006-12-03 at 13:08 +0000, Pedro Alves wrote:
> Danny Backx escreveu:
> > Pedro,
> >
> > The commit described below moves the _M_ARM definitions from gcc
> > internals into an include file.
> >
> > For the _M_ARM, this is clearly something that needed to be done : its
> > value depends on it, you cannot do this easily in the gcc internals.
> >
> > I am wondering why we would need to do this for the ARM macro though.
> >
> > The downside of this is that some sources need to either include winnt.h
> > or implement the same processing, none of which seems necessary.
> >
> > My feeling is to move the definition of ARM back into the gcc config,
> > but maybe I'm missing something ?
> >
> >
>
> Here is the patch that moves _M_ARM and ARM back into gcc builtins, and
> adds _M_ARMT.
> _M_ARM and _M_ARMT will be defined to the arm arch being compiled to,
> _M_ARMT will only be defined
> if the arm arch supports thumb, and ARM will be defined as empty. I
> think this matches MSFT's tools behavior.
>
> I've tested it manually using -march=armv4, -march=armv5, etc, and with
> -mcpu=arm8, -mcpu=xscale, etc.
> I will commit it later if you confirm it works for you, or you can
> commit it yourself if you want.
>
> Cheers,
> Pedro Alves
>
> plain text document attachment (marm.diff)
> Index: ChangeLog.ce
> ===================================================================
> --- ChangeLog.ce (revision 830)
> +++ ChangeLog.ce (working copy)
> @@ -1,3 +1,12 @@
> +2006-12-03 Pedro Alves <[EMAIL PROTECTED]>
> +
> + * config/arm/arm.c (arm_major_arch, arm_thumb_arch_p): New
> + functions.
> + * config/arm/arm-protos.h (arm_major_arch, arm_thumb_arch_p):
> + Declare.
> + * config/arm/wince-pe.h (TARGET_OS_CPP_BUILTINS): Add _M_ARM,
> + _M_ARMT and ARM.
> +
> 2006-11-27 Pedro Alves <[EMAIL PROTECTED]>
>
> * config/arm/mingw32.h (STARTFILE_SPEC): Add crt3.o and dllcrt3.o
> Index: config/arm/arm.c
> ===================================================================
> --- config/arm/arm.c (revision 760)
> +++ config/arm/arm.c (working copy)
> @@ -15529,4 +15529,28 @@
> || lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (record_type));
> }
>
> +int
> +arm_major_arch (void)
> +{
> + if ((insn_flags & FL_FOR_ARCH6) == FL_FOR_ARCH6)
> + return 6;
> + else if ((insn_flags & FL_FOR_ARCH5) == FL_FOR_ARCH5)
> + return 5;
> + else if ((insn_flags & FL_FOR_ARCH4) == FL_FOR_ARCH4)
> + return 4;
> + else if ((insn_flags & FL_FOR_ARCH3) == FL_FOR_ARCH3)
> + return 3;
> + else if ((insn_flags & FL_FOR_ARCH2) == FL_FOR_ARCH2)
> + return 2;
> +
> + /* This should gives us a nice ICE somewhere. */
> + return -1;
> +}
> +
> +bool
> +arm_thumb_arch_p (void)
> +{
> + return (insn_flags & FL_THUMB) == FL_THUMB;
> +}
> +
> #include "gt-arm.h"
> Index: config/arm/arm-protos.h
> ===================================================================
> --- config/arm/arm-protos.h (revision 760)
> +++ config/arm/arm-protos.h (working copy)
> @@ -1,5 +1,6 @@
> -/* Prototypes for exported functions defined in arm.c and pe.c
> - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
> +/* Prototypes for exported functions defined in arm.c, pe.c,
> + pe-cxx.c and pe-stubs.c.
> + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
> Free Software Foundation, Inc.
> Contributed by Richard Earnshaw ([EMAIL PROTECTED])
> Minor hacks by Nick Clifton ([EMAIL PROTECTED])
> @@ -42,6 +43,9 @@
> extern void arm_output_fn_unwind (FILE *, bool);
> extern void arm_file_end (void);;
>
> +int arm_major_arch (void);
> +bool arm_thumb_arch_p (void);
> +
> #ifdef TREE_CODE
> extern int arm_return_in_memory (tree);
> extern void arm_encode_call_attribute (tree, int);
> Index: config/arm/wince-pe.h
> ===================================================================
> --- config/arm/wince-pe.h (revision 792)
> +++ config/arm/wince-pe.h (working copy)
> @@ -92,7 +92,21 @@
> to compare typeinfo symbols across dll boundaries. */ \
> builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
> EXTRA_OS_CPP_BUILTINS (); \
> - } \
> + { \
> + /* Define these to be compatible MSFT's tools. */ \
> + char buf[64]; \
> + int arch = arm_major_arch (); \
> + sprintf (buf, "_M_ARM=%d", arch); \
> + builtin_define (buf); \
> + if (arm_thumb_arch_p ()) \
> + { \
> + sprintf (buf, "_M_ARMT=%d", arch); \
> + builtin_define (buf); \
> + } \
> + /* Always defined as empty. */ \
> + builtin_define ("ARM="); \
> + } \
> + } \
> while (0)
>
> /* Now we define the strings used to build the spec file. */
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________ Cegcc-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/cegcc-devel
--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________ Cegcc-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/cegcc-devel
