[libc] [llvm] Reland: [libc] Move off_t and stdio macros to proxy hdrs (PR #98384)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 10 13:50:49 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: Michael Jones (michaelrj-google)
<details>
<summary>Changes</summary>
reland of https://github.com/llvm/llvm-project/pull/98215
Additionally adds proxy headers for FILE and the fopencookie types
The arm32 build has been failing due to redefinitions of the off_t type.
This patch fixes this by moving off_t to a proper proxy header. To do
this, it also moves stdio macros to a proxy header to hopefully avoid
including this proxy header alongside this public stdio.h.
---
Patch is 70.90 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/98384.diff
140 Files Affected:
- (modified) libc/config/gpu/api.td (-5)
- (modified) libc/config/linux/api.td (-3)
- (modified) libc/hdr/CMakeLists.txt (+10)
- (added) libc/hdr/stdio_macros.h (+23)
- (modified) libc/hdr/types/CMakeLists.txt (+27)
- (added) libc/hdr/types/FILE.h (+22)
- (added) libc/hdr/types/cookie_io_functions_t.h (+22)
- (added) libc/hdr/types/off_t.h (+22)
- (modified) libc/include/llvm-libc-macros/stdio-macros.h (+4)
- (modified) libc/newhdrgen/yaml/stdio.yaml (-6)
- (modified) libc/src/__support/File/CMakeLists.txt (+2)
- (modified) libc/src/__support/File/file.cpp (+2-3)
- (modified) libc/src/__support/File/file.h (+2-1)
- (modified) libc/src/__support/File/linux/CMakeLists.txt (+10)
- (modified) libc/src/__support/File/linux/file.cpp (+3-2)
- (modified) libc/src/__support/File/linux/file.h (+1)
- (modified) libc/src/__support/File/linux/lseekImpl.h (+1-1)
- (modified) libc/src/__support/File/linux/stderr.cpp (+2-1)
- (modified) libc/src/__support/File/linux/stdin.cpp (+2-1)
- (modified) libc/src/__support/File/linux/stdout.cpp (+2-1)
- (modified) libc/src/__support/OSUtil/linux/CMakeLists.txt (+1)
- (modified) libc/src/__support/OSUtil/linux/fcntl.cpp (+1)
- (modified) libc/src/gpu/rpc_fprintf.h (+1-1)
- (modified) libc/src/stdio/CMakeLists.txt (+11-5)
- (modified) libc/src/stdio/baremetal/getchar.cpp (+1-1)
- (modified) libc/src/stdio/baremetal/printf.cpp (+1)
- (modified) libc/src/stdio/baremetal/vprintf.cpp (+1)
- (modified) libc/src/stdio/clearerr.h (+1-1)
- (modified) libc/src/stdio/clearerr_unlocked.h (+1-1)
- (modified) libc/src/stdio/fclose.h (+1-1)
- (modified) libc/src/stdio/fdopen.h (+2-2)
- (modified) libc/src/stdio/feof.h (+1-1)
- (modified) libc/src/stdio/feof_unlocked.h (+1-1)
- (modified) libc/src/stdio/ferror.h (+1-1)
- (modified) libc/src/stdio/ferror_unlocked.h (+1-1)
- (modified) libc/src/stdio/fflush.h (+1-1)
- (modified) libc/src/stdio/fgetc.h (+1-1)
- (modified) libc/src/stdio/fgetc_unlocked.h (+1-1)
- (modified) libc/src/stdio/fgets.h (+1-1)
- (modified) libc/src/stdio/flockfile.cpp (+1-1)
- (modified) libc/src/stdio/flockfile.h (+1-1)
- (modified) libc/src/stdio/fopen.h (+1-1)
- (modified) libc/src/stdio/fopencookie.cpp (+4-2)
- (modified) libc/src/stdio/fopencookie.h (+2-1)
- (modified) libc/src/stdio/fprintf.cpp (+1-1)
- (modified) libc/src/stdio/fprintf.h (+1-1)
- (modified) libc/src/stdio/fputc.h (+1-1)
- (modified) libc/src/stdio/fputs.h (+1-1)
- (modified) libc/src/stdio/fread.h (+2-1)
- (modified) libc/src/stdio/fread_unlocked.h (+2-1)
- (modified) libc/src/stdio/fscanf.cpp (+1-1)
- (modified) libc/src/stdio/fscanf.h (+1-1)
- (modified) libc/src/stdio/fseek.h (+1-1)
- (modified) libc/src/stdio/fseeko.h (+2-1)
- (modified) libc/src/stdio/ftell.h (+1-1)
- (modified) libc/src/stdio/ftello.h (+2-1)
- (modified) libc/src/stdio/funlockfile.cpp (+1-1)
- (modified) libc/src/stdio/funlockfile.h (+1-1)
- (modified) libc/src/stdio/fwrite.h (+2-1)
- (modified) libc/src/stdio/fwrite_unlocked.h (+2-1)
- (modified) libc/src/stdio/generic/CMakeLists.txt (+30-30)
- (modified) libc/src/stdio/generic/clearerr.cpp (+1-1)
- (modified) libc/src/stdio/generic/clearerr_unlocked.cpp (+1-1)
- (modified) libc/src/stdio/generic/fclose.cpp (+1-1)
- (modified) libc/src/stdio/generic/feof.cpp (+1-1)
- (modified) libc/src/stdio/generic/feof_unlocked.cpp (+1-1)
- (modified) libc/src/stdio/generic/ferror.cpp (+1-1)
- (modified) libc/src/stdio/generic/ferror_unlocked.cpp (+1-1)
- (modified) libc/src/stdio/generic/fflush.cpp (+1-1)
- (modified) libc/src/stdio/generic/fgetc.cpp (+2-1)
- (modified) libc/src/stdio/generic/fgetc_unlocked.cpp (+2-1)
- (modified) libc/src/stdio/generic/fgets.cpp (+1-1)
- (modified) libc/src/stdio/generic/fopen.cpp (+1-1)
- (modified) libc/src/stdio/generic/fputc.cpp (+2-1)
- (modified) libc/src/stdio/generic/fputs.cpp (+2-1)
- (modified) libc/src/stdio/generic/fread.cpp (+2-1)
- (modified) libc/src/stdio/generic/fread_unlocked.cpp (+2-1)
- (modified) libc/src/stdio/generic/fwrite.cpp (+2-1)
- (modified) libc/src/stdio/generic/fwrite_unlocked.cpp (+2-1)
- (modified) libc/src/stdio/generic/getc.cpp (+2-1)
- (modified) libc/src/stdio/generic/getc_unlocked.cpp (+2-1)
- (modified) libc/src/stdio/generic/getchar.cpp (+1-1)
- (modified) libc/src/stdio/generic/getchar_unlocked.cpp (+1-1)
- (modified) libc/src/stdio/generic/printf.cpp (+1-1)
- (modified) libc/src/stdio/generic/putc.cpp (+2-1)
- (modified) libc/src/stdio/generic/putchar.cpp (+2-1)
- (modified) libc/src/stdio/generic/puts.cpp (+2-1)
- (modified) libc/src/stdio/generic/stderr.cpp (+1-1)
- (modified) libc/src/stdio/generic/stdin.cpp (+1-1)
- (modified) libc/src/stdio/generic/stdout.cpp (+1-1)
- (modified) libc/src/stdio/generic/ungetc.cpp (+1-1)
- (modified) libc/src/stdio/generic/vprintf.cpp (+1-1)
- (modified) libc/src/stdio/getc.h (+1-1)
- (modified) libc/src/stdio/getc_unlocked.h (+1-1)
- (modified) libc/src/stdio/gpu/CMakeLists.txt (+30-57)
- (modified) libc/src/stdio/gpu/clearerr.cpp (+1-1)
- (modified) libc/src/stdio/gpu/fclose.cpp (+2-1)
- (modified) libc/src/stdio/gpu/feof.cpp (+1-1)
- (modified) libc/src/stdio/gpu/ferror.cpp (+1-1)
- (modified) libc/src/stdio/gpu/fflush.cpp (+1-1)
- (modified) libc/src/stdio/gpu/fgetc.cpp (+2-1)
- (modified) libc/src/stdio/gpu/fgets.cpp (+2-1)
- (modified) libc/src/stdio/gpu/file.h (+3-1)
- (modified) libc/src/stdio/gpu/fopen.cpp (+1-1)
- (modified) libc/src/stdio/gpu/fputc.cpp (+3-2)
- (modified) libc/src/stdio/gpu/fputs.cpp (+2-1)
- (modified) libc/src/stdio/gpu/fread.cpp (+1-1)
- (modified) libc/src/stdio/gpu/fseek.cpp (+1-1)
- (modified) libc/src/stdio/gpu/ftell.cpp (+1-1)
- (modified) libc/src/stdio/gpu/fwrite.cpp (+1-1)
- (modified) libc/src/stdio/gpu/getc.cpp (+2-1)
- (modified) libc/src/stdio/gpu/getchar.cpp (+4-1)
- (modified) libc/src/stdio/gpu/putc.cpp (+2-1)
- (modified) libc/src/stdio/gpu/putchar.cpp (+5-2)
- (modified) libc/src/stdio/gpu/puts.cpp (+4-1)
- (modified) libc/src/stdio/gpu/remove.cpp (+1-1)
- (modified) libc/src/stdio/gpu/stderr.cpp (+1-1)
- (modified) libc/src/stdio/gpu/stdin.cpp (+1-1)
- (modified) libc/src/stdio/gpu/stdout.cpp (+1-1)
- (modified) libc/src/stdio/gpu/ungetc.cpp (+1-1)
- (modified) libc/src/stdio/printf.h (+1-1)
- (modified) libc/src/stdio/printf_core/vfprintf_internal.h (+1-1)
- (modified) libc/src/stdio/putc.h (+1-1)
- (modified) libc/src/stdio/remove.h (+1-1)
- (modified) libc/src/stdio/scanf.cpp (+1-1)
- (modified) libc/src/stdio/scanf_core/vfscanf_internal.h (+2-1)
- (modified) libc/src/stdio/setbuf.cpp (+1-2)
- (modified) libc/src/stdio/setbuf.h (+1-1)
- (modified) libc/src/stdio/setvbuf.cpp (+2-1)
- (modified) libc/src/stdio/setvbuf.h (+2-1)
- (modified) libc/src/stdio/sscanf.cpp (+2-1)
- (modified) libc/src/stdio/ungetc.h (+1-1)
- (modified) libc/src/stdio/vfprintf.cpp (+1-1)
- (modified) libc/src/stdio/vfprintf.h (+1-1)
- (modified) libc/src/stdio/vprintf.h (+1-1)
- (modified) libc/src/unistd/getopt.cpp (+1-1)
- (modified) libc/src/unistd/getopt.h (+1-1)
- (modified) libc/src/wchar/btowc.cpp (+1-1)
- (modified) libc/src/wchar/wctob.cpp (+1-1)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+13)
``````````diff
diff --git a/libc/config/gpu/api.td b/libc/config/gpu/api.td
index 523ad49ffa3fd..21ddbb95b70c9 100644
--- a/libc/config/gpu/api.td
+++ b/libc/config/gpu/api.td
@@ -59,11 +59,6 @@ def FenvAPI: PublicAPI<"fenv.h"> {
}
def StdIOAPI : PublicAPI<"stdio.h"> {
- let Macros = [
- SimpleMacroDef<"_IOFBF", "0">,
- SimpleMacroDef<"_IOLBF", "1">,
- SimpleMacroDef<"_IONBF", "2">,
- ];
let Types = [
"FILE",
"off_t",
diff --git a/libc/config/linux/api.td b/libc/config/linux/api.td
index eb0090c80b0da..60e9b70f0d8a4 100644
--- a/libc/config/linux/api.td
+++ b/libc/config/linux/api.td
@@ -76,9 +76,6 @@ def StdIOAPI : PublicAPI<"stdio.h"> {
SimpleMacroDef<"stderr", "stderr">,
SimpleMacroDef<"stdin", "stdin">,
SimpleMacroDef<"stdout", "stdout">,
- SimpleMacroDef<"_IOFBF", "0">,
- SimpleMacroDef<"_IOLBF", "1">,
- SimpleMacroDef<"_IONBF", "2">,
];
let Types = [
"FILE",
diff --git a/libc/hdr/CMakeLists.txt b/libc/hdr/CMakeLists.txt
index 1303280c2c5ef..da640e8c0f70c 100644
--- a/libc/hdr/CMakeLists.txt
+++ b/libc/hdr/CMakeLists.txt
@@ -69,6 +69,16 @@ add_proxy_header_library(
libc.include.signal
)
+add_proxy_header_library(
+ stdio_macros
+ HDRS
+ stdio_macros.h
+ FULL_BUILD_DEPENDS
+ libc.include.stdio
+ libc.include.llvm-libc-macros.stdio_macros
+ libc.include.llvm-libc-macros.file_seek_macros
+)
+
add_proxy_header_library(
sys_epoll_macros
HDRS
diff --git a/libc/hdr/stdio_macros.h b/libc/hdr/stdio_macros.h
new file mode 100644
index 0000000000000..a212846dd8f41
--- /dev/null
+++ b/libc/hdr/stdio_macros.h
@@ -0,0 +1,23 @@
+//===-- Definition of macros from stdio.h --------------------------------===//
+//
+// 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_STDIO_MACROS_H
+#define LLVM_LIBC_HDR_STDIO_MACROS_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-macros/file-seek-macros.h"
+#include "include/llvm-libc-macros/stdio-macros.h"
+
+#else // Overlay mode
+
+#include <stdio.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_STDIO_MACROS_H
diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt
index 1cab1d3b812cf..4fc28fd82e68d 100644
--- a/libc/hdr/types/CMakeLists.txt
+++ b/libc/hdr/types/CMakeLists.txt
@@ -135,3 +135,30 @@ add_proxy_header_library(
libc.include.llvm-libc-types.struct_sigaction
libc.include.signal
)
+
+add_proxy_header_library(
+ FILE
+ HDRS
+ FILE.h
+ FULL_BUILD_DEPENDS
+ libc.include.llvm-libc-types.FILE
+ libc.include.stdio
+)
+
+add_proxy_header_library(
+ off_t
+ HDRS
+ off_t.h
+ FULL_BUILD_DEPENDS
+ libc.include.llvm-libc-types.off_t
+ libc.include.stdio
+)
+
+add_proxy_header_library(
+ cookie_io_functions_t
+ HDRS
+ cookie_io_functions_t.h
+ FULL_BUILD_DEPENDS
+ libc.include.llvm-libc-types.cookie_io_functions_t
+ libc.include.stdio
+)
diff --git a/libc/hdr/types/FILE.h b/libc/hdr/types/FILE.h
new file mode 100644
index 0000000000000..60e95f07e37f9
--- /dev/null
+++ b/libc/hdr/types/FILE.h
@@ -0,0 +1,22 @@
+//===-- Proxy for FILE ----------------------------------------------------===//
+//
+// 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_FILE_H
+#define LLVM_LIBC_HDR_TYPES_FILE_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/FILE.h"
+
+#else // Overlay mode
+
+#include <stdio.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_FILE_H
diff --git a/libc/hdr/types/cookie_io_functions_t.h b/libc/hdr/types/cookie_io_functions_t.h
new file mode 100644
index 0000000000000..d8fe7731a84bd
--- /dev/null
+++ b/libc/hdr/types/cookie_io_functions_t.h
@@ -0,0 +1,22 @@
+//===-- Proxy for cookie_io_functions_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_COOKIE_IO_FUNCTIONS_T_H
+#define LLVM_LIBC_HDR_TYPES_COOKIE_IO_FUNCTIONS_T_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/cookie_io_functions_t.h"
+
+#else // Overlay mode
+
+#include <stdio.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_COOKIE_IO_FUNCTIONS_T_H
diff --git a/libc/hdr/types/off_t.h b/libc/hdr/types/off_t.h
new file mode 100644
index 0000000000000..abc3aa659365f
--- /dev/null
+++ b/libc/hdr/types/off_t.h
@@ -0,0 +1,22 @@
+//===-- Proxy for off_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_OFF_T_H
+#define LLVM_LIBC_HDR_TYPES_OFF_T_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/off_t.h"
+
+#else // Overlay mode
+
+#include <stdio.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_OFF_T_H
diff --git a/libc/include/llvm-libc-macros/stdio-macros.h b/libc/include/llvm-libc-macros/stdio-macros.h
index 4664801c5731f..69fb71ad3f651 100644
--- a/libc/include/llvm-libc-macros/stdio-macros.h
+++ b/libc/include/llvm-libc-macros/stdio-macros.h
@@ -15,4 +15,8 @@
#define BUFSIZ 1024
+#define _IONBF 2
+#define _IOLBF 1
+#define _IOFBF 0
+
#endif // LLVM_LIBC_MACROS_STDIO_MACROS_H
diff --git a/libc/newhdrgen/yaml/stdio.yaml b/libc/newhdrgen/yaml/stdio.yaml
index 6d2a8557f9b94..687a6d696cad6 100644
--- a/libc/newhdrgen/yaml/stdio.yaml
+++ b/libc/newhdrgen/yaml/stdio.yaml
@@ -1,11 +1,5 @@
header: stdio.h
macros:
- - macro_name: _IONBF
- macro_value: 2
- - macro_name: _IOLBF
- macro_value: 1
- - macro_name: _IOFBF
- macro_value: 0
- macro_name: stdout
macro_value: stdout
- macro_name: stdin
diff --git a/libc/src/__support/File/CMakeLists.txt b/libc/src/__support/File/CMakeLists.txt
index 0416ac2cc902e..1b390a12424d0 100644
--- a/libc/src/__support/File/CMakeLists.txt
+++ b/libc/src/__support/File/CMakeLists.txt
@@ -16,6 +16,8 @@ add_object_library(
libc.src.__support.CPP.span
libc.src.__support.threads.mutex
libc.src.__support.error_or
+ libc.hdr.types.off_t
+ libc.hdr.stdio_macros
)
add_object_library(
diff --git a/libc/src/__support/File/file.cpp b/libc/src/__support/File/file.cpp
index 0b1a8cac21f77..08052f8d0a328 100644
--- a/libc/src/__support/File/file.cpp
+++ b/libc/src/__support/File/file.cpp
@@ -8,13 +8,12 @@
#include "file.h"
+#include "hdr/stdio_macros.h"
+#include "hdr/types/off_t.h"
#include "src/__support/CPP/new.h"
#include "src/__support/CPP/span.h"
#include "src/errno/libc_errno.h" // For error macros
-#include <stdio.h>
-#include <stdlib.h>
-
namespace LIBC_NAMESPACE {
FileIOResult File::write_unlocked(const void *data, size_t len) {
diff --git a/libc/src/__support/File/file.h b/libc/src/__support/File/file.h
index cc82a7ecc9745..d804289702540 100644
--- a/libc/src/__support/File/file.h
+++ b/libc/src/__support/File/file.h
@@ -9,7 +9,8 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_FILE_FILE_H
#define LLVM_LIBC_SRC___SUPPORT_FILE_FILE_H
-#include "include/llvm-libc-types/off_t.h"
+#include "hdr/stdio_macros.h"
+#include "hdr/types/off_t.h"
#include "src/__support/CPP/new.h"
#include "src/__support/error_or.h"
#include "src/__support/macros/properties/architectures.h"
diff --git a/libc/src/__support/File/linux/CMakeLists.txt b/libc/src/__support/File/linux/CMakeLists.txt
index 8436a687116bd..5556b812596f8 100644
--- a/libc/src/__support/File/linux/CMakeLists.txt
+++ b/libc/src/__support/File/linux/CMakeLists.txt
@@ -5,6 +5,7 @@ add_object_library(
file.cpp
HDRS
file.h
+ lseekImpl.h
DEPENDS
libc.include.fcntl
libc.include.stdio
@@ -15,6 +16,9 @@ add_object_library(
libc.src.errno.errno
libc.src.__support.error_or
libc.src.__support.File.file
+ libc.hdr.types.off_t
+ libc.hdr.types.FILE
+ libc.hdr.stdio_macros
)
add_object_library(
@@ -23,6 +27,8 @@ add_object_library(
stdout.cpp
DEPENDS
.file
+ libc.hdr.types.FILE
+ libc.hdr.stdio_macros
)
add_object_library(
@@ -31,6 +37,8 @@ add_object_library(
stdin.cpp
DEPENDS
.file
+ libc.hdr.types.FILE
+ libc.hdr.stdio_macros
)
add_object_library(
@@ -39,6 +47,8 @@ add_object_library(
stderr.cpp
DEPENDS
.file
+ libc.hdr.types.FILE
+ libc.hdr.stdio_macros
)
add_object_library(
diff --git a/libc/src/__support/File/linux/file.cpp b/libc/src/__support/File/linux/file.cpp
index 0f6ed4f0a5ef4..df68570bc1043 100644
--- a/libc/src/__support/File/linux/file.cpp
+++ b/libc/src/__support/File/linux/file.cpp
@@ -8,6 +8,8 @@
#include "file.h"
+#include "hdr/stdio_macros.h"
+#include "hdr/types/off_t.h"
#include "src/__support/CPP/new.h"
#include "src/__support/File/file.h"
#include "src/__support/File/linux/lseekImpl.h"
@@ -15,8 +17,7 @@
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/errno/libc_errno.h" // For error macros
-#include <fcntl.h> // For mode_t and other flags to the open syscall
-#include <stdio.h>
+#include <fcntl.h> // For mode_t and other flags to the open syscall
#include <sys/stat.h> // For S_IS*, S_IF*, and S_IR* flags.
#include <sys/syscall.h> // For syscall numbers
diff --git a/libc/src/__support/File/linux/file.h b/libc/src/__support/File/linux/file.h
index 63b820529932b..0507109e6793f 100644
--- a/libc/src/__support/File/linux/file.h
+++ b/libc/src/__support/File/linux/file.h
@@ -6,6 +6,7 @@
//
//===----------------------------------------------------------------------===//
+#include "hdr/types/off_t.h"
#include "src/__support/File/file.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/__support/File/linux/lseekImpl.h b/libc/src/__support/File/linux/lseekImpl.h
index d1632b703d3bc..af015a2fd6a70 100644
--- a/libc/src/__support/File/linux/lseekImpl.h
+++ b/libc/src/__support/File/linux/lseekImpl.h
@@ -9,6 +9,7 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_FILE_LINUX_LSEEKIMPL_H
#define LLVM_LIBC_SRC___SUPPORT_FILE_LINUX_LSEEKIMPL_H
+#include "hdr/types/off_t.h"
#include "src/__support/OSUtil/syscall.h" // For internal syscall function.
#include "src/__support/common.h"
#include "src/__support/error_or.h"
@@ -16,7 +17,6 @@
#include <stdint.h> // For uint64_t.
#include <sys/syscall.h> // For syscall numbers.
-#include <unistd.h> // For off_t.
namespace LIBC_NAMESPACE {
namespace internal {
diff --git a/libc/src/__support/File/linux/stderr.cpp b/libc/src/__support/File/linux/stderr.cpp
index 65d7865720ffe..0b4b207329fff 100644
--- a/libc/src/__support/File/linux/stderr.cpp
+++ b/libc/src/__support/File/linux/stderr.cpp
@@ -7,7 +7,8 @@
//===----------------------------------------------------------------------===//
#include "file.h"
-#include <stdio.h>
+#include "hdr/stdio_macros.h"
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/__support/File/linux/stdin.cpp b/libc/src/__support/File/linux/stdin.cpp
index c9a363bb7c65a..49146dacfd4ac 100644
--- a/libc/src/__support/File/linux/stdin.cpp
+++ b/libc/src/__support/File/linux/stdin.cpp
@@ -7,7 +7,8 @@
//===----------------------------------------------------------------------===//
#include "file.h"
-#include <stdio.h>
+#include "hdr/stdio_macros.h"
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/__support/File/linux/stdout.cpp b/libc/src/__support/File/linux/stdout.cpp
index 314692ecbfe1e..58caf85b5167f 100644
--- a/libc/src/__support/File/linux/stdout.cpp
+++ b/libc/src/__support/File/linux/stdout.cpp
@@ -7,7 +7,8 @@
//===----------------------------------------------------------------------===//
#include "file.h"
-#include <stdio.h>
+#include "hdr/stdio_macros.h"
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/__support/OSUtil/linux/CMakeLists.txt b/libc/src/__support/OSUtil/linux/CMakeLists.txt
index 78b117fd19439..089cad454d534 100644
--- a/libc/src/__support/OSUtil/linux/CMakeLists.txt
+++ b/libc/src/__support/OSUtil/linux/CMakeLists.txt
@@ -21,4 +21,5 @@ add_object_library(
libc.hdr.types.struct_flock
libc.hdr.types.struct_flock64
libc.hdr.types.struct_f_owner_ex
+ libc.hdr.types.off_t
)
diff --git a/libc/src/__support/OSUtil/linux/fcntl.cpp b/libc/src/__support/OSUtil/linux/fcntl.cpp
index b6483bb7534d6..d5e850a904703 100644
--- a/libc/src/__support/OSUtil/linux/fcntl.cpp
+++ b/libc/src/__support/OSUtil/linux/fcntl.cpp
@@ -9,6 +9,7 @@
#include "src/__support/OSUtil/fcntl.h"
#include "hdr/fcntl_macros.h"
+#include "hdr/types/off_t.h"
#include "hdr/types/struct_f_owner_ex.h"
#include "hdr/types/struct_flock.h"
#include "hdr/types/struct_flock64.h"
diff --git a/libc/src/gpu/rpc_fprintf.h b/libc/src/gpu/rpc_fprintf.h
index 053f7b4f818ae..3292ce2d4b1ec 100644
--- a/libc/src/gpu/rpc_fprintf.h
+++ b/libc/src/gpu/rpc_fprintf.h
@@ -9,8 +9,8 @@
#ifndef LLVM_LIBC_SRC_GPU_RPC_HOST_CALL_H
#define LLVM_LIBC_SRC_GPU_RPC_HOST_CALL_H
+#include "hdr/types/FILE.h"
#include <stddef.h>
-#include <stdio.h>
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/CMakeLists.txt b/libc/src/stdio/CMakeLists.txt
index a659d9e847a9e..91b3a864042b9 100644
--- a/libc/src/stdio/CMakeLists.txt
+++ b/libc/src/stdio/CMakeLists.txt
@@ -37,7 +37,7 @@ add_entrypoint_object(
HDRS
flockfile.h
DEPENDS
- libc.include.stdio
+ libc.hdr.types.FILE
libc.src.__support.File.file
libc.src.__support.File.platform_file
)
@@ -49,7 +49,7 @@ add_entrypoint_object(
HDRS
funlockfile.h
DEPENDS
- libc.include.stdio
+ libc.hdr.types.FILE
libc.src.__support.File.file
libc.src.__support.File.platform_file
)
@@ -61,7 +61,10 @@ add_entrypoint_object(
HDRS
fopencookie.h
DEPENDS
- libc.include.stdio
+ libc.hdr.stdio_macros
+ libc.hdr.types.off_t
+ libc.hdr.types.cookie_io_functions_t
+ libc.hdr.types.FILE
libc.src.__support.CPP.new
libc.src.__support.File.file
)
@@ -74,7 +77,7 @@ add_entrypoint_object(
setbuf.h
DEPENDS
libc.src.errno.errno
- libc.include.stdio
+ libc.hdr.types.off_t
libc.src.__support.File.file
libc.src.__support.File.platform_file
)
@@ -87,7 +90,7 @@ add_entrypoint_object(
setvbuf.h
DEPENDS
libc.src.errno.errno
- libc.include.stdio
+ libc.hdr.types.FILE
libc.src.__support.File.file
libc.src.__support.File.platform_file
)
@@ -95,6 +98,7 @@ add_entrypoint_object(
list(APPEND scanf_deps
libc.src.__support.arg_list
libc.src.stdio.scanf_core.vfscanf_internal
+ libc.hdr.types.FILE
)
if(LLVM_LIBC_FULL_BUILD)
@@ -166,6 +170,7 @@ add_entrypoint_object(
HDRS
fprintf.h
DEPENDS
+ libc.hdr.types.FILE
libc.src.__support.arg_list
libc.src.stdio.printf_core.vfprintf_internal
)
@@ -199,6 +204,7 @@ add_entrypoint_object(
HDRS
vfprintf.h
DEPENDS
+ libc.hdr.types.FILE
libc.src.__support.arg_list
libc.src.stdio.printf_core.vfprintf_internal
)
diff --git a/libc/src/stdio/baremetal/getchar.cpp b/libc/src/stdio/baremetal/getchar.cpp
index bbd5ba7a954fb..0cd7c59b495dd 100644
--- a/libc/src/stdio/baremetal/getchar.cpp
+++ b/libc/src/stdio/baremetal/getchar.cpp
@@ -9,7 +9,7 @@
#include "src/stdio/getchar.h"
#include "src/__support/OSUtil/io.h"
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/baremetal/printf.cpp b/libc/src/stdio/baremetal/printf.cpp
index b240371a0c20e..dfc3c0b853959 100644
--- a/libc/src/stdio/baremetal/printf.cpp
+++ b/libc/src/stdio/baremetal/printf.cpp
@@ -14,6 +14,7 @@
#include "src/stdio/printf_core/writer.h"
#include <stdarg.h>
+#include <stddef.h>
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/baremetal/vprintf.cpp b/libc/src/stdio/baremetal/vprintf.cpp
index cd1541297f3b6..203ec18efb657 100644
--- a/libc/src/stdio/baremetal/vprintf.cpp
+++ b/libc/src/stdio/baremetal/vprintf.cpp
@@ -14,6 +14,7 @@
#include "src/stdio/printf_core/writer.h"
#include <stdarg.h>
+#include <stddef.h>
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/clearerr.h b/libc/src/stdio/clearerr.h
index b8e8d7c5cab82..2b3418037c433 100644
--- a/libc/src/stdio/clearerr.h
+++ b/libc/src/stdio/clearerr.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_CLEARERR_H
#define LLVM_LIBC_SRC_STDIO_CLEARERR_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/clearerr_unlocked.h b/libc/src/stdio/clearerr_unlocked.h
index ff447cea61370..05ddbdd1d7af1 100644
--- a/libc/src/stdio/clearerr_unlocked.h
+++ b/libc/src/stdio/clearerr_unlocked.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_CLEARERR_UNLOCKED_H
#define LLVM_LIBC_SRC_STDIO_CLEARERR_UNLOCKED_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/fclose.h b/libc/src/stdio/fclose.h
index 7fe6951a080dc..731e3581d8fd1 100644
--- a/libc/src/stdio/fclose.h
+++ b/libc/src/stdio/fclose.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_FCLOSE_H
#define LLVM_LIBC_SRC_STDIO_FCLOSE_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/fdopen.h b/libc/src/stdio/fdopen.h
index 158a133e7e131..29028b8ab5ed3 100644
--- a/libc/src/stdio/fdopen.h
+++ b/libc/src/stdio/fdopen.h
@@ -9,11 +9,11 @@
#ifndef LLVM_LIBC_SRC_STDIO_FDOPEN_H
#define LLVM_LIBC_SRC_STDIO_FDOPEN_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
-FILE *fdopen(int fd, const char *mode);
+::FILE *fdopen(int fd, const char *mode);
} // namespace LIBC_NAMESPACE
diff --git a/libc/src/stdio/feof.h b/libc/src/stdio/feof.h
index 66a49bdd25701..3d47db6993e1f 100644
--- a/libc/src/stdio/feof.h
+++ b/libc/src/stdio/feof.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_FEOF_H
#define LLVM_LIBC_SRC_STDIO_FEOF_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/feof_unlocked.h b/libc/src/stdio/feof_unlocked.h
index 359609c597900..6eae427992698 100644
--- a/libc/src/stdio/feof_unlocked.h
+++ b/libc/src/stdio/feof_unlocked.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_FEOF_UNLOCKED_H
#define LLVM_LIBC_SRC_STDIO_FEOF_UNLOCKED_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/ferror.h b/libc/src/stdio/ferror.h
index 194dff6320c83..9e2f949bf30e5 100644
--- a/libc/src/stdio/ferror.h
+++ b/libc/src/stdio/ferror.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_FERROR_H
#define LLVM_LIBC_SRC_STDIO_FERROR_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/ferror_unlocked.h b/libc/src/stdio/ferror_unlocked.h
index 86281025368c3..16cfd5a1b1482 100644
--- a/libc/src/stdio/ferror_unlocked.h
+++ b/libc/src/stdio/ferror_unlocked.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_FERROR_UNLOCKED_H
#define LLVM_LIBC_SRC_STDIO_FERROR_UNLOCKED_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/fflush.h b/libc/src/stdio/fflush.h
index 839fd986f15b5..d64d5264cf7dd 100644
--- a/libc/src/stdio/fflush.h
+++ b/libc/src/stdio/fflush.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC_SRC_STDIO_FFLUSH_H
#define LLVM_LIBC_SRC_STDIO_FFLUSH_H
-#include <stdio.h>
+#include "hdr/types/FILE.h"
namespace LIBC_NAMESPACE {
diff --git a/libc/src/stdio/fgetc.h b/libc/src/stdio/fgetc.h
index 26a32482a3ba7..f88d759d549ec 100644
--- a/libc/src/stdio/fgetc.h
+++ b/libc/src/stdio/fgetc.h
@@ -9,7 +9,7 @@
#ifndef LLVM_LIBC...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/98384
More information about the llvm-commits
mailing list