newlib: rework console initialization.

git-svn-id: svn://kolibrios.org@6074 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge)
2016-01-18 17:02:08 +00:00
parent 36d7425fb6
commit adda605e2e
8 changed files with 29 additions and 45 deletions

View File

@@ -29,8 +29,12 @@ struct app_hdr
int stacktop;
char *cmdline;
char *path;
int __subsystem__;
};
void __init_conio();
void __fini_conio();
extern int main (int, char **, char **);
/* NOTE: The code for initializing the _argv, _argc, and environ variables
@@ -177,6 +181,8 @@ __crt_startup (void)
init_reent();
init_stdio();
if(header->__subsystem__ == 3)
__init_conio();
if( header->cmdline[0] != 0)
{
@@ -196,6 +202,9 @@ __crt_startup (void)
retval = main(argc, argv, NULL);
done:
if(header->__subsystem__ == 3)
__fini_conio();
exit (retval);
}

View File

@@ -1,15 +0,0 @@
extern void _pei386_runtime_relocator (void);
int DllStartup(void *module, int reason)
{
_pei386_runtime_relocator();
return 1;
};
void ___dll_start ()
{
_pei386_runtime_relocator();
}

View File

@@ -29,7 +29,7 @@ struct app_hdr
int stacktop;
char *cmdline;
char *path;
int reserved;
int __subsystem__;
void *__idata_start;
void *__idata_end;
int (*main)(int argc, char **argv, char **envp);
@@ -38,7 +38,8 @@ struct app_hdr
void _pei386_runtime_relocator (void);
void init_loader(void *libc_image);
void init_reent();
void __init_conio();
void __fini_conio();
int link_app();
void* get_entry_point(void *raw);
int (*entry)(int, char **, char **);
@@ -182,6 +183,10 @@ libc_crt_startup (void *libc_base)
_tls_map[0] = 0xE0;
init_reent();
init_stdio();
if(header->__subsystem__ == 3)
__init_conio();
__do_global_ctors();
// __appenv = load_file("/sys/system.env", &__appenv_size);
@@ -209,6 +214,9 @@ libc_crt_startup (void *libc_base)
retval = header->main(argc, argv, NULL);
done:
if(header->__subsystem__ == 3)
__fini_conio();
exit (retval);
}