From 61f3f31095e721e920967f91acf26c3249afc956 Mon Sep 17 00:00:00 2001 From: Schrodinger ZHU Yifan Date: Sun, 11 Aug 2024 13:40:32 -0700 Subject: [PATCH] Revert "libc: Remove `extern "C"` from main declarations (#102825)" This reverts commit 1b71c471c7d0216fa7fc5c0b45b5926d1fabfaf4. --- libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp | 2 +- libc/startup/gpu/amdgpu/start.cpp | 2 +- libc/startup/gpu/nvptx/start.cpp | 2 +- libc/startup/linux/do_start.cpp | 2 +- libc/test/IntegrationTest/test.h | 2 +- libc/test/UnitTest/LibcTestMain.cpp | 2 +- libc/utils/HdrGen/PrototypeTestGen/PrototypeTestGen.cpp | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp b/libc/benchmarks/gpu/LibcGpuBenchmarkMain.cpp index c4cc1a1731ce3..97366e55194a9 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 e10e4cd9c2cd7..5aaa7e938d279 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 561301638c3ca..ef1e63e5161a6 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 7009895f0036c..72060b4adb214 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 f7068ed628a3d..5be66d9edff02 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 eb1125b5dcaf1..94536e9716468 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 4cac072104ca9..551b97caf81fd 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;