Hi, Sergey, thanks for the patch! On 6/3/25 20:35, Sergey Kaplun wrote: > This patch provides the LUAJIT_USE_PERFTOOLS flag via the CMake build > system. It allows you to avoid the definition of the cognominal macro it's better to write impersonally: It allows avoiding the definition of ... Feel free to ignore. > definition via CMAKE_C_FLAGS to use integration with the Linux perf > tools interface [1] to resolve symbols for traces generated by a JIT. > > It may be used like the following: > > | perf record script -f luajit test.lua seems command is incorrect, because it does not work for me: script: unexpected number of arguments Try 'script --help' for more information. I've used instead: $ sudo perf record -F 2000 ./build/src/luajit fib.lua [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.024 MB perf.data (8 samples) ] > | perf report -s symbol > and "perf report /tmp/perf-1699839.map" to check that luajit report symbols in map file. > [1]:https://github.com/torvalds/linux/blob/master/tools/perf/Documentation/jit-interface.txt > > Resolves tarantool/tarantool#11300 > --- > > Branch:https://github.com/tarantool/luajit/tree/skaplun/gh-11300-use-perftools-flag > Issue:https://github.com/tarantool/tarantool/issues/11300 > > CMakeLists.txt | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/CMakeLists.txt b/CMakeLists.txt > index 854b3613..c0da4362 100644 > --- a/CMakeLists.txt > +++ b/CMakeLists.txt > @@ -259,6 +259,14 @@ if(LUAJIT_USE_VALGRIND) > AppendFlags(TARGET_C_FLAGS -DLUAJIT_USE_VALGRIND) > endif() > > +# This creates a symbol table of the JIT-compiled code in > +# a (%d = pid of process) file. It should be > +# used with Linux perf tools. See for details. > +option(LUAJIT_USE_PERFTOOLS "Linux perf JIT support" OFF) > +if(LUAJIT_USE_PERFTOOLS) > + AppendFlags(TARGET_C_FLAGS -DLUAJIT_USE_PERFTOOLS) > +endif() Adding a CMake flag means that we support it in our fork (users will rely on this functionality). Do want a regression test for this option? > + > # This is the client for the GDB JIT API. GDB 7.0 or higher is > # required to make use of it. See lj_gdbjit.c for details. > # Enabling this causes a non-negligible overhead, even when not