Hi Martin, On Wed, Feb 06, 2019 at 05:28:08PM -0700, Martin Sebor wrote: > void > -__clear_cache (char *beg __attribute__((__unused__)), > - char *end __attribute__((__unused__))) > +__clear_cache (void *beg __attribute__((__unused__)), > + void *end __attribute__((__unused__))) > { > #ifdef CLEAR_INSN_CACHE > - CLEAR_INSN_CACHE (beg, end); > + /* Cast the void* pointers to char* as some implementations > + of the macro assume the pointers can be subtracted from > + one another. */ > + CLEAR_INSN_CACHE ((char *) beg, (char *) end); > #endif /* CLEAR_INSN_CACHE */ > }
You can subtract pointers to void in GCC just fine, it's a GNU C extension. See extend.texi: In GNU C, addition and subtraction operations are supported on pointers to @code{void} and on pointers to functions. This is done by treating the size of a @code{void} or of a function as 1. (and libgcc is built with GCC always). Segher