disabled c99 in Solaris builds

Baesken, Matthias matthias.baesken at sap.com
Wed Dec 12 08:24:20 UTC 2018


>
>FWIW, in my in-development patch set for JEP 347
>(https://bugs.openjdk.java.net/browse/JDK-8208089)
>
>the -xc99=%none% option has been removed and -std=c99 added (for C
>code). (C++14 includes C99 by reference, so I made that change for
>consistency in case there were any ABI differences.)
>

Hello Kim , do you have an estimation when your patch will be in  ?

Or would you suggest to do a separate change and bring in into  jdk/jdk (and  jdk12) already?  

Best regards, Matthias


> -----Original Message-----
> From: David Holmes <david.holmes at oracle.com>
> Sent: Dienstag, 11. Dezember 2018 23:16
> To: Erik Joelsson <erik.joelsson at oracle.com>; Baesken, Matthias
> <matthias.baesken at sap.com>; 'build-dev at openjdk.java.net' <build-
> dev at openjdk.java.net>
> Subject: Re: disabled c99 in Solaris builds
> 
> On 12/12/2018 3:27 am, Erik Joelsson wrote:
> > Hello,
> >
> > I do not know why this flag was introduced, but it has been there for a
> > long time. In JDK7 it's listed in jdk/make/common/Defs-solaris.gmk:
> >
> > #       -xc99=%none     Do NOT allow for c99 extensions to be used.
> > #                       e.g. declarations must precede statements
> >
> > and was there since the first mercurial change.
> 
> I can reasonably imagine that this was added to prevent introducing
> shared code, developed on Solaris, that would not compile on Windows.
> But those days are long gone.
> 
> I was bitten by this just this week when an enum declaration compiled
> fine everywhere but Solaris!
> 
> > I personally wouldn't mind ditching it.
> 
> +1
> 
> David
> 
> > /Erik
> >
> > On 2018-12-11 08:17, Baesken, Matthias wrote:
> >> Hello , it  seems that currently the Solaris  Oracle Studio Build
> >> environment is the only one  that explicitly
> >> forbids C99 C code  by setting  -xc99=%none .
> >> The current Linux/Mac/AIX/Windows build envs had no issues with the
> >> coding.
> >>
> >> For example I was running into an error with the C variable
> >> declaration order issue (small example below) today in my coding.
> >> Is this still a wanted behavior ? What was the reason behind setting
> >> -xc99=%none , and is  the reason  still valid ?
> >> I remember we had issues with C99 compatibility back then when VS2010
> >> was used on Windows, but I think these  days we use VS2013+, is this
> >> correct ?
> >>
> >> The example program  mixes declarations and "other statements" ,
> >> which needs C99,  I compile with Oracle Studio 12u4 .
> >>
> >> /compiler/SS12u4-Oct2017/SUNWspro/bin/cc  vardecl.c -o vardecl
> >>
> >> No settings -> works nicely
> >>
> >>
> >> - with C99 disabled as OpenJDK does :
> >> ----------------------------------------------------------
> >>
> >> /compiler/SS12u4-Oct2017/SUNWspro/bin/cc -xc99=%none   vardecl.c -o
> >> vardecl
> >> "vardecl.c", line 8: warning: declaration can not follow a statement
> >>
> >>
> >> - with C99 disabled + errwarn as OpenJDK does :
> >> ------------------------------------------------------------------------
> >>
> >> /compiler/SS12u4-Oct2017/SUNWspro/bin/cc -xc99=%none  -
> errwarn=%all
> >> vardecl.c -o vardecl
> >> "vardecl.c", line 8: declaration can not follow a statement
> >> cc: acomp failed for vardecl.c
> >>
> >> example program :
> >> ---------------------------------------
> >>
> >> bash-3.2$ more vardecl.c
> >> #include <stdio.h>
> >>
> >> int main(void) {
> >>    int a = 0;
> >>    printf("a: %d \n", a);
> >>
> >>    int b = 1;
> >>    printf("b: %d \n", b);
> >>    return 0;
> >> }
> >>
> >>
> >> Best regards, Matthias


More information about the build-dev mailing list