From 315a08f33f0d3ae9c16377c5a077733824d301d4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 13 Jan 2022 12:04:42 +0000 Subject: [PATCH] Add `main` to proc_unix.odin --- core/runtime/proc_unix.odin | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/runtime/proc_unix.odin b/core/runtime/proc_unix.odin index eb656f39b..38116c0f9 100644 --- a/core/runtime/proc_unix.odin +++ b/core/runtime/proc_unix.odin @@ -1,17 +1,17 @@ //+private -//+build linux, darwin +//+build linux, darwin, freebsd package runtime import "core:intrinsics" when ODIN_BUILD_MODE == "dynamic" { - @(link_name="_odin_entry_point", linkage="strong", require) + @(link_name="_odin_entry_point", linkage="strong", require, link_section=".init") _odin_entry_point :: proc "c" () { context = default_context() #force_no_inline _startup_runtime() intrinsics.__entry_point() } - @(link_name="_odin_exit_point", linkage="strong", require) + @(link_name="_odin_exit_point", linkage="strong", require, link_section=".fini") _odin_exit_point :: proc "c" () { context = default_context() #force_no_inline _cleanup_runtime() @@ -20,4 +20,14 @@ when ODIN_BUILD_MODE == "dynamic" { main :: proc "c" (argc: i32, argv: [^]cstring) -> i32 { return 0 } +} else when !ODIN_TEST && !ODIN_NO_ENTRY_POINT { + @(link_name="main", linkage="strong", require) + main :: proc "c" (argc: i32, argv: [^]cstring) -> i32 { + args__ = argv[:argc] + context = default_context() + #force_no_inline _startup_runtime() + intrinsics.__entry_point() + #force_no_inline _cleanup_runtime() + return 0 + } } \ No newline at end of file