On Wed, Dec 11, 2024 at 5:35 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > Using 5-byte nop for x86 usdt probes so we can switch > to optimized uprobe them. > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> > --- > tools/testing/selftests/bpf/sdt.h | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > This change will make it impossible to run latest selftests on older kernels. Let's do what we did with -DENABLE_ATOMICS_TESTS and allow to disable this through Makefile, ok? > diff --git a/tools/testing/selftests/bpf/sdt.h b/tools/testing/selftests/bpf/sdt.h > index ca0162b4dc57..7ac9291f45f1 100644 > --- a/tools/testing/selftests/bpf/sdt.h > +++ b/tools/testing/selftests/bpf/sdt.h > @@ -234,6 +234,13 @@ __extension__ extern unsigned long long __sdt_unsp; > #define _SDT_NOP nop > #endif > > +/* Use 5 byte nop for x86_64 to allow optimizing uprobes. */ > +#if defined(__x86_64__) > +# define _SDT_DEF_NOP _SDT_ASM_5(990: .byte 0x0f, 0x1f, 0x44, 0x00, 0x00) > +#else > +# define _SDT_DEF_NOP _SDT_ASM_1(990: _SDT_NOP) > +#endif > + > #define _SDT_NOTE_NAME "stapsdt" > #define _SDT_NOTE_TYPE 3 > > @@ -286,7 +293,7 @@ __extension__ extern unsigned long long __sdt_unsp; > > #define _SDT_ASM_BODY(provider, name, pack_args, args, ...) \ > _SDT_DEF_MACROS \ > - _SDT_ASM_1(990: _SDT_NOP) \ > + _SDT_DEF_NOP \ > _SDT_ASM_3( .pushsection .note.stapsdt,_SDT_ASM_AUTOGROUP,"note") \ > _SDT_ASM_1( .balign 4) \ > _SDT_ASM_3( .4byte 992f-991f, 994f-993f, _SDT_NOTE_TYPE) \ > -- > 2.47.0 >