Browse Source

Correct `_start` as an entry point

gingerBill 3 years ago
parent
commit
6aa80ee8e4
1 changed files with 10 additions and 7 deletions
  1. 10 7
      src/llvm_backend.cpp

+ 10 - 7
src/llvm_backend.cpp

@@ -1420,13 +1420,16 @@ void lb_generate_code(lbGenerator *gen) {
 			if (e->Procedure.is_export ||
 			    (e->Procedure.link_name.len > 0) ||
 			    ((e->scope->flags&ScopeFlag_File) && e->Procedure.link_name.len > 0)) {
-			    	String link_name = e->Procedure.link_name;
-				if (link_name == "main" ||
-				    link_name == "DllMain" ||
-				    link_name == "WinMain" ||
-				    link_name == "wWinMain" ||
-				    link_name == "mainCRTStartup") {
-					already_has_entry_point = true;
+				String link_name = e->Procedure.link_name;
+				if (e->pkg->kind == Package_Runtime) {
+					if (link_name == "main"           ||
+					    link_name == "DllMain"        ||
+					    link_name == "WinMain"        ||
+					    link_name == "wWinMain"       ||
+					    link_name == "mainCRTStartup" ||
+					    link_name == "_start") {
+						already_has_entry_point = true;
+					}
 				}
 			}
 		}