* Additional POSIX wrappers (previously missing)
* ================================================================ */
-int fcntl(int fd, int cmd, ...) {
- va_list ap;
- va_start(ap, cmd);
- int arg = va_arg(ap, int);
- va_end(ap);
- return _check(_sc3(SYS_FCNTL, fd, cmd, arg));
-}
-
int rename(const char *oldpath, const char *newpath) {
return _check(_sc2(SYS_RENAME, (int)oldpath, (int)newpath));
}
--- /dev/null
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * All rights reserved.
+ * See LICENSE for details.
+ *
+ * Source: https://github.com/tadryanom/AdrOS
+ */
+
+/* sys/uio.h — Scatter/gather I/O (POSIX compat header for AdrOS/newlib) */
+
+#ifndef _SYS_UIO_H
+#define _SYS_UIO_H
+
+#include <stddef.h>
+
+struct iovec {
+ void *iov_base;
+ size_t iov_len;
+};
+
+ssize_t readv(int fd, const struct iovec *iov, int iovcnt);
+ssize_t writev(int fd, const struct iovec *iov, int iovcnt);
+
+#endif
step "Patched libgloss/configure.ac"
fi
- # Copy/sync our libgloss/adros stubs into the Newlib source tree
+ # Create libgloss/adros directory and autoconf files if not present
mkdir -p "$d/libgloss/adros"
- cp -u "$ADROS_ROOT/newlib/libgloss/adros/"*.c "$ADROS_ROOT/newlib/libgloss/adros/"*.S "$d/libgloss/adros/" 2>/dev/null || true
- step "Synced libgloss/adros/ stubs"
-
- # Create libgloss/adros autoconf files if not present
if [[ ! -f "$d/libgloss/adros/configure.in" ]]; then
cat > "$d/libgloss/adros/configure.in" <<'EOF'
dnl AdrOS libgloss configure
patch_newlib
patch_bash
+# Always sync libgloss/adros source files (even if patches are already applied)
+# so that edits to our stubs are picked up on rebuild.
+_gloss_dir="$SRC_DIR/newlib-${NEWLIB_VER}/libgloss/adros"
+mkdir -p "$_gloss_dir"
+cp -f "$ADROS_ROOT/newlib/libgloss/adros/"*.c "$ADROS_ROOT/newlib/libgloss/adros/"*.S "$_gloss_dir/" 2>/dev/null || true
+step "Synced libgloss/adros/ stubs (forced)"
+
# ==================================================================
# STEP 1: Build Binutils
# ==================================================================