compiler skewed?

Declan Moriarty junk_mail at iol.ie
Mon Jan 9 04:12:09 PST 2006


Recently, Somebody Somewhere wrote these words
> 
> > 
> > DRM drivers:
> > 
> >   CC [M]
> > /usr/src/extras/Mesa-6.4.1/radeon-20051220-linux.i386/drm/linux-core/drm_context.o
> > /usr/src/extras/Mesa-6.4.1/radeon-20051220-linux.i386/drm/linux-core/drm_context.c:
> > In function `drm_ctxbitmap_next':
> > include/asm/bitops.h:289: error: can't find a register in class
> > `BREG' while reloading `asm'
> This is an obvious problem.  This happens because we are using uClibc,
> and uClibc (and me as well) think asm code is bad.  Long story short,
> asm code generate problems.  I believe we need a patch here for pic
> support or something similar.  I remember an almost identical problem
> with zip and unzip.
> 
> You may be able to avoid this problem by disabling the uClibc config
> option that says to allow only PIC based files.
> 
> 
> > make[3]: ***
> > [/usr/src/extras/Mesa-6.4.1/radeon-20051220-linux.i386/drm/linux-core/drm_context.o]
> > Error 1
> > make[2]: ***
> > [_module_/usr/src/extras/Mesa-6.4.1/radeon-20051220-linux.i386/drm/linux-core]
> > Error 2
> > make[2]: Leaving directory `/usr/src/linux-2.6.14.3'
> > make[1]: *** [modules] Error 2
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > Kernel compile (2.6.14.3), SVN-20051221 book instructions.
> > 
> >   CHK     include/linux/version.h
> >   CC      init/main.o
> > init/main.c: In function `unknown_bootoption':
> > init/main.c:249: warning: asm operand 1 probably doesn't match
> > constraints
> > init/main.c:249: error: impossible constraint in `asm'
> > make[1]: *** [init/main.o] Error 1
> > make: *** [init] Error 2
> > 
> > This bit of init/main.c - Line 249 is 'BUG();'
> > 
> >         /* Change NUL term back to "=", to make "param" the whole
> >  * string. */
> >         if (val) {
> >                 /* param=val or param="val"? */
> >                 if (val == param+strlen(param)+1)
> >                         val[-1] = '=';
> >                 else if (val == param+strlen(param)+2) {
> >                         val[-2] = '=';
> >                         memmove(val-1, val, strlen(val)+1);
> >                         val--;
> >                 } else
> >                         BUG();
> >         }
> > 
> 
> I will look into that function.  It is probably some form of exit/error
> command in which at worst case, we can make a hack that will kill the
> program or something similar. (though potentially dangerous..)


Sorry for slow reply, only returning from a battle with death over
some loathsome flu here. I'm on glibc these days. I started on
uClibc, but couldn't get past gcc in Ch 6. - the one that really
has to work. So I went with the ALFS profile, which was glibc.


-- 

	With best Regards,


	Declan Moriarty.



More information about the hlfs-dev mailing list