From 419c67b51ae4f6d77e7c012b59983d1e9a01c753 Mon Sep 17 00:00:00 2001 From: Max Logaev Date: Fri, 16 Jan 2026 18:45:02 +0300 Subject: [PATCH] newlib: No use crt0 Since crt0 cannot be separated from newlib, there is no point in having it separately. Signed-off-by: Max Logaev --- libraries/newlib/newlib/configure.host | 2 +- .../newlib/libc/include/kolibrios/app.h | 2 +- .../newlib/libc/sys/kolibrios/libc_init.c | 19 +++++++++++++++++-- toolchain/kos-app.lds | 2 -- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/libraries/newlib/newlib/configure.host b/libraries/newlib/newlib/configure.host index 91fe61b0df..95fe5e71e6 100644 --- a/libraries/newlib/newlib/configure.host +++ b/libraries/newlib/newlib/configure.host @@ -431,7 +431,7 @@ fi case "${host}" in i[3-7]86-*-kolibrios*) sys_dir=kolibrios - have_crt0="yes" + have_crt0="no" ;; *-*-cygwin*) posix_dir=posix diff --git a/libraries/newlib/newlib/libc/include/kolibrios/app.h b/libraries/newlib/newlib/libc/include/kolibrios/app.h index c7844be4f4..9600dba7e1 100644 --- a/libraries/newlib/newlib/libc/include/kolibrios/app.h +++ b/libraries/newlib/newlib/libc/include/kolibrios/app.h @@ -37,7 +37,7 @@ struct menuet02_header /** * Symbol exported by the linker script for quick access */ -__attribute__ ((noreturn)) void ___kosapp_entry (void); +__attribute__ ((noreturn)) void __kosapp_entry (void); extern char __kosapp_image_end[]; extern char __kosapp_memsize[]; extern char __kosapp_stack_low[]; diff --git a/libraries/newlib/newlib/libc/sys/kolibrios/libc_init.c b/libraries/newlib/newlib/libc/sys/kolibrios/libc_init.c index f0e8eee53b..718ecdee08 100644 --- a/libraries/newlib/newlib/libc/sys/kolibrios/libc_init.c +++ b/libraries/newlib/newlib/libc/sys/kolibrios/libc_init.c @@ -3,10 +3,25 @@ * Copyright (C) 2026 KolibriOS team */ -extern int __init_reent (void); +#include +#include + +extern void __init_reent (void); +extern int main (int argc, char *argv[], char *envp[]); void -__libc_init (void) +__kosapp_entry (void) { + int rc = 0; + + int argc = 0; + char **argv = NULL; + char **envp = NULL; + __init_reent (); + + rc = main (argc, argv, envp); + + exit (rc); + __builtin_unreachable (); } diff --git a/toolchain/kos-app.lds b/toolchain/kos-app.lds index c6e59113f8..2302c57dfd 100644 --- a/toolchain/kos-app.lds +++ b/toolchain/kos-app.lds @@ -1,7 +1,5 @@ ENTRY(___kosapp_entry) -STARTUP(crt0.o) - SECTIONS { .text 0x0: