Re: git: f7144a9c4a11 - main - sdt: Use the "cc" operand modifier for the address of probes for GCC 15+

From: John Baldwin <jhb_at_FreeBSD.org>
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