aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorWes Hardee <weshardee@gmail.com>2022-06-30 12:40:32 -0500
committerWes Hardee <weshardee@gmail.com>2022-06-30 12:40:32 -0500
commit23842a8950be99afca4f4180aca95a7c2da771dc (patch)
treeb9f5325340924623ff3414c3f19251f056fc262a /src/main.cpp
parent173286de65181ca6c3ce321610ba3076c86a282c (diff)
fix -build-mode:shared on MacOS
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 7531fb37c..beefec702 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -463,8 +463,15 @@ i32 linker_stage(lbGenerator *gen) {
// correctly this way since all the other dependencies provided implicitly
// by the compiler frontend are still needed and most of the command
// line arguments prepared previously are incompatible with ld.
- link_settings = gb_string_appendc(link_settings, "-Wl,-init,'_odin_entry_point' ");
- link_settings = gb_string_appendc(link_settings, "-Wl,-fini,'_odin_exit_point' ");
+ if (build_context.metrics.os == TargetOs_darwin) {
+ link_settings = gb_string_appendc(link_settings, "-Wl,-init,'__odin_entry_point' ");
+ // NOTE(weshardee): __odin_exit_point should also be added, but -fini
+ // does not exist on MacOS
+ } else {
+ link_settings = gb_string_appendc(link_settings, "-Wl,-init,'_odin_entry_point' ");
+ link_settings = gb_string_appendc(link_settings, "-Wl,-fini,'_odin_exit_point' ");
+ }
+
} else if (build_context.metrics.os != TargetOs_openbsd) {
// OpenBSD defaults to PIE executable. do not pass -no-pie for it.
link_settings = gb_string_appendc(link_settings, "-no-pie ");