Bug 185256 - shells/ksh93 : fix build on FreeBSD 10/i386 (clang)
Summary: shells/ksh93 : fix build on FreeBSD 10/i386 (clang)
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Po-Chuan Hsieh
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-28 23:20 UTC by Christoph Moench-Tegeder
Modified: 2014-03-02 20:10 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph Moench-Tegeder freebsd_committer freebsd_triage 2013-12-28 23:20:00 UTC
	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")

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


Regards,
Christoph--da1ZYXR0hD4fLe5pdP3fC1MDnlvTjhVh9J1DtADLCOpRMV9g
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

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*);
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-12-28 23:20:08 UTC
Responsible Changed
From-To: freebsd-ports-bugs->sunpoet

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2014-02-28 01:49:26 UTC
Author: sunpoet
Date: Fri Feb 28 01:49:19 2014
New Revision: 346423
URL: http://svnweb.freebsd.org/changeset/ports/346423
QAT: https://qat.redports.org/buildarchive/r346423/

Log:
  - Fix build on i386
  
  PR:		ports/185256
  Submitted by:	Christoph Moench-Tegeder <cmt@burggraben.net>

Added:
  head/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c   (contents, props changed)
  head/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c   (contents, props changed)

Added: head/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c	Fri Feb 28 01:49:19 2014	(r346423)
@@ -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)

Added: head/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c	Fri Feb 28 01:49:19 2014	(r346423)
@@ -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*);
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Po-Chuan Hsieh freebsd_committer freebsd_triage 2014-02-28 01:49:35 UTC
State Changed
From-To: open->closed

Committed. Thanks!
Comment 4 dfilter service freebsd_committer freebsd_triage 2014-03-02 20:05:00 UTC
Author: sunpoet
Date: Sun Mar  2 20:04:52 2014
New Revision: 346795
URL: http://svnweb.freebsd.org/changeset/ports/346795
QAT: https://qat.redports.org/buildarchive/r346795/

Log:
  MFH: r346423
  
  - Fix build on i386
  
  PR:		ports/185256
  Submitted by:	Christoph Moench-Tegeder <cmt@burggraben.net>
  Approved by:	portmgr (bdrewery, via IRC)

Added:
  branches/2014Q1/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c
     - copied unchanged from r346423, head/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c
  branches/2014Q1/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c
     - copied unchanged from r346423, head/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c
Modified:
Directory Properties:
  branches/2014Q1/   (props changed)

Copied: branches/2014Q1/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c (from r346423, head/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2014Q1/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c	Sun Mar  2 20:04:52 2014	(r346795, copy of r346423, head/shells/ksh93/files/patch-src-lib-libast-hash-hashalloc.c)
@@ -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)

Copied: branches/2014Q1/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c (from r346423, head/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/2014Q1/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c	Sun Mar  2 20:04:52 2014	(r346795, copy of r346423, head/shells/ksh93/files/patch-src-lib-libast-string-tokscan.c)
@@ -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*);
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"