From 194d9eb318403b1618c3f77eba6de4e17b7c900d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 12 May 2003 11:06:27 +0000 Subject: * Makefile.in (CYGWIN_START): Define as crt0.o. Add to TARGET_LIBS. * fhandler.h (fhandler_virtual::fstat): Remove useless declaration. * fhandler_virtual.cc: Remove _COMPILING_NEWLIB define. * ipc.cc (ftok): Use stat64. * syscalls.cc (_fstat64): Remove alias. (_fstat): Ditto. (_stat): Ditto. (_fstat64_r): New function. (_fstat_r): Ditto. (_stat64_r): Ditto. (stat_r): Ditto. * crt0.o: New file, moved from newlib. * include/sys/param.h: Ditto. * include/sys/utime.h: Ditto. * include/sys/utmp.h: Ditto. * include/sys/dirent.h: Ditto. Expose different struct dirent, dependening of the environment. --- winsup/cygwin/crt0.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 winsup/cygwin/crt0.c (limited to 'winsup/cygwin/crt0.c') diff --git a/winsup/cygwin/crt0.c b/winsup/cygwin/crt0.c new file mode 100644 index 000000000..2837a54d1 --- /dev/null +++ b/winsup/cygwin/crt0.c @@ -0,0 +1,56 @@ +/* crt0.c. + + Copyright 2001 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#ifdef __PPC__ +/* For the PowerPC, we want to make this function have its structured + exception table exception function point to something we control. */ + +extern void __cygwin_exception_handler(); +extern void mainCRTStartup(void) __attribute__((__exception__(__cygwin_exception_handler))); +#endif + +/* In the following ifdef'd i386 code, the FPU precision is set to 80 bits + and all FPU exceptions are masked. The former is needed to make long + doubles work correctly. The latter causes the FPU to generate NaNs and + Infinities instead of signals for certain operations. +*/ + +#ifdef __i386__ +#define FPU_RESERVED 0xF0C0 +#define FPU_DEFAULT 0x033f + +/* For debugging on *#!$@ windbg. bp for breakpoint. */ +int __cygwin_crt0_bp = 0; +#endif + +extern int main (int argc, char **argv); + +void +mainCRTStartup () +{ +#ifdef __i386__ + if (__cygwin_crt0_bp) + asm volatile ("int3"); + + { + volatile unsigned short cw; + + /* Get Control Word */ + __asm__ volatile ("fnstcw %0" : "=m" (cw) : ); + + /* mask in */ + cw &= FPU_RESERVED; + cw |= FPU_DEFAULT; + + /* set cw */ + __asm__ volatile ("fldcw %0" :: "m" (cw)); + } +#endif + + cygwin_crt0 (main); +} -- cgit v1.2.3