[PUSHED] amdgcn: Implement 'creat'

Message ID 20260413213957.2946445-1-tschwinge@baylibre.com
State New
Headers
Series [PUSHED] amdgcn: Implement 'creat' |

Commit Message

Thomas Schwinge April 13, 2026, 9:39 p.m. UTC
  ... via the existing (stub) 'open' implementation; some code would like to
'creat' instead of 'open'ing with the applicable flags.
---
 newlib/Makefile.in                  | 23 +++++++++++++++++++++--
 newlib/libc/sys/amdgcn/Makefile.inc |  2 +-
 newlib/libc/sys/amdgcn/creat.c      |  7 +++++++
 3 files changed, 29 insertions(+), 3 deletions(-)
 create mode 100644 newlib/libc/sys/amdgcn/creat.c
  

Patch

diff --git a/newlib/Makefile.in b/newlib/Makefile.in
index e364dcddd2..9abc9178d1 100644
--- a/newlib/Makefile.in
+++ b/newlib/Makefile.in
@@ -562,7 +562,7 @@  check_PROGRAMS =
 @HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@am__append_43 = \
 @HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/close.c libc/sys/amdgcn/fstat.c libc/sys/amdgcn/isatty.c libc/sys/amdgcn/lseek.c libc/sys/amdgcn/read.c libc/sys/amdgcn/write.c \
 @HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/fcntl.c libc/sys/amdgcn/getpid.c libc/sys/amdgcn/kill.c libc/sys/amdgcn/open.c libc/sys/amdgcn/raise.c libc/sys/amdgcn/stat.c \
-@HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/unlink.c libc/sys/amdgcn/lock.c
+@HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/unlink.c libc/sys/amdgcn/lock.c libc/sys/amdgcn/creat.c
 
 @HAVE_LIBC_SYS_ARM_DIR_TRUE@am__append_44 = libc/sys/arm/access.c libc/sys/arm/aeabi_atexit.c libc/sys/arm/sysconf.c
 @HAVE_LIBC_SYS_ARM_DIR_TRUE@@MAY_SUPPLY_SYSCALLS_TRUE@am__append_45 = libc/sys/arm/libcfunc.c libc/sys/arm/trap.S libc/sys/arm/syscalls.c
@@ -1669,7 +1669,8 @@  am__objects_51 = libc/ssp/libc_a-chk_fail.$(OBJEXT) \
 @HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/libc_a-raise.$(OBJEXT) \
 @HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/libc_a-stat.$(OBJEXT) \
 @HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/libc_a-unlink.$(OBJEXT) \
-@HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/libc_a-lock.$(OBJEXT)
+@HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/libc_a-lock.$(OBJEXT) \
+@HAVE_LIBC_SYS_AMDGCN_DIR_TRUE@	libc/sys/amdgcn/libc_a-creat.$(OBJEXT)
 @HAVE_LIBC_SYS_ARM_DIR_TRUE@am__objects_55 = libc/sys/arm/libc_a-access.$(OBJEXT) \
 @HAVE_LIBC_SYS_ARM_DIR_TRUE@	libc/sys/arm/libc_a-aeabi_atexit.$(OBJEXT) \
 @HAVE_LIBC_SYS_ARM_DIR_TRUE@	libc/sys/arm/libc_a-sysconf.$(OBJEXT)
@@ -7323,6 +7324,9 @@  libc/sys/amdgcn/libc_a-unlink.$(OBJEXT):  \
 libc/sys/amdgcn/libc_a-lock.$(OBJEXT):  \
 	libc/sys/amdgcn/$(am__dirstamp) \
 	libc/sys/amdgcn/$(DEPDIR)/$(am__dirstamp)
+libc/sys/amdgcn/libc_a-creat.$(OBJEXT):  \
+	libc/sys/amdgcn/$(am__dirstamp) \
+	libc/sys/amdgcn/$(DEPDIR)/$(am__dirstamp)
 libc/sys/arm/$(am__dirstamp):
 	@$(MKDIR_P) libc/sys/arm
 	@: > libc/sys/arm/$(am__dirstamp)
