<!DOCTYPE html>
<html data-lt-installed="true">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body style="padding-bottom: 1px;">
    <p>Hello, Sergey,</p>
    <p>thanks for fixes! LGTM<br>
    </p>
    <div class="moz-cite-prefix">On 6/5/25 10:40, Sergey Kaplun wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:aEFJ1QXRBo_ruYNM@root">
      <pre wrap="" class="moz-quote-pre">Hi, Sergey!
Thanks for the review!
See my answers below.
Fixed your comments regarding the commit message and force-pushed the
branch.

On 04.06.25, Sergey Bronnikov wrote:
</pre>
      <blockquote type="cite">
        <pre wrap="" class="moz-quote-pre">Hi, Sergey,

thanks for the patch!

On 6/3/25 20:35, Sergey Kaplun wrote:
</pre>
        <blockquote type="cite">
          <pre wrap="" class="moz-quote-pre">This patch provides the LUAJIT_USE_PERFTOOLS flag via the CMake build
system. It allows you to avoid the definition of the cognominal macro
</pre>
        </blockquote>
        <pre wrap="" class="moz-quote-pre">
it's better to write impersonally: It allows avoiding the definition of ...

Feel free to ignore.
</pre>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
Rephrased as has been suggested.

</pre>
      <blockquote type="cite">
        <pre wrap="" class="moz-quote-pre">

</pre>
        <blockquote type="cite">
          <pre wrap="" class="moz-quote-pre">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
</pre>
        </blockquote>
        <pre wrap="" class="moz-quote-pre">
seems command is incorrect, because it does not work for me:
</pre>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
Ooops. I forget that the `--force` flag has been removed [1].
Fixed.

The resulting commit message is the following:

| build: provide LUAJIT_USE_PERFTOOLS option
|
| This patch provides the LUAJIT_USE_PERFTOOLS flag via the CMake build
| system. It allows avoiding the definition of the cognominal macro
| 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 luajit test.lua
| | perf report -s symbol
|
| [1]: <a class="moz-txt-link-freetext" href="https://github.com/torvalds/linux/blob/master/tools/perf/Documentation/jit-interface.txt">https://github.com/torvalds/linux/blob/master/tools/perf/Documentation/jit-interface.txt</a>
|
| Resolves tarantool/tarantool#11300

</pre>
      <blockquote type="cite">
        <pre wrap="" class="moz-quote-pre">
<snipped>

script: unexpected number of arguments
Try 'script --help' for more information.
<snipped>

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) ]

</pre>
        <blockquote type="cite">
          <pre wrap="" class="moz-quote-pre">| perf report -s symbol

</pre>
        </blockquote>
        <pre wrap="" class="moz-quote-pre">and "perf report /tmp/perf-1699839.map" to check that luajit report 
symbols in map file.
</pre>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
Don't get this part.</pre>
    </blockquote>
    It is a note after testing the patch, please disregard it<br>
    <blockquote type="cite" cite="mid:aEFJ1QXRBo_ruYNM@root">
      <pre wrap="" class="moz-quote-pre">

<snipped>

</pre>
      <blockquote type="cite">
        <blockquote type="cite">
          <pre wrap="" class="moz-quote-pre"><a class="moz-txt-link-freetext" href="Branch:https://github.com/tarantool/luajit/tree/skaplun/gh-11300-use-perftools-flag">Branch:https://github.com/tarantool/luajit/tree/skaplun/gh-11300-use-perftools-flag</a>
<a class="moz-txt-link-freetext" href="Issue:https://github.com/tarantool/tarantool/issues/11300">Issue:https://github.com/tarantool/tarantool/issues/11300</a>

  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 </tmp/perf-%d.map> (%d = pid of process) file. It should be
+# used with Linux perf tools. See <src/lj_trace.c> for details.
+option(LUAJIT_USE_PERFTOOLS "Linux perf JIT support" OFF)
+if(LUAJIT_USE_PERFTOOLS)
+  AppendFlags(TARGET_C_FLAGS -DLUAJIT_USE_PERFTOOLS)
+endif()
</pre>
        </blockquote>
        <pre wrap="" class="moz-quote-pre">
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?
</pre>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
I've honestly don't see a way to conveniently check for it, and it looks
like overkill for now (since its functionality is rather frugal).
Moreover, perf annotate is not working as expected with that.

I'm glad to hear any ideas of yours about it.

</pre>
    </blockquote>
    <p>We can build LuaJIT in CI with enabled macro, but without test</p>
    <p>it does not guarantee anything. Ok, let's leave it without test
      for now.<br>
    </p>
    <blockquote type="cite" cite="mid:aEFJ1QXRBo_ruYNM@root">
      <blockquote type="cite">
        <pre wrap="" class="moz-quote-pre">
</pre>
        <blockquote type="cite">
          <pre wrap="" class="moz-quote-pre">+
  # 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
</pre>
        </blockquote>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
[1]: <a class="moz-txt-link-freetext" href="http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=4a4d371a4dfbd3b84a7eab8d535d4c7c3647b09e">http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=4a4d371a4dfbd3b84a7eab8d535d4c7c3647b09e</a>

</pre>
    </blockquote>
  </body>
  <lt-container></lt-container>
</html>