compiler skewed?

Kevin Day drealin01 at cox.net
Sat Jan 7 02:29:13 PST 2006


On Thu, 29 Dec 2005 16:01:47 +0000
Declan Moriarty <junk_mail at iol.ie> wrote:

> 
> 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..)



More information about the hlfs-dev mailing list