Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc] Move libc_errno inside of LIBC_NAMESPACE #80774

Merged
merged 1 commit into from
Feb 6, 2024

Conversation

michaelrj-google
Copy link
Contributor

Having libc_errno outside of the namespace causes versioning issues when
trying to link the tests against LLVM-libc. Most of this patch is just
moving libc_errno inside the namespace in tests. This isn't necessary in
the function implementations since those are already inside the
namespace.

Having libc_errno outside of the namespace causes versioning issues when
trying to link the tests against LLVM-libc. Most of this patch is just
moving libc_errno inside the namespace in tests. This isn't necessary in
the function implementations since those are already inside the
namespace.
@llvmbot llvmbot added the libc label Feb 6, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Feb 6, 2024

@llvm/pr-subscribers-libc

Author: None (michaelrj-google)

Changes

Having libc_errno outside of the namespace causes versioning issues when
trying to link the tests against LLVM-libc. Most of this patch is just
moving libc_errno inside the namespace in tests. This isn't necessary in
the function implementations since those are already inside the
namespace.


Patch is 118.72 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/80774.diff

123 Files Affected:

  • (modified) libc/src/errno/libc_errno.cpp (+2)
  • (modified) libc/src/errno/libc_errno.h (+2-1)
  • (modified) libc/test/IntegrationTest/test.h (+6-3)
  • (modified) libc/test/UnitTest/ErrnoSetterMatcher.h (+2-2)
  • (modified) libc/test/UnitTest/FPMatcher.h (+4-4)
  • (modified) libc/test/UnitTest/FuchsiaTest.h (+6-3)
  • (modified) libc/test/UnitTest/LibcTest.h (+6-3)
  • (modified) libc/test/integration/src/pthread/pthread_create_test.cpp (+1-1)
  • (modified) libc/test/integration/src/pthread/pthread_join_test.cpp (+1-1)
  • (modified) libc/test/integration/src/unistd/getcwd_test.cpp (+2-2)
  • (modified) libc/test/src/__support/str_to_double_test.cpp (+1-1)
  • (modified) libc/test/src/__support/str_to_float_test.cpp (+1-1)
  • (modified) libc/test/src/__support/str_to_fp_test.h (+1-1)
  • (modified) libc/test/src/dirent/dirent_test.cpp (+4-4)
  • (modified) libc/test/src/errno/errno_test.cpp (+1-1)
  • (modified) libc/test/src/math/RoundToIntegerTest.h (+1-1)
  • (modified) libc/test/src/math/acosf_test.cpp (+1-1)
  • (modified) libc/test/src/math/acoshf_test.cpp (+1-1)
  • (modified) libc/test/src/math/asinf_test.cpp (+1-1)
  • (modified) libc/test/src/math/asinhf_test.cpp (+1-1)
  • (modified) libc/test/src/math/atanf_test.cpp (+1-1)
  • (modified) libc/test/src/math/atanhf_test.cpp (+1-1)
  • (modified) libc/test/src/math/cosf_test.cpp (+1-1)
  • (modified) libc/test/src/math/coshf_test.cpp (+2-2)
  • (modified) libc/test/src/math/exp10_test.cpp (+1-1)
  • (modified) libc/test/src/math/exp10f_test.cpp (+6-6)
  • (modified) libc/test/src/math/exp2_test.cpp (+1-1)
  • (modified) libc/test/src/math/exp2f_test.cpp (+6-6)
  • (modified) libc/test/src/math/exp_test.cpp (+1-1)
  • (modified) libc/test/src/math/expf_test.cpp (+6-6)
  • (modified) libc/test/src/math/expm1_test.cpp (+1-1)
  • (modified) libc/test/src/math/expm1f_test.cpp (+6-6)
  • (modified) libc/test/src/math/log10_test.cpp (+1-1)
  • (modified) libc/test/src/math/log1p_test.cpp (+1-1)
  • (modified) libc/test/src/math/log1pf_test.cpp (+1-1)
  • (modified) libc/test/src/math/log2_test.cpp (+1-1)
  • (modified) libc/test/src/math/log2f_test.cpp (+2-2)
  • (modified) libc/test/src/math/log_test.cpp (+1-1)
  • (modified) libc/test/src/math/powf_test.cpp (+1-1)
  • (modified) libc/test/src/math/sincosf_test.cpp (+1-1)
  • (modified) libc/test/src/math/sinf_test.cpp (+1-1)
  • (modified) libc/test/src/math/sinhf_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/RoundToIntegerTest.h (+1-1)
  • (modified) libc/test/src/math/smoke/acosf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/acoshf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/asinf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/asinhf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/atanf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/atanhf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/cosf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/coshf_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/exp10f_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/exp2f_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/expf_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/expm1f_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/sincosf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/sinf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/sinhf_test.cpp (+2-2)
  • (modified) libc/test/src/math/smoke/tanf_test.cpp (+1-1)
  • (modified) libc/test/src/math/smoke/tanhf_test.cpp (+1-1)
  • (modified) libc/test/src/math/tanf_test.cpp (+1-1)
  • (modified) libc/test/src/math/tanhf_test.cpp (+1-1)
  • (modified) libc/test/src/sched/affinity_test.cpp (+4-4)
  • (modified) libc/test/src/sched/cpu_count_test.cpp (+1-1)
  • (modified) libc/test/src/sched/get_priority_test.cpp (+1-1)
  • (modified) libc/test/src/sched/param_and_scheduler_test.cpp (+24-21)
  • (modified) libc/test/src/sched/sched_rr_get_interval_test.cpp (+4-4)
  • (modified) libc/test/src/sched/yield_test.cpp (+1-1)
  • (modified) libc/test/src/signal/sigaltstack_test.cpp (+1-1)
  • (modified) libc/test/src/signal/signal_test.cpp (+1-1)
  • (modified) libc/test/src/signal/sigprocmask_test.cpp (+1-1)
  • (modified) libc/test/src/stdio/fgetc_test.cpp (+1-1)
  • (modified) libc/test/src/stdio/fgetc_unlocked_test.cpp (+1-1)
  • (modified) libc/test/src/stdio/fgets_test.cpp (+1-1)
  • (modified) libc/test/src/stdio/fileop_test.cpp (+11-11)
  • (modified) libc/test/src/stdio/fopencookie_test.cpp (+4-4)
  • (modified) libc/test/src/stdio/remove_test.cpp (+2-2)
  • (modified) libc/test/src/stdio/setvbuf_test.cpp (+1-1)
  • (modified) libc/test/src/stdio/unlocked_fileop_test.cpp (+2-2)
  • (modified) libc/test/src/stdlib/StrtolTest.h (+56-56)
  • (modified) libc/test/src/stdlib/atof_test.cpp (+2-2)
  • (modified) libc/test/src/stdlib/strtod_test.cpp (+1-1)
  • (modified) libc/test/src/stdlib/strtof_test.cpp (+1-1)
  • (modified) libc/test/src/stdlib/strtoint32_test.cpp (+2-2)
  • (modified) libc/test/src/stdlib/strtoint64_test.cpp (+2-2)
  • (modified) libc/test/src/stdlib/strtold_test.cpp (+1-1)
  • (modified) libc/test/src/string/strdup_test.cpp (+3-3)
  • (modified) libc/test/src/sys/mman/linux/madvise_test.cpp (+2-2)
  • (modified) libc/test/src/sys/mman/linux/mincore_test.cpp (+7-7)
  • (modified) libc/test/src/sys/mman/linux/mlock_test.cpp (+10-7)
  • (modified) libc/test/src/sys/mman/linux/mmap_test.cpp (+2-2)
  • (modified) libc/test/src/sys/mman/linux/mprotect_test.cpp (+1-1)
  • (modified) libc/test/src/sys/mman/linux/posix_madvise_test.cpp (+2-2)
  • (modified) libc/test/src/sys/prctl/linux/prctl_test.cpp (+1-1)
  • (modified) libc/test/src/sys/random/linux/getrandom_test.cpp (+2-2)
  • (modified) libc/test/src/sys/resource/getrlimit_setrlimit_test.cpp (+3-3)
  • (modified) libc/test/src/sys/select/select_ui_test.cpp (+1-1)
  • (modified) libc/test/src/sys/sendfile/sendfile_test.cpp (+1-1)
  • (modified) libc/test/src/sys/stat/chmod_test.cpp (+4-4)
  • (modified) libc/test/src/sys/stat/fchmod_test.cpp (+4-4)
  • (modified) libc/test/src/sys/stat/fchmodat_test.cpp (+4-4)
  • (modified) libc/test/src/sys/stat/fstat_test.cpp (+3-3)
  • (modified) libc/test/src/sys/stat/lstat_test.cpp (+3-3)
  • (modified) libc/test/src/sys/stat/stat_test.cpp (+3-3)
  • (modified) libc/test/src/termios/termios_test.cpp (+5-5)
  • (modified) libc/test/src/time/gmtime_test.cpp (+1-1)
  • (modified) libc/test/src/time/nanosleep_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/access_test.cpp (+3-3)
  • (modified) libc/test/src/unistd/chdir_test.cpp (+3-3)
  • (modified) libc/test/src/unistd/dup2_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/dup3_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/dup_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/fchdir_test.cpp (+3-3)
  • (modified) libc/test/src/unistd/ftruncate_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/isatty_test.cpp (+4-4)
  • (modified) libc/test/src/unistd/link_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/linkat_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/readlink_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/readlinkat_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/symlink_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/symlinkat_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/syscall_test.cpp (+1-1)
  • (modified) libc/test/src/unistd/truncate_test.cpp (+1-1)
