[SLOF] [PATCH] libc: The arguments of puts() can be marked as "const"

Segher Boessenkool segher at kernel.crashing.org
Thu Jul 13 05:24:07 AEST 2017


On Wed, Jul 12, 2017 at 02:56:41PM +0200, Thomas Huth wrote:
> >>>>>> /home/aik/p/slof/slof/paflof.c: In function ‘engine’:
> >>>>>> /home/aik/p/slof/slof/paflof.c:84:23: warning: array subscript is below
> >>>>>> array bounds [-Warray-bounds]
> >>>>>>    dp = the_data_stack - 1;
> >>>>>>         ~~~~~~~~~~~~~~~^~~

> Ugh, ok.
> 
> What about:
> 
> 	dp = the_data_stack;
>         rp = handler_stack;
> 	barrier();
> 	dp--;
> 	rp--;
> 
> ?
> 
> That should hopefully shut up the compiler, too, and result in the same
> initial setting of dp and rp.

I don't know what "barrier" is, but it cannot work :-)  Decrementing dp
is not valid C here, either (exactly the same problem as the original).

You could do just

dp = (cell *)((uintptr_t)the_data_stack - CELLSIZE);

etc. -- that is valid C, standard C even, and will work just fine.
It's ugly, but at least it is correct ;-)


Segher


More information about the SLOF mailing list