mirror of
https://github.com/frida/tinycc
synced 2024-12-03 12:51:55 +03:00
73faaea227
- Use runtime function for conversion
- Also initialize fp with tcc -run on windows
This fixes a bug where
double x = 1.0;
double y = 1.0000000000000001;
double z = x < y ? 0 : sqrt (x*x - y*y);
caused a bad sqrt because rounding precision for the x < y comparison
was different to the one used within the sqrt function.
This also fixes a bug where
printf("%d, %d", (int)pow(10, 2), (int)pow(10, 2));
would print
100, 99
Unrelated:
win32: document relative include & lib lookup
win32: normalize_slashes: do not mirror silly gcc behavior
This reverts part of commit 8a81f9e103
winapi: add missing WINAPI decl. for some functions
41 lines
864 B
C
41 lines
864 B
C
// =============================================
|
|
// crt1.c
|
|
|
|
#include <stdlib.h>
|
|
|
|
#define __UNKNOWN_APP 0
|
|
#define __CONSOLE_APP 1
|
|
#define __GUI_APP 2
|
|
void __set_app_type(int);
|
|
void _controlfp(unsigned a, unsigned b);
|
|
|
|
typedef struct
|
|
{
|
|
int newmode;
|
|
} _startupinfo;
|
|
|
|
void __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*);
|
|
int main(int argc, char **argv, char **env);
|
|
|
|
int _start(void)
|
|
{
|
|
__TRY__
|
|
int argc; char **argv; char **env; int ret;
|
|
_startupinfo start_info = {0};
|
|
|
|
_controlfp(0x10000, 0x30000);
|
|
__set_app_type(__CONSOLE_APP);
|
|
__getmainargs(&argc, &argv, &env, 0, &start_info);
|
|
|
|
ret = main(argc, argv, env);
|
|
exit(ret);
|
|
}
|
|
|
|
int _runmain(int argc, char **argv)
|
|
{
|
|
_controlfp(0x10000, 0x30000);
|
|
return main(argc, argv, NULL);
|
|
}
|
|
|
|
// =============================================
|