diff --git a/libc/src/errno/libc_errno.cpp b/libc/src/errno/libc_errno.cpp
index e54bdd156d6bc..4af21dccc1564 100644
--- a/libc/src/errno/libc_errno.cpp
+++ b/libc/src/errno/libc_errno.cpp
@@ -44,5 +44,7 @@ LIBC_NAMESPACE::Errno::operator int() { return errno; }
 
 #endif // LIBC_FULL_BUILD
 
+namespace LIBC_NAMESPACE {
 // Define the global `libc_errno` instance.
 LIBC_NAMESPACE::Errno libc_errno;
+} // namespace LIBC_NAMESPACE
diff --git a/libc/src/errno/libc_errno.h b/libc/src/errno/libc_errno.h
index 632faeaaeff66..6a6ddbc3a9c05 100644
--- a/libc/src/errno/libc_errno.h
+++ b/libc/src/errno/libc_errno.h
@@ -39,8 +39,9 @@ struct Errno {
   void operator=(int);
   operator int();
 };
-} // namespace LIBC_NAMESPACE
 
 extern LIBC_NAMESPACE::Errno libc_errno;
 
+} // namespace LIBC_NAMESPACE
+
 #endif // LLVM_LIBC_SRC_ERRNO_LIBC_ERRNO_H
