[libc-commits] [clang] [libc] [libc] Support opaque FILE* on baremetal (PR #168931)
Peter Smith via libc-commits
libc-commits at lists.llvm.org
Mon Nov 24 08:08:33 PST 2025
================
@@ -0,0 +1,23 @@
+//===-- Implementation of ferror for baremetal ------------------*- 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
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/stdio/ferror.h"
+
+#include "hdr/types/FILE.h"
+#include "src/__support/common.h"
+#include "src/__support/macros/config.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+LLVM_LIBC_FUNCTION(int, ferror, (::FILE * stream)) {
+ (void)stream;
+ // TODO: Shall we have an embeddeding API for ferror?
----------------
smithp35 wrote:
Difficult to answer the embedding API question without a bit more context. I guess this is aimed the middle-tier described in https://discourse.llvm.org/t/rfc-implementation-of-stdio-on-baremetal/86944
Presumably the state could be tracked internally with some kind of a FILE* -> State structure, or it could be stored in the FILE struct (if needed) and manipulated by an embedding API to set it.
The former would minimise the complexity of the embedding API, at the expense of some flexibility for those that don't need it. It maybe that the size that the extra state takes up is sufficiently small that it isn't worth the complexity.
https://github.com/llvm/llvm-project/pull/168931
More information about the libc-commits
mailing list