mcneill@eplrx7.UUCP (mcneill) (04/28/89)
I'm having a problem compiling X11R3 server & Purdue2.0 & gcc & ultrix 3.0. for example: making .././extensions/server making .././fonts/mkfontdir making dix making ddx/snf making ddx/mi making ddx/mfb rm -f mfbsetsp.o gcc -c -DPURDUE -O -traditional -fwritable-strings -fstrength-reduce -Dultrix \ -finline-functions -I. -I../../include -I../../.././X11 mfbsetsp.c mfbsetsp.c: In function mfbSetScanline: mfbsetsp.c:81: output operand constraint lacks `=' mfbsetsp.c:81: output operand constraint lacks `=' mfbsetsp.c:81: output operand constraint lacks `=' mfbsetsp.c:102: output operand constraint lacks `=' mfbsetsp.c:102: output operand constraint lacks `=' mfbsetsp.c:102: output operand constraint lacks `=' mfbsetsp.c:115: output operand constraint lacks `=' mfbsetsp.c:130: output operand constraint lacks `=' mfbsetsp.c:130: output operand constraint lacks `=' mfbsetsp.c:130: output operand constraint lacks `=' *** Error code 1 Stop. *** Error code 1 Stop. It's bombed on 3 files so far in the mfb directory. What have I done wrong? (it was my impression that the PURDUE fixes worked on vaxen too) Thanks, Keith Keith D. McNeill | E.I. du Pont de Nemours & Co. eplrx7!mcneill@uunet.uu.net | Engineering Physics Laboratory (302) 695-9353/7395 | P.O. Box 80357 | Wilmington, Delaware 19880-0357 -- Keith D. McNeill | E.I. du Pont de Nemours & Co. eplrx7!mcneill@uunet.uu.net | Engineering Physics Laboratory (302) 695-9353/7395 | P.O. Box 80357 | Wilmington, Delaware 19880-0357
mark@spider.co.UK (Mark Valentine) (05/04/89)
I got exactly this ("output operand constraint lacks `='") today when I put up gcc 1.34, and I'm running Ultrix 2.2 with X11R3 + Fixes 1-9 + Purdue 2.1. The last time I compiled the server, the only difference was I was running gcc 1.31, when my only major problem was the mishandling of modifier keys. Everything works (all be it a tad slower!) when I use cc. I suspect something in the asm()s in maskbits.h is blowing up, but I don't much fancy digging around in gcc to find out why... (hang on a mo') except to spot the Jan 16 entry in the ChangeLog, which states: * stmt.c (expand_asm_operands): Reject `+' in constraints. Every output constraint requires `='; input rejects it. Anyone feel up to battling this one out? Do we give up on gcc or Purdue?? Mark. __ Mark Valentine, Spider Systems Limited, Edinburgh, UK. /\oo/\ <mark@spider.co.uk, mark%spider.co.uk@uunet.uu.net, uunet!mcvax!ukc!spider!mark>
mark@spider.co.UK (Mark Valentine) (05/05/89)
output operand constraint lacks `=' I decided after all to go fix this myself. It looked fairly straightforward, and I discovered that all it needs is the addition of the `=' constraint to the output operands in two asm() statements in maskbits.h (see below). This is only of relevance with the Purdue speedups, since these use the special features of GNU CC asm(). (The `=' wasn't necessary in earlier versions of gcc. It would have been nice if this could have just been made a *warning* for at least one release of gcc...) Now, this gets a clean compile, and indeed the server runs a good bit faster than it did before, AND the modifier keys work for me now! The only thing I've seen wrong so far is that a few bitmaps have been corrupted (a black strip along the left side of twm's version window and icons, etc.). It's progress, though! Mark. Here's where I put those `=' signs... *** maskbits.h.old Thu May 4 17:23:31 1989 --- maskbits.h Thu May 4 17:24:00 1989 *************** *** 315,321 #ifdef vax #define FASTGETBITS(psrc,x,w,dst) \ asm ("extzv %1,%2,%3,%0" \ ! : "g" (dst) \ : "g" (x), "g" (w), "m" (*(char *)(psrc))) #define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) --- 315,321 ----- #ifdef vax #define FASTGETBITS(psrc,x,w,dst) \ asm ("extzv %1,%2,%3,%0" \ ! : "=g" (dst) \ : "g" (x), "g" (w), "m" (*(char *)(psrc))) #define getbits(psrc,x,w,dst) FASTGETBITS(psrc,x,w,dst) *************** *** 321,327 #define FASTPUTBITS(src, x, w, pdst) \ asm ("insv %3,%1,%2,%0" \ ! : "m" (*(char *)(pdst)) \ : "g" (x), "g" (w), "g" (src)) #define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) #endif vax --- 321,327 ----- #define FASTPUTBITS(src, x, w, pdst) \ asm ("insv %3,%1,%2,%0" \ ! : "=m" (*(char *)(pdst)) \ : "g" (x), "g" (w), "g" (src)) #define putbits(src, x, w, pdst) FASTPUTBITS(src, x, w, pdst) #endif vax __ Mark Valentine, Spider Systems Limited, Edinburgh, UK. /\oo/\ <mark@spider.co.uk, mark%spider.co.uk@uunet.uu.net, uunet!mcvax!ukc!spider!mark>