diff options
Diffstat (limited to 'libc/test')
-rw-r--r-- | libc/test/include/CMakeLists.txt | 10 | ||||
-rw-r--r-- | libc/test/include/netinet_in_test.cpp | 19 | ||||
-rw-r--r-- | libc/test/shared/CMakeLists.txt | 2 | ||||
-rw-r--r-- | libc/test/shared/shared_math_test.cpp | 2 | ||||
-rw-r--r-- | libc/test/src/sys/mman/linux/CMakeLists.txt | 6 | ||||
-rw-r--r-- | libc/test/src/sys/mman/linux/mincore_test.cpp | 14 | ||||
-rw-r--r-- | libc/test/src/sys/mman/linux/mlock_test.cpp | 27 | ||||
-rw-r--r-- | libc/test/src/sys/mman/linux/msync_test.cpp | 6 | ||||
-rw-r--r-- | libc/test/src/sys/mman/linux/remap_file_pages_test.cpp | 10 | ||||
-rw-r--r-- | libc/test/src/sys/resource/CMakeLists.txt | 2 | ||||
-rw-r--r-- | libc/test/src/sys/resource/getrlimit_setrlimit_test.cpp | 7 | ||||
-rw-r--r-- | libc/test/src/sys/resource/testdata/CMakeLists.txt | 0 |
12 files changed, 63 insertions, 42 deletions
diff --git a/libc/test/include/CMakeLists.txt b/libc/test/include/CMakeLists.txt index 11e4c3a..3ac5615 100644 --- a/libc/test/include/CMakeLists.txt +++ b/libc/test/include/CMakeLists.txt @@ -208,6 +208,16 @@ add_libc_test( ) add_libc_test( + netinet_in_test + SUITE + libc_include_tests + SRCS + netinet_in_test.cpp + DEPENDS + libc.include.llvm-libc-macros.netinet_in_macros +) + +add_libc_test( signbit_test SUITE libc_include_tests diff --git a/libc/test/include/netinet_in_test.cpp b/libc/test/include/netinet_in_test.cpp new file mode 100644 index 0000000..a6c47a7 --- /dev/null +++ b/libc/test/include/netinet_in_test.cpp @@ -0,0 +1,19 @@ +//===-- Unittests for netinet/in macro ------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "include/llvm-libc-macros/netinet-in-macros.h" +#include "test/UnitTest/Test.h" + +TEST(LlvmLibcNetinetInTest, IPPROTOMacro) { + EXPECT_EQ(IPPROTO_IP, 0); + EXPECT_EQ(IPPROTO_ICMP, 1); + EXPECT_EQ(IPPROTO_TCP, 6); + EXPECT_EQ(IPPROTO_UDP, 17); + EXPECT_EQ(IPPROTO_IPV6, 41); + EXPECT_EQ(IPPROTO_RAW, 255); +} diff --git a/libc/test/shared/CMakeLists.txt b/libc/test/shared/CMakeLists.txt index ea4634c..dbc3889c 100644 --- a/libc/test/shared/CMakeLists.txt +++ b/libc/test/shared/CMakeLists.txt @@ -40,6 +40,8 @@ add_fp_unittest( libc.src.__support.math.exp10m1f16 libc.src.__support.math.erff libc.src.__support.math.exp + libc.src.__support.math.exp2 + libc.src.__support.math.exp2f libc.src.__support.math.exp10 libc.src.__support.math.exp10f libc.src.__support.math.exp10f16 diff --git a/libc/test/shared/shared_math_test.cpp b/libc/test/shared/shared_math_test.cpp index 1722193..d118d96 100644 --- a/libc/test/shared/shared_math_test.cpp +++ b/libc/test/shared/shared_math_test.cpp @@ -62,6 +62,7 @@ TEST(LlvmLibcSharedMathTest, AllFloat) { EXPECT_FP_EQ(0x0p+0f, LIBC_NAMESPACE::shared::erff(0.0f)); EXPECT_FP_EQ(0x1p+0f, LIBC_NAMESPACE::shared::exp10f(0.0f)); EXPECT_FP_EQ(0x1p+0f, LIBC_NAMESPACE::shared::expf(0.0f)); + EXPECT_FP_EQ(0x1p+0f, LIBC_NAMESPACE::shared::exp2f(0.0f)); EXPECT_FP_EQ_ALL_ROUNDING(0.75f, LIBC_NAMESPACE::shared::frexpf(24.0f, &exponent)); @@ -80,6 +81,7 @@ TEST(LlvmLibcSharedMathTest, AllDouble) { EXPECT_FP_EQ(0x1p+0, LIBC_NAMESPACE::shared::cos(0.0)); EXPECT_FP_EQ(0x0p+0, LIBC_NAMESPACE::shared::dsqrtl(0.0)); EXPECT_FP_EQ(0x1p+0, LIBC_NAMESPACE::shared::exp(0.0)); + EXPECT_FP_EQ(0x1p+0, LIBC_NAMESPACE::shared::exp2(0.0)); EXPECT_FP_EQ(0x1p+0, LIBC_NAMESPACE::shared::exp10(0.0)); } diff --git a/libc/test/src/sys/mman/linux/CMakeLists.txt b/libc/test/src/sys/mman/linux/CMakeLists.txt index 93fdc62..a362c1c 100644 --- a/libc/test/src/sys/mman/linux/CMakeLists.txt +++ b/libc/test/src/sys/mman/linux/CMakeLists.txt @@ -99,7 +99,6 @@ add_libc_unittest( libc.src.sys.mman.mincore libc.src.sys.mman.mlock libc.src.sys.mman.munlock - libc.src.unistd.sysconf libc.test.UnitTest.ErrnoCheckingTest libc.test.UnitTest.ErrnoSetterMatcher ) @@ -125,7 +124,6 @@ add_libc_unittest( libc.src.sys.mman.munlockall libc.src.sys.resource.getrlimit libc.src.__support.OSUtil.osutil - libc.src.unistd.sysconf libc.test.UnitTest.ErrnoCheckingTest libc.test.UnitTest.ErrnoSetterMatcher ) @@ -146,7 +144,6 @@ add_libc_unittest( libc.src.sys.mman.mincore libc.src.sys.mman.mlock libc.src.sys.mman.munlock - libc.src.unistd.sysconf libc.test.UnitTest.ErrnoCheckingTest libc.test.UnitTest.ErrnoSetterMatcher ) @@ -160,13 +157,14 @@ add_libc_unittest( DEPENDS libc.include.sys_mman libc.include.sys_stat - libc.src.unistd.sysconf libc.test.UnitTest.ErrnoCheckingTest libc.test.UnitTest.ErrnoSetterMatcher libc.src.sys.mman.remap_file_pages libc.src.errno.errno libc.src.sys.mman.mmap libc.src.sys.mman.munmap + libc.src.fcntl.open + libc.src.unistd.close ) add_libc_unittest( diff --git a/libc/test/src/sys/mman/linux/mincore_test.cpp b/libc/test/src/sys/mman/linux/mincore_test.cpp index 3a15291..fb86252 100644 --- a/libc/test/src/sys/mman/linux/mincore_test.cpp +++ b/libc/test/src/sys/mman/linux/mincore_test.cpp @@ -12,7 +12,6 @@ #include "src/sys/mman/mmap.h" #include "src/sys/mman/munlock.h" #include "src/sys/mman/munmap.h" -#include "src/unistd/sysconf.h" #include "test/UnitTest/ErrnoCheckingTest.h" #include "test/UnitTest/ErrnoSetterMatcher.h" #include "test/UnitTest/Test.h" @@ -21,6 +20,9 @@ using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails; using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds; using LlvmLibcMincoreTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; +// TODO: Replace with sysconf call once the function is properly implemented. +constexpr size_t PAGE_SIZE = 4096; + TEST_F(LlvmLibcMincoreTest, UnMappedMemory) { unsigned char vec; int res = LIBC_NAMESPACE::mincore(nullptr, 1, &vec); @@ -28,7 +30,7 @@ TEST_F(LlvmLibcMincoreTest, UnMappedMemory) { } TEST_F(LlvmLibcMincoreTest, UnalignedAddr) { - unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE); + unsigned long page_size = PAGE_SIZE; void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); EXPECT_NE(addr, MAP_FAILED); @@ -39,7 +41,7 @@ TEST_F(LlvmLibcMincoreTest, UnalignedAddr) { } TEST_F(LlvmLibcMincoreTest, InvalidVec) { - unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE); + unsigned long page_size = PAGE_SIZE; void *addr = LIBC_NAMESPACE::mmap(nullptr, 4 * page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); EXPECT_NE(addr, MAP_FAILED); @@ -49,7 +51,7 @@ TEST_F(LlvmLibcMincoreTest, InvalidVec) { } TEST_F(LlvmLibcMincoreTest, NoError) { - unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE); + unsigned long page_size = PAGE_SIZE; void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); EXPECT_NE(addr, MAP_FAILED); @@ -61,7 +63,7 @@ TEST_F(LlvmLibcMincoreTest, NoError) { } TEST_F(LlvmLibcMincoreTest, NegativeLength) { - unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE); + unsigned long page_size = PAGE_SIZE; void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); EXPECT_NE(addr, MAP_FAILED); @@ -73,7 +75,7 @@ TEST_F(LlvmLibcMincoreTest, NegativeLength) { } TEST_F(LlvmLibcMincoreTest, PageOut) { - unsigned long page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE); + unsigned long page_size = PAGE_SIZE; unsigned char vec; void *addr = LIBC_NAMESPACE::mmap(nullptr, page_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); diff --git a/libc/test/src/sys/mman/linux/mlock_test.cpp b/libc/test/src/sys/mman/linux/mlock_test.cpp index cd37422..f4a072e 100644 --- a/libc/test/src/sys/mman/linux/mlock_test.cpp +++ b/libc/test/src/sys/mman/linux/mlock_test.cpp @@ -22,14 +22,15 @@ #include "src/sys/mman/munlockall.h" #include "src/sys/mman/munmap.h" #include "src/sys/resource/getrlimit.h" -#include "src/unistd/sysconf.h" #include "test/UnitTest/ErrnoCheckingTest.h" #include "test/UnitTest/ErrnoSetterMatcher.h" #include "test/UnitTest/Test.h" -#include <linux/capability.h> #include <sys/syscall.h> +// TODO: Replace with sysconf call once the function is properly implemented. +constexpr size_t PAGE_SIZE = 4096; + using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher; using LlvmLibcMlockTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; @@ -38,7 +39,7 @@ struct PageHolder { void *addr; PageHolder() - : size(LIBC_NAMESPACE::sysconf(_SC_PAGESIZE)), + : size(PAGE_SIZE), addr(LIBC_NAMESPACE::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) {} ~PageHolder() { @@ -51,28 +52,10 @@ struct PageHolder { bool is_valid() { return addr != MAP_FAILED; } }; -static bool get_capacity(unsigned int cap) { - __user_cap_header_struct header; - header.pid = 0; - header.version = _LINUX_CAPABILITY_VERSION_3; - __user_cap_data_struct data[_LINUX_CAPABILITY_U32S_3]; - // TODO: use capget wrapper once implemented. - // https://github.com/llvm/llvm-project/issues/80037 - long res = LIBC_NAMESPACE::syscall_impl( - SYS_capget, LIBC_NAMESPACE::cpp::bit_cast<long>(&header), - LIBC_NAMESPACE::cpp::bit_cast<long>(&data)); - if (res < 0) - return false; - unsigned idx = CAP_TO_INDEX(cap); - unsigned shift = CAP_TO_MASK(cap); - return (data[idx].effective & shift) != 0; -} - static bool is_permitted_size(size_t size) { rlimit rlimits; LIBC_NAMESPACE::getrlimit(RLIMIT_MEMLOCK, &rlimits); - return size <= static_cast<size_t>(rlimits.rlim_cur) || - get_capacity(CAP_IPC_LOCK); + return size <= static_cast<size_t>(rlimits.rlim_cur); } TEST_F(LlvmLibcMlockTest, UnMappedMemory) { diff --git a/libc/test/src/sys/mman/linux/msync_test.cpp b/libc/test/src/sys/mman/linux/msync_test.cpp index b4eedb3..764a67d 100644 --- a/libc/test/src/sys/mman/linux/msync_test.cpp +++ b/libc/test/src/sys/mman/linux/msync_test.cpp @@ -11,11 +11,13 @@ #include "src/sys/mman/msync.h" #include "src/sys/mman/munlock.h" #include "src/sys/mman/munmap.h" -#include "src/unistd/sysconf.h" #include "test/UnitTest/ErrnoCheckingTest.h" #include "test/UnitTest/ErrnoSetterMatcher.h" #include "test/UnitTest/Test.h" +// TODO: Replace with sysconf call once the function is properly implemented. +constexpr size_t PAGE_SIZE = 4096; + using namespace LIBC_NAMESPACE::testing::ErrnoSetterMatcher; using LlvmLibcMsyncTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; @@ -24,7 +26,7 @@ struct PageHolder { void *addr; PageHolder() - : size(LIBC_NAMESPACE::sysconf(_SC_PAGESIZE)), + : size(PAGE_SIZE), addr(LIBC_NAMESPACE::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)) {} ~PageHolder() { diff --git a/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp b/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp index 851e4f7d..094bcb2 100644 --- a/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp +++ b/libc/test/src/sys/mman/linux/remap_file_pages_test.cpp @@ -11,7 +11,6 @@ #include "src/sys/mman/munmap.h" #include "src/sys/mman/remap_file_pages.h" #include "src/unistd/close.h" -#include "src/unistd/sysconf.h" #include "test/UnitTest/ErrnoCheckingTest.h" #include "test/UnitTest/ErrnoSetterMatcher.h" #include "test/UnitTest/Test.h" @@ -19,12 +18,15 @@ #include <sys/mman.h> #include <sys/stat.h> // For S_IRWXU +// TODO: Replace with sysconf call once the function is properly implemented. +constexpr size_t PAGE_SIZE = 4096; + using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails; using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds; using LlvmLibcRemapFilePagesTest = LIBC_NAMESPACE::testing::ErrnoCheckingTest; TEST_F(LlvmLibcRemapFilePagesTest, NoError) { - size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE); + size_t page_size = PAGE_SIZE; ASSERT_GT(page_size, size_t(0)); // Create a file-backed mapping @@ -50,7 +52,7 @@ TEST_F(LlvmLibcRemapFilePagesTest, NoError) { } TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) { - size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE); + size_t page_size = PAGE_SIZE; ASSERT_GT(page_size, size_t(0)); // Create a file-backed mapping @@ -77,7 +79,7 @@ TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) { } TEST_F(LlvmLibcRemapFilePagesTest, ErrorInvalidAddress) { - size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE); + size_t page_size = PAGE_SIZE; ASSERT_GT(page_size, size_t(0)); // Use an address that we haven't mapped diff --git a/libc/test/src/sys/resource/CMakeLists.txt b/libc/test/src/sys/resource/CMakeLists.txt index 2870f2c..2097a2c 100644 --- a/libc/test/src/sys/resource/CMakeLists.txt +++ b/libc/test/src/sys/resource/CMakeLists.txt @@ -1,7 +1,5 @@ add_custom_target(libc_sys_resource_unittests) -add_subdirectory(testdata) - add_libc_unittest( getrlimit_setrlimit_test SUITE diff --git a/libc/test/src/sys/resource/getrlimit_setrlimit_test.cpp b/libc/test/src/sys/resource/getrlimit_setrlimit_test.cpp index d6e1490..4e0a3c7 100644 --- a/libc/test/src/sys/resource/getrlimit_setrlimit_test.cpp +++ b/libc/test/src/sys/resource/getrlimit_setrlimit_test.cpp @@ -27,8 +27,11 @@ TEST_F(LlvmLibcResourceLimitsTest, SetNoFileLimit) { // successfully. Next, close the files and set the file descriptor limit // to 4. This will allow us to open one of those file but not the other. - constexpr const char *TEST_FILE1 = "testdata/resource_limits1.test"; - constexpr const char *TEST_FILE2 = "testdata/resource_limits2.test"; + constexpr const char *TEST_FILE1_NAME = "resource_limits1.test"; + constexpr const char *TEST_FILE2_NAME = "resource_limits2.test"; + + auto TEST_FILE1 = libc_make_test_file_path(TEST_FILE1_NAME); + auto TEST_FILE2 = libc_make_test_file_path(TEST_FILE2_NAME); int fd1 = LIBC_NAMESPACE::open(TEST_FILE1, O_CREAT | O_WRONLY, S_IRWXU); ASSERT_GT(fd1, 0); diff --git a/libc/test/src/sys/resource/testdata/CMakeLists.txt b/libc/test/src/sys/resource/testdata/CMakeLists.txt deleted file mode 100644 index e69de29..0000000 --- a/libc/test/src/sys/resource/testdata/CMakeLists.txt +++ /dev/null |