@@ -13931,6 +13935,7 @@  distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/a29khif/$(DEPDIR)/libc_a-systime.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/a29khif/$(DEPDIR)/libc_a-vec.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/amdgcn/$(DEPDIR)/libc_a-close.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/amdgcn/$(DEPDIR)/libc_a-fcntl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/amdgcn/$(DEPDIR)/libc_a-fstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libc/sys/amdgcn/$(DEPDIR)/libc_a-getpid.Po@am__quote@
@@ -31153,6 +31158,20 @@  libc/sys/amdgcn/libc_a-lock.obj: libc/sys/amdgcn/lock.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/amdgcn/libc_a-lock.obj `if test -f 'libc/sys/amdgcn/lock.c'; then $(CYGPATH_W) 'libc/sys/amdgcn/lock.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/amdgcn/lock.c'; fi`
 
+libc/sys/amdgcn/libc_a-creat.o: libc/sys/amdgcn/creat.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/amdgcn/libc_a-creat.o -MD -MP -MF libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Tpo -c -o libc/sys/amdgcn/libc_a-creat.o `test -f 'libc/sys/amdgcn/creat.c' || echo '$(srcdir)/'`libc/sys/amdgcn/creat.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Tpo libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libc/sys/amdgcn/creat.c' object='libc/sys/amdgcn/libc_a-creat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/amdgcn/libc_a-creat.o `test -f 'libc/sys/amdgcn/creat.c' || echo '$(srcdir)/'`libc/sys/amdgcn/creat.c
+
+libc/sys/amdgcn/libc_a-creat.obj: libc/sys/amdgcn/creat.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/amdgcn/libc_a-creat.obj -MD -MP -MF libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Tpo -c -o libc/sys/amdgcn/libc_a-creat.obj `if test -f 'libc/sys/amdgcn/creat.c'; then $(CYGPATH_W) 'libc/sys/amdgcn/creat.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/amdgcn/creat.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Tpo libc/sys/amdgcn/$(DEPDIR)/libc_a-creat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libc/sys/amdgcn/creat.c' object='libc/sys/amdgcn/libc_a-creat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -c -o libc/sys/amdgcn/libc_a-creat.obj `if test -f 'libc/sys/amdgcn/creat.c'; then $(CYGPATH_W) 'libc/sys/amdgcn/creat.c'; else $(CYGPATH_W) '$(srcdir)/libc/sys/amdgcn/creat.c'; fi`
+
 libc/sys/arm/libc_a-access.o: libc/sys/arm/access.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/sys/arm/libc_a-access.o -MD -MP -MF libc/sys/arm/$(DEPDIR)/libc_a-access.Tpo -c -o libc/sys/arm/libc_a-access.o `test -f 'libc/sys/arm/access.c' || echo '$(srcdir)/'`libc/sys/arm/access.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libc/sys/arm/$(DEPDIR)/libc_a-access.Tpo libc/sys/arm/$(DEPDIR)/libc_a-access.Po
diff --git a/newlib/libc/sys/amdgcn/Makefile.inc b/newlib/libc/sys/amdgcn/Makefile.inc
index 4e540fc24b..803dcf99d6 100644
--- a/newlib/libc/sys/amdgcn/Makefile.inc
+++ b/newlib/libc/sys/amdgcn/Makefile.inc
@@ -1,4 +1,4 @@ 
 libc_a_SOURCES += \
 	%D%/close.c %D%/fstat.c %D%/isatty.c %D%/lseek.c %D%/read.c %D%/write.c \
 	%D%/fcntl.c %D%/getpid.c %D%/kill.c %D%/open.c %D%/raise.c %D%/stat.c \
-	%D%/unlink.c %D%/lock.c
+	%D%/unlink.c %D%/lock.c %D%/creat.c
diff --git a/newlib/libc/sys/amdgcn/creat.c b/newlib/libc/sys/amdgcn/creat.c
new file mode 100644
index 0000000000..645ac70e94
--- /dev/null
+++ b/newlib/libc/sys/amdgcn/creat.c
@@ -0,0 +1,7 @@ 
+#include <fcntl.h>
+
+int
+creat (const char *path, mode_t mode)
+{
+  return open (path, O_CREAT | O_WRONLY | O_TRUNC, mode);
+}