summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiva Chandra Reddy <sivachandra@google.com>2022-01-11 05:24:57 +0000
committerSiva Chandra Reddy <sivachandra@google.com>2022-01-11 16:51:10 +0000
commit134e9d1914db341f72b1caca0e342b6c563c8698 (patch)
tree795346fc12c615e2aa3f8c82ebbbf864cbfd4455
parentd345ce65ff0cf5e7cf4299d0659477ca7dbe6631 (diff)
downloadllvm-134e9d1914db341f72b1caca0e342b6c563c8698.tar.gz
[libc][NFC] Move sys/mman entrypoints to the default build configs.
Specifically, mmap and munmap have been moved to the default build list of entrypoints. To support this, certain deps and includes have been adjusted. The use of errno in some cases has been updated.
-rw-r--r--libc/config/linux/aarch64/entrypoints.txt6
-rw-r--r--libc/config/linux/x86_64/entrypoints.txt8
-rw-r--r--libc/loader/linux/x86_64/CMakeLists.txt1
-rw-r--r--libc/loader/linux/x86_64/start.cpp1
-rw-r--r--libc/src/CMakeLists.txt6
-rw-r--r--libc/src/sys/mman/linux/mmap.cpp6
-rw-r--r--libc/src/sys/mman/linux/munmap.cpp7
-rw-r--r--libc/src/sys/mman/mmap.h2
-rw-r--r--libc/src/sys/mman/munmap.h2
-rw-r--r--libc/src/unistd/linux/write.cpp5
-rw-r--r--libc/test/ErrnoSetterMatcher.h7
-rw-r--r--libc/test/src/CMakeLists.txt5
-rw-r--r--libc/test/src/sys/mman/linux/mmap_test.cpp12
-rw-r--r--libc/test/src/unistd/write_test.cpp3
14 files changed, 37 insertions, 34 deletions
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index c0072c619075..7b9027efa336 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -169,15 +169,11 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.trunc
libc.src.math.truncf
libc.src.math.truncl
-)
-if(LLVM_LIBC_FULL_BUILD)
- list(APPEND TARGET_LIBC_ENTRYPOINTS
# sys/mman.h entrypoints
libc.src.sys.mman.mmap
libc.src.sys.mman.munmap
- )
-endif()
+)
set(TARGET_LLVMLIBC_ENTRYPOINTS
${TARGET_LIBC_ENTRYPOINTS}
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 38586a4eddce..3cca89338702 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -75,6 +75,10 @@ set(TARGET_LIBC_ENTRYPOINTS
libc.src.stdlib.strtoll
libc.src.stdlib.strtoul
libc.src.stdlib.strtoull
+
+ # sys/mman.h entrypoints
+ libc.src.sys.mman.mmap
+ libc.src.sys.mman.munmap
)
set(TARGET_LIBM_ENTRYPOINTS
@@ -203,10 +207,6 @@ if(LLVM_LIBC_FULL_BUILD)
# libc.src.signal.sigfillset
# libc.src.signal.signal
- # sys/mman.h entrypoints
- libc.src.sys.mman.mmap
- libc.src.sys.mman.munmap
-
# threads.h entrypoints
libc.src.threads.call_once
libc.src.threads.cnd_broadcast
diff --git a/libc/loader/linux/x86_64/CMakeLists.txt b/libc/loader/linux/x86_64/CMakeLists.txt
index 75b8a23802e7..c8fa53bf3d75 100644
--- a/libc/loader/linux/x86_64/CMakeLists.txt
+++ b/libc/loader/linux/x86_64/CMakeLists.txt
@@ -7,7 +7,6 @@ add_loader_object(
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
libc.src.string.memcpy
- libc.src.sys.mman.mmap
COMPILE_OPTIONS
-fno-omit-frame-pointer
-ffreestanding # To avoid compiler warnings about calling the main function.
diff --git a/libc/loader/linux/x86_64/start.cpp b/libc/loader/linux/x86_64/start.cpp
index 55ae00391927..774f01b54321 100644
--- a/libc/loader/linux/x86_64/start.cpp
+++ b/libc/loader/linux/x86_64/start.cpp
@@ -11,7 +11,6 @@
#include "include/sys/syscall.h"
#include "src/__support/OSUtil/syscall.h"
#include "src/string/memcpy.h"
-#include "src/sys/mman/mmap.h"
#include <asm/prctl.h>
#include <linux/auxvec.h>
diff --git a/libc/src/CMakeLists.txt b/libc/src/CMakeLists.txt
index 006bf5c7563b..99faf794c135 100644
--- a/libc/src/CMakeLists.txt
+++ b/libc/src/CMakeLists.txt
@@ -8,6 +8,10 @@ add_subdirectory(math)
add_subdirectory(string)
add_subdirectory(stdlib)
+if(${LIBC_TARGET_OS} STREQUAL "linux")
+ add_subdirectory(sys)
+endif()
+
if(NOT LLVM_LIBC_FULL_BUILD)
return()
endif()
@@ -17,8 +21,6 @@ endif()
# add_subdirectory(assert)
# add_subdirectory(signal)
add_subdirectory(stdio)
-# TODO: Add this target conditional to the target OS.
-add_subdirectory(sys)
add_subdirectory(threads)
add_subdirectory(time)
add_subdirectory(unistd)
diff --git a/libc/src/sys/mman/linux/mmap.cpp b/libc/src/sys/mman/linux/mmap.cpp
index 0447ef129891..6ae482a8409a 100644
--- a/libc/src/sys/mman/linux/mmap.cpp
+++ b/libc/src/sys/mman/linux/mmap.cpp
@@ -8,12 +8,12 @@
#include "src/sys/mman/mmap.h"
-#include "include/sys/syscall.h" // For syscall numbers.
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/__support/common.h"
-#include "src/errno/llvmlibc_errno.h"
+#include <errno.h>
#include <linux/param.h> // For EXEC_PAGESIZE.
+#include <sys/syscall.h> // For syscall numbers.
namespace __llvm_libc {
@@ -53,7 +53,7 @@ LLVM_LIBC_FUNCTION(void *, mmap,
// return value corresponding to a location in the last page is an error
// value.
if (ret_val < 0 && ret_val > -EXEC_PAGESIZE) {
- llvmlibc_errno = -ret_val;
+ errno = -ret_val;
return MAP_FAILED;
}
diff --git a/libc/src/sys/mman/linux/munmap.cpp b/libc/src/sys/mman/linux/munmap.cpp
index 7801a637f23f..2abeb3134242 100644
--- a/libc/src/sys/mman/linux/munmap.cpp
+++ b/libc/src/sys/mman/linux/munmap.cpp
@@ -8,10 +8,11 @@
#include "src/sys/mman/munmap.h"
-#include "include/sys/syscall.h" // For syscall numbers.
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/__support/common.h"
-#include "src/errno/llvmlibc_errno.h"
+
+#include <errno.h>
+#include <sys/syscall.h> // For syscall numbers.
namespace __llvm_libc {
@@ -24,7 +25,7 @@ LLVM_LIBC_FUNCTION(int, munmap, (void *addr, size_t size)) {
// A negative return value indicates an error with the magnitude of the
// value being the error code.
if (ret_val < 0) {
- llvmlibc_errno = -ret_val;
+ errno = -ret_val;
return -1;
}
diff --git a/libc/src/sys/mman/mmap.h b/libc/src/sys/mman/mmap.h
index c7aa404f6585..9f7fd8b9196b 100644
--- a/libc/src/sys/mman/mmap.h
+++ b/libc/src/sys/mman/mmap.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_SYS_MMAN_MMAP_H
#define LLVM_LIBC_SRC_SYS_MMAN_MMAP_H
-#include "include/sys/mman.h" // For size_t and off_t
+#include <sys/mman.h> // For size_t and off_t
namespace __llvm_libc {
diff --git a/libc/src/sys/mman/munmap.h b/libc/src/sys/mman/munmap.h
index ba272dc45e15..fa11d67823f6 100644
--- a/libc/src/sys/mman/munmap.h
+++ b/libc/src/sys/mman/munmap.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_SYS_MMAN_MUNMAP_H
#define LLVM_LIBC_SRC_SYS_MMAN_MUNMAP_H
-#include "include/sys/mman.h" // For size_t.
+#include <sys/mman.h> // For size_t.
namespace __llvm_libc {
diff --git a/libc/src/unistd/linux/write.cpp b/libc/src/unistd/linux/write.cpp
index 3554e3030943..0eaa632e5767 100644
--- a/libc/src/unistd/linux/write.cpp
+++ b/libc/src/unistd/linux/write.cpp
@@ -11,14 +11,15 @@
#include "include/sys/syscall.h" // For syscall numbers.
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/__support/common.h"
-#include "src/errno/llvmlibc_errno.h"
+
+#include <errno.h>
namespace __llvm_libc {
LLVM_LIBC_FUNCTION(ssize_t, write, (int fd, const void *buf, size_t count)) {
long ret = __llvm_libc::syscall(SYS_write, fd, buf, count);
if (ret < 0) {
- llvmlibc_errno = -ret;
+ errno = -ret;
return -1;
}
return ret;
diff --git a/libc/test/ErrnoSetterMatcher.h b/libc/test/ErrnoSetterMatcher.h
index 7f8311bfd5e6..007b2e6c0ae1 100644
--- a/libc/test/ErrnoSetterMatcher.h
+++ b/libc/test/ErrnoSetterMatcher.h
@@ -9,9 +9,10 @@
#ifndef LLVM_LIBC_TEST_ERRNOSETTERMATCHER_H
#define LLVM_LIBC_TEST_ERRNOSETTERMATCHER_H
-#include "src/errno/llvmlibc_errno.h"
#include "utils/UnitTest/Test.h"
+#include <errno.h>
+
namespace __llvm_libc {
namespace testing {
@@ -42,8 +43,8 @@ public:
bool match(T Got) {
ActualReturn = Got;
- ActualErrno = llvmlibc_errno;
- llvmlibc_errno = 0;
+ ActualErrno = errno;
+ errno = 0;
return Got == ExpectedReturn && ActualErrno == ExpectedErrno;
}
};
diff --git a/libc/test/src/CMakeLists.txt b/libc/test/src/CMakeLists.txt
index d9b184e3790c..96bc7e6c2bc7 100644
--- a/libc/test/src/CMakeLists.txt
+++ b/libc/test/src/CMakeLists.txt
@@ -34,6 +34,10 @@ add_subdirectory(math)
add_subdirectory(string)
add_subdirectory(stdlib)
+if(${LIBC_TARGET_OS} STREQUAL "linux")
+ add_subdirectory(sys)
+endif()
+
if(NOT LLVM_LIBC_FULL_BUILD)
return()
endif()
@@ -43,7 +47,6 @@ endif()
# add_subdirectory(assert)
# add_subdirectory(signal)
add_subdirectory(stdio)
-add_subdirectory(sys)
add_subdirectory(threads)
add_subdirectory(time)
add_subdirectory(unistd)
diff --git a/libc/test/src/sys/mman/linux/mmap_test.cpp b/libc/test/src/sys/mman/linux/mmap_test.cpp
index 5311427ad522..a1a0a0879442 100644
--- a/libc/test/src/sys/mman/linux/mmap_test.cpp
+++ b/libc/test/src/sys/mman/linux/mmap_test.cpp
@@ -6,23 +6,23 @@
//
//===----------------------------------------------------------------------===//
-#include "include/errno.h"
-#include "include/sys/mman.h"
-#include "src/errno/llvmlibc_errno.h"
#include "src/sys/mman/mmap.h"
#include "src/sys/mman/munmap.h"
#include "test/ErrnoSetterMatcher.h"
#include "utils/UnitTest/Test.h"
+#include <errno.h>
+#include <sys/mman.h>
+
using __llvm_libc::testing::ErrnoSetterMatcher::Fails;
using __llvm_libc::testing::ErrnoSetterMatcher::Succeeds;
TEST(LlvmLibcMMapTest, NoError) {
size_t alloc_size = 128;
- llvmlibc_errno = 0;
+ errno = 0;
void *addr = __llvm_libc::mmap(nullptr, alloc_size, PROT_READ,
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- EXPECT_EQ(0, llvmlibc_errno);
+ EXPECT_EQ(0, errno);
EXPECT_NE(addr, MAP_FAILED);
int *array = reinterpret_cast<int *>(addr);
@@ -34,7 +34,7 @@ TEST(LlvmLibcMMapTest, NoError) {
}
TEST(LlvmLibcMMapTest, Error_InvalidSize) {
- llvmlibc_errno = 0;
+ errno = 0;
void *addr = __llvm_libc::mmap(nullptr, 0, PROT_READ,
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
EXPECT_THAT(addr, Fails(EINVAL, MAP_FAILED));
diff --git a/libc/test/src/unistd/write_test.cpp b/libc/test/src/unistd/write_test.cpp
index 56243846083a..43914e87ef65 100644
--- a/libc/test/src/unistd/write_test.cpp
+++ b/libc/test/src/unistd/write_test.cpp
@@ -6,12 +6,13 @@
//
//===----------------------------------------------------------------------===//
-#include "include/errno.h"
#include "src/unistd/write.h"
#include "test/ErrnoSetterMatcher.h"
#include "utils/UnitTest/Test.h"
#include "utils/testutils/FDReader.h"
+#include <errno.h>
+
TEST(LlvmLibcUniStd, WriteBasic) {
using __llvm_libc::testing::ErrnoSetterMatcher::Succeeds;
constexpr const char *HELLO = "hello";