|
@@ -1,17 +1,17 @@
|
|
//+private
|
|
//+private
|
|
-//+build linux, darwin
|
|
|
|
|
|
+//+build linux, darwin, freebsd
|
|
package runtime
|
|
package runtime
|
|
|
|
|
|
import "core:intrinsics"
|
|
import "core:intrinsics"
|
|
|
|
|
|
when ODIN_BUILD_MODE == "dynamic" {
|
|
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" () {
|
|
_odin_entry_point :: proc "c" () {
|
|
context = default_context()
|
|
context = default_context()
|
|
#force_no_inline _startup_runtime()
|
|
#force_no_inline _startup_runtime()
|
|
intrinsics.__entry_point()
|
|
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" () {
|
|
_odin_exit_point :: proc "c" () {
|
|
context = default_context()
|
|
context = default_context()
|
|
#force_no_inline _cleanup_runtime()
|
|
#force_no_inline _cleanup_runtime()
|
|
@@ -20,4 +20,14 @@ when ODIN_BUILD_MODE == "dynamic" {
|
|
main :: proc "c" (argc: i32, argv: [^]cstring) -> i32 {
|
|
main :: proc "c" (argc: i32, argv: [^]cstring) -> i32 {
|
|
return 0
|
|
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
|
|
|
|
+ }
|
|
}
|
|
}
|