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>