* 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.
This commit is contained in:
56
winsup/cygwin/crt0.c
Normal file
56
winsup/cygwin/crt0.c
Normal file
@ -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);
|
||||
}
|
Reference in New Issue
Block a user