Milan Jurik wrote: > Roland Mainz p????e v po 02. 03. 2009 v 05:38 +0100: > > This is a sponsor request to "fix" ([1]) CR #6799167 > > (http://bugs.opensolaris.org/view_bug.do?bug_id=6799167 - "real gcc > > build fails in libshell"). > > > > [1]=The "fix" is more a workaround since I don't know exactly how the > > ctf*-tools can be fixed. > > > > My contributor ID is "OS0025". > > > > Webrev follows later when my "hg clone" is complete... > > I will sponsor it (if it's ksh93 issue).
It's an issue in the ctf*-tools but we failed to find a fix for these tools for more than a month and IMO breaking the gcc build for such a long time IMO not acceptable. Since I don't know how to fix the ctf tools the patch in http://cr.opensolaris.org/~gisburn/ksh93_integration_cr_6799167_001/ works around the problem by using an arithmetric expression in the VLA declaration which seems to work in this case. To explain the workaround: The following testcase causes "ctfconvert" to fail with the error "die 8002: failed to get unsigned (form 0x13)": -- snip -- #include <stdlib.h> #include <stdio.h> #include <string.h> int main(int ac, char *av[]) { int len=strlen(av[0])+1; char name[len]; strcpy(name, av[0]); printf("name='%s'\n", name); return EXIT_SUCCESS; } -- snip -- The problem goes away if I replace the first two lines of the |main()| function like this... -- snip -- int len=strlen(av[0]); char name[len+1]; -- snip -- ... e.g. VLA declarations seem to work if you use an arithemtric expression instead of a plain variable... but I can't explain _why_ this works... ;-( ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.mainz at nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;)