Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 29 Dec 2013 00:17:36 +0100 (CET)
From:      Christoph Moench-Tegeder <cmt@burggraben.net>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   ports/185256: shells/ksh93 : fix build on FreeBSD 10/i386 (clang)
Message-ID:  <20131228231736.84755313DD@elch.exwg.net>
Resent-Message-ID: <201312282320.rBSNK0vG057162@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         185256
>Category:       ports
>Synopsis:       shells/ksh93 : fix build on FreeBSD 10/i386 (clang)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Dec 28 23:20:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Christoph Moench-Tegeder
>Release:        FreeBSD 10.0-RC3 i386
>Organization:
>Environment:
System: FreeBSD i386.exwg.net 10.0-RC3 FreeBSD 10.0-RC3 #0 r259778: Tue Dec 24 04:35:46 UTC 2013     root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  i386

shells/ksh93    ksh93-20120801_1

>Description:
	The build of shells/ksh93 fails on FreeBSD 10/i386 (using clang).
	Note: there's no such problem on amd64 or earlier versions of FreeBSD.
	I'd provide my own build log, but here's the official one:
	http://beefy1.isc.freebsd.org/bulk/10i386-default/latest-per-pkg/ksh93-20120801_1.log
	(search for "hashalloc.c:154:4")
>How-To-Repeat:

>Fix:

	I tested the following patch on 10.0/amd64, 10.0/i386 and 9.2/amd64,
	without problems so far.
	The current alpha version of ksh93/ast-ksh contains a slightly
	different fix (#ifdefs for platforms with clang and 4-byte-pointers).
	As my patch is shorter and does not use additional #ifdefs, I
	prefer it over the "official" solution.
	I reported this patch to the ast-developers mailing list:
	http://lists.research.att.com/pipermail/ast-developers/2013q4/003799.html


	Patch via HTTP: http://burggraben.net/hacks/ksh_fbsd10_i386.gz
	
	$ svn status      
	A       files/patch-src-lib-libast-hash-hashalloc.c
	A       files/patch-src-lib-libast-string-tokscan.c
Index: files/patch-src-lib-libast-hash-hashalloc.c
===================================================================
--- files/patch-src-lib-libast-hash-hashalloc.c	(revision 0)
+++ files/patch-src-lib-libast-hash-hashalloc.c	(working copy)
@@ -0,0 +1,20 @@
+--- src/lib/libast/hash/hashalloc.c.orig	2013-12-28 22:09:43.000000000 +0100
++++ src/lib/libast/hash/hashalloc.c	2013-12-28 22:43:14.000000000 +0100
+@@ -49,6 +49,7 @@
+ 	va_list*		vp = va;
+ 	Hash_region_f		region = 0;
+ 	void*			handle;
++	va_listarg		tmpval;
+ 
+ 	va_start(ap, ref);
+ 
+@@ -151,7 +152,8 @@
+ 				va_copy(*vp, ap);
+ 				vp++;
+ 			}
+-			va_copy(ap, va_listval(va_arg(ap, va_listarg)));
++			tmpval = va_listval(va_arg(ap, va_listarg));
++			va_copy(ap, tmpval);
+ 			break;
+ 		case 0:
+ 			if (vp > va)
Index: files/patch-src-lib-libast-string-tokscan.c
===================================================================
--- files/patch-src-lib-libast-string-tokscan.c	(revision 0)
+++ files/patch-src-lib-libast-string-tokscan.c	(working copy)
@@ -0,0 +1,20 @@
+--- ./src/lib/libast/string/tokscan.c.orig	2013-12-28 22:16:20.000000000 +0100
++++ ./src/lib/libast/string/tokscan.c	2013-12-28 22:43:28.000000000 +0100
+@@ -188,6 +188,7 @@
+ 	char**		p_string;
+ 	char*		prv_f = 0;
+ 	va_list		prv_ap;
++	va_listarg	tmpval;
+ 
+ 	va_start(ap, fmt);
+ 	if (!*s || *s == '\n')
+@@ -233,7 +234,8 @@
+ 			prv_f = f;
+ 			f = va_arg(ap, char*);
+ 			va_copy(prv_ap, ap);
+-			va_copy(ap, va_listval(va_arg(ap, va_listarg)));
++			tmpval = va_listval(va_arg(ap, va_listarg));
++			va_copy(ap, tmpval);
+ 			continue;
+ 		case 'c':
+ 			p_char = va_arg(ap, char*);



Regards,
Christoph
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20131228231736.84755313DD>