-add_gen_header(
- linux_syscall_h
- DEF_FILE syscall.h.def
- GEN_HDR syscall.h
- PARAMS
- inline_syscalls=${LIBC_TARGET_ARCHITECTURE}/syscall.h.inc
- DATA_FILES
- ${LIBC_TARGET_ARCHITECTURE}/syscall.h.inc
- DEPENDS
- libc.src.__support.common
-)
-
add_header(
app_h
HDR
SRC
start.cpp
DEPENDS
- libc.config.linux.linux_syscall_h
libc.config.linux.app_h
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
libc.src.string.memcpy
libc.src.sys.mman.mmap
COMPILE_OPTIONS
//===----------------------------------------------------------------------===//
#include "config/linux/app.h"
-#include "config/linux/syscall.h"
#include "include/sys/mman.h"
#include "include/sys/syscall.h"
+#include "src/__support/OSUtil/syscall.h"
#include "src/string/memcpy.h"
#include "src/sys/mman/mmap.h"
HDRS
io.h
quick_exit.h
+ syscall.h
DEPENDS
libc.src.__support.OSUtil.linux.linux_util
)
+add_subdirectory(x86_64)
+
add_header_library(
linux_util
HDRS
io.h
quick_exit.h
+ syscall.h
DEPENDS
- libc.config.linux.linux_syscall_h
- libc.include.sys_syscall
- libc.src.string.string_utils
+ .x86_64.linux_x86_64_util
+ libc.src.__support.common
)
#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_IO_H
#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_IO_H
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/sys/syscall.h" // For syscall numbers.
#include "src/string/string_utils.h"
+#include "syscall.h" // For internal syscall function.
namespace __llvm_libc {
#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_QUICK_EXIT_H
#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_QUICK_EXIT_H
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "syscall.h" // For internal syscall function.
namespace __llvm_libc {
--- /dev/null
+//===----------------------- Linux syscalls ---------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_SYSCALL_H
+#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_SYSCALL_H
+
+#include "src/__support/architectures.h"
+
+#ifdef LLVM_LIBC_ARCH_X86_64
+#include "x86_64/syscall.h"
+#endif
+
+#endif // LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_SYSCALL_H
--- /dev/null
+add_header_library(
+ linux_x86_64_util
+ HDRS
+ syscall.h
+ DEPENDS
+ libc.src.__support.common
+)
-//===------------ inline implementation of x86_64 syscalls ----------------===//
+//===---------- inline implementation of x86_64 syscalls ----------* C++ *-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
//
//===----------------------------------------------------------------------===//
-%%begin()
+#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_X86_64_SYSCALL_H
+#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_X86_64_SYSCALL_H
#include "src/__support/common.h"
return syscall(__number, (long)ts...);
}
-
#undef SYSCALL_CLOBBER_LIST
} // namespace __llvm_libc
+
+#endif // LLVM_LIBC_SRC_SUPPORT_OSUTIL_LINUX_X86_64_SYSCALL_H
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_LIBC_CONFIG_LINUX_SYSCALL_H
-#define LLVM_LIBC_CONFIG_LINUX_SYSCALL_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_OSUTIL_SYSCALL_H
+#define LLVM_LIBC_SRC_SUPPORT_OSUTIL_SYSCALL_H
-%%include_file(${inline_syscalls})
+#ifdef __unix__
+#include "linux/syscall.h"
+#endif
-#endif // LLVM_LIBC_CONFIG_LINUX_SYSCALL_H
+#endif // LLVM_LIBC_SRC_SUPPORT_OSUTIL_SYSCALL_H
DEPENDS
# These two dependencies are temporary and should be replaced by fprintf
# later.
- libc.config.linux.linux_syscall_h
+ libc.src.__support.OSUtil.osutil
libc.include.sys_syscall
libc.src.stdlib.abort
)
#include "src/stdlib/abort.h"
// These includes are temporary.
-#include "config/linux/syscall.h" // For internal syscall function.
#include "include/sys/syscall.h" // For syscall numbers.
+#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
namespace __llvm_libc {
signal.h
../raise.h
DEPENDS
- libc.config.linux.linux_syscall_h
libc.include.signal
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
)
add_object_library(
# asan creates asan.module_ctor which uses stack space, causing warnings.
-fno-sanitize=address
DEPENDS
- libc.config.linux.linux_syscall_h
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
)
add_entrypoint_object(
../sigaction.h
DEPENDS
.__restore
- libc.config.linux.linux_syscall_h
libc.include.signal
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
libc.src.errno.__errno_location
)
signal.h
../sigprocmask.h
DEPENDS
- libc.config.linux.linux_syscall_h
libc.include.signal
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
libc.src.errno.__errno_location
)
// strongly control the options this file is compiled with. __restore_rt cannot
// make any stack allocations so we must ensure this.
-#include "config/linux/syscall.h"
#include "include/sys/syscall.h"
+#include "src/__support/OSUtil/syscall.h"
namespace __llvm_libc {
#ifndef LLVM_LIBC_SRC_SIGNAL_LINUX_SIGNAL_H
#define LLVM_LIBC_SRC_SIGNAL_LINUX_SIGNAL_H
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "include/signal.h"
../_Exit.h
DEPENDS
libc.include.sys_syscall
- libc.config.linux.linux_syscall_h
libc.include.stdlib
+ libc.src.__support.OSUtil.osutil
)
//
//===----------------------------------------------------------------------===//
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#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/stdlib/_Exit.h"
HDRS
../mmap.h
DEPENDS
- libc.config.linux.linux_syscall_h
libc.include.sys_mman
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
libc.src.errno.__errno_location
)
HDRS
../munmap.h
DEPENDS
- libc.config.linux.linux_syscall_h
libc.include.sys_mman
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
libc.src.errno.__errno_location
)
#include "src/sys/mman/mmap.h"
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#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 "src/sys/mman/munmap.h"
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#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"
../call_once.h
DEPENDS
.threads_utils
- libc.config.linux.linux_syscall_h
libc.include.sys_syscall
libc.include.threads
+ libc.src.__support.OSUtil.osutil
)
add_header_library(
Thread.h
DEPENDS
.thread_start_args_h
- libc.config.linux.linux_syscall_h
libc.include.sys_syscall
libc.include.threads
+ libc.src.__support.OSUtil.osutil
)
add_entrypoint_object(
../thrd_create.h
DEPENDS
.threads_utils
- libc.config.linux.linux_syscall_h
libc.include.errno
libc.include.sys_syscall
libc.include.threads
libc.src.__support.common
+ libc.src.__support.OSUtil.osutil
libc.src.errno.__errno_location
libc.src.sys.mman.mmap
COMPILE_OPTIONS
../thrd_join.h
DEPENDS
.threads_utils
- libc.config.linux.linux_syscall_h
libc.include.sys_syscall
libc.include.threads
- libc.src.sys.mman.munmap
libc.src.__support.common
+ libc.src.__support.OSUtil.osutil
+ libc.src.sys.mman.munmap
)
add_entrypoint_object(
#include "Futex.h"
#include "Mutex.h"
-#include "config/linux/syscall.h" // For syscall functions.
-#include "include/sys/syscall.h" // For syscall numbers.
-#include "include/threads.h" // For values like thrd_success etc.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/threads.h" // For values like thrd_success etc.
+#include "src/__support/OSUtil/syscall.h" // For syscall functions.
#include <linux/futex.h> // For futex operations.
#include <stdatomic.h> // For atomic operations
#include "Futex.h"
-#include "config/linux/syscall.h" // For syscall functions.
-#include "include/sys/syscall.h" // For syscall numbers.
-#include "include/threads.h" // For values like thrd_success etc.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/threads.h" // For values like thrd_success etc.
+#include "src/__support/OSUtil/syscall.h" // For syscall functions.
#include <linux/futex.h> // For futex operations.
#include <stdatomic.h>
//===----------------------------------------------------------------------===//
#include "src/threads/call_once.h"
-#include "config/linux/syscall.h" // For syscall functions.
-#include "include/sys/syscall.h" // For syscall numbers.
-#include "include/threads.h" // For call_once related type definition.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/threads.h" // For call_once related type definition.
+#include "src/__support/OSUtil/syscall.h" // For syscall functions.
#include "src/__support/common.h"
#include "src/threads/linux/Futex.h"
//===----------------------------------------------------------------------===//
#include "src/threads/thrd_create.h"
-#include "config/linux/syscall.h" // For syscall function.
-#include "include/errno.h" // For E* error values.
-#include "include/sys/mman.h" // For PROT_* and MAP_* definitions.
-#include "include/sys/syscall.h" // For syscall numbers.
-#include "include/threads.h" // For thrd_* type definitions.
+#include "include/errno.h" // For E* error values.
+#include "include/sys/mman.h" // For PROT_* and MAP_* definitions.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/threads.h" // For thrd_* type definitions.
+#include "src/__support/OSUtil/syscall.h" // For syscall function.
#include "src/__support/common.h"
#include "src/errno/llvmlibc_errno.h"
#include "src/sys/mman/mmap.h"
//===----------------------------------------------------------------------===//
#include "src/threads/thrd_join.h"
-#include "config/linux/syscall.h" // For syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
-#include "include/threads.h" // For thrd_* type definitions.
+#include "include/sys/syscall.h" // For syscall numbers.
+#include "include/threads.h" // For thrd_* type definitions.
+#include "src/__support/OSUtil/syscall.h" // For syscall function.
#include "src/__support/common.h"
#include "src/sys/mman/munmap.h"
#include "src/threads/linux/Futex.h"
../write.h
DEPENDS
libc.include.unistd
- libc.config.linux.linux_syscall_h
libc.include.sys_syscall
+ libc.src.__support.OSUtil.osutil
libc.src.errno.__errno_location
)
#include "src/unistd/write.h"
-#include "config/linux/syscall.h" // For internal syscall function.
-#include "include/sys/syscall.h" // For syscall numbers.
+#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"
return()
endif()
-add_subdirectory(config)
add_subdirectory(integration)
add_subdirectory(loader)
+++ /dev/null
-add_subdirectory(${LIBC_TARGET_OS})
+++ /dev/null
-add_libc_testsuite(libc_linux_tests)
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_ARCHITECTURE})
- add_subdirectory(${LIBC_TARGET_ARCHITECTURE})
-endif()
+++ /dev/null
-add_libc_unittest(
- libc_linux_x86_64_syscall_unittest
- SUITE libc_linux_tests
- SRCS syscall_test.cpp
- DEPENDS
- libc.config.linux.linux_syscall_h
-)
DEPENDS ${float_test_file}
COMMENT "Test the strtof and strtod implementations against precomputed results."
VERBATIM)
+
+add_subdirectory(OSUtil)
--- /dev/null
+add_libc_testsuite(libc_osutil_tests)
+
+add_subdirectory(linux)
--- /dev/null
+add_subdirectory(x86_64)
--- /dev/null
+add_libc_unittest(
+ syscall_unittest
+ SUITE libc_osutil_tests
+ SRCS syscall_test.cpp
+ DEPENDS
+ libc.src.__support.OSUtil.osutil
+)
//
//===----------------------------------------------------------------------===//
-#include "config/linux/syscall.h"
-#include "utils/UnitTest/Test.h"
-
#include "src/__support/CPP/Functional.h"
+#include "src/__support/OSUtil/syscall.h"
+#include "utils/UnitTest/Test.h"
TEST(LlvmLibcX86_64_SyscallTest, APITest) {
// We only do a signature test here. Actual functionality tests are