Yet another binary search
Clarity


Reformat to the presentation width.  Rather than incur slider bars,...

static void const* misc_bsearch_internal(void const** A, void const** Z, void const* K, bool (*cmp)(void const*, void const*))



... wrap code

    static void const* misc_bsearch_internal(void const** A, void const** Z,
        void const* K, bool (*cmp)(void const*, void const*))



One letter argument names convey little,.  Use more expressive names

// static void const* misc_bsearch_linear(void const** A, 
//    void const** Z, void const* K, bool (*cmp)(void const*, void const*))
static void const* misc_bsearch_linear(void const** First, 
    void const** Last, void const* Key, bool (*cmp)(void const*, void const*))

const void * and void const * are the same, yet the one used by OP does not match the one used by the C standard.  When looking for clarity, recommend following the standard's practice.
It is not stated if bool cmp() functions return true or false on match.  For clarity, that should be detailed.  OTOH. I eventually found it.  For clarity, that should be detailed more obviously - at the top.

// cmp should return true iff [arg1] &lt; [arg2] (strictly).

Missing include.h files.  I'd expect at least something for NULL and &lt;stdint.h&gt; the the optional types intptr_t / uintptr_t.
A sample usage (commented) of the entry function misc_bsearch() would be helpful.  As it is, it is unclear how to use the function set.




Wider use

The compare functions used by the standard C library qsort() use a int cmp(....).  As this code uses a bool cmp(....), the same function is not usable directly in the other.  Consider changing this code change to use int cmp(....).



Limitation

"only sorts arrays of pointers."  --> Op's code handles pointers to objects.  Pointers to functions may be wider than void *.