Hi! ----
The jcl parts of ast-open.20120-06-12 fail to build on Solaris 11/i386 with Sun Studio 12.1: -- snip -- + 1> jcl.req + cc -D_TS_ERRNO -D_REENTRANT -KPIC -xO4 '-xalias_level=std' -xspace -Xa -xstrconst -z combreloc -xildoff -xcsi '-errtags=yes' '-DSHOPT_CMDLIB_BLTIN=0' '-DSH_CMDLIB_DIR="/usr/ast/ bin"' '-DSHOPT_CMDLIB_HDR="/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/tmp_solaris_builtin_header.h"' -DSHOPT_SYSRC '-D_map_libc=1' '-D_lib_socket=1' -lsoc ket -lnsl -I/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl -I- -I../../../include/ast -DDEBUG -D_PACKAGE_ast -c /home/test001/ksh93/ast_ksh_201 20612/build_i386_64bit_extrabuiltins/src/lib/libjcl/open.c + cc -D_TS_ERRNO -D_REENTRANT -KPIC -xO4 '-xalias_level=std' -xspace -Xa -xstrconst -z combreloc -xildoff -xcsi '-errtags=yes' '-DSHOPT_CMDLIB_BLTIN=0' '-DSH_CMDLIB_DIR="/usr/ast/ bin"' '-DSHOPT_CMDLIB_HDR="/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/tmp_solaris_builtin_header.h"' -DSHOPT_SYSRC '-D_map_libc=1' '-D_lib_socket=1' -lsoc ket -lnsl -I/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl -I- -I../../../include/ast -DDEBUG -D_PACKAGE_ast -c /home/test001/ksh93/ast_ksh_201 20612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c "/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c", line 46: syntax error before or at: 18 "/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c", line 46: warning: syntax error: empty declaration (E_EMPTY_DECLARATION) "/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c", line 817: warning: improper pointer/integer combination: op "=" (E_BAD_PTR_INT_COMBINATION) "/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c", line 1950: warning: improper pointer/integer combination: op "!=" (E_BAD_PTR_INT_COMBINATION) "/home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c", line 1952: warning: improper pointer/integer combination: arg #4 (E_BAD_PTR_INT_COMB_ARG) cc: acomp failed for /home/test001/ksh93/ast_ksh_20120612/build_i386_64bit_extrabuiltins/src/lib/libjcl/parse.c make [lib/libjcl]: *** exit code 2 making parse.o -- snip -- The problem here is AFAIK the use of |SS| as symbol... -- snip -- static char SS[] = "//"; -- snip -- ... because a system header defines this: -- snip -- $ grep -r -E '#.*define[[:space:]]+SS[[:space:]]+' /usr/include/ /usr/include/sys/regset.h:#define SS 18 /* only stored on a privilege transition */ -- snip -- (this mess comes from the "i386 ABI supplement"... thanks likely go to Intel... ;-/ ). There are two ways to fix it: 1. #undef SS in parse.c 2. Rename the variable (because _uppercase_ 1/2/3-letter symbols are always in danger from being trampled in some way by system includes) I've opted for [2] because the all-uppercase symbols are really calling for trouble... ... attached (as "astopen20120612_jcl_parse001.diff.txt") is the patch... ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.ma...@nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;)
--- src/lib/libjcl/parse.c Wed Nov 15 09:56:41 2006 +++ src/lib/libjcl/parse.c Mon Jun 18 01:25:04 2012 @@ -41,10 +41,10 @@ static char dummy[] = "/dev/null"; -static char EQ[] = "="; -static char END[] = "\\\\"; -static char SS[] = "//"; -static char ST[] = "*"; +static char tok_EQ[] = "="; +static char tok_END[] = "\\\\"; +static char tok_SS[] = "//"; +static char tok_ST[] = "*"; /* * common syntax error message @@ -525,9 +525,9 @@ if (jcl->pushed) { memcpy(&jcl->data, &jcl->push[--jcl->pushed], sizeof(Push_t)); - if (jcl->last == END) + if (jcl->last == tok_END) { - s = END; + s = tok_END; goto token; } } @@ -534,7 +534,7 @@ else if (jcl->data != null) { jcl->data = null; - s = END; + s = tok_END; goto token; } else @@ -814,7 +814,7 @@ else xel(jcl, null); } - s = SS; + s = tok_SS; goto token; } else if (*jcl->data == '*') @@ -825,7 +825,7 @@ } continue; case '=': - if (!n && !q && jcl->last != EQ) + if (!n && !q && jcl->last != tok_EQ) { if (*jcl->data == '\'' && *(jcl->data + 1) == '\'' && (*(jcl->data + 2) == ',' || isspace(*(jcl->data + 2)) || *(jcl->data + 2) == 0)) { @@ -834,7 +834,7 @@ xel(jcl, null); if ((jcl->data - s) == 3) { - s = EQ; + s = tok_EQ; goto token; } } @@ -844,11 +844,11 @@ xel(jcl, null); if ((jcl->data - s) == 1) { - s = EQ; + s = tok_EQ; goto token; } } - xel(jcl, EQ); + xel(jcl, tok_EQ); break; } continue; @@ -855,7 +855,7 @@ case '*': if (!n && !q && (jcl->data - s) == 1 && (*jcl->data == ',' || *jcl->data == ' ' || *jcl->data == 0)) { - s = ST; + s = tok_ST; goto token; } continue; @@ -916,8 +916,8 @@ { register char* tok; - if (jcl->last != END) - while ((tok = lex(jcl)) && tok != END); + if (jcl->last != tok_END) + while ((tok = lex(jcl)) && tok != tok_END); } /* @@ -1066,9 +1066,9 @@ if (!(tok = lex(jcl))) syntax(jcl, 2, NiL, NiL, NiL); - else if (tok == END) + else if (tok == tok_END) return 0; - else if ((val = lex(jcl)) == EQ) + else if ((val = lex(jcl)) == tok_EQ) val = lex(jcl); else { @@ -1298,7 +1298,7 @@ } else pd = 0; - if (val && (streq(tok, "DSN") || streq(tok, "DSNAME")) || !val && (streq(tok, "DUMMY") && (val = dummy) && (dd->flags |= JCL_DD_DUMMY) || !jcl->pushed && tok != ST && (val = tok))) + if (val && (streq(tok, "DSN") || streq(tok, "DSNAME")) || !val && (streq(tok, "DUMMY") && (val = dummy) && (dd->flags |= JCL_DD_DUMMY) || !jcl->pushed && tok != tok_ST && (val = tok))) { if (dd->flags & JCL_DD_DUMMY) { @@ -1494,7 +1494,7 @@ return -1; } } - else if (tok == ST) + else if (tok == tok_ST) { while (tok = card(jcl)) { @@ -1511,7 +1511,7 @@ jcl->record = tok; xel(jcl, NiL); if (tok) - xel(jcl, END); + xel(jcl, tok_END); } } if ((dd->flags & JCL_DD_INCLUDE) && dd->path && jclinclude(jcl, dd->path, JCL_PROC, NiL)) @@ -1903,7 +1903,7 @@ int r; while (s = lex(jcl)) - if (s == END) + if (s == tok_END) { if (jcl->disc->errorf) (*jcl->disc->errorf)(NiL, jcl->disc, 2, "THEN expected"); @@ -1947,9 +1947,9 @@ while (tok = lex(jcl)) { - if (tok != SS) + if (tok != tok_SS) { - syntax(jcl, 2, tok, SS, NiL); + syntax(jcl, 2, tok, tok_SS, NiL); return -1; } if (!(name = lex(jcl)))
_______________________________________________ ast-developers mailing list ast-developers@research.att.com https://mailman.research.att.com/mailman/listinfo/ast-developers