Re: git: f7144a9c4a11 - main - sdt: Use the "cc" operand modifier for the address of probes for GCC 15+
Date: Mon, 02 Feb 2026 17:27:52 UTC
On 2/2/26 12:20, John Baldwin wrote:
> The branch main has been updated by jhb:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=f7144a9c4a11214a71a3091ce1b232a8243b83ea
>
> commit f7144a9c4a11214a71a3091ce1b232a8243b83ea
> Author: John Baldwin <jhb@FreeBSD.org>
> AuthorDate: 2026-02-02 17:19:51 +0000
> Commit: John Baldwin <jhb@FreeBSD.org>
> CommitDate: 2026-02-02 17:19:51 +0000
>
> sdt: Use the "cc" operand modifier for the address of probes for GCC 15+
>
> This is required for GCC on RISC-V. The GCC 15 docs claim that "cc" is
> similar to "c" except that it "tries harder".
>
> NB: I have not yet found a way to make the DTrace probes compile on
> RISC-V with older versions of GCC.
>
> Reviewed by: markj
> Differential Revision: https://reviews.freebsd.org/D54964
Once I land an update to the freebsd-gccXX ports to support %#b with printf(9)
(in review at https://reviews.freebsd.org/D55016 if any ports person wants to
review), RISC-V kernels and worlds can be built with GCC 15.
GCC 14 and earlier can't compile SDT probes. :(
Also, Someone(tm) should document # support for %b in printf(9). It would also
be really great if we could document %r and %y in printf(9) as well.
%y prints signed hex values, so printf("%y", -1) is output as "-0x1".
%r uses a custom radix defined in a global 'radix' variable (I think this is
really only for DDB), and if "+" is passed it assumes the argument is signed
rather than unsigned. (This last part is a bit of a hack really. Probably
we should use separate letters for signed vs unsigned. Or maybe stop
using %r.)
--
John Baldwin