forked from KolibriOS/kolibrios
libc.obj:
- Update crt0 - Removed autoloader generation(use libc.def). git-svn-id: svn://kolibrios.org@9666 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
a971f7e19b
commit
36918e3217
@ -1,24 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
AR=ar
|
||||
FASM=fasm
|
||||
|
||||
set -e
|
||||
|
||||
cd $1
|
||||
|
||||
echo "Compile ASM files..."
|
||||
|
||||
rm -f *.o
|
||||
cp __lib__.asm.bak __lib__.asm
|
||||
|
||||
for asm_file in $(find *.asm)
|
||||
do
|
||||
$FASM $asm_file >> /dev/null
|
||||
done
|
||||
|
||||
echo "Create libc.obj.a library..."
|
||||
ar -rsc ../../bin/lib/libc.obj.a *.o
|
||||
rm -f *.asm *.o
|
||||
echo "Done!"
|
@ -1,57 +0,0 @@
|
||||
// export_table_gen
|
||||
// Copyright (C) maxcodehack and turbocat2001, 2021
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if (argc != 3) {
|
||||
printf("Usage: %s <symbols.txt> <exports.c>\n", argv[0]);
|
||||
return 0;
|
||||
}
|
||||
FILE *input, *output;
|
||||
if ((input = fopen(argv[1], "r")) == NULL)
|
||||
{
|
||||
printf("error: file \"%s\" not found\n", argv[1]);
|
||||
return 1;
|
||||
}
|
||||
char buf[10000];
|
||||
// Head
|
||||
strcpy(buf, \
|
||||
"#include <stdio.h>\n" \
|
||||
"#include <string.h>\n" \
|
||||
"#include <stdlib.h>\n" \
|
||||
"#include <time.h>\n" \
|
||||
"#include <sys/dirent.h>\n" \
|
||||
"#include <sys/ksys.h>\n\n" \
|
||||
"#include <math.h>\n\n" \
|
||||
"#include <setjmp.h>\n\n" \
|
||||
"ksys_dll_t EXPORTS[] = {\n");
|
||||
|
||||
// Generate
|
||||
char symbol[256];
|
||||
while(fscanf(input, "%s", symbol) != EOF) {
|
||||
if(symbol[0]!='!'){
|
||||
char temp[256];
|
||||
sprintf(temp, "{\"%s\", &%s},\n", symbol, symbol);
|
||||
strcat(buf, temp);
|
||||
}
|
||||
}
|
||||
strcat(buf, "NULL,\n};");
|
||||
fclose(input);
|
||||
|
||||
// Output generated
|
||||
output = fopen(argv[2], "w");
|
||||
if (output == NULL)
|
||||
{
|
||||
printf("Unable to write to file: '%s'!\n", argv[2]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
fputs(buf, output);
|
||||
fclose(output);
|
||||
|
||||
printf("Done, check %s!\n", argv[2]);
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if(argc!=3){
|
||||
printf("Usage: LoadGen <symbols.txt> <loader_dir>\n");
|
||||
return 0;
|
||||
}
|
||||
argv[2][strlen(argv[1])-2]='\0';
|
||||
FILE* symbols_txt = fopen(argv[1], "r");
|
||||
if(!symbols_txt){
|
||||
fprintf(stderr, "File '%s' not found!\n", argv[1]);
|
||||
return -1;
|
||||
}
|
||||
char line[256];
|
||||
while(fgets(line, 256, symbols_txt)) {
|
||||
if(line[0]!='!'){
|
||||
if(line[strlen(line)-1]=='\n'){
|
||||
line[strlen(line)-1]='\0';
|
||||
}
|
||||
char asm_name[PATH_MAX];
|
||||
sprintf(asm_name, "%s/%s.asm", argv[2], line);
|
||||
FILE *out = fopen(asm_name, "wb");
|
||||
if(!out){
|
||||
fprintf(stderr, "Error! File '%s' not created!\n", asm_name);
|
||||
return -1;
|
||||
}else{
|
||||
printf("File '%s' created successfully!\n", asm_name);
|
||||
}
|
||||
|
||||
fprintf(out, "format ELF\n");
|
||||
fprintf(out, "include \"__lib__.inc\"\n");
|
||||
fprintf(out, "fun equ __func@%s\n", line);
|
||||
fprintf(out, "fun_str equ '%s'\n", line);
|
||||
fprintf(out, "section '.text'\n");
|
||||
fprintf(out, "fun_name db fun_str, 0\n");
|
||||
fprintf(out, "section '.data'\n");
|
||||
fprintf(out, "extrn lib_name\n");
|
||||
fprintf(out, "public fun as fun_str\n");
|
||||
fprintf(out, "fun dd fun_name\n");
|
||||
fprintf(out, "lib dd lib_name\n");
|
||||
|
||||
fclose(out);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
all:
|
||||
$(CC) ExportGen.c -o ../ExportGen
|
||||
$(CC) LoaderGen.c -o ../LoaderGen
|
@ -1,28 +0,0 @@
|
||||
ifndef GCC
|
||||
GCC=kos32-gcc
|
||||
endif
|
||||
|
||||
KPACK=kpack
|
||||
FASM=fasm
|
||||
|
||||
CFLAGS = -c -nostdinc -I../include -DGNUC -D_BUILD_LIBC -fno-common -Os -fno-builtin -fno-leading-underscore -fno-pie
|
||||
|
||||
SRC=libc.c
|
||||
LIB=libc.obj
|
||||
|
||||
all:
|
||||
$(MAKE) -C ../linuxtools/src
|
||||
mkdir -p exports
|
||||
../linuxtools/ExportGen symbols.txt exports/exports.c
|
||||
$(FASM) crt/crt0.asm ../../bin/lib/crt0.o
|
||||
$(GCC) $(CFLAGS) $(SRC) -o $(LIB)
|
||||
$(KPACK) $(LIB)
|
||||
../linuxtools/LoaderGen symbols.txt ../loader
|
||||
../linuxtools/LoaderBuild ../loader
|
||||
$(MAKE) -C libtcc
|
||||
rm -rf exports
|
||||
install:
|
||||
cp -f libc.obj ~/.kex/root/RD/1/LIB
|
||||
|
||||
clean:
|
||||
rm ../../bin/lib/libc.obj.a ../../bin/lib/libtcc.a
|
@ -2,12 +2,7 @@ if tup.getconfig("NO_GCC") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../../../" or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_gcc.lua")
|
||||
|
||||
CFLAGS = " -c -w -nostdinc -DGNUC -D_BUILD_LIBC -Os -fno-common -fno-builtin -fno-leading-underscore -fno-pie"
|
||||
CFLAGS = " -c -nostdinc -DGNUC -D_BUILD_LIBC -Os -fno-common -fno-builtin -fno-leading-underscore -fno-pie"
|
||||
INCLUDES = " -I../include"
|
||||
|
||||
tup.rule("../linuxtools/src/ExportGen.c", "gcc %f -o %o" , "../linuxtools/ExportGen")
|
||||
tup.rule("../linuxtools/src/LoaderGen.c", "gcc %f -o %o" , "../linuxtools/LoaderGen")
|
||||
|
||||
tup.rule({"symbols.txt",extra_inputs = {"../linuxtools/ExportGen"}}, "../linuxtools/ExportGen %f %o" , "exports/exports.c")
|
||||
|
||||
tup.rule({"libc.c",extra_inputs = {"exports/exports.c"}} , "kos32-gcc" .. CFLAGS .. INCLUDES .. " -o %o %f " .. tup.getconfig("KPACK_CMD"), "libc.obj")
|
||||
tup.rule("libc.c", "kos32-gcc" .. CFLAGS .. INCLUDES .. " -o %o %f " .. tup.getconfig("KPACK_CMD"), "libc.obj")
|
||||
|
@ -1,39 +1,36 @@
|
||||
;
|
||||
; 2021, Edited by Coldy
|
||||
;
|
||||
; This module same as original crt0.asm, but cut:
|
||||
; 1. virtual header block (hparams change to __app_params, hpath change to __app_path)
|
||||
; 2. init heap of memory - not needed because 68.18 (68.19) init heap implicitly
|
||||
; (it is does dll.obj)
|
||||
; 3. loader (he lives in dll.obj)
|
||||
;
|
||||
|
||||
format ELF
|
||||
section '.text' executable
|
||||
public start
|
||||
public start as '_start'
|
||||
;extrn mf_init
|
||||
extrn main
|
||||
include '../../../../../proc32.inc'
|
||||
include '../../../../../macros.inc'
|
||||
include '../../../../../dll.inc'
|
||||
;include '../../../../../debug.inc'
|
||||
|
||||
;start_:
|
||||
virtual at 0
|
||||
db 'MENUET01' ; 1. Magic number (8 bytes)
|
||||
dd 0x01 ; 2. Version of executable file
|
||||
dd start ; 3. Start address
|
||||
imgsz dd 0x0 ; 4. Size of image
|
||||
dd 0x100000 ; 5. Size of needed memory
|
||||
dd 0x100000 ; 6. Pointer to stack
|
||||
hparams dd 0x0 ; 7. Pointer to program arguments
|
||||
hpath dd 0x0 ; 8. Pointer to program path
|
||||
end virtual
|
||||
extrn main
|
||||
|
||||
include '../../../../../../proc32.inc'
|
||||
include '../../../../../../macros.inc'
|
||||
__DEBUG__ = 0
|
||||
|
||||
__app_params equ 0x1C ; Pointer to program arguments
|
||||
;__app_path equ 0x20 ; Pointer to program path
|
||||
|
||||
start:
|
||||
;DEBUGF 'Start programm\n'
|
||||
;init heap of memory
|
||||
mov eax,68
|
||||
mov ebx,11
|
||||
int 0x40
|
||||
|
||||
mov [argc], 0
|
||||
mov eax, [hparams]
|
||||
mov eax, [__app_params]
|
||||
test eax, eax
|
||||
jz .without_path
|
||||
jz .without_path
|
||||
mov eax, path
|
||||
cmp word ptr eax, 32fh ; '/#3' UTF8
|
||||
cmp word ptr eax, 32fh ; '/#3' UTF8
|
||||
jne .without_path
|
||||
mov word ptr eax, 12fh ; '/#1' fix to CP866
|
||||
.without_path:
|
||||
@ -42,21 +39,21 @@ start:
|
||||
; retrieving parameters
|
||||
mov esi, params
|
||||
xor edx, edx ; dl - èä¸ò ïàðàìåòð(1) èëè ðàçäåëèòåëè(0)
|
||||
; dh - ñèìâîë ñ êîòîðîãî íà÷àëñÿ ïàðàìåòð (1 êàâû÷êè, 0 îñòàëüíîå)
|
||||
; dh - ñèìâîë ñ êîòîðîãî íà÷àëñÿ ïàðàìåòð (1 êàâû÷êè, 0 îñòàëüíîå)
|
||||
mov ecx, 1 ; cl = 1
|
||||
; ch = 0 ïðîñòî íîëü
|
||||
; ch = 0 ïðîñòî íîëü
|
||||
.parse:
|
||||
lodsb
|
||||
test al, al
|
||||
jz .run
|
||||
jz .run
|
||||
test dl, dl
|
||||
jnz .findendparam
|
||||
;{åñëè áûë ðàçäåëèòåëü
|
||||
;{åñëè áûë ðàçäåëèòåëü
|
||||
cmp al, ' '
|
||||
jz .parse ;çàãðóæåí ïðîáåë, ãðóçèì ñëåäóþùèé ñèìâîë
|
||||
jz .parse ;çàãðóæåí ïðîáåë, ãðóçèì ñëåäóþùèé ñèìâîë
|
||||
mov dl, cl ;íà÷èíàåòñÿ ïàðàìåòð
|
||||
cmp al, '"'
|
||||
jz @f ;çàãðóæåíû êàâû÷êè
|
||||
jz @f ;çàãðóæåíû êàâû÷êè
|
||||
mov dh, ch ;ïàðàìåòð áåç êàâû÷åê
|
||||
dec esi
|
||||
call push_param
|
||||
@ -70,9 +67,9 @@ start:
|
||||
|
||||
.findendparam:
|
||||
test dh, dh
|
||||
jz @f ; áåç êàâû÷åê
|
||||
jz @f ; áåç êàâû÷åê
|
||||
cmp al, '"'
|
||||
jz .clear
|
||||
jz .clear
|
||||
jmp .parse
|
||||
@@:
|
||||
cmp al, ' '
|
||||
@ -85,7 +82,6 @@ start:
|
||||
jmp .parse
|
||||
|
||||
.run:
|
||||
call load_imports
|
||||
push argv
|
||||
push [argc]
|
||||
call main
|
||||
@ -93,7 +89,7 @@ start:
|
||||
xor eax,eax
|
||||
dec eax
|
||||
int 0x40
|
||||
dd -1
|
||||
dd -1
|
||||
.crash:
|
||||
jmp .exit
|
||||
;============================
|
||||
@ -112,101 +108,9 @@ push_param:
|
||||
inc [argc]
|
||||
.dont_add:
|
||||
ret
|
||||
;==============================
|
||||
|
||||
|
||||
;==============================
|
||||
load_imports:
|
||||
;==============================
|
||||
;parameters
|
||||
; none
|
||||
;description
|
||||
; imports must be located at end of image (but before BSS sections)
|
||||
; the address of end of imports (next byte after imports) is located in imgsz
|
||||
; look at each import from that address up to illegal import
|
||||
; legal import is such that:
|
||||
; first pointer points to procedure name
|
||||
; and is smaller than imgsz
|
||||
; second pointer points lo library name, starting with 0x55, 0xAA
|
||||
; and is smaller than imgsz
|
||||
; each library should be initialized as appropriate, once
|
||||
; so as library is initialized, its name will be replaced 0x00
|
||||
mov ebx, [imgsz] ; byte after imports
|
||||
.handle_next_import:
|
||||
sub ebx, 4 ; ebx = pointer to pointer to library name
|
||||
mov esi, dword[ebx] ; esi = pointer to library name
|
||||
push ebx
|
||||
push esi
|
||||
call load_library ; eax = pointer to library exports
|
||||
pop esi
|
||||
pop ebx
|
||||
test eax, eax
|
||||
jz .done
|
||||
sub ebx, 4 ; ebx = pointer to pointer to symbol name
|
||||
push ebx
|
||||
stdcall dll.GetProcAddress, eax, dword[ebx]
|
||||
pop ebx
|
||||
test eax, eax
|
||||
jz .fail
|
||||
mov dword[ebx], eax
|
||||
jmp .handle_next_import
|
||||
.done:
|
||||
;DEBUGF 1, "Library: %s not loaded!\n", esi
|
||||
;mcall -1
|
||||
ret
|
||||
.fail:
|
||||
ret
|
||||
|
||||
;==============================
|
||||
|
||||
;==============================
|
||||
load_library:
|
||||
;==============================
|
||||
;parameters
|
||||
; ebx: library name address
|
||||
;description
|
||||
; each library should be initialized as appropriate, once
|
||||
; so as library is initialized, its name will be replaced 0x00
|
||||
; and 4 next bytes will be set to address of library
|
||||
; first two bytes of library name must be 0x55, 0xAA (is like a magic)
|
||||
cld ; move esi further, not back
|
||||
cmp esi, [imgsz]
|
||||
ja .fail
|
||||
lodsb ; al = first byte of library name
|
||||
cmp al, 0x55
|
||||
jne .fail
|
||||
lodsb ; al = second byte of library name
|
||||
cmp al, 0xAA
|
||||
jne .fail
|
||||
lodsb ; al = third byte of library name (0x00 if the library is already loaded)
|
||||
test al, al
|
||||
jnz .load
|
||||
lodsd ; if we here, then third byte is 0x00 => address of library is in next 4 bytes
|
||||
; now eax contains address of library
|
||||
ret
|
||||
.load:
|
||||
dec esi ; we checked on 0 before, let's go back
|
||||
mov eax, 68
|
||||
mov ebx, 19
|
||||
mov ecx, esi
|
||||
int 0x40 ; eax = address of exports
|
||||
mov byte[esi], 0 ; library is loaded, let's place 0 in first byte of name
|
||||
mov [esi + 1], eax ; now next 4 bytes of library name are replaced by address of library
|
||||
; call lib_init
|
||||
stdcall dll.GetProcAddress, eax, lib_init_str ; eax = address of lib_init
|
||||
test eax, eax
|
||||
jz .ret
|
||||
stdcall dll.Init, eax
|
||||
.ret:
|
||||
mov eax, [esi + 1] ; put address of library into eax
|
||||
ret
|
||||
.fail:
|
||||
mov eax, 0
|
||||
ret
|
||||
|
||||
;==============================
|
||||
|
||||
lib_init_str db 'lib_init', 0
|
||||
|
||||
public argc as '__argc'
|
||||
public params as '__argv'
|
||||
public path as '__path'
|
||||
@ -214,8 +118,10 @@ public path as '__path'
|
||||
section '.bss'
|
||||
buf_len = 0x400
|
||||
max_parameters=0x20
|
||||
argc rd 1
|
||||
argv rd max_parameters
|
||||
path rb buf_len
|
||||
params rb buf_len
|
||||
argc rd 1
|
||||
argv rd max_parameters
|
||||
path rb buf_len
|
||||
params rb buf_len
|
||||
|
||||
;section '.data'
|
||||
;include_debug_strings ; ALWAYS present in data section
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include <setjmp.h>
|
||||
|
||||
#include "ctype/is.c"
|
||||
#include "ctype/tolower.c"
|
||||
#include "ctype/toupper.c"
|
||||
@ -146,6 +148,174 @@ __asm__(
|
||||
".include \"setjmp/setjmp.s\""
|
||||
);
|
||||
|
||||
#include "libtcc/libtcc1.c"
|
||||
#include "libtcc1/libtcc1.c"
|
||||
#include "stdlib/___chkstk_ms.c"
|
||||
#include "exports/exports.c"
|
||||
|
||||
|
||||
ksys_dll_t EXPORTS[] = {
|
||||
{"clearerr", &clearerr},
|
||||
{"debug_printf", &debug_printf},
|
||||
{"fclose", &fclose},
|
||||
{"feof", &feof},
|
||||
{"ferror", &ferror},
|
||||
{"fflush", &fflush},
|
||||
{"fgetc", &fgetc},
|
||||
{"fgetpos", &fgetpos},
|
||||
{"fgets", &fgets},
|
||||
{"fopen", &fopen},
|
||||
{"fprintf", &fprintf},
|
||||
{"fputc", &fputc},
|
||||
{"fputs", &fputs},
|
||||
{"fread", &fread},
|
||||
{"freopen", &freopen},
|
||||
{"fscanf", &fscanf},
|
||||
{"fseek", &fseek},
|
||||
{"fsetpos", &fsetpos},
|
||||
{"ftell", &ftell},
|
||||
{"fwrite", &fwrite},
|
||||
{"getchar", &getchar},
|
||||
{"gets", &gets},
|
||||
{"perror", &perror},
|
||||
{"printf", &printf},
|
||||
{"puts", &puts},
|
||||
{"remove", &remove},
|
||||
{"rename", &rename},
|
||||
{"rewind", &rewind},
|
||||
{"scanf", &scanf},
|
||||
{"setbuf", &setbuf},
|
||||
{"setvbuf", &setvbuf},
|
||||
{"snprintf", &snprintf},
|
||||
{"sprintf", &sprintf},
|
||||
{"sscanf", &sscanf},
|
||||
{"tmpfile", &tmpfile},
|
||||
{"tmpnam", &tmpnam},
|
||||
{"vfscanf", &vfscanf},
|
||||
{"vprintf", &vprintf},
|
||||
{"vfscanf", &vfscanf},
|
||||
{"vsprintf", &vsprintf},
|
||||
{"vsnprintf", &vsnprintf},
|
||||
{"vsscanf", &vsscanf},
|
||||
{"ungetc", &ungetc},
|
||||
{"abs", &abs},
|
||||
{"atoi", &atoi},
|
||||
{"atol", &atol},
|
||||
{"atoll", &atoll},
|
||||
{"atof", &atof},
|
||||
{"calloc", &calloc},
|
||||
{"exit", &exit},
|
||||
{"free", &free},
|
||||
{"itoa", &itoa},
|
||||
{"labs", &labs},
|
||||
{"llabs", &llabs},
|
||||
{"malloc", &malloc},
|
||||
{"realloc", &realloc},
|
||||
{"strtol", &strtol},
|
||||
{"srand", &srand},
|
||||
{"rand", &rand},
|
||||
{"qsort", &qsort},
|
||||
{"strtod", &strtod},
|
||||
{"__assert_fail", &__assert_fail},
|
||||
{"memchr", &memchr},
|
||||
{"memcmp", &memcmp},
|
||||
{"strncat", &strncat},
|
||||
{"strchr", &strchr},
|
||||
{"strcat", &strcat},
|
||||
{"strcmp", &strcmp},
|
||||
{"strcoll", &strcoll},
|
||||
{"strcpy", &strcpy},
|
||||
{"strcspn", &strcspn},
|
||||
{"strdup", &strdup},
|
||||
{"strerror", &strerror},
|
||||
{"strlen", &strlen},
|
||||
{"strncat", &strncat},
|
||||
{"strncmp", &strncmp},
|
||||
{"strncpy", &strncpy},
|
||||
{"strrchr", &strrchr},
|
||||
{"strrev", &strrev},
|
||||
{"strspn", &strspn},
|
||||
{"strstr", &strstr},
|
||||
{"strtok", &strtok},
|
||||
{"strxfrm", &strxfrm},
|
||||
{"_errno", &_errno},
|
||||
{"closedir", &closedir},
|
||||
{"opendir", &opendir},
|
||||
{"readdir", &readdir},
|
||||
{"rewinddir", &rewinddir},
|
||||
{"seekdir", &seekdir},
|
||||
{"telldir", &telldir},
|
||||
{"getcwd", &getcwd},
|
||||
{"mkdir", &mkdir},
|
||||
{"rmdir", &rmdir},
|
||||
{"setcwd", &setcwd},
|
||||
{"getcwd", &getcwd},
|
||||
{"socket", &socket},
|
||||
{"close", &close},
|
||||
{"bind", &bind},
|
||||
{"listen", &listen},
|
||||
{"connect", &connect},
|
||||
{"accept", &accept},
|
||||
{"send", &send},
|
||||
{"recv", &recv},
|
||||
{"setsockopt", &setsockopt},
|
||||
{"socketpair", &socketpair},
|
||||
{"acosh", &acosh},
|
||||
{"asinh", &asinh},
|
||||
{"atanh", &atanh},
|
||||
{"acosh", &acosh},
|
||||
{"frexp", &frexp},
|
||||
{"hypot", &hypot},
|
||||
{"ldexp", &ldexp},
|
||||
{"sinh", &sinh},
|
||||
{"tanh", &tanh},
|
||||
{"acos", &acos},
|
||||
{"asin", &asin},
|
||||
{"atan", &atan},
|
||||
{"atan2", &atan2},
|
||||
{"ceil", &ceil},
|
||||
{"cos", &cos},
|
||||
{"sin", &sin},
|
||||
{"tan", &tan},
|
||||
{"exp", &exp},
|
||||
{"fabs", &fabs},
|
||||
{"floor", &floor},
|
||||
{"fmod", &fmod},
|
||||
{"log", &log},
|
||||
{"modf", &modf},
|
||||
{"modfl", &modfl},
|
||||
{"pow", &pow},
|
||||
{"pow2", &pow2},
|
||||
{"pow10", &pow10},
|
||||
{"longjmp", &longjmp},
|
||||
{"setjmp", &setjmp},
|
||||
{"__is", &__is},
|
||||
{"tolower", &tolower},
|
||||
{"toupper", &toupper},
|
||||
{"con_set_title", &con_set_title},
|
||||
{"con_init", &con_init},
|
||||
{"con_init_opt", &con_init_opt},
|
||||
{"con_write_asciiz", &con_write_asciiz},
|
||||
{"con_write_string", &con_write_string},
|
||||
{"con_printf", &con_printf},
|
||||
{"con_exit", &con_exit},
|
||||
{"con_get_flags", &con_get_flags},
|
||||
{"con_set_flags", &con_set_flags},
|
||||
{"con_kbhit", &con_kbhit},
|
||||
{"con_getch", &con_getch},
|
||||
{"con_getch2", &con_getch2},
|
||||
{"con_gets", &con_gets},
|
||||
{"con_gets2", &con_gets2},
|
||||
{"con_get_font_height", &con_get_font_height},
|
||||
{"con_get_cursor_height", &con_get_cursor_height},
|
||||
{"con_set_cursor_height", &con_set_cursor_height},
|
||||
{"con_cls", &con_cls},
|
||||
{"con_get_cursor_pos", &con_get_cursor_pos},
|
||||
{"con_set_cursor_pos", &con_set_cursor_pos},
|
||||
{"mktime", &mktime},
|
||||
{"time", &time},
|
||||
{"localtime", &localtime},
|
||||
{"asctime", &asctime},
|
||||
{"difftime", &difftime},
|
||||
{"basename", &basename},
|
||||
{"dirname", &dirname},
|
||||
NULL,
|
||||
};
|
||||
|
@ -1,179 +0,0 @@
|
||||
!____STDIO______
|
||||
clearerr
|
||||
debug_printf
|
||||
fclose
|
||||
feof
|
||||
ferror
|
||||
fflush
|
||||
fgetc
|
||||
fgetpos
|
||||
fgets
|
||||
fopen
|
||||
fprintf
|
||||
fputc
|
||||
fputs
|
||||
fread
|
||||
freopen
|
||||
fscanf
|
||||
fseek
|
||||
fsetpos
|
||||
ftell
|
||||
fwrite
|
||||
getchar
|
||||
gets
|
||||
perror
|
||||
printf
|
||||
puts
|
||||
remove
|
||||
rename
|
||||
rewind
|
||||
scanf
|
||||
setbuf
|
||||
setvbuf
|
||||
snprintf
|
||||
sprintf
|
||||
sscanf
|
||||
tmpfile
|
||||
tmpnam
|
||||
vfscanf
|
||||
vprintf
|
||||
vfscanf
|
||||
vsprintf
|
||||
vsnprintf
|
||||
vsscanf
|
||||
ungetc
|
||||
!____STDLIB____
|
||||
abs
|
||||
atoi
|
||||
atol
|
||||
atoll
|
||||
atof
|
||||
calloc
|
||||
exit
|
||||
free
|
||||
itoa
|
||||
labs
|
||||
llabs
|
||||
malloc
|
||||
realloc
|
||||
strtol
|
||||
srand
|
||||
rand
|
||||
qsort
|
||||
strtod
|
||||
__assert_fail
|
||||
!____STRING____
|
||||
!memcpy
|
||||
memchr
|
||||
memcmp
|
||||
!memmove
|
||||
!memset
|
||||
strncat
|
||||
strchr
|
||||
strcat
|
||||
strcmp
|
||||
strcoll
|
||||
strcpy
|
||||
strcspn
|
||||
strdup
|
||||
strerror
|
||||
strlen
|
||||
strncat
|
||||
strncmp
|
||||
strncpy
|
||||
strrchr
|
||||
strrev
|
||||
strspn
|
||||
strstr
|
||||
strtok
|
||||
strxfrm
|
||||
_errno
|
||||
!____SYS____
|
||||
closedir
|
||||
opendir
|
||||
readdir
|
||||
rewinddir
|
||||
seekdir
|
||||
telldir
|
||||
getcwd
|
||||
mkdir
|
||||
rmdir
|
||||
setcwd
|
||||
getcwd
|
||||
!____SOCKET____
|
||||
socket
|
||||
close
|
||||
bind
|
||||
listen
|
||||
connect
|
||||
accept
|
||||
send
|
||||
recv
|
||||
setsockopt
|
||||
socketpair
|
||||
!____UNISTD____
|
||||
!____MATH____
|
||||
acosh
|
||||
asinh
|
||||
atanh
|
||||
acosh
|
||||
frexp
|
||||
hypot
|
||||
ldexp
|
||||
sinh
|
||||
tanh
|
||||
acos
|
||||
asin
|
||||
atan
|
||||
atan2
|
||||
ceil
|
||||
cos
|
||||
sin
|
||||
tan
|
||||
exp
|
||||
fabs
|
||||
floor
|
||||
fmod
|
||||
log
|
||||
modf
|
||||
modfl
|
||||
pow
|
||||
pow2
|
||||
pow10
|
||||
!____LONGJMP____
|
||||
longjmp
|
||||
setjmp
|
||||
!____CTYPE____
|
||||
__is
|
||||
tolower
|
||||
toupper
|
||||
!___CONIO___
|
||||
con_set_title
|
||||
con_init
|
||||
con_init_opt
|
||||
con_write_asciiz
|
||||
con_write_string
|
||||
con_printf
|
||||
con_exit
|
||||
con_get_flags
|
||||
con_set_flags
|
||||
con_kbhit
|
||||
con_getch
|
||||
con_getch2
|
||||
con_gets
|
||||
con_gets2
|
||||
con_get_font_height
|
||||
con_get_cursor_height
|
||||
con_set_cursor_height
|
||||
con_cls
|
||||
con_get_cursor_pos
|
||||
con_set_cursor_pos
|
||||
!____TIME____
|
||||
mktime
|
||||
time
|
||||
localtime
|
||||
asctime
|
||||
difftime
|
||||
!____MISC____
|
||||
basename
|
||||
dirname
|
Loading…
Reference in New Issue
Block a user