[comp.windows.x] X11R3 server & Purdue2.0 & gcc & ultrix 3.0

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>