diff --git a/libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp b/libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp index c4cc1a1731ce34..97366e55194a90 100644 --- a/libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp +++ b/libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp @@ -1,6 +1,6 @@ #include "LibcGpuBenchmark.h" -int main(int argc, char **argv, char **envp) { +extern "C" int main(int argc, char **argv, char **envp) { LIBC_NAMESPACE::benchmarks::Benchmark::run_benchmarks(); return 0; } diff --git a/libc/startup/gpu/amdgpu/start.cpp b/libc/startup/gpu/amdgpu/start.cpp index e10e4cd9c2cd74..5aaa7e938d2792 100644 --- a/libc/startup/gpu/amdgpu/start.cpp +++ b/libc/startup/gpu/amdgpu/start.cpp @@ -13,7 +13,7 @@ #include "src/stdlib/atexit.h" #include "src/stdlib/exit.h" -int main(int argc, char **argv, char **envp); +extern "C" int main(int argc, char **argv, char **envp); namespace LIBC_NAMESPACE_DECL { diff --git a/libc/startup/gpu/nvptx/start.cpp b/libc/startup/gpu/nvptx/start.cpp index 561301638c3ca8..ef1e63e5161a61 100644 --- a/libc/startup/gpu/nvptx/start.cpp +++ b/libc/startup/gpu/nvptx/start.cpp @@ -13,7 +13,7 @@ #include "src/stdlib/atexit.h" #include "src/stdlib/exit.h" -int main(int argc, char **argv, char **envp); +extern "C" int main(int argc, char **argv, char **envp); namespace LIBC_NAMESPACE_DECL { diff --git a/libc/startup/linux/do_start.cpp b/libc/startup/linux/do_start.cpp index 7009895f0036c2..72060b4adb2148 100644 --- a/libc/startup/linux/do_start.cpp +++ b/libc/startup/linux/do_start.cpp @@ -20,7 +20,7 @@ #include #include -int main(int argc, char **argv, char **envp); +extern "C" int main(int argc, char **argv, char **envp); extern "C" { // These arrays are present in the .init_array and .fini_array sections. diff --git a/libc/test/IntegrationTest/test.h b/libc/test/IntegrationTest/test.h index f7068ed628a3d5..5be66d9edff02a 100644 --- a/libc/test/IntegrationTest/test.h +++ b/libc/test/IntegrationTest/test.h @@ -83,6 +83,6 @@ // tests, then we should not need to explicitly declare/define the main // function in individual integration tests. We will not need this macro // then. -#define TEST_MAIN int main +#define TEST_MAIN extern "C" int main #endif // LLVM_LIBC_UTILS_INTEGRATION_TEST_TEST_H diff --git a/libc/test/UnitTest/LibcTestMain.cpp b/libc/test/UnitTest/LibcTestMain.cpp index eb1125b5dcaf1f..94536e97164686 100644 --- a/libc/test/UnitTest/LibcTestMain.cpp +++ b/libc/test/UnitTest/LibcTestMain.cpp @@ -43,7 +43,7 @@ TestOptions parseOptions(int argc, char **argv) { } // anonymous namespace -int main(int argc, char **argv, char **envp) { +extern "C" int main(int argc, char **argv, char **envp) { LIBC_NAMESPACE::testing::argc = argc; LIBC_NAMESPACE::testing::argv = argv; LIBC_NAMESPACE::testing::envp = envp; diff --git a/libc/utils/HdrGen/PrototypeTestGen/PrototypeTestGen.cpp b/libc/utils/HdrGen/PrototypeTestGen/PrototypeTestGen.cpp index 4cac072104ca9a..551b97caf81fd6 100644 --- a/libc/utils/HdrGen/PrototypeTestGen/PrototypeTestGen.cpp +++ b/libc/utils/HdrGen/PrototypeTestGen/PrototypeTestGen.cpp @@ -47,7 +47,7 @@ bool TestGeneratorMain(llvm::raw_ostream &OS, llvm::RecordKeeper &records) { OS << '\n'; - OS << "int main() {\n"; + OS << "extern \"C\" int main() {\n"; for (const auto &entrypoint : EntrypointNamesOption) { if (entrypoint == "errno") continue;