When trying to generate a cross-compiler targeting arm-wince-pe I have noticed that libgcc2.c was not compiling anymore because of the following function :
int mprotect (char *addr, int len, int prot) { DWORD np, op; if (prot == 7) np = 0x40; else if (prot == 5) np = 0x20; else if (prot == 4) np = 0x10; else if (prot == 3) np = 0x04; else if (prot == 1) np = 0x02; else if (prot == 0) np = 0x01; if (VirtualProtect (addr, len, np, &op)) return 0; else return -1; } The problem comes from the DWORD because compiler doesn't know its definition. Before is was defined as an int and everything was working fine. By the way I think you should use a unsigned long instead of a int because a DWORD is defined like this : typedef unsigned long DWORD; -- Summary: libgcc2.c doesn't compile anymore Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: bootstrap AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: forumer at smartmobili dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39503