]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR modula2/116378 m2 bootstrap fails on x86_64-darwin
authorGaius Mulley <gaiusmod2@gmail.com>
Fri, 16 Aug 2024 11:41:11 +0000 (12:41 +0100)
committerGaius Mulley <gaiusmod2@gmail.com>
Fri, 16 Aug 2024 11:41:11 +0000 (12:41 +0100)
This patch fixes m2 bootstrap failure on x86_64-darwin.  libc_open
is defined with three parameters the last of which is an int for
portability (rather than a vararg).  This avoids portability
problems by promoting mode_t to an int.  In the future it could
be tidied up by using the m2 optarg extension.

gcc/m2/ChangeLog:

PR modula2/116378
* gm2-libs-iso/TermFile.mod (termOpen): Add third argument
for open.
* gm2-libs/libc.def (open): Remove vararg and use INTEGER for
mode parameter three.
* mc-boot-ch/Glibc.c (tracedb_open): Replace mode_t with int.
(libc_open): Rewrite without varargs.
* mc-boot/Glibc.h (libc_open): Replace varargs with int mode.
* pge-boot/Glibc.cc (libc_open): Rewrite.
* pge-boot/Glibc.h (libc_open): Replace varargs with int mode.

gcc/testsuite/ChangeLog:

PR modula2/116378
* gm2/extensions/run/pass/testopen.mod: Add third argument
for open.
* gm2/isolib/run/pass/openlibc.mod: Ditto.
* gm2/pim/run/pass/testaddr3.mod: Ditto.

Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
gcc/m2/gm2-libs-iso/TermFile.mod
gcc/m2/gm2-libs/libc.def
gcc/m2/mc-boot-ch/Glibc.c
gcc/m2/mc-boot/Glibc.h
gcc/m2/pge-boot/Glibc.cc
gcc/m2/pge-boot/Glibc.h
gcc/testsuite/gm2/extensions/run/pass/testopen.mod
gcc/testsuite/gm2/isolib/run/pass/openlibc.mod
gcc/testsuite/gm2/pim/run/pass/testaddr3.mod

index a3ad58ceba01a6fe4ba1ef6b8621ef1583217d2a..3347bdd4e869b4b3a0db20c5d647e665d2fb5d2f 100644 (file)
@@ -503,7 +503,7 @@ BEGIN
       THEN
          fd := libc.open(ADR("/dev/tty"), O_WRONLY, 0600B)
       ELSE
-         fd := libc.open(ADR("/dev/tty"), O_RDONLY)
+         fd := libc.open(ADR("/dev/tty"), O_RDONLY, 0)
       END ;
       IF tcgetattr(fd, new)=0
       THEN
index f28f8b5f2bcaccb06e534d60b966d71a9ce44160..a314b59e43f15572f651855530cbc71e8a6402b3 100644 (file)
@@ -211,7 +211,7 @@ PROCEDURE close (d: INTEGER) : [ INTEGER ] ;
    open - open the file, filename with flag and mode.
 *)
 
-PROCEDURE open (filename: ADDRESS; oflag: INTEGER; ...) : INTEGER ;
+PROCEDURE open (filename: ADDRESS; oflag: INTEGER; mode: INTEGER) : INTEGER ;
 
 
 (*
index 492f17f6bdc7e9021017b94da448cba9f26188a0..5ad1711bc643b440c6f9fb2112efe8371dc99c29 100644 (file)
@@ -67,7 +67,7 @@ tracedb (const char *format, ...)
 
 static
 void
-tracedb_open (const void *p, int flags, mode_t mode)
+tracedb_open (const void *p, int flags, int mode)
 {
 #if defined(BUILD_MC_LIBC_TRACE)
   bool item_written = false;
@@ -343,15 +343,11 @@ libc_creat (char *p, mode_t mode)
 
 EXTERN
 int
-libc_open (void *p, int oflag, ...)
+libc_open (void *p, int oflag, int mode)
 {
-  va_list arg;
-  va_start (arg, oflag);
-  mode_t mode = va_arg (arg, mode_t);
   tracedb_open (p, oflag, mode);
   int result = open (reinterpret_cast <char *> (p), oflag, mode);
   tracedb_result (result);
-  va_end (arg);
   return result;
 }
 
index 2f7fac46d77101b951776b1649cc960424280a61..957232345f56a4b349bafb2f1ccad621e6a0ea4f 100644 (file)
@@ -178,7 +178,7 @@ EXTERN int libc_close (int d);
    open - open the file, filename with flag and mode.
 */
 
-EXTERN int libc_open (void * filename, int oflag, ...);
+EXTERN int libc_open (void * filename, int oflag, int mode);
 
 /*
    creat - creates a new file
index a63b328ed608eae976c40331a133e78b0e201667..7ea40d0f0c114949422041e090ec384a2f2b9d98 100644 (file)
@@ -224,14 +224,9 @@ libc_creat (char *p, mode_t mode)
 
 EXTERN
 int
-libc_open (void *p, int oflag, ...)
+libc_open (void *p, int oflag, int mode)
 {
-  va_list arg;
-  va_start (arg, oflag);
-  mode_t mode = va_arg (arg, mode_t);
-  int result = open (reinterpret_cast <char *> (p), oflag, mode);
-  va_end (arg);
-  return result;
+  return open (reinterpret_cast <char *> (p), oflag, mode);
 }
 
 EXTERN
index a5558932348b2cbd1b6a0e2286defa0266ac1981..0a5481ef523965e94ab3cf4b45900ea2568e7dcc 100644 (file)
@@ -178,7 +178,7 @@ EXTERN int libc_close (int d);
    open - open the file, filename with flag and mode.
 */
 
-EXTERN int libc_open (void * filename, int oflag, ...);
+EXTERN int libc_open (void * filename, int oflag, int mode);
 
 /*
    creat - creates a new file
index a36d2e0eae1e0978e546eb9cf5ac2e61d8b7bc42..56dd6f65ea0de33d7b0d20f3d5d5495d730e2a47 100644 (file)
@@ -24,7 +24,7 @@ PROCEDURE foo ;
 VAR
    fd: INTEGER ;
 BEGIN
-   fd := open(ADR("/dev/tty"), 0)
+   fd := open(ADR("/dev/tty"), 0, 0)
 END foo ;
 
 BEGIN
index b9a9d04e2a9312327781effb340b7e28e17307dc..510bb36a8cfd368c57c1ab70b5c263658f7c82da 100644 (file)
@@ -26,6 +26,6 @@ CONST
 VAR
    fd: INTEGER ;
 BEGIN
-   fd := libc.open(ADR("/dev/tty"), O_RDONLY) ;
+   fd := libc.open(ADR("/dev/tty"), O_RDONLY, 0) ;
    libc.printf("fd = %d\n", fd)
 END openlibc.
index b31d0a4b047094134aab6602b7622baae79d023e..d85f65b0006165e337ac66cb73c987837caac1f0 100644 (file)
@@ -23,5 +23,5 @@ FROM libc IMPORT open ;
 VAR
    fd: INTEGER ;
 BEGIN
-   fd := open(ADR(__FILE__), 0)
+   fd := open(ADR(__FILE__), 0, 0)
 END testaddr3.