From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: Date: Fri, 13 Jan 2006 06:29:42 -0600 From: Eric Van Hensbergen To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Subject: Re: [9fans] Drawterm on Linux/PowerPC In-Reply-To: <43C7911E.4040509@khjk.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <43C7911E.4040509@khjk.org> Topicbox-Message-UUID: d577ae80-ead0-11e9-9d60-3106f5b1d025 On 1/13/06, Sven Moritz Hallberg wrote: > Hello 9fans, > > I've tried to get drawterm to work on my Linux/PowerPC machine. I > _think_ I have "dt2k". I got it from this CVS repo: > > :pserver:anoncvs@cvs.pdos.csail.mit.edu/cvs drawterm > > (BTW, it was kind of hard to confirm that this -- appearently -- is in > fact dt2k...) > > Unfortunately it doesn't work. The fmtprint functions seem to do stuff > with va_lists that my system doesn't like. Specifically, fmtprint and > many other functions try to assign va_list's to fields in a Fmt > structure. This is simply rejected by my GCC (I tried versions 3.3, 3.4, > and 4.0.2): > > gcc -Wall -Wno-missing-braces -ggdb -I.. -I../include -I../kern -c > -I/usr/X11R6/include -D_THREAD_SAFE -pthread -O2 fmtprint.c > fmtprint.c: In function 'fmtprint': > fmtprint.c:20: error: incompatible types in assignment > > I tried to replace all the offending assignments with calls to memcpy: > > /* va =3D f->args; */ > memcpy(&va, &(f->args), sizeof(va_list)); > > This results in successfull compilation, but immediately crashes drawterm= : > > $ gdb ./drawterm > [..snip..] > (gdb) runStarting program: /home/pesco/Halde/drawterm/drawterm > [Thread debugging using libthread_db enabled] > [New Thread 805479776 (LWP 12368)] > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread 805479776 (LWP 12368)] > 0x10048500 in _runefmt (f=3D0x7fb7f3f8) at dofmt.c:234 > 234 x[0] =3D va_arg(f->args, int); > > I've read in > > http://www.cs.bell-labs.com/wiki/plan9/THM_2005-06-23_Summary/ > > that "[Ericvh] has [dt2k] working in ppc-linux". So: > > > Eric, can I have your code? > > When will this find its way into the drawterm CVS? > > How can I help? > I'll dig up what I have and see about reving into to the most recent versions of drawterm and then sending a patch here. Essentially you were on the right path, but the wrong solution. man va_copy and look at the plan9ports fmtprint code for how to do this right on ppc/linux. I'll try to send something out today. -eric