forked from KolibriOS/kolibrios
libc.obj: now builded to kos32-tcc
git-svn-id: svn://kolibrios.org@9843 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
18b9adeee2
commit
4f75a74c2c
@ -3,16 +3,45 @@ if tup.getconfig("NO_GCC") ~= "" then return end
|
|||||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../../../" or tup.getconfig("HELPERDIR")
|
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../../../" or tup.getconfig("HELPERDIR")
|
||||||
tup.include(HELPERDIR .. "/use_gcc.lua")
|
tup.include(HELPERDIR .. "/use_gcc.lua")
|
||||||
|
|
||||||
CFLAGS = " -c -nostdinc -DGNUC -D_BUILD_LIBC -Os -fno-common -fno-builtin -fno-leading-underscore -fno-pie"
|
CFLAGS = " -r -nostdinc -nostdlib -DGNUC -D_BUILD_LIBC "
|
||||||
INCLUDES = " -I../include"
|
INCLUDES = " -I../include"
|
||||||
|
|
||||||
OBJS = {"math/tan.obj", "math/sqrt.obj"}
|
GAS_SRC = {
|
||||||
|
"setjmp/setjmp.s",
|
||||||
|
"setjmp/longjmp.s",
|
||||||
|
"math/round.s",
|
||||||
|
"math/atan.s",
|
||||||
|
"math/pow2.s",
|
||||||
|
"math/log10.s",
|
||||||
|
"math/exp.s",
|
||||||
|
"math/pow10.s",
|
||||||
|
"math/log.s",
|
||||||
|
"math/pow.s",
|
||||||
|
"math/ceil.s",
|
||||||
|
"math/cos.s",
|
||||||
|
"math/sin.s",
|
||||||
|
"math/asin.s",
|
||||||
|
"math/modf.s",
|
||||||
|
"math/floor.s",
|
||||||
|
"math/fabs.s",
|
||||||
|
"math/fmod.s",
|
||||||
|
"math/log2.s",
|
||||||
|
"math/acos.s",
|
||||||
|
"math/modfl.s",
|
||||||
|
"math/atan2.s",
|
||||||
|
"math/sqrt.s",
|
||||||
|
"math/tan.s",
|
||||||
|
"string/memset.s",
|
||||||
|
"string/memmove.s"
|
||||||
|
}
|
||||||
|
|
||||||
for _, OBJ in pairs(OBJS) do
|
OBJS = {}
|
||||||
tup.rule(string.gsub(OBJ, ".obj", ".asm"), "fasm %f %o ", OBJ)
|
|
||||||
end
|
|
||||||
|
|
||||||
tup.rule("libc.c", "kos32-gcc" .. CFLAGS .. INCLUDES .. " -o %o %f ", "libc_tmp.obj")
|
tup.append_table(OBJS,
|
||||||
|
tup.foreach_rule(GAS_SRC, "as --32 %f -o %o", "%B.o")
|
||||||
|
)
|
||||||
|
|
||||||
table.insert(OBJS, "libc_tmp.obj");
|
table.insert(OBJS, "libc.c");
|
||||||
tup.rule(OBJS, "clink -o %o %f" .. " && kos32-strip %o --strip-unneeded " .. tup.getconfig("KPACK_CMD"), "libc.obj");
|
|
||||||
|
tup.rule(OBJS, "kos32-tcc" .. CFLAGS .. INCLUDES .. " -o %o %f " .. " && strip %o --strip-unneeded " , "libc.o")
|
||||||
|
tup.rule("libc.o", "objconv -fcoff32 %f %o " .. tup.getconfig("KPACK_CMD"), "%B.obj")
|
||||||
|
@ -119,37 +119,6 @@
|
|||||||
#include "misc/basename.c"
|
#include "misc/basename.c"
|
||||||
#include "misc/dirname.c"
|
#include "misc/dirname.c"
|
||||||
|
|
||||||
__asm__(
|
|
||||||
".include \"math/acos.s\"\n\t"
|
|
||||||
".include \"math/asin.s\"\n\t"
|
|
||||||
".include \"math/atan.s\"\n\t"
|
|
||||||
".include \"math/atan2.s\"\n\t"
|
|
||||||
".include \"math/ceil.s\"\n\t"
|
|
||||||
".include \"math/cos.s\"\n\t"
|
|
||||||
".include \"math/exp.s\"\n\t"
|
|
||||||
".include \"math/fabs.s\"\n\t"
|
|
||||||
".include \"math/floor.s\"\n\t"
|
|
||||||
".include \"math/fmod.s\"\n\t"
|
|
||||||
".include \"math/log.s\"\n\t"
|
|
||||||
".include \"math/log2.s\"\n\t"
|
|
||||||
".include \"math/log10.s\"\n\t"
|
|
||||||
".include \"math/modf.s\"\n\t"
|
|
||||||
".include \"math/modfl.s\"\n\t"
|
|
||||||
".include \"math/pow.s\"\n\t"
|
|
||||||
".include \"math/pow2.s\"\n\t"
|
|
||||||
".include \"math/pow10.s\"\n\t"
|
|
||||||
".include \"math/round.s\"\n\t"
|
|
||||||
".include \"math/sin.s\"\n\t");
|
|
||||||
|
|
||||||
__asm__(
|
|
||||||
".include \"string/memmove.s\"\n\t"
|
|
||||||
".include \"string/memset.s\"\n\t"
|
|
||||||
".include \"setjmp/longjmp.s\"\n\t"
|
|
||||||
".include \"setjmp/setjmp.s\"");
|
|
||||||
|
|
||||||
#include "libtcc1/libtcc1.c"
|
|
||||||
#include "stdlib/___chkstk_ms.c"
|
|
||||||
|
|
||||||
ksys_dll_t EXPORTS[] = {
|
ksys_dll_t EXPORTS[] = {
|
||||||
{ "clearerr", &clearerr },
|
{ "clearerr", &clearerr },
|
||||||
{ "debug_printf", &debug_printf },
|
{ "debug_printf", &debug_printf },
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
format COFF
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public _sqrt as "sqrt"
|
|
||||||
|
|
||||||
_sqrt:
|
|
||||||
fld qword[esp+4]
|
|
||||||
fsqrt
|
|
||||||
ret
|
|
8
programs/develop/ktcc/trunk/libc.obj/source/math/sqrt.s
Normal file
8
programs/develop/ktcc/trunk/libc.obj/source/math/sqrt.s
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
|
||||||
|
|
||||||
|
.global sqrt;
|
||||||
|
|
||||||
|
sqrt:
|
||||||
|
fldl 4(%esp)
|
||||||
|
fsqrt
|
||||||
|
ret
|
@ -1,10 +0,0 @@
|
|||||||
format COFF
|
|
||||||
section '.text'
|
|
||||||
|
|
||||||
public _tan as "tan"
|
|
||||||
|
|
||||||
_tan:
|
|
||||||
fld qword[esp+4]
|
|
||||||
fptan
|
|
||||||
fxch
|
|
||||||
ret
|
|
16
programs/develop/ktcc/trunk/libc.obj/source/math/tan.s
Normal file
16
programs/develop/ktcc/trunk/libc.obj/source/math/tan.s
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* Copyright (C) 1994 DJ Delorie, see COPYING.DJ for details */
|
||||||
|
|
||||||
|
tan.L0:
|
||||||
|
.quad 0xffffffffffffffff
|
||||||
|
|
||||||
|
tan:
|
||||||
|
fldl 4(%esp)
|
||||||
|
fptan
|
||||||
|
fstsw
|
||||||
|
fstp %st(0)
|
||||||
|
sahf
|
||||||
|
jnp tan.L1
|
||||||
|
/* fstp %st(0) - if exception, there is nothing on the stack */
|
||||||
|
fldl tan.L0
|
||||||
|
tan.L1:
|
||||||
|
ret
|
@ -1,13 +1,8 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#pragma GCC push_options
|
|
||||||
#pragma GCC optimize("O0")
|
|
||||||
|
|
||||||
void __assert_fail(const char* expr, const char* file, int line, const char* func)
|
void __assert_fail(const char* expr, const char* file, int line, const char* func)
|
||||||
{
|
{
|
||||||
fprintf(stdout, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line);
|
fprintf(stdout, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma GCC pop_options
|
|
@ -7,9 +7,6 @@
|
|||||||
const char* wday_str[7] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
|
const char* wday_str[7] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
|
||||||
const char* mon_str[12] = { "Jan", "Feb", "Mar", "Ap", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
const char* mon_str[12] = { "Jan", "Feb", "Mar", "Ap", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
|
||||||
|
|
||||||
#pragma GCC push_options
|
|
||||||
#pragma GCC optimize("O0")
|
|
||||||
|
|
||||||
#define TIME_STR_MAX 27
|
#define TIME_STR_MAX 27
|
||||||
|
|
||||||
char* asctime(const struct tm* tm)
|
char* asctime(const struct tm* tm)
|
||||||
@ -31,4 +28,3 @@ char* asctime(const struct tm* tm)
|
|||||||
1900 + tm->tm_year);
|
1900 + tm->tm_year);
|
||||||
return time_str;
|
return time_str;
|
||||||
}
|
}
|
||||||
#pragma GCC pop_options
|
|
||||||
|
Loading…
Reference in New Issue
Block a user