[libc] [llvm] [libc] Add unistd overlay (PR #119312)
Tristan Ross via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 16 19:35:33 PST 2024
https://github.com/RossComputerGuy updated https://github.com/llvm/llvm-project/pull/119312
>From 1af49ff14e550f79bc3137608e1742468df3ce8c Mon Sep 17 00:00:00 2001
From: Tristan Ross <tristan.ross at midstall.com>
Date: Mon, 9 Dec 2024 18:36:14 -0800
Subject: [PATCH 1/2] [libc] Add unistd overlay
---
libc/hdr/CMakeLists.txt | 3 +
libc/hdr/types/CMakeLists.txt | 16 +++++
libc/hdr/types/uid_t.h | 22 ++++++
libc/hdr/unistd_macros.h | 2 +-
libc/hdr/unistd_overlay.h | 69 +++++++++++++++++++
libc/src/unistd/dup.h | 2 +-
libc/src/unistd/dup2.h | 2 +-
libc/src/unistd/dup3.h | 2 +-
libc/src/unistd/fork.h | 3 +-
libc/src/unistd/ftruncate.h | 3 +-
libc/src/unistd/getcwd.h | 3 +-
libc/src/unistd/geteuid.h | 3 +-
libc/src/unistd/getopt.h | 2 +-
libc/src/unistd/getpid.h | 3 +-
libc/src/unistd/getppid.h | 3 +-
libc/src/unistd/getuid.h | 3 +-
libc/src/unistd/isatty.h | 2 +-
libc/src/unistd/link.h | 2 +-
libc/src/unistd/linux/CMakeLists.txt | 39 +++++++++++
libc/src/unistd/linux/ftruncate.cpp | 2 +-
libc/src/unistd/linux/lseek.cpp | 2 +-
libc/src/unistd/linux/sysconf.cpp | 2 +-
libc/src/unistd/linux/truncate.cpp | 2 +-
libc/src/unistd/lseek.h | 3 +-
libc/src/unistd/pread.h | 5 +-
libc/src/unistd/pwrite.h | 5 +-
libc/src/unistd/read.h | 4 +-
libc/src/unistd/readlink.h | 4 +-
libc/src/unistd/readlinkat.h | 4 +-
libc/src/unistd/swab.h | 2 +-
libc/src/unistd/symlink.h | 2 +-
libc/src/unistd/symlinkat.h | 2 +-
libc/src/unistd/syscall.h | 2 +-
libc/src/unistd/sysconf.h | 2 +-
libc/src/unistd/truncate.h | 3 +-
libc/src/unistd/write.h | 4 +-
.../sys/mman/linux/remap_file_pages_test.cpp | 6 +-
37 files changed, 206 insertions(+), 34 deletions(-)
create mode 100644 libc/hdr/types/uid_t.h
create mode 100644 libc/hdr/unistd_overlay.h
diff --git a/libc/hdr/CMakeLists.txt b/libc/hdr/CMakeLists.txt
index 5eb311f4bb2298..7f523c50e86943 100644
--- a/libc/hdr/CMakeLists.txt
+++ b/libc/hdr/CMakeLists.txt
@@ -126,10 +126,13 @@ add_proxy_header_library(
libc.include.llvm-libc-macros.sys_stat_macros
)
+add_header_library(unistd_overlay HDRS unistd_overlay.h)
add_proxy_header_library(
unistd_macros
HDRS
unistd_macros.h
+ DEPENDS
+ .unistd_overlay
FULL_BUILD_DEPENDS
libc.include.unistd
libc.include.llvm-libc-macros.unistd_macros
diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt
index 68a0e9603f9752..40dec0b479948c 100644
--- a/libc/hdr/types/CMakeLists.txt
+++ b/libc/hdr/types/CMakeLists.txt
@@ -93,6 +93,14 @@ add_proxy_header_library(
libc.include.llvm-libc-types.size_t
)
+add_proxy_header_library(
+ ssize_t
+ HDRS
+ ssize_t.h
+ FULL_BUILD_DEPENDS
+ libc.include.llvm-libc-types.ssize_t
+)
+
add_proxy_header_library(
mode_t
HDRS
@@ -311,3 +319,11 @@ add_proxy_header_library(
libc.include.llvm-libc-types.wint_t
libc.include.wchar
)
+
+add_proxy_header_library(
+ uid_t
+ HDRS
+ uid_t.h
+ FULL_BUILD_DEPENDS
+ libc.include.llvm-libc-types.uid_t
+)
diff --git a/libc/hdr/types/uid_t.h b/libc/hdr/types/uid_t.h
new file mode 100644
index 00000000000000..a1eefb03228c0b
--- /dev/null
+++ b/libc/hdr/types/uid_t.h
@@ -0,0 +1,22 @@
+//===-- Proxy for uid_t ---------------------------------------------------===//
+//
+// 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_HDR_TYPES_UID_T_H
+#define LLVM_LIBC_HDR_TYPES_UID_T_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/uid_t.h"
+
+#else // Overlay mode
+
+#include <sys/types.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_UID_T_H
diff --git a/libc/hdr/unistd_macros.h b/libc/hdr/unistd_macros.h
index 132e123280139f..5c2b24354dd3ee 100644
--- a/libc/hdr/unistd_macros.h
+++ b/libc/hdr/unistd_macros.h
@@ -15,7 +15,7 @@
#else // Overlay mode
-#include <unistd.h>
+#include "unistd_overlay.h"
#endif // LLVM_LIBC_FULL_BUILD
diff --git a/libc/hdr/unistd_overlay.h b/libc/hdr/unistd_overlay.h
new file mode 100644
index 00000000000000..e3001e0cda08f5
--- /dev/null
+++ b/libc/hdr/unistd_overlay.h
@@ -0,0 +1,69 @@
+//===-- Including unistd.h in overlay mode -------------------------------===//
+//
+// 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_HDR_UNISTD_OVERLAY_H
+#define LLVM_LIBC_HDR_UNISTD_OVERLAY_H
+
+#ifdef LIBC_FULL_BUILD
+#error "This header should only be included in overlay mode"
+#endif
+
+// Overlay mode
+
+// glibc <unistd.h> header might provide extern inline definitions for few
+// functions, causing external alias errors. They are guarded by
+// `__USE_EXTERN_INLINES` macro. We temporarily disable `__USE_EXTERN_INLINES`
+// macro by defining `__NO_INLINE__` before including <stdio.h>.
+// And the same with `__USE_FORTIFY_LEVEL`, which will be temporarily disabled
+// with `_FORTIFY_SOURCE`.
+
+#ifdef _FORTIFY_SOURCE
+#define LIBC_OLD_FORTIFY_SOURCE _FORTIFY_SOURCE
+#undef _FORTIFY_SOURCE
+#endif
+
+#ifdef __USE_EXTERN_INLINES
+#define LIBC_OLD_USE_EXTERN_INLINES
+#undef __USE_EXTERN_INLINES
+#endif
+
+#ifdef __USE_FORTIFY_LEVEL
+#define LIBC_OLD_USE_FORTIFY_LEVEL __USE_FORTIFY_LEVEL
+#undef __USE_FORTIFY_LEVEL
+#define __USE_FORTIFY_LEVEL 0
+#endif
+
+#ifndef __NO_INLINE__
+#define __NO_INLINE__ 1
+#define LIBC_SET_NO_INLINE
+#endif
+
+#include <unistd.h>
+
+#ifdef LIBC_OLD_FORTIFY_SOURCE
+#define _FORTIFY_SOURCE LIBC_OLD_FORTIFY_SOURCE
+#undef LIBC_OLD_FORTIFY_SOURCE
+#endif
+
+#ifdef LIBC_SET_NO_INLINE
+#undef __NO_INLINE__
+#undef LIBC_SET_NO_INLINE
+#endif
+
+#ifdef LIBC_OLD_USE_FORTIFY_LEVEL
+#undef __USE_FORTIFY_LEVEL
+#define __USE_FORTIFY_LEVEL LIBC_OLD_USE_FORTIFY_LEVEL
+#undef LIBC_OLD_USE_FORTIFY_LEVEL
+#endif
+
+#ifdef LIBC_OLD_USE_EXTERN_INLINES
+#define __USE_EXTERN_INLINES
+#undef LIBC_OLD_USE_EXTERN_INLINES
+#endif
+
+#endif // LLVM_LIBC_HDR_UNISTD_OVERLAY_H
diff --git a/libc/src/unistd/dup.h b/libc/src/unistd/dup.h
index 63f093c0ee4365..57601455acc61c 100644
--- a/libc/src/unistd/dup.h
+++ b/libc/src/unistd/dup.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_DUP_H
#define LLVM_LIBC_SRC_UNISTD_DUP_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/dup2.h b/libc/src/unistd/dup2.h
index 060c112daf08fb..e2cf62389bca87 100644
--- a/libc/src/unistd/dup2.h
+++ b/libc/src/unistd/dup2.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_DUP2_H
#define LLVM_LIBC_SRC_UNISTD_DUP2_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/dup3.h b/libc/src/unistd/dup3.h
index f3868867123b43..06d9b23dbd200f 100644
--- a/libc/src/unistd/dup3.h
+++ b/libc/src/unistd/dup3.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_DUP3_H
#define LLVM_LIBC_SRC_UNISTD_DUP3_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/fork.h b/libc/src/unistd/fork.h
index b6fd5763b3a5f6..a9f8a9795d3a08 100644
--- a/libc/src/unistd/fork.h
+++ b/libc/src/unistd/fork.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_FORK_H
#define LLVM_LIBC_SRC_UNISTD_FORK_H
+#include "hdr/types/pid_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/ftruncate.h b/libc/src/unistd/ftruncate.h
index cd8d363727c4ad..95901c8b700354 100644
--- a/libc/src/unistd/ftruncate.h
+++ b/libc/src/unistd/ftruncate.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_FTRUNCATE_H
#define LLVM_LIBC_SRC_UNISTD_FTRUNCATE_H
+#include "hdr/types/off_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/getcwd.h b/libc/src/unistd/getcwd.h
index 8b63a91c26b5c7..3943c0217ec1b8 100644
--- a/libc/src/unistd/getcwd.h
+++ b/libc/src/unistd/getcwd.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_GETCWD_H
#define LLVM_LIBC_SRC_UNISTD_GETCWD_H
+#include "hdr/types/size_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/geteuid.h b/libc/src/unistd/geteuid.h
index 9469797bd3d4ef..6827266ee81d6b 100644
--- a/libc/src/unistd/geteuid.h
+++ b/libc/src/unistd/geteuid.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_GETEUID_H
#define LLVM_LIBC_SRC_UNISTD_GETEUID_H
+#include "hdr/types/uid_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/getopt.h b/libc/src/unistd/getopt.h
index 1be3331dcd98a4..0be639d8711961 100644
--- a/libc/src/unistd/getopt.h
+++ b/libc/src/unistd/getopt.h
@@ -10,8 +10,8 @@
#define LLVM_LIBC_SRC_UNISTD_GETOPT_H
#include "hdr/types/FILE.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/getpid.h b/libc/src/unistd/getpid.h
index c3c55b0c06b108..9e2f156266b929 100644
--- a/libc/src/unistd/getpid.h
+++ b/libc/src/unistd/getpid.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_GETPID_H
#define LLVM_LIBC_SRC_UNISTD_GETPID_H
+#include "hdr/types/pid_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/getppid.h b/libc/src/unistd/getppid.h
index d820791bc06fad..8243fa93eddd15 100644
--- a/libc/src/unistd/getppid.h
+++ b/libc/src/unistd/getppid.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_GETPPID_H
#define LLVM_LIBC_SRC_UNISTD_GETPPID_H
+#include "hdr/types/pid_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/getuid.h b/libc/src/unistd/getuid.h
index dd82c7119d4017..f8b3731a9c0649 100644
--- a/libc/src/unistd/getuid.h
+++ b/libc/src/unistd/getuid.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_GETUID_H
#define LLVM_LIBC_SRC_UNISTD_GETUID_H
+#include "hdr/types/uid_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/isatty.h b/libc/src/unistd/isatty.h
index 6dd1b7b817171a..5c8be6541c99cb 100644
--- a/libc/src/unistd/isatty.h
+++ b/libc/src/unistd/isatty.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_ISATTY_H
#define LLVM_LIBC_SRC_UNISTD_ISATTY_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/link.h b/libc/src/unistd/link.h
index 9b27aa1accf4ea..c1c26c5e0d4948 100644
--- a/libc/src/unistd/link.h
+++ b/libc/src/unistd/link.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_LINK_H
#define LLVM_LIBC_SRC_UNISTD_LINK_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/linux/CMakeLists.txt b/libc/src/unistd/linux/CMakeLists.txt
index 8a448731414143..ed360c73354ac4 100644
--- a/libc/src/unistd/linux/CMakeLists.txt
+++ b/libc/src/unistd/linux/CMakeLists.txt
@@ -45,6 +45,7 @@ add_entrypoint_object(
HDRS
../dup.h
DEPENDS
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -72,6 +73,7 @@ add_entrypoint_object(
HDRS
../dup3.h
DEPENDS
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -98,6 +100,8 @@ add_entrypoint_object(
HDRS
../fork.h
DEPENDS
+ libc.hdr.types.pid_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.threads.fork_callbacks
@@ -166,6 +170,8 @@ add_entrypoint_object(
HDRS
../ftruncate.h
DEPENDS
+ libc.hdr.types.off_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -179,6 +185,8 @@ add_entrypoint_object(
HDRS
../getcwd.h
DEPENDS
+ libc.hdr.types.size_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -192,6 +200,8 @@ add_entrypoint_object(
HDRS
../geteuid.h
DEPENDS
+ libc.hdr.types.uid_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -204,6 +214,8 @@ add_entrypoint_object(
HDRS
../getpid.h
DEPENDS
+ libc.hdr.types.pid_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -216,6 +228,8 @@ add_entrypoint_object(
HDRS
../getppid.h
DEPENDS
+ libc.hdr.types.pid_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -228,6 +242,8 @@ add_entrypoint_object(
HDRS
../getuid.h
DEPENDS
+ libc.hdr.types.uid_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -240,6 +256,7 @@ add_entrypoint_object(
HDRS
../isatty.h
DEPENDS
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_ioctl
libc.include.sys_syscall
@@ -282,6 +299,8 @@ add_entrypoint_object(
HDRS
../lseek.h
DEPENDS
+ libc.hdr.types.off_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -349,6 +368,10 @@ add_entrypoint_object(
HDRS
../pread.h
DEPENDS
+ libc.hdr.types.off_t
+ libc.hdr.types.size_t
+ libc.hdr.types.ssize_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -363,6 +386,10 @@ add_entrypoint_object(
HDRS
../pwrite.h
DEPENDS
+ libc.hdr.types.off_t
+ libc.hdr.types.size_t
+ libc.hdr.types.ssize_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -376,6 +403,9 @@ add_entrypoint_object(
HDRS
../read.h
DEPENDS
+ libc.hdr.types.size_t
+ libc.hdr.types.ssize_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -404,6 +434,8 @@ add_entrypoint_object(
HDRS
../readlink.h
DEPENDS
+ libc.hdr.types.size_t
+ libc.hdr.types.ssize_t
libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
@@ -418,6 +450,8 @@ add_entrypoint_object(
HDRS
../readlinkat.h
DEPENDS
+ libc.hdr.types.size_t
+ libc.hdr.types.ssize_t
libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
@@ -485,6 +519,8 @@ add_entrypoint_object(
HDRS
../truncate.h
DEPENDS
+ libc.hdr.types.off_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
@@ -526,6 +562,9 @@ add_entrypoint_object(
HDRS
../write.h
DEPENDS
+ libc.hdr.types.size_t
+ libc.hdr.types.ssize_t
+ libc.hdr.fcntl_macros
libc.include.unistd
libc.include.sys_syscall
libc.src.__support.OSUtil.osutil
diff --git a/libc/src/unistd/linux/ftruncate.cpp b/libc/src/unistd/linux/ftruncate.cpp
index 39cb3b5778faaf..ccbb0634664aad 100644
--- a/libc/src/unistd/linux/ftruncate.cpp
+++ b/libc/src/unistd/linux/ftruncate.cpp
@@ -11,11 +11,11 @@
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/__support/common.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
#include "src/errno/libc_errno.h"
#include <stdint.h> // For uint64_t.
#include <sys/syscall.h> // For syscall numbers.
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/linux/lseek.cpp b/libc/src/unistd/linux/lseek.cpp
index 9486cecf3b1234..0e957498da7460 100644
--- a/libc/src/unistd/linux/lseek.cpp
+++ b/libc/src/unistd/linux/lseek.cpp
@@ -14,8 +14,8 @@
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/__support/common.h"
+#include "hdr/types/off_t.h"
#include <sys/syscall.h> // For syscall numbers.
-#include <unistd.h> // For off_t.
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/linux/sysconf.cpp b/libc/src/unistd/linux/sysconf.cpp
index 1540eb499ec12d..f785ff321c7d7e 100644
--- a/libc/src/unistd/linux/sysconf.cpp
+++ b/libc/src/unistd/linux/sysconf.cpp
@@ -10,11 +10,11 @@
#include "src/__support/common.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
#include "src/errno/libc_errno.h"
#include "src/sys/auxv/getauxval.h"
#include <sys/auxv.h>
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/linux/truncate.cpp b/libc/src/unistd/linux/truncate.cpp
index 283cf4098cf457..8236edb480d108 100644
--- a/libc/src/unistd/linux/truncate.cpp
+++ b/libc/src/unistd/linux/truncate.cpp
@@ -13,9 +13,9 @@
#include "src/__support/macros/config.h"
#include "src/errno/libc_errno.h"
+#include "hdr/unistd_macros.h"
#include <stdint.h> // For uint64_t.
#include <sys/syscall.h> // For syscall numbers.
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/lseek.h b/libc/src/unistd/lseek.h
index a8704ec7058dd2..e8442738dfbd48 100644
--- a/libc/src/unistd/lseek.h
+++ b/libc/src/unistd/lseek.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_LSEEK_H
#define LLVM_LIBC_SRC_UNISTD_LSEEK_H
+#include "hdr/types/off_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/pread.h b/libc/src/unistd/pread.h
index 4723675e82a20a..f8b66c548868e9 100644
--- a/libc/src/unistd/pread.h
+++ b/libc/src/unistd/pread.h
@@ -9,8 +9,11 @@
#ifndef LLVM_LIBC_SRC_UNISTD_PREAD_H
#define LLVM_LIBC_SRC_UNISTD_PREAD_H
+#include "hdr/types/off_t.h"
+#include "hdr/types/size_t.h"
+#include "hdr/types/ssize_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/pwrite.h b/libc/src/unistd/pwrite.h
index baffbe48b64371..08ebb893472140 100644
--- a/libc/src/unistd/pwrite.h
+++ b/libc/src/unistd/pwrite.h
@@ -9,8 +9,11 @@
#ifndef LLVM_LIBC_SRC_UNISTD_PWRITE_H
#define LLVM_LIBC_SRC_UNISTD_PWRITE_H
+#include "hdr/types/off_t.h"
+#include "hdr/types/size_t.h"
+#include "hdr/types/ssize_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/read.h b/libc/src/unistd/read.h
index 01231cb82e35e5..5d3527372558bc 100644
--- a/libc/src/unistd/read.h
+++ b/libc/src/unistd/read.h
@@ -9,8 +9,10 @@
#ifndef LLVM_LIBC_SRC_UNISTD_READ_H
#define LLVM_LIBC_SRC_UNISTD_READ_H
+#include "hdr/types/size_t.h"
+#include "hdr/types/ssize_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/readlink.h b/libc/src/unistd/readlink.h
index a73e9740c74637..b63643e2a7018e 100644
--- a/libc/src/unistd/readlink.h
+++ b/libc/src/unistd/readlink.h
@@ -9,8 +9,10 @@
#ifndef LLVM_LIBC_SRC_UNISTD_READLINK_H
#define LLVM_LIBC_SRC_UNISTD_READLINK_H
+#include "hdr/types/size_t.h"
+#include "hdr/types/ssize_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/readlinkat.h b/libc/src/unistd/readlinkat.h
index 6bdd48b537fc8c..0f5657e45a250e 100644
--- a/libc/src/unistd/readlinkat.h
+++ b/libc/src/unistd/readlinkat.h
@@ -9,8 +9,10 @@
#ifndef LLVM_LIBC_SRC_UNISTD_READLINKAT_H
#define LLVM_LIBC_SRC_UNISTD_READLINKAT_H
+#include "hdr/types/size_t.h"
+#include "hdr/types/ssize_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/swab.h b/libc/src/unistd/swab.h
index caa9c71001097b..f6fa3414c43f55 100644
--- a/libc/src/unistd/swab.h
+++ b/libc/src/unistd/swab.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_SWAB_H
#define LLVM_LIBC_SRC_UNISTD_SWAB_H
+#include "hdr/types/ssize_t.h"
#include "src/__support/macros/config.h"
-#include <unistd.h> // For ssize_t
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/symlink.h b/libc/src/unistd/symlink.h
index 47f04f8845b460..c743a32a8930f9 100644
--- a/libc/src/unistd/symlink.h
+++ b/libc/src/unistd/symlink.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_SYMLINK_H
#define LLVM_LIBC_SRC_UNISTD_SYMLINK_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/symlinkat.h b/libc/src/unistd/symlinkat.h
index 9f8ad517af5a62..6697ce4d537e6a 100644
--- a/libc/src/unistd/symlinkat.h
+++ b/libc/src/unistd/symlinkat.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_SYMLINKAT_H
#define LLVM_LIBC_SRC_UNISTD_SYMLINKAT_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/syscall.h b/libc/src/unistd/syscall.h
index db70745719cfe3..7f82bd8a452f62 100644
--- a/libc/src/unistd/syscall.h
+++ b/libc/src/unistd/syscall.h
@@ -9,9 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_SYSCALL_H
#define LLVM_LIBC_SRC_UNISTD_SYSCALL_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
#include <stdarg.h>
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/sysconf.h b/libc/src/unistd/sysconf.h
index 1b3f39e413508b..470c4d846568c7 100644
--- a/libc/src/unistd/sysconf.h
+++ b/libc/src/unistd/sysconf.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_UNISTD_SYSCONF_H
#define LLVM_LIBC_SRC_UNISTD_SYSCONF_H
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/truncate.h b/libc/src/unistd/truncate.h
index 9ba5cf83175291..1e1066351953e5 100644
--- a/libc/src/unistd/truncate.h
+++ b/libc/src/unistd/truncate.h
@@ -9,8 +9,9 @@
#ifndef LLVM_LIBC_SRC_UNISTD_TRUNCATE_H
#define LLVM_LIBC_SRC_UNISTD_TRUNCATE_H
+#include "hdr/types/off_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/unistd/write.h b/libc/src/unistd/write.h
index e40ce19e21769c..c5ba6bf719aafb 100644
--- a/libc/src/unistd/write.h
+++ b/libc/src/unistd/write.h
@@ -9,8 +9,10 @@
#ifndef LLVM_LIBC_SRC_UNISTD_WRITE_H
#define LLVM_LIBC_SRC_UNISTD_WRITE_H
+#include "hdr/types/size_t.h"
+#include "hdr/types/ssize_t.h"
+#include "hdr/unistd_macros.h"
#include "src/__support/macros/config.h"
-#include <unistd.h>
namespace LIBC_NAMESPACE_DECL {
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 267f7598ff70e6..ebc5c89a1ff571 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
@@ -23,7 +23,7 @@ using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Fails;
using LIBC_NAMESPACE::testing::ErrnoSetterMatcher::Succeeds;
TEST(LlvmLibcRemapFilePagesTest, NoError) {
- size_t page_size = sysconf(_SC_PAGE_SIZE);
+ size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE);
ASSERT_GT(page_size, size_t(0));
// Create a file-backed mapping
@@ -53,7 +53,7 @@ TEST(LlvmLibcRemapFilePagesTest, NoError) {
}
TEST(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) {
- size_t page_size = sysconf(_SC_PAGE_SIZE);
+ size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGE_SIZE);
ASSERT_GT(page_size, size_t(0));
// Create a file-backed mapping
@@ -81,7 +81,7 @@ TEST(LlvmLibcRemapFilePagesTest, ErrorInvalidFlags) {
}
TEST(LlvmLibcRemapFilePagesTest, ErrorInvalidAddress) {
- size_t page_size = sysconf(_SC_PAGESIZE);
+ size_t page_size = LIBC_NAMESPACE::sysconf(_SC_PAGESIZE);
ASSERT_GT(page_size, size_t(0));
// Use an address that we haven't mapped
>From 17c02eb37577eb37ba004f833a270cce82961948 Mon Sep 17 00:00:00 2001
From: Tristan Ross <tristan.ross at midstall.com>
Date: Mon, 16 Dec 2024 19:35:15 -0800
Subject: [PATCH 2/2] [libc] Fix bazel and ssize_t for unistd
---
libc/hdr/types/ssize_t.h | 4 +-
.../llvm-project-overlay/libc/BUILD.bazel | 65 +++++++++++++++++++
2 files changed, 66 insertions(+), 3 deletions(-)
diff --git a/libc/hdr/types/ssize_t.h b/libc/hdr/types/ssize_t.h
index 4d2000780ee11f..7eff98f33c2bbf 100644
--- a/libc/hdr/types/ssize_t.h
+++ b/libc/hdr/types/ssize_t.h
@@ -14,9 +14,7 @@
#else
-#define __need_ssize_t
-#include <stddef.h>
-#undef __need_ssize_t
+#include <sys/types.h>
#endif // LIBC_FULL_BUILD
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 5fea4449e1b9ed..28c336c4dc6231 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -180,6 +180,14 @@ libc_support_library(
],
)
+libc_support_library(
+ name = "hdr_unistd_macros",
+ hdrs = ["hdr/unistd_macros.h"],
+ deps = [
+ ":hdr_unistd_overlay",
+ ],
+)
+
libc_support_library(
name = "hdr_limits_macros",
hdrs = ["hdr/limits_macros.h"],
@@ -195,6 +203,11 @@ libc_support_library(
hdrs = ["hdr/stdlib_overlay.h"],
)
+libc_support_library(
+ name = "hdr_unistd_overlay",
+ hdrs = ["hdr/unistd_overlay.h"],
+)
+
############################ Type Proxy Header Files ###########################
libc_support_library(
@@ -300,6 +313,11 @@ libc_support_library(
hdrs = ["hdr/types/pid_t.h"],
)
+libc_support_library(
+ name = "types_uid_t",
+ hdrs = ["hdr/types/uid_t.h"],
+)
+
libc_support_library(
name = "types_off_t",
hdrs = ["hdr/types/off_t.h"],
@@ -3996,6 +4014,7 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
],
)
@@ -4008,6 +4027,7 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
],
)
@@ -4023,6 +4043,7 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
],
)
@@ -4067,6 +4088,8 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_off_t",
],
)
@@ -4078,6 +4101,8 @@ libc_function(
# ":__support_common",
# ":__support_osutil_syscall",
# ":errno",
+# ":hdr_unistd_macros",
+# ":types_size_t",
# ],
# )
@@ -4089,6 +4114,9 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_size_t",
+ ":types_uid_t",
],
)
@@ -4100,6 +4128,8 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_pid_t",
],
)
@@ -4111,6 +4141,8 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_uid_t",
],
)
@@ -4125,6 +4157,7 @@ libc_function(
# ":__support_file_file",
# ":__support_osutil_syscall",
# ":errno",
+# ":hdr_unistd_macros",
# ],
# )
@@ -4136,6 +4169,7 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
],
)
@@ -4148,6 +4182,7 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
],
)
@@ -4160,6 +4195,7 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
],
)
@@ -4184,6 +4220,8 @@ libc_function(
":__support_file_linux_lseekimpl",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_off_t",
],
)
@@ -4200,6 +4238,10 @@ libc_function(
":__support_macros_sanitizer",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_off_t",
+ ":types_size_t",
+ ":types_ssize_t",
],
)
@@ -4215,6 +4257,10 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_off_t",
+ ":types_size_t",
+ ":types_ssize_t",
],
)
@@ -4228,6 +4274,9 @@ libc_function(
":__support_macros_sanitizer",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_size_t",
+ ":types_ssize_t",
],
)
@@ -4240,6 +4289,9 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
+ ":types_size_t",
+ ":types_ssize_t",
],
)
@@ -4252,6 +4304,9 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
+ ":types_size_t",
+ ":types_ssize_t",
],
)
@@ -4276,6 +4331,7 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
],
)
@@ -4288,6 +4344,7 @@ libc_function(
":__support_osutil_syscall",
":errno",
":hdr_fcntl_macros",
+ ":hdr_unistd_macros",
],
)
@@ -4302,6 +4359,7 @@ libc_function(
# ":__support_common",
# ":__support_osutil_syscall",
# ":errno",
+# ":hdr_unistd_macros",
# ],
# )
@@ -4313,6 +4371,8 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_ssize_t",
],
)
@@ -4324,6 +4384,8 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_off_t",
],
)
@@ -4360,6 +4422,9 @@ libc_function(
":__support_common",
":__support_osutil_syscall",
":errno",
+ ":hdr_unistd_macros",
+ ":types_size_t",
+ ":types_ssize_t",
],
)
More information about the llvm-commits
mailing list