[gcc r14-6148] gm2: Fix mc/mc.flex compilation on Solaris

Rainer Orth ro@gcc.gnu.org
Tue Dec 5 10:06:27 GMT 2023


https://gcc.gnu.org/g:12769548679af8162af5f4bf15265b2228386c75

commit r14-6148-g12769548679af8162af5f4bf15265b2228386c75
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Tue Dec 5 11:06:04 2023 +0100

    gm2: Fix mc/mc.flex compilation on Solaris
    
    The recent warning changes broke gm2 bootstrap on Solaris:
    
    /vol/gcc/src/hg/master/local/gcc/m2/mc/mc.flex: In function 'handleFile':
    /vol/gcc/src/hg/master/local/gcc/m2/mc/mc.flex:297:21: error: implicit
    declaration of function 'alloca' [-Wimplicit-function-declaration]
      297 |   char *s = (char *)alloca (strlen (filename) + 2 + 1);
          |                     ^~~~~~
    
    alloca needs <alloca.h> on Solaris, which isn't universally available.
    Since mc.flex doesn't include any config header, I chose to switch to
    __builtin_alloca instead.
    
    /vol/gcc/src/hg/master/local/gcc/m2/mc/mc.flex:332:19: error: implicit
    declaration of function 'index' [-Wimplicit-function-declaration]
      332 |   char   *p     = index(sdate, '\n');
          |                   ^~~~~
    
    index is declared in <strings.h> on Solaris, again not a standard
    header.  I simply switched to using strchr to avoid that issue.
    
    Bootstrapped without regressions on i386-pc-solaris2.11,
    sparc-sun-solaris2.11, x86_64-pc-linux-gnu, and
    x86_64-apple-darwin23.1.0.
    
    2023-12-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
    
            gcc/m2:
            * mc/mc.flex [__GNUC__]: Define alloca as __builtin_alloca.
            (handleDate): Use strchr instead of index.

Diff:
---
 gcc/m2/mc/mc.flex | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc/m2/mc/mc.flex b/gcc/m2/mc/mc.flex
index 4b37755bbc2..8ba4e246f63 100644
--- a/gcc/m2/mc/mc.flex
+++ b/gcc/m2/mc/mc.flex
@@ -28,6 +28,10 @@ along with GNU Modula-2; see the file COPYING3.  If not see
 #include <time.h>
 #include <ctype.h>
 
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#endif
+
 #if !defined(TRUE)
 #  define TRUE (1==1)
 #endif
@@ -329,7 +333,7 @@ handleDate (void)
   time_t  clock = time ((long *)0);
   char   *sdate = ctime (&clock);
   char   *s     = (char *)alloca (strlen (sdate)+2+1);
-  char   *p     = index(sdate, '\n');
+  char   *p     = strchr(sdate, '\n');
 
   if (p != NULL) {
     *p = (char) 0;


More information about the Gcc-cvs mailing list