[prev in list] [next in list] [prev in thread] [next in thread] 

List:       ast-developers
Subject:    [ast-developers] [patch] ast-open.20120-06-12 build failure on Solaris 11/i386/Sun Studio in jcl cod
From:       Roland Mainz <roland.mainz () nrubsig ! org>
Date:       2012-06-17 23:40:47
Message-ID: CAKAoaQkCN=F+=xDhfmWZLr10q2FRzNeUAPmyfq3biv9mu27wVg () mail ! gmail ! com
[Download RAW message or body]

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.mainz@nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)


["astopen20120612_jcl_parse001.diff.txt" (text/plain)]

--- 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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic