Some versions of gcc complain about an error-message
formatting mismatch:
'probe begin {println(user_string_n_warn(0, 20)) }'
->
/var/tmp/stapk2aFPs/stap_b9f8a6b29bbfa7f7e051c7587bbf7762_1907_src.c:288:40: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘void *’ [-Werror=format=]
288 | "user string copy fault 0x%ld at %lx [man error::fault]", rc,
This switches to "0x%lx", (uintptr_t) consistently in related functions.