diff --git a/libc/test/IntegrationTest/test.h b/libc/test/IntegrationTest/test.h
index c015bb44586ff..64906ef179391 100644
--- a/libc/test/IntegrationTest/test.h
+++ b/libc/test/IntegrationTest/test.h
@@ -68,9 +68,12 @@
 ////////////////////////////////////////////////////////////////////////////////
 // Errno checks.
 
-#define ASSERT_ERRNO_EQ(VAL) ASSERT_EQ(VAL, static_cast<int>(libc_errno))
-#define ASSERT_ERRNO_SUCCESS() ASSERT_EQ(0, static_cast<int>(libc_errno))
-#define ASSERT_ERRNO_FAILURE() ASSERT_NE(0, static_cast<int>(libc_errno))
+#define ASSERT_ERRNO_EQ(VAL)                                                   \
+  ASSERT_EQ(VAL, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+#define ASSERT_ERRNO_SUCCESS()                                                 \
+  ASSERT_EQ(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+#define ASSERT_ERRNO_FAILURE()                                                 \
+  ASSERT_NE(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
 
 // Integration tests are compiled with -ffreestanding which stops treating
 // the main function as a non-overloadable special function. Hence, we use a
diff --git a/libc/test/UnitTest/ErrnoSetterMatcher.h b/libc/test/UnitTest/ErrnoSetterMatcher.h
index 6b15bd4e9b79a..745ba4182023e 100644
--- a/libc/test/UnitTest/ErrnoSetterMatcher.h
+++ b/libc/test/UnitTest/ErrnoSetterMatcher.h
@@ -109,8 +109,8 @@ template <typename T> class ErrnoSetterMatcher : public Matcher<T> {
 
   bool match(T got) {
     actual_return = got;
-    actual_errno = libc_errno;
-    libc_errno = 0;
+    actual_errno = LIBC_NAMESPACE::libc_errno;
+    LIBC_NAMESPACE::libc_errno = 0;
     if constexpr (ignore_errno())
       return return_cmp.compare(actual_return);
     else
diff --git a/libc/test/UnitTest/FPMatcher.h b/libc/test/UnitTest/FPMatcher.h
index 210690a9c6ece..c4a1cfa1bc1d4 100644
--- a/libc/test/UnitTest/FPMatcher.h
+++ b/libc/test/UnitTest/FPMatcher.h
@@ -132,8 +132,8 @@ template <typename T> struct FPTest : public Test {
 #define EXPECT_MATH_ERRNO(expected)                                            \
   do {                                                                         \
     if (math_errhandling & MATH_ERRNO) {                                       \
-      int actual = libc_errno;                                                 \
-      libc_errno = 0;                                                          \
+      int actual = LIBC_NAMESPACE::libc_errno;                                 \
+      LIBC_NAMESPACE::libc_errno = 0;                                          \
       EXPECT_EQ(actual, expected);                                             \
     }                                                                          \
   } while (0)
@@ -141,8 +141,8 @@ template <typename T> struct FPTest : public Test {
 #define ASSERT_MATH_ERRNO(expected)                                            \
   do {                                                                         \
     if (math_errhandling & MATH_ERRNO) {                                       \
-      int actual = libc_errno;                                                 \
-      libc_errno = 0;                                                          \
+      int actual = LIBC_NAMESPACE::libc_errno;                                 \
+      LIBC_NAMESPACE::libc_errno = 0;                                          \
       ASSERT_EQ(actual, expected);                                             \
     }                                                                          \
   } while (0)
diff --git a/libc/test/UnitTest/FuchsiaTest.h b/libc/test/UnitTest/FuchsiaTest.h
index 1b75379658139..e9e8348ee5ddb 100644
--- a/libc/test/UnitTest/FuchsiaTest.h
+++ b/libc/test/UnitTest/FuchsiaTest.h
@@ -14,9 +14,12 @@
 #define WITH_SIGNAL(X) #X
 
 // These macros are used in string unittests.
-#define ASSERT_ERRNO_EQ(VAL) ASSERT_EQ(VAL, static_cast<int>(libc_errno))
-#define ASSERT_ERRNO_SUCCESS() ASSERT_EQ(0, static_cast<int>(libc_errno))
-#define ASSERT_ERRNO_FAILURE() ASSERT_NE(0, static_cast<int>(libc_errno))
+#define ASSERT_ERRNO_EQ(VAL)                                                   \
+  ASSERT_EQ(VAL, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+#define ASSERT_ERRNO_SUCCESS()                                                 \
+  ASSERT_EQ(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+#define ASSERT_ERRNO_FAILURE()                                                 \
+  ASSERT_NE(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
 
 #ifndef EXPECT_DEATH
 // Since zxtest has ASSERT_DEATH but not EXPECT_DEATH, wrap calling it
diff --git a/libc/test/UnitTest/LibcTest.h b/libc/test/UnitTest/LibcTest.h
index 1a90d10d7ec01..047f18036b0ac 100644
--- a/libc/test/UnitTest/LibcTest.h
+++ b/libc/test/UnitTest/LibcTest.h
@@ -446,9 +446,12 @@ CString libc_make_test_file_path_func(const char *file_name);
 ////////////////////////////////////////////////////////////////////////////////
 // Errno checks.
 
-#define ASSERT_ERRNO_EQ(VAL) ASSERT_EQ(VAL, static_cast<int>(libc_errno))
-#define ASSERT_ERRNO_SUCCESS() ASSERT_EQ(0, static_cast<int>(libc_errno))
-#define ASSERT_ERRNO_FAILURE() ASSERT_NE(0, static_cast<int>(libc_errno))
+#define ASSERT_ERRNO_EQ(VAL)                                                   \
+  ASSERT_EQ(VAL, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+#define ASSERT_ERRNO_SUCCESS()                                                 \
+  ASSERT_EQ(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
+#define ASSERT_ERRNO_FAILURE()                                                 \
+  ASSERT_NE(0, static_cast<int>(LIBC_NAMESPACE::libc_errno))
 
 ////////////////////////////////////////////////////////////////////////////////
 // Subprocess checks.
diff --git a/libc/test/integration/src/pthread/pthread_create_test.cpp b/libc/test/integration/src/pthread/pthread_create_test.cpp
index 5da91c6ec9a7d..29da4d5c3c8d7 100644
--- a/libc/test/integration/src/pthread/pthread_create_test.cpp
+++ b/libc/test/integration/src/pthread/pthread_create_test.cpp
@@ -332,7 +332,7 @@ static void run_failure_tests() {
 }
 
 TEST_MAIN() {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   run_success_tests();
   run_failure_tests();
   return 0;
diff --git a/libc/test/integration/src/pthread/pthread_join_test.cpp b/libc/test/integration/src/pthread/pthread_join_test.cpp
index da1a968aa47d3..994fa57a6b337 100644
--- a/libc/test/integration/src/pthread/pthread_join_test.cpp
+++ b/libc/test/integration/src/pthread/pthread_join_test.cpp
@@ -25,7 +25,7 @@ static void nullJoinTest() {
 }
 
 TEST_MAIN() {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   nullJoinTest();
   return 0;
 }
diff --git a/libc/test/integration/src/unistd/getcwd_test.cpp b/libc/test/integration/src/unistd/getcwd_test.cpp
index 87687d09b9e7a..551768187bf01 100644
--- a/libc/test/integration/src/unistd/getcwd_test.cpp
+++ b/libc/test/integration/src/unistd/getcwd_test.cpp
@@ -31,12 +31,12 @@ TEST_MAIN(int argc, char **argv, char **envp) {
   cwd = LIBC_NAMESPACE::getcwd(buffer, 0);
   ASSERT_TRUE(cwd == nullptr);
   ASSERT_ERRNO_EQ(EINVAL);
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   // Insufficient size
   cwd = LIBC_NAMESPACE::getcwd(buffer, 2);
   ASSERT_TRUE(cwd == nullptr);
-  int err = libc_errno;
+  int err = LIBC_NAMESPACE::libc_errno;
   ASSERT_EQ(err, ERANGE);
 
   return 0;
diff --git a/libc/test/src/__support/str_to_double_test.cpp b/libc/test/src/__support/str_to_double_test.cpp
index b66935f0988e0..3c6d03978803b 100644
--- a/libc/test/src/__support/str_to_double_test.cpp
+++ b/libc/test/src/__support/str_to_double_test.cpp
@@ -90,7 +90,7 @@ TEST(LlvmLibcStrToDblTest, SimpleDecimalConversionExtraTypes) {
   uint64_t double_output_mantissa = 0;
   uint32_t output_exp2 = 0;
 
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   auto double_result =
       internal::simple_decimal_conversion<double>("123456789012345678900");
 
diff --git a/libc/test/src/__support/str_to_float_test.cpp b/libc/test/src/__support/str_to_float_test.cpp
index 3102fa7aa91ec..f23d8706d77da 100644
--- a/libc/test/src/__support/str_to_float_test.cpp
+++ b/libc/test/src/__support/str_to_float_test.cpp
@@ -46,7 +46,7 @@ TEST(LlvmLibcStrToFltTest, SimpleDecimalConversionExtraTypes) {
   uint32_t float_output_mantissa = 0;
   uint32_t output_exp2 = 0;
 
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   auto float_result =
       internal::simple_decimal_conversion<float>("123456789012345678900");
   float_output_mantissa = float_result.num.mantissa;
diff --git a/libc/test/src/__support/str_to_fp_test.h b/libc/test/src/__support/str_to_fp_test.h
index 32a3133093929..bddff035fdd16 100644
--- a/libc/test/src/__support/str_to_fp_test.h
+++ b/libc/test/src/__support/str_to_fp_test.h
@@ -66,7 +66,7 @@ template <typename T> struct LlvmLibcStrToFloatTest : public testing::Test {
                                       const int expectedErrno = 0) {
     StorageType actual_output_mantissa = 0;
     uint32_t actual_output_exp2 = 0;
-    libc_errno = 0;
+    LIBC_NAMESPACE::libc_errno = 0;
 
     auto result = internal::simple_decimal_conversion<T>(numStart);
 
diff --git a/libc/test/src/dirent/dirent_test.cpp b/libc/test/src/dirent/dirent_test.cpp
index e2e0399673be6..41f522a6a75fb 100644
--- a/libc/test/src/dirent/dirent_test.cpp
+++ b/libc/test/src/dirent/dirent_test.cpp
@@ -55,17 +55,17 @@ TEST(LlvmLibcDirentTest, SimpleOpenAndRead) {
 }
 
 TEST(LlvmLibcDirentTest, OpenNonExistentDir) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   ::DIR *dir = LIBC_NAMESPACE::opendir("___xyz123__.non_existent__");
   ASSERT_TRUE(dir == nullptr);
   ASSERT_ERRNO_EQ(ENOENT);
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 }
 
 TEST(LlvmLibcDirentTest, OpenFile) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   ::DIR *dir = LIBC_NAMESPACE::opendir("testdata/file1.txt");
   ASSERT_TRUE(dir == nullptr);
   ASSERT_ERRNO_EQ(ENOTDIR);
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 }
diff --git a/libc/test/src/errno/errno_test.cpp b/libc/test/src/errno/errno_test.cpp
index 876ebfc0ac269..b0db22a85f3bc 100644
--- a/libc/test/src/errno/errno_test.cpp
+++ b/libc/test/src/errno/errno_test.cpp
@@ -11,6 +11,6 @@
 
 TEST(LlvmLibcErrnoTest, Basic) {
   int test_val = 123;
-  libc_errno = test_val;
+  LIBC_NAMESPACE::libc_errno = test_val;
   ASSERT_ERRNO_EQ(test_val);
 }
diff --git a/libc/test/src/math/RoundToIntegerTest.h b/libc/test/src/math/RoundToIntegerTest.h
index 5239528c9246e..9bd4ba52f61ba 100644
--- a/libc/test/src/math/RoundToIntegerTest.h
+++ b/libc/test/src/math/RoundToIntegerTest.h
@@ -51,7 +51,7 @@ class RoundToIntegerTestTemplate : public LIBC_NAMESPACE::testing::Test {
 
   void test_one_input(RoundToIntegerFunc func, F input, I expected,
                       bool expectError) {
-    libc_errno = 0;
+    LIBC_NAMESPACE::libc_errno = 0;
     LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
 
     ASSERT_EQ(func(input), expected);
diff --git a/libc/test/src/math/acosf_test.cpp b/libc/test/src/math/acosf_test.cpp
index 81f697c315a28..c273184d58f3e 100644
--- a/libc/test/src/math/acosf_test.cpp
+++ b/libc/test/src/math/acosf_test.cpp
@@ -22,7 +22,7 @@ namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 using LlvmLibcAcosfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 
 TEST_F(LlvmLibcAcosfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acosf(aNaN));
   EXPECT_MATH_ERRNO(0);
diff --git a/libc/test/src/math/acoshf_test.cpp b/libc/test/src/math/acoshf_test.cpp
index 6d43105c83c28..a0e845b2b247e 100644
--- a/libc/test/src/math/acoshf_test.cpp
+++ b/libc/test/src/math/acoshf_test.cpp
@@ -22,7 +22,7 @@ using LlvmLibcAcoshfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcAcoshfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::acoshf(aNaN));
   EXPECT_MATH_ERRNO(0);
diff --git a/libc/test/src/math/asinf_test.cpp b/libc/test/src/math/asinf_test.cpp
index 77ac2bc216f77..a24fdcc36e140 100644
--- a/libc/test/src/math/asinf_test.cpp
+++ b/libc/test/src/math/asinf_test.cpp
@@ -23,7 +23,7 @@ using LlvmLibcAsinfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcAsinfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asinf(aNaN));
   EXPECT_MATH_ERRNO(0);
diff --git a/libc/test/src/math/asinhf_test.cpp b/libc/test/src/math/asinhf_test.cpp
index 9b925bf254a93..3127861c9a1be 100644
--- a/libc/test/src/math/asinhf_test.cpp
+++ b/libc/test/src/math/asinhf_test.cpp
@@ -22,7 +22,7 @@ using LlvmLibcAsinhfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcAsinhfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::asinhf(aNaN));
   EXPECT_MATH_ERRNO(0);
diff --git a/libc/test/src/math/atanf_test.cpp b/libc/test/src/math/atanf_test.cpp
index b5d30fbd5679e..1fa7165805c7d 100644
--- a/libc/test/src/math/atanf_test.cpp
+++ b/libc/test/src/math/atanf_test.cpp
@@ -22,7 +22,7 @@ using LlvmLibcAtanfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcAtanfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
   EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanf(aNaN));
   EXPECT_FP_EXCEPTION(0);
diff --git a/libc/test/src/math/atanhf_test.cpp b/libc/test/src/math/atanhf_test.cpp
index 9dea65dccd8fd..1b45436094da4 100644
--- a/libc/test/src/math/atanhf_test.cpp
+++ b/libc/test/src/math/atanhf_test.cpp
@@ -23,7 +23,7 @@ namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcAtanhfTest, SpecialNumbers) {
   using Sign = LIBC_NAMESPACE::fputil::Sign;
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   LIBC_NAMESPACE::fputil::clear_except(FE_ALL_EXCEPT);
   EXPECT_FP_EQ_ALL_ROUNDING(aNaN, LIBC_NAMESPACE::atanhf(aNaN));
   EXPECT_FP_EXCEPTION(0);
diff --git a/libc/test/src/math/cosf_test.cpp b/libc/test/src/math/cosf_test.cpp
index 9a988d76c598f..93ab06dc80b26 100644
--- a/libc/test/src/math/cosf_test.cpp
+++ b/libc/test/src/math/cosf_test.cpp
@@ -24,7 +24,7 @@ using LlvmLibcCosfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcCosfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::cosf(aNaN));
   EXPECT_MATH_ERRNO(0);
diff --git a/libc/test/src/math/coshf_test.cpp b/libc/test/src/math/coshf_test.cpp
index 843ecb8925ad3..3b8e14fb5f034 100644
--- a/libc/test/src/math/coshf_test.cpp
+++ b/libc/test/src/math/coshf_test.cpp
@@ -23,7 +23,7 @@ using LlvmLibcCoshfTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcCoshfTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::coshf(aNaN));
   EXPECT_MATH_ERRNO(0);
@@ -42,7 +42,7 @@ TEST_F(LlvmLibcCoshfTest, SpecialNumbers) {
 }
 
 TEST_F(LlvmLibcCoshfTest, Overflow) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   EXPECT_FP_EQ_WITH_EXCEPTION(
       inf, LIBC_NAMESPACE::coshf(FPBits(0x7f7fffffU).get_val()), FE_OVERFLOW);
   EXPECT_MATH_ERRNO(ERANGE);
diff --git a/libc/test/src/math/exp10_test.cpp b/libc/test/src/math/exp10_test.cpp
index e9990b3ed8e6d..d71b5a2230374 100644
--- a/libc/test/src/math/exp10_test.cpp
+++ b/libc/test/src/math/exp10_test.cpp
@@ -106,7 +106,7 @@ TEST_F(LlvmLibcExp10Test, InDoubleRange) {
       double x = FPBits(v).get_val();
       if (isnan(x) || isinf(x) || x < 0.0)
         continue;
-      libc_errno = 0;
+      LIBC_NAMESPACE::libc_errno = 0;
       double result = LIBC_NAMESPACE::exp10(x);
       ++cc;
       if (isnan(result) || isinf(result))
diff --git a/libc/test/src/math/exp10f_test.cpp b/libc/test/src/math/exp10f_test.cpp
index 0866488935c20..4e2d065f1292a 100644
--- a/libc/test/src/math/exp10f_test.cpp
+++ b/libc/test/src/math/exp10f_test.cpp
@@ -21,7 +21,7 @@ using LlvmLibcExp10fTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcExp10fTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::exp10f(aNaN));
   EXPECT_MATH_ERRNO(0);
@@ -40,7 +40,7 @@ TEST_F(LlvmLibcExp10fTest, SpecialNumbers) {
 }
 
 TEST_F(LlvmLibcExp10fTest, Overflow) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   EXPECT_FP_EQ_WITH_EXCEPTION(
       inf, LIBC_NAMESPACE::exp10f(FPBits(0x7f7fffffU).get_val()), FE_OVERFLOW);
   EXPECT_MATH_ERRNO(ERANGE);
@@ -55,7 +55,7 @@ TEST_F(LlvmLibcExp10fTest, Overflow) {
 }
 
 TEST_F(LlvmLibcExp10fTest, Underflow) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
   EXPECT_FP_EQ_WITH_EXCEPTION(
       0.0f, LIBC_NAMESPACE::exp10f(FPBits(0xff7fffffU).get_val()),
       FE_UNDERFLOW);
@@ -97,7 +97,7 @@ TEST_F(LlvmLibcExp10fTest, TrickyInputs) {
       0x41200000, // x = 10.0f
   };
   for (int i = 0; i < N; ++i) {
-    libc_errno = 0;
+    LIBC_NAMESPACE::libc_errno = 0;
     float x = FPBits(INPUTS[i]).get_val();
     EXPECT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Exp10, x,
                                    LIBC_NAMESPACE::exp10f(x), 0.5);
@@ -113,14 +113,14 @@ TEST_F(LlvmLibcExp10fTest, InFloatRange) {
     float x = FPBits(v).get_val();
     if (isnan(x) || isinf(x))
       continue;
-    libc_errno = 0;
+    LIBC_NAMESPACE::libc_errno = 0;
     float result = LIBC_NAMESPACE::exp10f(x);
 
     // If the computation resulted in an error or did not produce valid result
     // in the single-precision floating point range, then ignore comparing with
     // MPFR result as MPFR can still produce valid results because of its
     // wider precision.
-    if (isnan(result) || isinf(result) || libc_errno != 0)
+    if (isnan(result) || isinf(result) || LIBC_NAMESPACE::libc_errno != 0)
       continue;
     ASSERT_MPFR_MATCH_ALL_ROUNDING(mpfr::Operation::Exp10, x,
                                    LIBC_NAMESPACE::exp10f(x), 0.5);
diff --git a/libc/test/src/math/exp2_test.cpp b/libc/test/src/math/exp2_test.cpp
index d66c9b757625d..2f9d7b3a2a6c9 100644
--- a/libc/test/src/math/exp2_test.cpp
+++ b/libc/test/src/math/exp2_test.cpp
@@ -81,7 +81,7 @@ TEST_F(LlvmLibcExp2Test, InDoubleRange) {
       double x = FPBits(v).get_val();
       if (isnan(x) || isinf(x) || x < 0.0)
         continue;
-      libc_errno = 0;
+      LIBC_NAMESPACE::libc_errno = 0;
       double result = LIBC_NAMESPACE::exp2(x);
       ++cc;
       if (isnan(result) || isinf(result))
diff --git a/libc/test/src/math/exp2f_test.cpp b/libc/test/src/math/exp2f_test.cpp
index 18607b1d04910..f5ea8554be5c0 100644
--- a/libc/test/src/math/exp2f_test.cpp
+++ b/libc/test/src/math/exp2f_test.cpp
@@ -22,7 +22,7 @@ using LlvmLibcExp2fTest = LIBC_NAMESPACE::testing::FPTest<float>;
 namespace mpfr = LIBC_NAMESPACE::testing::mpfr;
 
 TEST_F(LlvmLibcExp2fTest, SpecialNumbers) {
-  libc_errno = 0;
+  LIBC_NAMESPACE::libc_errno = 0;
 
   EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::exp2f(aNaN));
   EXPECT_MATH_ERRNO(0);
@@ -41,7 +41,7 @@ TEST_F(LlvmLibcExp2fTest, SpecialNumbers) {
 }
 
 TEST_F(LlvmLibcExp2fTest, Overflow) {
- ...
[truncated]

@@ -39,8 +39,9 @@ struct Errno {
void operator=(int);
operator int();
};
} // namespace LIBC_NAMESPACE

extern LIBC_NAMESPACE::Errno libc_errno;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you remove the LIBC_NAMESPACE here

Copy link
Contributor

@lntue lntue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking care of this!

@alexfh alexfh merged commit 3eb1e6d into llvm:main Feb 6, 2024
6 checks passed
@michaelrj-google michaelrj-google deleted the libcErrnoNamespace branch February 6, 2024 17:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants