)]}'
{
  "log": [
    {
      "commit": "436da3609c400dd9ca6d3dcfeebe084839180b61",
      "tree": "fc9015697a3a3fdb6ccae5d53eee12ed764048b2",
      "parents": [
        "82d9da3f91e1f8cfe59baf88bd7f0ce19f42ebb4"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Mon Aug 03 19:12:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 19:12:14 2026"
      },
      "message": "i#8021: Include source files in core/ as dependencies for kernel module (#8025)\n\n- Update `core/kernel_linux/CMakeLists.txt`:\n  - Include source files in `core/` as dependencies for kernel module.\n- Define `LINUX_KERNEL`, `DYNAMORIO_INTERNAL`,\n`DR_DO_NOT_DEFINE_MAX_MIN`\n  - Add `-Wframe-larger-than\u003d4096`\n- Update include headers in source files under `core/`. This includes\nusing wrapper headers (e.g., `stdarg_wrapper.h`) or excluding headers\nthat don\u0027t have an equivalent in kernel (e.g., `math.h`).\n- Exclude floating point arithmetic and user space specific logic (e.g.,\nsignal handling, rseq) from kernel build.\n- Optimize frame stack in `options.c` to make frame less than 4KB.\n\nIssue: #8021"
    },
    {
      "commit": "82d9da3f91e1f8cfe59baf88bd7f0ce19f42ebb4",
      "tree": "67e89bea0f2642f67fb5f190989ab9aea82203b4",
      "parents": [
        "c1ae79461aed11545a6e80abba9a3a765b7339a9"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Aug 03 16:52:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 03 16:52:58 2026"
      },
      "message": "i#8001 shared defs: Share TEST* and BUFFER* macros (#8030)\n\nShares TESTANY, TESTALL, and BUFFER_SIZE_ELEMENTS and related defines,\nin dr_project_wide_defines.h, eliminating duplication in many places.\n\nRemoves ext/ext_utils.h which becomes empty after this change.\n\nIssue: #8001"
    },
    {
      "commit": "c1ae79461aed11545a6e80abba9a3a765b7339a9",
      "tree": "0e796fbd7ab56c81e67c23099b414b23f675872e",
      "parents": [
        "f88e38abc357aef1097e835e926e4140ebdcb123"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jul 30 17:52:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 17:52:41 2026"
      },
      "message": "i#8026 histogram cleanup: Remove shifts from histogram map (#8033)\n\nRemoves the pointless shifts of addresses into cache lines in the\ndrmemtrace histogram tool, as it\u0027s using a map in any case.\n\nAlso stops printing if there are fewer results than the requested count.\nAdds a test of this.\n\nFinally, makes cmp() and back_align() class functions so they can be\nused in subclasses.\n\nFixes #8026"
    },
    {
      "commit": "f88e38abc357aef1097e835e926e4140ebdcb123",
      "tree": "c9764f1fee99f83c58dfdc5b7814f2e8a003239b",
      "parents": [
        "aa76721f07d0ea7235fc58940482627a536b470b"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jul 30 15:39:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 15:39:13 2026"
      },
      "message": "i#8001 shared defs: Use TESTANY instead of TEST (#8032)\n\nIn preparation of moving the TEST* defines into\ndr_project_wide_headers.h, we replace all uses of TEST with the\nequivalent TESTANY. Although we avoid exposing\ndr_project_wide_headers.h in DR_API headers, it is exposed in\ndrmemtrace\u0027s headers where TEST causes collisions with third-party code\nsuch as googletest.\n\nIssue: #8001"
    },
    {
      "commit": "aa76721f07d0ea7235fc58940482627a536b470b",
      "tree": "4cf4d303585e8308b66139d3d7dc9198ec61f909",
      "parents": [
        "5cb97a7b587847e3c5f33c810ed27b3c8e4cd39a"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jul 28 22:30:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 22:30:12 2026"
      },
      "message": "i#8026 histogram cleanup: Add reduce guard (#8027)\n\nAdds a guard on reducing results, to avoid incorrectly re-accumulating\non additional parallel reductions.\n\nAdds a unit test of parallel reduction. Adds an export of the count map,\nwhich is used in the test to ensure counts are not overly accumulating.\nTested without the fix and confirmed the test fails.\n\nIssue: #8026"
    },
    {
      "commit": "5cb97a7b587847e3c5f33c810ed27b3c8e4cd39a",
      "tree": "64871ef1374b5220ff2b64bed6d7a9e2b90f4147",
      "parents": [
        "3280e26f0e36da1aa3bf3207cc1ac9488a23c853"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Tue Jul 28 22:09:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 22:09:03 2026"
      },
      "message": "i#8028: Fix clang-format-diff result in CI (#8029)\n\n#### Bug\n\nOlder versions of `clang-format-diff` returned exit status 0 regardless\nof whether formatting diffs were found. Newer versions exit with status\n1 when formatting diffs are detected and write the diff to `stdout`\n(`format_out`).\n\nBecause `runsuite.cmake` previously checked `if (format_result OR\nformat_err)` immediately after execution, the new non-zero exit status\n(1) caused CMake to abort with a generic process execution error before\nreaching `if (format_out)`, hiding the actual formatting diff from\ndevelopers.\n\n#### Fix\n\nIn `runsuite.cmake`:\n\n- Changed `if (format_result OR format_err)` to `if (format_err)` so\nnon-zero exit codes don\u0027t abort before reaching the `if (format_out)`\nblock that prints the diff.\n- Added `elseif (format_result)` to report exit errors when\n`clang-format-diff` fails with a non-zero status but produces no stderr\nand stdout.\n\nFixes #8028"
    },
    {
      "commit": "3280e26f0e36da1aa3bf3207cc1ac9488a23c853",
      "tree": "faeefdbc93c57d33e4e1b532713c571d257a5e63",
      "parents": [
        "6242d1d8257c5b5b06c7386c963981a8c69da4a6"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Jul 27 21:12:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 21:12:12 2026"
      },
      "message": "i#8001 shared defs: Add project-wide header with ALIGN* macros (#8007)\n\nAdds a new top-level header common/dr_project_wide_defines.h that is\nshared across all domains to avoid duplication.\n\nThis PR moves just the ALIGN* macros into this header. More shared\ndefines will be moved in further installments.\n\nThe new header is installed into the drmemtrace export dir as A) we\u0027re\nalready exporting utils.h which includes it and B) otherwise we have to\nduplicate some defines in trace_entry.h. However, I first tried\nduplicating and not including utils.h in trace_entry.h, which revealed\nseveral missing headers in clients/drcachesim/ files. I left those\nadditions in this PR though they could be separated out.\n\nThe new header includes stdint.h to avoid depending on DR API integer\ndefines, which caused a Windows build issue which was resolved by\nremoving defines we had added to libdwarf.h back when we supported\nVS2008 which did not have stdint.h. Those added defines are removed\nhere.\n\nIssue: #8001"
    },
    {
      "commit": "6242d1d8257c5b5b06c7386c963981a8c69da4a6",
      "tree": "31696069815c1c920c07623e2b6ec4b259230f17",
      "parents": [
        "e44c791e507e1f828a02eabde434649f7140ee5e"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Fri Jul 24 22:14:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 22:14:57 2026"
      },
      "message": "i#8021: Relocate Kbuild output to binary directory (#8023)\n\nThe Kbuild support added in #8020 builds the kernel module and\nintermediate output alongside the source files. As we have discussed,\nthis pollutes the project directory and differs how CMake normally\nisolates build output. This PR relocates the output to the binary\ndirectory (i.e., `build/core/kernel_linux`) by\n- Generate the Kbuild file in the binary directory.\n- Mirror required source files in the binary directory using symlink.\n\nIssue: #8021"
    },
    {
      "commit": "e44c791e507e1f828a02eabde434649f7140ee5e",
      "tree": "53bddc43ddcf57f59ad275a57cca79b6a96804a0",
      "parents": [
        "cca42665b014ab109b64d98fdc9d3eecd91273b5"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Thu Jul 23 05:43:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 05:43:17 2026"
      },
      "message": "i#8021: Bootstrap kernel module build support (#8020)\n\n- Add a boilerplate kernel module as placeholder.\n- Add CMake build support for building the kernel module. Note that\nCMake still need to create a Makefile and run make, which is the only\nsupported way to drive Kbuild. However, all the configuration (source\nfile list, flags, and defines) are done in CMake.\n- Added a CI workflow definition for building the kernel module.\n\nBy default, Kbuild places the final `.ko` and intermediate build\nartifacts (`.o`, `.mod.c`, etc.) alongside the module\u0027s source files.\nThis pollutes the project directory and differs from how CMake normally\nisolates build output. We might want the artifacts to land in the\n`build/` directory instead in the future. However, Kbuild\u0027s\nexternal-module support ties build output directly to the `M\u003d` source\ndirectory.\n[`KBUILD_EXTMOD_OUTPUT`](https://docs.kernel.org/6.13/kbuild/kbuild.html#kbuild-extmod-output)\ndoes what we want, but it\u0027s only available in kernel 6.13+. So we\u0027d need\nto copy the source files into build/ before invoking Kbuild. Leaving\nthis for a future PR.\n\nIssue: #8021"
    },
    {
      "commit": "cca42665b014ab109b64d98fdc9d3eecd91273b5",
      "tree": "4b41612829672b1dfec9dcdf49328e90b0322d70",
      "parents": [
        "abc49b356e2174ae4faa418dbc1a5d8bf883ebad"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Tue Jul 21 17:21:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 17:21:08 2026"
      },
      "message": "i#8018: Remove dead code block in core/ir/x86/encode.c (#8019)\n\nRemove a dead code block inside `core/ir/x86/encode.c` guarded by `#if\nDEBUG_DISABLE` since `DEBUG_DISABLE` is never defined in the project\nother than this place.\n\nFixes #8018"
    },
    {
      "commit": "abc49b356e2174ae4faa418dbc1a5d8bf883ebad",
      "tree": "6780547d3ae7deb0c10062c8dedf4be5a2cd6ce9",
      "parents": [
        "cdca647039fa865e36673f33e2faae2f1ea10f53"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Tue Jul 21 00:41:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 00:41:39 2026"
      },
      "message": "i#8016: Refactor noinline attributes to the double-underscore variant (#8017)\n\nRefactor `noinline` attributes to the double-underscore variant to avoid\nconflicts with a macro with the same name in the linux kernel. Some of\nthese changes may not be necessary, like the ones in the tests folder,\nbut for consistency I changed them as well.\n\nFixes #8016"
    },
    {
      "commit": "cdca647039fa865e36673f33e2faae2f1ea10f53",
      "tree": "d016394a90dd16df5e4561fde21e83262c2d2dcf",
      "parents": [
        "25ad71237ceab5f536518ecdcca51b0ed077e914"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Mon Jul 20 22:25:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 22:25:16 2026"
      },
      "message": "i#8014: Rename local variables named fallthrough (#8015)\n\nRenamed local variables named fallthrough in two places:\n1. `mangle_trace()` in `core/arch/interp.c`: `fallthrough` -\u003e\n`fallthrough_pc`\n2. `dr_insert_cbr_instrumentation_help()` in `core/lib/instrument.c`:\n`fallthrough` -\u003e `fallthrough_addr`\n\nFixes #8014"
    },
    {
      "commit": "25ad71237ceab5f536518ecdcca51b0ed077e914",
      "tree": "c3615697b7cbd8f0056c045c688e4d9420260a3d",
      "parents": [
        "967c0a8bc706fcc2d0d6e0ab2f93a4c6ca9c4ee1"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Fri Jul 17 20:18:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 20:18:09 2026"
      },
      "message": "Reset inv checker state to prevent dup reports (#8010)\n\nResets some state in the drmemtrace invariant checker tool to prevent\nduplicate reports of the \"Missing system call trace\" and \"Syscall marker\nmissing after syscall instruction\" invariant errors when running in a\nmode that doesn\u0027t exit after the first error instance."
    },
    {
      "commit": "967c0a8bc706fcc2d0d6e0ab2f93a4c6ca9c4ee1",
      "tree": "dee7db1e43fe40a578b080e9adb04034a0ce810f",
      "parents": [
        "f051ce225a662ddd702312b014727c1387e9ac88"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri Jul 17 17:15:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 17:15:40 2026"
      },
      "message": "i#8008 format: Update to clang-format-21 (#8009)\n\nUpdates our Github Actions runners to install clang-format-21. Updates\nrunsuite.cmake to prefer that version.\nReformats our files with this version.\n\nFixes #8008"
    },
    {
      "commit": "f051ce225a662ddd702312b014727c1387e9ac88",
      "tree": "17f17988be3aac1a8b70e6527f1f646c4e7e59ae",
      "parents": [
        "4fe110619bdcc98bb41f44b94f89b79b5ff5f940"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri Jul 17 00:58:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 00:58:45 2026"
      },
      "message": "i#8008 format: Remove non-UTF8 characters (#8011)\n\nRemoves non-UTF8 characters from tools/runjob.c.\nThese crash clang-format-diff and are blocking PR #8009.\nAlso fixes non-UTF8 characters found in two other files while at it.\n\nIssue: #8008"
    },
    {
      "commit": "4fe110619bdcc98bb41f44b94f89b79b5ff5f940",
      "tree": "008304642b9ebd5b3043e81598e8fb05f71a765e",
      "parents": [
        "c029858213b85bd0f095d6c0bf219193011f0929"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Jul 15 17:22:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 17:22:08 2026"
      },
      "message": "Add _, auto, and leading-:: to C++ style rules (#8005)\n\nAugments our project\u0027s style rules with guidelines for:\n+ Not using `_` as a variable name\n+ Only using `auto` in certain situations\n+ Only fully qualifying namespaces in aliases\n\nWe were already following these since they align with other project\u0027s\nC++ guides such as Google\u0027s but it is nice to write them down."
    },
    {
      "commit": "c029858213b85bd0f095d6c0bf219193011f0929",
      "tree": "d9c88ad39666aa9eb6de523a84e270b9c55ac361",
      "parents": [
        "b7d02be9833a990cde9fe25ec647ba23a96a425d"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Wed Jul 15 15:09:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 15:09:31 2026"
      },
      "message": "i#6672: Use C++ structured bindings in syscall_mix (#8003)\n\nUses C++17 structured bindings in\nclients/drcachesim/tools/syscall_mix.cpp.\n\nIssue: #6672"
    },
    {
      "commit": "b7d02be9833a990cde9fe25ec647ba23a96a425d",
      "tree": "2526769ada64ca80b36e498a3b67d1d718d202eb",
      "parents": [
        "99af7368bf0935ed6ac1e134b52b8713775f0832"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Wed Jul 15 13:34:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 13:34:26 2026"
      },
      "message": "Rename symbolic constant for default syscall tmpl sysnum (#8004)\n\nRenames DEFAULT_SYSCALL_TRACE_TEMPLATE_NUM in trace_entry.h to\nDEFAULT_SYSCALL_TRACE_TEMPLATE_SYSNUM to show more clearly that it is\nsentinel for the syscall number field."
    },
    {
      "commit": "99af7368bf0935ed6ac1e134b52b8713775f0832",
      "tree": "3547099a40f76f50f88a8be3287b4123cd4bad41",
      "parents": [
        "fd780c998d2494a08e37f694cb60597264fe0b20"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Tue Jul 14 23:02:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 23:02:45 2026"
      },
      "message": "Track syscall trace instrs counts in syscall_mix (#8002)\n\nAdds tracking for total instrs seen for each syscall across the whole\ntrace in the syscall mix drmemtrace analyzer tool.\n\nFor backward compatibility of syscall_mix_t::statistics_t, this PR\ndoesn\u0027t group the syscall count, trace count, error count, and the new\ninstr count into one struct. Some syscall errno checks are also simpler\nif the syscall error counts are in a separate map."
    },
    {
      "commit": "fd780c998d2494a08e37f694cb60597264fe0b20",
      "tree": "6127df94fb8442b7653fc8a5a3bb74742a0b9129",
      "parents": [
        "5c8766966c349ff3b2657e1344bb6710492f024e"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Tue Jul 14 21:25:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 21:25:09 2026"
      },
      "message": "I#7986: Enable `-Wimplicit-fallthrough` when compiling C/C++ files (#7995)\n\n- Add `-Wimplicit-fallthrough` to `BASE_CFLAGS` when available\n- Added a `DR_FALLTHROUGH` macro that expands to\n`__attribute__((__fallthrough__))` when available\n- Annotate existing code with `DR_FALLTHROUGH`\n\nFixes #7986"
    },
    {
      "commit": "5c8766966c349ff3b2657e1344bb6710492f024e",
      "tree": "c43663a4929d337ce2115c9bf402632b9a7a22fc",
      "parents": [
        "347a4f7581576d429f7b5feeff27f3d6686b552b"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Sun Jul 12 02:23:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 02:23:38 2026"
      },
      "message": "i#7985: Add AI usage policy (#7987)\n\nAdds AI usage policy to both the contributing readme and dynamorio.org.\nIn a nutshell: we welcome AI-assisted contributions with a human behind\nit, but we don\u0027t allow fully autonomous bots to make contributions.\n\nFixes #7985"
    },
    {
      "commit": "347a4f7581576d429f7b5feeff27f3d6686b552b",
      "tree": "975ca30ca798d79136456a5434a719db2e79b261",
      "parents": [
        "44a4e70a91ca836cbf74638a2441295ee7d194d0"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Fri Jul 10 20:47:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 20:47:35 2026"
      },
      "message": "i#7992: Use ORIG_CMAKE_CXX_FLAGS to compile test CPP files (#7998)\n\nIn suite/tests/CMakeLists.txt, the compile flags for CPP files is set by\npulling the `ORIG_CMAKE_C_FLAGS` then doing a regex replace. Causing new\nadded C flags leaking into CPP compilation. This PR changes it to\n`ORIG_CMAKE_CXX_FLAGS`, which is what other parts of this project do.\n\n- Use ORIG_CMAKE_CXX_FLAGS for CPP files in `suite/tests/CMakeLists.txt`\n- Refactor the function name from `set_clfags` to `set_compile_flags`,\nsince it deals with both C and CPP files\n- Refactor the local variable name from `cflags` to `flags`\n- Added `override` to four functions in `annotation-detection.cpp`\n\nFixes #7992\nIssue: #98"
    },
    {
      "commit": "44a4e70a91ca836cbf74638a2441295ee7d194d0",
      "tree": "dc646175044c174d2dcf4fd15af44e9c9c5cb4a2",
      "parents": [
        "8227c9ccbf81b536d4146854d5eec314a4fcee98"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri Jul 10 15:54:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 15:54:01 2026"
      },
      "message": "i#7983 drutil xsave: Allow AMX-sized xsave (#7997)\n\nRelaxes the drutil test\u0027s xsave sanity check to allow the much larger\nsize of the xsave area for an AMX-enabled machine. (Issue #7999 covers\nsupporting actual AMX instructions, which we have yet to see.)\n\nFixes #7983"
    },
    {
      "commit": "8227c9ccbf81b536d4146854d5eec314a4fcee98",
      "tree": "e49885eb7850bc40417b9486bc8534c92c63fddb",
      "parents": [
        "047af162e7ea30dc18c662a42ec1ce5be5093653"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Fri Jul 10 04:24:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 04:24:40 2026"
      },
      "message": "i#7977: Remove api/samples/MF_moduledb.c and related files (#7989)\n\n`api/samples/MF_moduledb.c` is not built or tested by any CI targets.,\nso it\u0027s basically bit rotting in the code base. Since it has been years\nsince this file was touched, I assume it\u0027s obsolete. This PR removes\nthis sample and related files.\n\nFixes #7977"
    },
    {
      "commit": "047af162e7ea30dc18c662a42ec1ce5be5093653",
      "tree": "98de4235b3c18f9bfffc512813c11dd2db13a452",
      "parents": [
        "0a8183c76678db15045f038559e16032b66824fe"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Fri Jul 10 04:23:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 04:23:39 2026"
      },
      "message": "i#7990: Fix wrong default value for KSTATS_DEFAULT (#7991)\n\n- Fix typo of KSTATS_DEFAULT: `0FF` \u003d\u003e `OFF`\n- Remove an outdated XXX comment\n\nFixes #7990\nIssue: #170"
    },
    {
      "commit": "0a8183c76678db15045f038559e16032b66824fe",
      "tree": "85db5ed2eed995b45d585167bf0ebfc09c4c0d1d",
      "parents": [
        "78f16624fab1bddbe4d9393c0b3387869a7e7421"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jul 09 22:45:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 22:45:29 2026"
      },
      "message": "i#7970 xl8 prefix: Directly handle prefix pc translation (#7982)\n\nAdds explicit handling of translation in a fragment prefix by returning\nthe start pc of the fragment. Avoids asking the client to try to\ntranslate a cache pc that does not appear in its view of the fragment\n(which can cause crashes or asserts in some client libraries). Only pc\ntranslation is supported (#7971 covers translating the full state).\n\nThis was tested on a large internal application which translates each PC\nin each frame of a stack walk in an itimer. This application hit an\nassert in drx scatter/gather expansion (as documented in #7970) quite\nfrequently without this fix and did not hit it in 8 runs with this fix.\nA custom diagnostic confirmed the new prefix translation code path was\nexecuted many times.\n\nIt is difficult to create an end-to-end regression test as prefix\ntranslation attempts only happen when an itimer or detach happens to\nsuspend a thread at a prefix. A unit test that directly calls\ntranslation could theoretically be created but it would require mocking\ninfrastructure to create code cache fragments and clients that does not\nexist.\n\nFixes #7970"
    },
    {
      "commit": "78f16624fab1bddbe4d9393c0b3387869a7e7421",
      "tree": "876edd6060a55f4ac2d157f0eb11e8214515b2e5",
      "parents": [
        "69acf3a8d9685a9bcbc3226d3cfb38354dfc317b"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jul 09 21:52:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 21:52:50 2026"
      },
      "message": "i#7993: Mark actual selfmod PC writable in detach_state test (#7994)\n\nFixes a bug where the detach_state test did not mark a large enough\nregion writable and so left the selfmod PC read-only, causing failure\nwhen code layout split the range across two pages.\n\nTested with the PR #7982 where detach_state fails every time on the\naarch64-sve-precommit-* runners: with this change added the failure goes\naway.\n\nFixes #7993"
    },
    {
      "commit": "69acf3a8d9685a9bcbc3226d3cfb38354dfc317b",
      "tree": "fe3a8dca6432351a31ad78154ae7fd1957f3c216",
      "parents": [
        "b37b88aff4ed058df6cd230511996b591b65164e"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jul 09 21:06:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 21:06:30 2026"
      },
      "message": "i#7983 xsave size: Add diagnostics for unknown size (#7984)\n\nAdds diagnostics so we know the actual xsave size when the drutil test\u0027s\nassert fails, so we know how to adjust the code when it happens again on\na particular Github runner.\n\nIssue: #7983"
    },
    {
      "commit": "b37b88aff4ed058df6cd230511996b591b65164e",
      "tree": "2ffbfba9f9b1412ee34e1d0d8d1d497b12e227a4",
      "parents": [
        "9631915acb332bf6539086146a92506787b2b401"
      ],
      "author": {
        "name": "Jack Gallagher",
        "email": "jack.gallagher@arm.com",
        "time": "Thu Jul 09 09:40:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 09:40:18 2026"
      },
      "message": "i#2440 AArch64 IR: Add INSTR_CREATE_lsl (#7979)\n\nAdd an INSTR_CREATE function for the instruction alias\n    lsl, Rd, Rn, #shift\nand related tests.\n\nIssue: #2440"
    },
    {
      "commit": "9631915acb332bf6539086146a92506787b2b401",
      "tree": "08647c4a43bf1fdc83e806734069b70be214e709",
      "parents": [
        "8eec86754a92fe6d3f1fe2dd243f53199384c19c"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Thu Jul 09 04:11:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 04:11:43 2026"
      },
      "message": "i#7975: Enable `-Wstrict-prorotypes` when compiling C files (#7976)\n\nAs we are trying to build DR files with the Linux kernel build system\n(Kbuild), which has `-Wstrict-prototypes` turned on by default, we are\nturning it on in this project as well. Also, the [coding style\nconventions](https://dynamorio.org/page_code_style.html#autotoc_md106)\nof this project already requires that declarations of functions that\ntake no argument should have the explicit `void` keyword in their\nsignatures.\n\n- Enable `-Wstrict-prototypes` when compiling C files.\n- Add explicit `void` to the signatures of functions that take no\nargument.\n\nFor global functions whose declarations already have `void` (or were\nadded `void` in this PR), this PR also adds `void` to their definitions.\nThis is an optional cosmetic match, not required by the style guide or\n`-Wstrict-prototypes`.\n\nFixed #7975"
    },
    {
      "commit": "8eec86754a92fe6d3f1fe2dd243f53199384c19c",
      "tree": "7ffbd1f814ffdc938c1c6222368db22964fd4336",
      "parents": [
        "503e3ca0319e20e0cb81ba96cfbb8d49270c4d4d"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Thu Jul 09 01:04:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 01:04:30 2026"
      },
      "message": "i#6672 Remove deprecated `register` keyword in `burst_traceopts.cpp` (#7988)\n\nRemove a drprecated `register` storage-class specifier in\n`burst_traceopts.cpp`\n\nThe `register` storage-class specifier was removed in C++17, causing a\n`-Wregister` warning during build. Compilers have ignored the `register`\nkeyword since long ago, so dropping it is a no-op change.\n\nIssue: #6672"
    },
    {
      "commit": "503e3ca0319e20e0cb81ba96cfbb8d49270c4d4d",
      "tree": "4b403e1ab07f79e1e765c551a4935c86cb8fb3fe",
      "parents": [
        "88fb56ea2909ef98dee86116a3491001badd87c9"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Jul 08 20:17:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 20:17:30 2026"
      },
      "message": "i#7970 xl8 prefix: Clean up tag and just-pc translation (#7981)\n\nCleans up two aspects of state translation noticed via inspection while\npreparing the #7970 fix:\n\n+ Use dr_fragment_app_pc() on tags, instead of returning raw tags. This\nis difficult to test since there are few cases where the tag does not\nequal the app pc, and hitting a tag return case in translation requires\nhitting a handful of rare points, so we leave this without a targeted\nregression test. This was tested on a large internal application which\ntranslates each PC in each frame of a stack walk in an itimer.\n\n+ Do not call instrument_restore_nonfcache_state_prealloc() for just_pc,\nsince this is only meant for restoring (non-register) state changes and\nthere should not be any such restoration for just_pc\u003dtrue. Minimally\ntested by ensuring the #4197 test drwrap-test-detach still passes. This\nwas also tested on a large internal application which translates each PC\nin each frame of a stack walk in an itimer.\n\nIssue: #7970"
    },
    {
      "commit": "88fb56ea2909ef98dee86116a3491001badd87c9",
      "tree": "ce4f63182f69f6b650183fb3eed68b7aa3ca920c",
      "parents": [
        "6775f51d5ee66a9ed90c174f33e649669a20d51e"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Wed Jul 08 17:45:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 17:45:57 2026"
      },
      "message": "i#7793 kernel filter: add option to keep syscalls (#7980)\n\nAdds keep_syscalls mode to kernel_filter_t and\n-filter_kernel_except_syscalls option to filter out kernel trace content\n(context switches and hardware events) while preserving system calls.\n\nAdds kernel_tracker_t::in_syscall_trace to share logic to detect whether\nwe\u0027re specifically inside a syscall trace.\n\nNote that whole-system traces may have the hardware_event and\nhardware_context_return marker pair nested inside syscalls; we preserve\nthose under the new keep_syscalls mode, because that execution was\nobserved as part of a system call.\n\nIssue: #7793"
    },
    {
      "commit": "6775f51d5ee66a9ed90c174f33e649669a20d51e",
      "tree": "bbbd39fe490cab7dd532a30049a29d074f1355ca",
      "parents": [
        "04823e068703321aad548beca738a7e420033893"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Tue Jun 30 02:09:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 02:09:06 2026"
      },
      "message": "i#7854 wholesys traces: fix is_record_kernel stream inv check (#7973)\n\nHandles the hardware_event and hardware_context_return markers in the\ndrmemtrace invariant checker is_record_kernel stream invariant check.\n\nVerified that this fixes those invariant errors on an internal trace.\nAdded a TODO to check-in a whole_system trace and run the invariant\nchecker on it for test coverage.\n\nIssue: #7854"
    },
    {
      "commit": "04823e068703321aad548beca738a7e420033893",
      "tree": "f04ddda403a23f75f2db8cafee17bfb013845876",
      "parents": [
        "063342093dd1e5e6820a18c5d1cab1b39ca90809"
      ],
      "author": {
        "name": "Phil Ramsey",
        "email": "phil.ramsey@arm.com",
        "time": "Mon Jun 29 09:21:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 09:21:17 2026"
      },
      "message": "i#4474 client.drcallstack-test failing on CentOS 9 (#7969)\n\nCentOS 9 now supports libunwind-1.8.0-4.el9.aarch64 (previously it was\nlibunwind-1.6.2-1.el9.aarch64). This new version of libunwind gives a\ndifferent stack trace (which looks more correct to me.)\n\nPreviously the stack trace was:\n```\nclient.drcallstack-test!qux\nclient.drcallstack-test!baz\nclient.drcallstack-test!bar\nclient.drcallstack-test!foo\nclient.drcallstack-test!main\nlibc.so.6!\u003cunknown\u003e\nlibc.so.6!\u003cunknown\u003e\nclient.drcallstack-test!\u003cunknown\u003e\n```\nNow it is:\n```\nclient.drcallstack-test!qux\nclient.drcallstack-test!baz\nclient.drcallstack-test!bar\nclient.drcallstack-test!foo\nclient.drcallstack-test!main\nlibc.so.6!\u003cunknown\u003e\nlibc.so.6!\u003cunknown\u003e\n```\nIt seems that the stack without `client.drcallstack-test!\u003cunknown\u003e` is\nmore correct.\n\nUpdated the expectation file to not expect that line.\n\nIssue: #4474"
    },
    {
      "commit": "063342093dd1e5e6820a18c5d1cab1b39ca90809",
      "tree": "25d691b707202ab0d3304936d39683386a1b0861",
      "parents": [
        "448b000944a1e1d24d0d53f5af87aae3fe3fc7a4"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Fri Jun 26 00:20:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 26 00:20:49 2026"
      },
      "message": "Clean up dead code in arch.h (#7968)\n\nCurrently, `ARM` and `X64`cannot be defined together since `ARM` means\n32 bit ARM. However, in `core/arch/arch.h`, there is an `#ifdef X64`\nblock inside `#ifdef ARM`, so it\u0027s impossible to be exercised. This PR\nremoves it."
    },
    {
      "commit": "448b000944a1e1d24d0d53f5af87aae3fe3fc7a4",
      "tree": "d7c7b5975277ef7be1657967cd8ff346533e0c5c",
      "parents": [
        "e1007cc23bb8d1a081de9ab75b2e0d91611d1fd5"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Thu Jun 25 13:33:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 13:33:27 2026"
      },
      "message": "i#7854 wholesys traces: Add kernel_tracker_t (#7964)\n\nAdds kernel_tracker_t with centralized logic to detect whether we\u0027re in\na region of the trace that\u0027s for the kernel execution. This looks at the\nsyscall trace start and end marker pair, context switch trace start and\nend marker pair, and the hardware event and hardware context return\nmarker pair. For the first two we keep a simple bool to detect whether\nwe\u0027re in the middle of that pair, and for the last one, since they can\nbe nested within any or surrounded by other pairs, we use a counter.\n\nUses kernel_tracker_t in various stream_t implementations like the\nreader_t, record_reader_t, and scheduler_t, and also in the basic_counts\nand record_filter tools.\n\nAdds a check in the scheduler that whole-system traces are only ever\nused without re-scheduling.\n\nA minor behavior change is that is_record_kernel now returns true also\nfor the kernel region-ending marker (such as the syscall_trace_end,\ncontext_switch_end markers).\n\nAdds unit tests for kernel_tracker_t to\nwholesys_trace_analysis_tests.cpp, and for the reader_t,\nrecord_reader_t, and scheduler_t changes to scheduler_unit_tests.cpp.\n\nAlso updates record filter and wholesys trace analysis tests to verify\nbehavior for the hardware_event and hardware_context_return pair.\n\nOFFLINE_FILE_TYPE_WHOLE_SYSTEM traces have non-dynamically-injected\nkernel records so we need to add better support for trace skipping to\nthe scheduler, which is added as a TODO for now.\n\nIssue: #7854"
    },
    {
      "commit": "e1007cc23bb8d1a081de9ab75b2e0d91611d1fd5",
      "tree": "fc5a87ff5e0d60dc2ad7486eddae05426624cc56",
      "parents": [
        "b525480e5b59ddad1602cfee034d935ad95212c0"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Wed Jun 24 22:48:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 22:48:49 2026"
      },
      "message": "i#7966: Increase negative timestamp correction threshold to 10 (#7967)\n\n- Increase negative timestamp correction threshold to 10 to avoid\n\"Timestamp does not increase monotonically\" invariant errors triggering\non edge cases.\n- Fix a typo in variable name.\n- Update comment to be consistent with the code.\n\nFixes #7966"
    },
    {
      "commit": "b525480e5b59ddad1602cfee034d935ad95212c0",
      "tree": "8ae6ed689267ce549738fdb11ac4050f0bcaf7cf",
      "parents": [
        "3dfb2f929040e573a103433118e8fddec57d44bd"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Wed Jun 24 19:50:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 19:50:11 2026"
      },
      "message": "i#3538: Fix flakiness in static_maps_mixup_novars (#7959)\n\nThe static_maps_mixup_novars is unable to create a fake issue in finding\nthe DR library bounds on my local machine, and the execution just\ncompletes successfully, not generating the expected error message.\n\nImproves the copy_and_remap logic in static_maps_mixup.c which needs to\nbreak DR\u0027s logic for finding library bounds for the purpose of the\nstatic_maps_mixup_novars test, in a way that keeps the\nstatic_maps_mixup_yesvars version still working. We simply add the\nwritable bit to the first segment mapping to achieve this. With this\nthere\u0027s a hang in debug build.\n\nAdds a guard to get_dynamo_library_bounds to try getting the bounds only\nonce and during init. This is to prevent a scenario where the \u0027expected\nelf header\u0027 ASSERT in memquery_library_bounds fails, which triggers\nd_r_internal_error -\u003e report_dynamorio_problem -\u003e privload_print_modules\n-\u003e get_dynamorio_dll_start -\u003e get_dynamo_library_bounds again.\n\nEnsures that a failure to find the ELF header is propagated properly in\nthe release build.\n\nAlso adjusts the expected failure message for the debug build, which\nactually fails at an ASSERT.\n\nWould be good to observe the test\u0027s flakiness over a few days before\nremoving the \"flaky\" suffix.\n\nIssue: #3538"
    },
    {
      "commit": "3dfb2f929040e573a103433118e8fddec57d44bd",
      "tree": "2dc8f35f1eef9c01507a9b916abf894a64a4a62e",
      "parents": [
        "260b7c03dcf4210b716dd3ba32367de22943a528"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 23 15:00:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 15:00:30 2026"
      },
      "message": "i#7962: Fix elfutils crash (#7963)\n\nFixes a crash where elfutils (since its update in PR #7938) tries to\nun-compress in-place onto read-only memory by changing drsyms for UNIX\nto mmap as copy-on-write. This should have no extra cost when the\nmapping is never written.\n\nTested on a local Linux distro where 16 tests crash without the fix\n(since the local libc requires un-compression) and work with the fix.\n\nFixes #7962"
    },
    {
      "commit": "260b7c03dcf4210b716dd3ba32367de22943a528",
      "tree": "8300142a7907d853610bdf7860ecc89cabe36e61",
      "parents": [
        "c9e863381e88a479237d8ca33179b950ff75c80c"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Mon Jun 22 07:15:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 07:15:10 2026"
      },
      "message": "i#7932: Handle new added [vvar_vclock] section in coredump (#7934)\n\nLinux 6.13 split virtual clock pages from `[vvar]` into its own\ndedicated mapping named `[vvar_vclock]`. Same as `[vvar]`, this\n`[vvar_vclock]` section appears readable in `/proc/\u003cpid\u003e/maps`, but will\nreturn `EFAULT` when you try to read it. Therefore, it should be treated\nthe same way as `[vvar]`.\n\nThis PR only adds `[vvar_clock]` handling in coredump, core address\nspace iteration support is added in #7954.\n\nTested on my workstation running Linux 7.0.11: `client.memory_dump_test`\nused to fail, and now passes with this patch.\n\nFixes #7932"
    },
    {
      "commit": "c9e863381e88a479237d8ca33179b950ff75c80c",
      "tree": "06aa937e3aafd96a95b5f4bb45b05a00b3bd5361",
      "parents": [
        "05970a6a387cdded32bd53a400e01aea556a1f35"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Sun Jun 21 23:29:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 23:29:28 2026"
      },
      "message": "i#7955: Fix sigmask test signal race (#7956)\n\nBlocks the SIGALRM in the main thread to prevent a case where the helper\nthread runs quickly and sends the signal before the main thread has had\na chance to block in sigsuspend; the sigsuspend unblocks SIGALRM.\nSIGALRM is also unblocked by the helper thread so it can receive the\nitimer signals.\n\nThis fixes linux.sigmask and linux.sigmask-noalarm in local runs with\n100x iterations, which would previously hang sometimes.\n\nAdds a TODO for an edge case where we don\u0027t want DR to execute the app\nsigsuspend if a newly or previously unblocked signal is already pending.\nThis is fixed by the subsequent PR #7958.\n\nIssue: #7955"
    },
    {
      "commit": "05970a6a387cdded32bd53a400e01aea556a1f35",
      "tree": "db9e1dcb455ac120c7ab5ee232b4490f8a31702a",
      "parents": [
        "9a5f880c80b5cb5537efc073edc1671e71477175"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Sun Jun 21 16:41:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 16:41:53 2026"
      },
      "message": "i#7961: Fix drwrap-drreg-test by restricting instrumentation to app (#7946)\n\nThis test was failing on systems where some library had the 3-nop or\n4-nop pattern that the test looks for. It is better to prevent the\nclient logic from running on those modules.\n\nAlso adds a verification in event_exit that the patterns the test is\nlooking for are indeed seen.\n\nFixes: #7961"
    },
    {
      "commit": "9a5f880c80b5cb5537efc073edc1671e71477175",
      "tree": "1e34a1d6652c631d169566ab39c916a963c8a27f",
      "parents": [
        "f668cd22caaff94036094cf180caca04c1580f99"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Sun Jun 21 16:40:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 16:40:20 2026"
      },
      "message": "i#7960: Fix duplicate footer entries with trace windows (#7953)\n\nAvoids appending a redundant footer entry in process_and_output_buffer\nwhen it is invoked as part of event_thread_exit when trace windows are\nenabled.\n\nThis showed up as \"Footer is not the final\" failures on the\ntool.drcacheoff.warmup-pthreads-windows-split test during raw2trace.\n\nVerified that the test now passes when run 100x.\n\nFixes: #7960"
    },
    {
      "commit": "f668cd22caaff94036094cf180caca04c1580f99",
      "tree": "8148644fc4cd0f7e3470cae4c8bb174dbab92394",
      "parents": [
        "6976e3af1a78c099d293f393151831788a36bc2a"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri Jun 19 23:08:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 23:08:51 2026"
      },
      "message": "i#7952: Skip ELF header checks for vvar_vclock (#7954)\n\nWe\u0027re seeing weird behavior from some safe_read SIGBUS instances trying\nto see if vvar_vclock has an ELF header. It\u0027s looking like a kernel bug.\nWe\u0027d prefer to skip the SIGBUS instances happening multiple times in any\ncase, so we add special handling to avoid looking for modules in vvar*\nregions.\n\nThe existing behavior of \"[vvar]\" returning the special MEMPROT_VDSO is\nextended to also include \"[vvar_vclock]\" for\nDynamoRIO/drmemory#1778.\n\nTested: the static_noclient test crashes with SIGBUS without this fix on\nmy machine every time; now it passes.\n\nFixes #7952"
    },
    {
      "commit": "6976e3af1a78c099d293f393151831788a36bc2a",
      "tree": "7bd309af136fb22391a3497911cda38db3642c92",
      "parents": [
        "6e98ba8266f6828974b1ca1e04279cf82c625536"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jun 18 20:04:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 20:04:34 2026"
      },
      "message": "i#7950: Avoid local file conflict in file_io test (#7951)\n\nChanges the client.file_io test to use a unique name instead of just\n\"foo\" which can collide with manually-created content.\n\nTested locally where a \"foo\" directory in the build dir made this test\nfail every time without this fix.\n\nFixes #7950"
    },
    {
      "commit": "6e98ba8266f6828974b1ca1e04279cf82c625536",
      "tree": "a505e52783d2f9078e52f4b531b7757fe6a171c6",
      "parents": [
        "5b6e915777667d689137fee8d50b3a48d1f0785f"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jun 18 19:45:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 19:45:55 2026"
      },
      "message": "i#7948: Relax switch_insertion template (#7949)\n\nThe tool.switch_insertion test sometimes fails on my local machine with\nan output mismatch in the switch count for Core 0: the template has 11\nwhile I sometimes see 12. It looks like regular non-determinism in\nscheduling, so the template should be relaxed.\n\nTested:\n\nThis was failing every few parallel runs of all tests, and sequentially\nit failed on the 34th try.\nWith the fix it succeeded every time:\n\n```\n$ ctest --repeat-until-fail 250 -R switch_insert\nTest project /usr/local/google/home/bruening/dr/git/build_x64_dbg_tests\n    Start 350: code_api|tool.switch_insertion\n    Test #350: code_api|tool.switch_insertion ...   Passed    2.01 sec\n    ...\n1/1 Test #350: code_api|tool.switch_insertion ...   Passed    2.22 sec\n100% tests passed, 0 tests failed out of 1\nTotal Test time (real) \u003d 494.77 sec\n```\n\nFixes #7948"
    },
    {
      "commit": "5b6e915777667d689137fee8d50b3a48d1f0785f",
      "tree": "4161520c2066a9a30d4984456669459bdecbdcee",
      "parents": [
        "80e6974eccbc1c9cbd675c07bdf8e0a09400962f"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Wed Jun 17 03:12:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 03:12:16 2026"
      },
      "message": "i#7936: Resolve bool definition conflicts in globals_api.h (#7937)\n\nResolves compilation errors caused by conflicting definitions of\nthe `bool` type between the DynamoRIO \"core\" and external clients.\nTo support both without requiring \u003cstdbool.h\u003e to be included\neverywhere, we make the `bool` definition in globals_api.h\nconditional.\nFor core compilation (where `DYNAMORIO_INTERNAL` is defined),\nwe undefine the `bool` macro and fall back to `typedef _Bool bool`.\nFor clients and extensions, we preserve the standard `bool` macro\ndefinition.\n\nThis issue was causing a failure when building the `samples_proj`\ntest internally.\n\nFixes #7936"
    },
    {
      "commit": "80e6974eccbc1c9cbd675c07bdf8e0a09400962f",
      "tree": "64a7b7e738a911424ca9653fa2160530105ce247",
      "parents": [
        "0222df17acfddb5209c3fe109f92a2f6472f1192"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Jun 17 01:51:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 01:51:34 2026"
      },
      "message": "i#7939: Fix aarch64 exit crash (#7945)\n\nFixes an aarch64 crash on exit when the initstack_mutex is contended by\nstoring the mutex pointer in a callee-saved register.\n\nAdds a new test pthreads.pthread_exit_barrier based on the reproducer\nprovided in the issue. This test crashes in release build every time\nwithout the fix. Tested with the fix:\n```\n$ ctest --repeat-until-fail 100 -R exit_bar\nTest project dr/build_x64_rel_tests\n    Start 108: code_api|pthreads.pthread_exit_barrier\n    Test #108: code_api|pthreads.pthread_exit_barrier ...   Passed    2.12 sec\n    Start 108: code_api|pthreads.pthread_exit_barrier\n    ...\n1/1 Test #108: code_api|pthreads.pthread_exit_barrier ...   Passed    2.14 sec\n100% tests passed, 0 tests failed out of 1\n```\n\nFixes #7939"
    },
    {
      "commit": "0222df17acfddb5209c3fe109f92a2f6472f1192",
      "tree": "425f81d8b5cff2a1a0a150c31ba885d8a2389893",
      "parents": [
        "7f69df6509070b079369c51c7cc6d5c87c291433"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 16 17:27:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 17:27:37 2026"
      },
      "message": "i#7943: Set vector length in view tool (#7944)\n\nLooks for the vector length marker and sets the decoder vector length\nbased on its value. This is required to decode the proper displacement\nfor some SVE instruction\u0027s memory operands.\n\nAdds a unit test.\n\nFurther tested on the original trace where this was noticed:\n\nBefore:\n```\n$ ctest -V -R off.allasm-scattergather-b\n$ clients/bin64/drmemtrace_launcher -indir suite/tests/tool.drcacheoff.allasm-scattergather-basic-counts.allasm_scattergather.*.dir -tool view 2\u003e\u00261 | less\n        1408         240:  W0.T909560 ifetch       4 byte(s) @ 0x0000000000400508 a401a03c   ld1b   (%x1)[1byte] %p0/z -\u003e %z28.b\n```\n\nAfter:\n```\n$ ctest -V -R off.allasm-scattergather-b\n$ clients/bin64/drmemtrace_launcher -indir suite/tests/tool.drcacheoff.allasm-scattergather-basic-counts.allasm_scattergather.*.dir -tool view 2\u003e\u00261 | less\n        1408         240:  W0.T909560 ifetch       4 byte(s) @ 0x0000000000400508 a401a03c   ld1b   +0x10(%x1)[1byte] %p0/z -\u003e %z28.b\n```\n\nFixes #7943"
    },
    {
      "commit": "7f69df6509070b079369c51c7cc6d5c87c291433",
      "tree": "1e0cff88ff2330b25c42749682c1ed77084074e3",
      "parents": [
        "40cbf19c76b276db017329ccfd469f1b33326dc2"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Jun 15 21:01:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 21:01:55 2026"
      },
      "message": "i#2001 drmemtrace perf: Recommend raw ramdisk and compression (#7942)\n\nAdds a short section that discusses i/o being the bottleneck for offline\ntraces and the importance of selecting fast storage (such as a ramdisk)\nand compression with the right tradeoffs.\n\nIssue: #2001"
    },
    {
      "commit": "40cbf19c76b276db017329ccfd469f1b33326dc2",
      "tree": "d19179cbf91e84fac3b0b52271a283f1ca18778b",
      "parents": [
        "0adaf8ab6bc51e1b23d3924a9e480858f3c0d45e"
      ],
      "author": {
        "name": "cpprust",
        "email": "cpprust@gmail.com",
        "time": "Mon Jun 15 19:09:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 19:09:08 2026"
      },
      "message": "Bump elfutils to 0.195 (#7938)\n\nBumps elfutils submodule from 0.191 to 0.195.\n\n## Why\n- Fixes const-qualifier discard warning with gcc 16.1.1 (already fixed\nin elfutils 0.195)\n- Replaces PR #7935 \n\n## Changes\n- Update `third_party/elfutils` to 0.195\n- Add `eu_pic` target in `ext/drsyms/CMakeLists.txt` for\n`lib/eu-search.c` helpers\n\n## Testing\n```\n$ cmake --build build\n[993/993] Linking CXX executable clients/bin64/drmemtrace_launcher\n```"
    },
    {
      "commit": "0adaf8ab6bc51e1b23d3924a9e480858f3c0d45e",
      "tree": "43040054cf5a9e1adde1c333ebd26fed35a800cf",
      "parents": [
        "67531007348fa07310bb95bc9026e5f958c6ae45"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Jun 11 00:56:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 00:56:50 2026"
      },
      "message": "i#7918 slow burst tests: Increase test timeouts (#7933)\n\nIncreases the timeouts for various drmemtrace tests which can exceed the\n90s timeout on a slow loaded machine:\n+ code_api|tool.drcacheoff.fork\n+ code_api|tool.drcacheoff.multiproc\n+ code_api|tool.drcacheoff.scale_time\n+ code_api|tool.drcacheoff.burst_malloc\n+ code_api|tool.drcacheoff.burst_reattach\n+ code_api|tool.drcacheoff.burst_threadfilter\n+ code_api|tool.drcacheoff.burst_threadL0filter\n+ code_api|tool.histogram.offline\n+ code_api|tool.record_filter_bycore_multi\n\nTested on such a machine where the 180s timeouts cause these tests to\nsucceed where they were timing out in every run or every couple of runs\nbefore when run in parallel with other tests with parallelism exceeding\nthe core count. We keep seeing slower and slower GA VMs so this should\nhelp us avoid future timeouts on GA as well.\n\nIssue: #7918"
    },
    {
      "commit": "67531007348fa07310bb95bc9026e5f958c6ae45",
      "tree": "5456f1740c8113140f00742b73890ebe952999cb",
      "parents": [
        "902386758f812636933d683076671f01b711aac9"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Wed Jun 10 00:11:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 00:11:59 2026"
      },
      "message": "i#7924: Allow 3 page vdso (#7931)\n\nRelax checks for vdso being just 1 or 2 pages, to handle the 3-page vdso\non recent Linux kernels.\n\nTested on my workstation running Linux 7.0.11: `linux.xarch` used to\ngenerated an assertion failure on\n```\niter-\u003evm_end - iter-\u003evm_start \u003d\u003d PAGE_SIZE || iter-\u003evm_end - iter-\u003evm_start \u003d\u003d 2 * PAGE_SIZE\n```\nNow this assertion passes. Though the test still fails due to other\nunrelated issues.\n\nIssue: #7924"
    },
    {
      "commit": "902386758f812636933d683076671f01b711aac9",
      "tree": "5a9f2e2eb6cc01f8ba5a4e5b0b1c81bf267e1bd4",
      "parents": [
        "6ddc94ce8bb232a0dc1baa8a76d6d0b4ccd59d26"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 09 21:05:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 21:05:37 2026"
      },
      "message": "i#7929: Handle SIGBUS in DR init on attach (#7930)\n\nAdds SIGBUS to the set of expected signals during DR init when attaching\non Linux. This fixes failures to attach on some machines.\n\nTested: client.attach_test, client.attach_blocking,\nclient.attach_memory_dump_test, and\nclient.attach-memory-dump-syscall-test now pass on a machine where they\nfailed every time before.\n\nFixes #7929"
    },
    {
      "commit": "6ddc94ce8bb232a0dc1baa8a76d6d0b4ccd59d26",
      "tree": "f6103d61db9a330040871c34c8aaffdc9b87356a",
      "parents": [
        "551a5c9b292add053fc280145e32ca92c05fa454"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 09 21:05:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 21:05:27 2026"
      },
      "message": "i#7927: Increase scheduler.unit_tests timeout (#7928)\n\nIncreases the scheduler.unit_tests timeout from 90s to 360s as this test\nis long and can time out in some runs on slower loaded machines (I\nobserved 241s with \"-j 12\" on a VM).\n\nTested:\n\nI hit this every time when running \"ctest -j 12\" before. With the fix it\nno longer fails in a parallel run.\n\nFixes #7927"
    },
    {
      "commit": "551a5c9b292add053fc280145e32ca92c05fa454",
      "tree": "fb022b1126cf5c87497f63bd3ddf46150ee474c6",
      "parents": [
        "50f650d091b9f40565441e56285fe38f55c4eedf"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 09 19:31:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 19:31:52 2026"
      },
      "message": "i#1734 top bits: Update raw drmemtrace docs (#7923)\n\nUpdates the drmemtrace docs on raw entries for the new\nOFFLINE_TYPE_PC_TOP_BIT record. Also updates the version and type to\nmatch modern output.\n\nIssue: #1734"
    },
    {
      "commit": "50f650d091b9f40565441e56285fe38f55c4eedf",
      "tree": "c830d8e37fec514e78661deaef6d3819ec4311c9",
      "parents": [
        "49bbb991fc2b7d82db59f0884e4c64aff72198c7"
      ],
      "author": {
        "name": "cpprust",
        "email": "cpprust@gmail.com",
        "time": "Tue Jun 09 19:31:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 19:31:19 2026"
      },
      "message": "Fix drmemtrace SIGFPE for glibc 2.43 (#7926)\n\nBug:\n```\ndrrun -t drmemtrace -offline -record_heap -- /bin/ls\n```\nTriggers SIGFPE on Fedora 44 with glibc 2.43\n\nFix:\nAlso match OP_movdqu in core/unix/loader.c\n\nRoot cause:\n1. glibc 2.43 uses movdqu instead of mov for TLS offset loads\n2. Current pattern matcher only checks for OP_mov_ld\n3. When pattern match fails, falls back to hardcoded offsets 0x2c8/0x2d0\n4. Those offsets are wrong for glibc 2.43 (should be 0x2a0/0x2a8)\n5. Wrong offsets cause __libc_early_init to divide by zero\n\nRelated to #5437\n\nVerify:\n```\n$ objdump -d /lib64/libc.so.6 | grep -A30 \u0027\u003c__libc_early_init\u003e:\u0027 | grep movdqu\n  1484a1:       f3 0f 6f 80 a0 02 00    movdqu 0x2a0(%rax),%xmm0\n```"
    },
    {
      "commit": "49bbb991fc2b7d82db59f0884e4c64aff72198c7",
      "tree": "917300a6036fdee321610d6d05d69185290b76e4",
      "parents": [
        "a9afda3c70dd1f4c37a78f3ef93c0b4e70925d44"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 09 14:51:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 14:51:46 2026"
      },
      "message": "i#7922: Avoid file name conflicts in drsyscall tests (#7925)\n\nThe drsyscall-record-trimmer-test was failing when run with other tests\nbecause it uses an input file \"syscall_record_file.test\" while the\nsyscall-records-test was deleting the glob \"syscall_record_file.*\"\n(since its test produces various numeric suffixes on that name). This is\nfixed by adding a prefix to the trimmer test\u0027s input and output files.\n\nTested in a parallel run where it failed multiple times before but now\npasses.\n\nFixes #7922"
    },
    {
      "commit": "a9afda3c70dd1f4c37a78f3ef93c0b4e70925d44",
      "tree": "8f6d888315182122c319efa9998401af9f9150ad",
      "parents": [
        "c00adbd673e99662ac5b3c4bf03e9224301f8720"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Jun 08 23:52:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 23:52:54 2026"
      },
      "message": "i#7909 unknown cache: Add 48KB cache size enum (#7921)\n\nAdds support for a 48KB cache size by adding an enum value.\n\nWe don\u0027t have a mock hardware query set up so it\u0027s not simple to add a\ntest, unfortunately.\n\nFixes #7909"
    },
    {
      "commit": "c00adbd673e99662ac5b3c4bf03e9224301f8720",
      "tree": "969170769680cc26ec408f1f490ef8d0e9a8ec88",
      "parents": [
        "e9fbd81a26d00a6f94cdf07e291edc18af515e95"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Sat Jun 06 21:21:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 21:21:35 2026"
      },
      "message": "i#7914 skipped memrefs: Shrink stack usage (#7920)\n\nMoves a 24K array from the stack to the heap to avoid a stack overflow\nseen on internal usage when combined with other libraries.\n\nTested internally where the overflow disappears.\n\nIssue: #7914"
    },
    {
      "commit": "e9fbd81a26d00a6f94cdf07e291edc18af515e95",
      "tree": "73ffff6a33389fbeaf37223a714e9c104680e280",
      "parents": [
        "4b448119a6dd33fffc2edd4a1c8a36759979eecc"
      ],
      "author": {
        "name": "Kyle Huey",
        "email": "khuey@kylehuey.com",
        "time": "Thu Jun 04 03:58:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 03:58:43 2026"
      },
      "message": "i#7917 Add x86 decoder/encoder support for the WAITPKG extension. (#7917)\n\nThe WAITPKG extension adds 3 new instructions, UMONITOR, TPAUSE, and\nUMWAIT. In DR, these have all been incorrectly decoded as useless\nprefixes on MFENCE.\n\nUMONITOR is a deeply weird instruction. In the style of MOVDIR64 and\nfriends, UMONITOR\u0027s sole operand is a register that contains an offset\nto form an address, where the portion of the register used to construct\nthat offset is determined by the effective addressing width and the\naddress size prefix. Unlike MOVDIR64 and friends, UMONITOR does not act\non a fixed size range of memory starting at address. UMONITOR, like\nMONITOR before it, instead acts on the \"monitor line\" (in practice the\ncache line) containing address. Because of that complexity, no attempt\nis made to translate the register to a memory operand like is done for\nMOVDIR64 and friends. Additionally, UMONITOR defaults to DS and does\naccept segment override prefixes, unlike MOVDIR64 and friends (which are\nfixed to ES and do not accept segment override prefixes).\n\nTPAUSE and UMWAIT have straightforward (and identical) decode and encode\nmechanics. The only odd thing about them is their implicit source\noperands."
    },
    {
      "commit": "4b448119a6dd33fffc2edd4a1c8a36759979eecc",
      "tree": "2623016e04f802bb2f59c7993a435444e26cc0db",
      "parents": [
        "757574b390062bf929aae1a0c5ab6a843b2cd438"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Jun 02 23:57:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 23:57:00 2026"
      },
      "message": "i#7914 skipped memrefs: Record contiguous scatter/gather skipped memrefs (#7915)\n\nInitial step toward recording skipped memrefs: records AArch64\ncontiguous scatter/gather skipped memrefs. This is done by recording a\nnew raw record type holding the base address, with raw2trace filling in\nany skipped memrefs as the addresses are knowable from the base address\nand instruction encoding.\n\nEach skipped memref is stored as a new record type\nTRACE_MARKER_TYPE_SKIPPED_MEMREF in the final trace.Neither the memory\nreference size nor type (read or write) is included: it is assumed that\nthey can be inferred from the instruction fetch entry.\n\nA new skipped_memref_markers count is added to basic_counts and used to\nverify operation on the allasm scattergather test.\n\nSome examples:\n\n```\n        2404         274:  W0.T825222 ifetch       4 byte(s) @ 0x0000000000400248 a5e1ec3c   ld4d   +0x40(%x1)[8byte] %p3/z -\u003e %z28.d %z29.d %z30.d %z31.d\n        2405         274:  W0.T825222 read         8 byte(s) @ 0x000000000041044e by PC 0x0000000000400248\n        2406         274:  W0.T825222 read         8 byte(s) @ 0x0000000000410456 by PC 0x0000000000400248\n        2407         274:  W0.T825222 read         8 byte(s) @ 0x000000000041045e by PC 0x0000000000400248\n        2408         274:  W0.T825222 read         8 byte(s) @ 0x0000000000410466 by PC 0x0000000000400248\n        2409         274:  W0.T825222 \u003cmarker: skipped memref 0x41046e\n        2410         274:  W0.T825222 \u003cmarker: skipped memref 0x410476\n        2411         274:  W0.T825222 \u003cmarker: skipped memref 0x41047e\n        2412         274:  W0.T825222 \u003cmarker: skipped memref 0x410486\n        2413         275:  W0.T825222 ifetch       4 byte(s) @ 0x000000000040024c e401e03c   st1b   %z28.b %p0 -\u003e +0x10(%x1)[1byte]\n```\n\n```\n        2525         287:  W0.T825222 ifetch       4 byte(s) @ 0x000000000040027c e531e83c   st2w   %z28.s %z29.s %p2 -\u003e +0x20(%x1)[4byte]\n        2526         287:  W0.T825222 write        4 byte(s) @ 0x000000000041040e by PC 0x000000000040027c\n        2527         287:  W0.T825222 write        4 byte(s) @ 0x0000000000410412 by PC 0x000000000040027c\n        2528         287:  W0.T825222 \u003cmarker: skipped memref 0x410416\n        2529         287:  W0.T825222 \u003cmarker: skipped memref 0x41041a\n        2530         287:  W0.T825222 \u003cmarker: skipped memref 0x41041e\n        2531         287:  W0.T825222 \u003cmarker: skipped memref 0x410422\n        2532         287:  W0.T825222 \u003cmarker: skipped memref 0x410426\n        2533         287:  W0.T825222 \u003cmarker: skipped memref 0x41042a\n        2534         288:  W0.T825222 ifetch       4 byte(s) @ 0x0000000000400280 e5b1ec3c   st2d   %z28.d %z29.d %p3 -\u003e +0x20(%x1)[8byte]\n```\n\n\nIssue: #7914"
    },
    {
      "commit": "757574b390062bf929aae1a0c5ab6a843b2cd438",
      "tree": "790b8940e7b00e1590c37f96a7bb612b7a6a32d8",
      "parents": [
        "d091d45aad1cae039de571f760eb4587ec1d6704"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri May 29 23:08:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 23:08:52 2026"
      },
      "message": "i#1734 tagged addrs: Add new OFFLINE_TYPE_PC_TOP_BIT (#7913)\n\nSwitches to using a new block PC type OFFLINE_TYPE_PC_TOP_BIT for raw\ndrmemtrace offline records in 64-bit mode. This allows distinguishing\naddresses from PC records under Intel Linear Address Masking with bits\n48..62 ignored.\n\nAdds a test case to the unit tests.\n\nIssue: #1734"
    },
    {
      "commit": "d091d45aad1cae039de571f760eb4587ec1d6704",
      "tree": "f713a1a1e15175c435a5d9ad50ffacdd3c2de1f6",
      "parents": [
        "84faf81bd22f94b8135a4a45575b757d32cff306"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu May 28 22:12:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 22:12:25 2026"
      },
      "message": "i#1734 top bits: Auto-canonicalize addresses in scheduler (#7908)\n\nAdds a new on-by-default drmemtrace scheduler option\n\"canonicalize_addresses\" which auto-canonicalizes PC and address values\nin all record types. This avoids requiring all tools to handle top bits\nbeing set.\n\nAuto-canonicalization is only supported for memref_t usage: not for\ntrace_entry_t.\n\nAdds a new scheduler statistic SCHED_STAT_CANONICALIZED_ADDRESSES which\ncounts memref_t fields modified for canonicalization, which should be\nvery useful for seeing which traces have top bits set and how many.\n\nAdds a scheduler unit test.\n\nIssue: #1734"
    },
    {
      "commit": "84faf81bd22f94b8135a4a45575b757d32cff306",
      "tree": "655b9f3d49b7b0043e705fb084c296c41a074b90",
      "parents": [
        "f7ac196203980043c72a44192fb7116f6d563289"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu May 28 20:34:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 20:34:19 2026"
      },
      "message": "i#7695: Fix 32-bit test failures on certain runners (#7911)\n\nFixes 32-bit test failures that occur in a group on certain Github\nrunners.\n\nFirst we have tests that use a checked-in trace file and are only run if\nzlib is available. The failing runners must have zlib, while all the\npassing runners do not have zlib:\n+ code_api|tool.drcacheoff.legacy\n+ code_api|tool.drcacheoff.func_view_noret\n+ code_api|tool.drcacheoff.altbindir\n\nThe checked-in file used for all 3 of these is a 64-bit file! So\nnaturally they fail, with file reader errors. So the solution is to\ndisable for 32-bit (32-bit is low priority; not worth adding an input\nfile).\n\nNext we have:\n+ code_api|tool.drcacheoff.burst_replaceall\n\nThis fails because it doesn\u0027t write out the encodings.bin file and we\nsee sysenter wrapper code: we end up with a modidx -1 and raw2trace\nfails because there\u0027s no encoding info (we got rid of vdso contents in\nmodules.log). We should just disable for 32-bit; again, not worth\nspending time improving the test just for 32-bit.\n\nFinally:\n+ code_api|tool.drcacheoff.burst_syscall_inject\n\nThis has an invariant failure on sysenter: that we can just relax.\n\nTested locally where these failures all reproduce.\n\nFixes #7695"
    },
    {
      "commit": "f7ac196203980043c72a44192fb7116f6d563289",
      "tree": "825d27dbc9f6efe81185518371e8679c2536a43e",
      "parents": [
        "a99abb3b983bd873d070d4932dcc86060df55967"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu May 28 16:24:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 16:24:19 2026"
      },
      "message": "i#7909 unknown cache: Print out size when unknown (#7912)\n\nPrints out the cache size that is unknown so we can update the code to\nhandle this size once we get the failure to reproduce (6 attempts so far\nin PR #7910 have failed to hit a runner that reproduces).\n\nIssue: #7909"
    },
    {
      "commit": "a99abb3b983bd873d070d4932dcc86060df55967",
      "tree": "e6e9f53a9eed161c864912172e38534a3c0fad9c",
      "parents": [
        "0707781f435769ec375b9a865639cda46e42fb3f"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Thu May 28 00:02:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 00:02:11 2026"
      },
      "message": "i#7902: Add support for Intel FRED instructions (#7903)\n\nAdd support for Intel FRED instructions (`erets`, `eretu`, `lkgs`)\n\nFixes #7902"
    },
    {
      "commit": "0707781f435769ec375b9a865639cda46e42fb3f",
      "tree": "4cb650bc31b1f88fab0ee5ed7321d130475830d8",
      "parents": [
        "db02925c4841efcba96f8eb1b8c3f4255ee63650"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed May 27 15:23:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 15:23:36 2026"
      },
      "message": "i#1734 top bits: Make missing memrefs fatal errors (#7901)\n\nTurns missing load/store records in raw2trace into fatal errors, for\nearlier and more useful error reporting. This can only be done in basic\nblocks which do not contain any predicated/conditional loads/stores nor\nany expanded sequences like rep-string or scatter/gather.\n\nAdds memref counting and whether we expect to see all memrefs to the\nexisting elision analysis. Stores the data in the raw2trace block\nsummary and uses it during operand handling.\n\nAdds unit tests for both directions of the error.\n\nFixes unit tests that currently violate the new error.\n\nFixes some minor bugs that are not worth separating out as they do not\nhave significant implications without the other changes here:\n+ tracer.cpp fails to set op_disable_optimizations for\nop_L0_filter_until_instrs\n+ raw2trace was checking the old _FILTERED instead of _{I,D}FILTERED\n+ raw2trace wasn\u0027t setting disable_optimizations_ in instru_offline.\nThis fix is a little more involved, accomplished by moving the\ninstru_offline field to the per-thread data structure so it can be set\nfrom the filetype.\n\nIssue: #1734"
    },
    {
      "commit": "db02925c4841efcba96f8eb1b8c3f4255ee63650",
      "tree": "73eb151a24dd1656a5d77150744a33f3f1770ca7",
      "parents": [
        "62d275318d4854eb100b9f4696474ccfccbe1819"
      ],
      "author": {
        "name": "Avnish Uba",
        "email": "avnishuba@outlook.com",
        "time": "Tue May 26 21:14:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 21:14:38 2026"
      },
      "message": "i#4103 clang-tidy: Remove unused drmemtrace.h include from output.cpp (#7905)\n\nRemoves an unused `drmemtrace.h` include from\n`clients/drcachesim/tracer/output.cpp`.\n\n`clang-tidy` with `misc-include-cleaner` no longer reports the unused\ninclude warning after this change. The project rebuilds successfully\nafter removing the include.\n\nIssue: #4103"
    },
    {
      "commit": "62d275318d4854eb100b9f4696474ccfccbe1819",
      "tree": "67017de8f431d3e965ad3a2a76298f7c878489d5",
      "parents": [
        "015037cac992a133b6fbc5e2907d7daadf74f46f"
      ],
      "author": {
        "name": "Jack Gallagher",
        "email": "jack.gallagher@arm.com",
        "time": "Tue May 26 10:13:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 10:13:09 2026"
      },
      "message": "i#7906 Handle more AArch64 cache operations in drmemtrace (#7907)\n\nAdd two cache maintenance operations that were missing from the switch\nin the tracer\u0027s is_aarch64_dcache_flush_op() function:\n\ndc cvap: Data or unified cache line clean by VA to Point of Persistence\n\ndc cvadp: Data or unified cache line clean by VA to Point of Deep\nPersistence\n\nFixes #7906"
    },
    {
      "commit": "015037cac992a133b6fbc5e2907d7daadf74f46f",
      "tree": "439ea9cd1bb00d31af8171fdcb9574d6a2a24ebf",
      "parents": [
        "d16eb5746a5fa087e529d870410e37f985d34a41"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri May 22 21:52:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 21:52:15 2026"
      },
      "message": "i#1734 top bits: Handle top-byte-ignore addresses in drmemtrace (#7904)\n\nAdds handling of top-byte-ignore load and store addresses in drmemtrace.\nThis is done by taking advantage of bits 48...55 still being required to\nbe in canonical form (all 0\u0027s or all 1\u0027s) on all supported machines,\nwhich severely limits which other records a top-bits-set address can\nimpersonate.\n\n+ Timestamps can be distinguished by expecting reasonable values.\n+ PC records are made distinct by lowering -max_bb_instrs to 126.\n+ Markers are made distinct by using a new\nTRACE_MARKER_TYPE_KERNEL_EVENT_RAW which is turned into\nTRACE_MARKER_TYPE_KERNEL_EVENT in raw2trace. A new invariant check\nensures this _RAW type is not present in final traces; a new unit test\nvalidates the check.\n+ Other types either cannot appear where an address can or always\nprecede an address.\n\nAdds a unit test.\n\nAlso tested on an internal app with real top-byte-ignore addresses that\npreviously broke drmemtrace.\n\nIssue: #1734"
    },
    {
      "commit": "d16eb5746a5fa087e529d870410e37f985d34a41",
      "tree": "4324cafa101d5074a634a50012571fe0f9a860a7",
      "parents": [
        "b2587972988db8d54166c71c21ea264f063bc4c9"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu May 14 21:47:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 21:47:40 2026"
      },
      "message": "i#7899: Make multi-indir deterministic (#7900)\n\nSets -sched_exit_if_fraction_inputs_left to 0 so our exact instruction\ncount check in the template will always match.\n\nTested: \"ctest --repeat-until-fail 100 -R multi_indir\" now passes\nlocally when before this test would fail every 3 or 4 runs.\n\nFixes #7899"
    },
    {
      "commit": "b2587972988db8d54166c71c21ea264f063bc4c9",
      "tree": "76161c8d345c642670d683911f53ecb4b365b24d",
      "parents": [
        "0d5d31e520d85018ba43f96460a1c758500c73ea"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu May 14 17:10:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 17:10:18 2026"
      },
      "message": "i#6672 C++17: Update 3 places to C++17 (#7898)\n\nTargets 3 places in the code with comments about C++17 enabling simpler\ncode:\n\n+ decode_cache std::unordered_map::try_emplace\n+ schedule_stats_test structured bindings\n+ drpt2trace std::filesystem::file_size\n\nIssue #6672"
    },
    {
      "commit": "0d5d31e520d85018ba43f96460a1c758500c73ea",
      "tree": "cc2e3c4b5d7df43e75562b960d89eb967b35c4aa",
      "parents": [
        "810fcace362e83a31ba5554cfcd03b1db7980cc1"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Wed May 13 00:20:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 00:20:25 2026"
      },
      "message": "i#7793: Fix parallel mode support in kernel_filter_t (#7895)\n\nManage state in a shard data object instead of as a class global\nvariable.\n\nIssue: #7793"
    },
    {
      "commit": "810fcace362e83a31ba5554cfcd03b1db7980cc1",
      "tree": "aa6d62b87bb92030fdc1a6086607a03bc5c86e04",
      "parents": [
        "84d33d23de756417e7f99a1e48676157e2373d94"
      ],
      "author": {
        "name": "Lorién López Villellas",
        "email": "lorienlopezv@gmail.com",
        "time": "Tue May 12 20:41:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 20:41:57 2026"
      },
      "message": "Correct EVEX tuple type for AVX-512 gather/scatter (#7896)\n\nAll 16 EVEX AVX-512 gather and scatter data-move instructions were\nmarked with `ttnone` in the decode table so no EVEX compressed\ndisplacement scaling is applied. However, these instructions use the\nTuple1 Scalar (T1S) memory format: the 8-bit `disp8` field must be\nmultiplied by the element size to obtain the actual byte displacement,\ni.e., 4 for 32-bit (`MVd`) operands, 8 for 64-bit (`MVq`) operands.\n\nThe bug is silent when `disp\u003d0` and it manifests when the compiler uses\nbase+displacement addressing, usually in a stack-allocated array, which\nproduces a non-zero `disp8`, for example:\n\n```\nvscatterdpd %zmm3, -0x140(%rbp,%ymm0,8){%k1}\n```\n\n\nHere `disp8 \u003d -40` (0xd8), representing actual displacement `-40 x 8 \u003d\n-320 \u003d -0x140`. With `ttnone`, DynamoRIO stores `-40` in\n`sg_info-\u003edisp`. When `drx_expand_scatter_gather()` expands this into\nscalar stores it emits `[rbp + index*8 - 40]` instead of `[rbp + index*8\n- 320]`, writing to wrong addresses.\n\nI experienced this bug executing the GROMACS molecular dynamics package\nin which some of the data eventually got corrupted.\n\n---------\n\nCo-authored-by: Kyle Huey \u003ckhuey@kylehuey.com\u003e"
    },
    {
      "commit": "84d33d23de756417e7f99a1e48676157e2373d94",
      "tree": "16a515a62d25ca8d80fb272a8b2d1cf0bdefa068",
      "parents": [
        "4d6e9ac84316ec4f966f8f67be305e10927d01d0"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue May 12 16:46:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 16:46:53 2026"
      },
      "message": "i#7881: Repeatedly try to steal from other cores in scheduler (#7894)\n\nPreviously, a core going idle tried to steal work from other cores just\nonce at the transition to idle. We\u0027ve found this leads to too-uneven\nworkloads with larger core counts and non-negligible idle fractions. To\nsolve, we repeatedly try to steal, at a cadence in idle counts specified\nby a new scheduler parameter steal_attempt_period with a new launcher\noption -sched_steal_attempt_periodj.\n\nTested:\n\nAdds a unit test.\n\nTested on large workloads on many cores where this improves the max\ninstruction ratio among cores from values like 7x down to under 2x.\n\nFixes #7881"
    },
    {
      "commit": "4d6e9ac84316ec4f966f8f67be305e10927d01d0",
      "tree": "de3483e9ad5649a520ab126e21b23b443c38c20f",
      "parents": [
        "e9889977525a0206efcc76bc9a442733ecac514a"
      ],
      "author": {
        "name": "Assad Hashmi",
        "email": "assad.hashmi@arm.com",
        "time": "Tue May 12 16:37:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 16:37:55 2026"
      },
      "message": "i#7805: ptrace attach for blocked SUSPEND_SIGNAL and sigwaitinfo (#7843)\n\nThis patch fixes two issues when attaching to threads under DR control:\n1) Thread blocks SUSPEND_SIGNAL (SIGILL on Linux).\n2) Thread is sitting in one of the sigwait syscalls with SUSPEND_SIGNAL\n   in its wait set.\nIn both cases the usual signal based attach mechanism cannot be used.\n\nOne solution is to use ptrace for both cases. This is guarded by the\n-attach_unmask_suspend_signal option and implemented on AArch64 Linux\nonly.\n\n1) ptrace unmask:\n   - Create a DR client helper thread.\n   - Enumerate /proc/\u003cpid\u003e/task and attach to each thread via ptrace.\n   - Use PTRACE_{GET,SET}SIGMASK to clear SUSPEND_SIGNAL from each mask.\n   - Detach and continue with the normal suspend and takeover loop.\nThis keeps the standard signal based takeover working for threads that\nonly blocked SUSPEND_SIGNAL.\n\n2) ptrace takeover:\n   - Detect threads waiting in rt_sigwaitinfo/rt_sigtimedwait and whose\nwait set contains SUSPEND_SIGNAL (using /proc/self/task/\u003ctid\u003e/syscall\n     and reading the thread\u0027s sigset).\n   - For those threads use ptrace to:\n     - Stop and attach to them.\n     - Read registers and signal mask.\n     - Install a small takeover stub on the stack, detach and resume.\n   - os_thread_take_over() then initializes DR state and calls\n     d_r_dispatch().\n\nA unit test, api.sigill_blocked, has been added for both cases and a\nbrief description of the -attach_unmask_suspend_signal option added to\nthe \u0027DynamoRIO Runtime Options\u0027 section of the documentation.\n\nThis feature exposed a bug in suite/tests/api/detach_state_shared.c on\nx86-64. The memory permissions and cache consistency check in\ncore/vmareas.c:\nASSERT(!ok || !TEST(MEMPROT_WRITE, prot2) ||\nTEST(FRAG_SELFMOD_SANDBOXED, *flags) ||\n               !INTERNAL_OPTION(hw_cache_consistency));\nfailed because the *_from_DR*() tests (self-modifying code) left the\nshared page as RWX. Later, when a *_from_cache*() test (not\nself-modifying code, normal RX) landed on that same page DR expected a\nnormal non-selfmodifying non-writeable fragment in the page, failing\nthe ASSERT().\n\nThe fix makes each *_from_DR*() test restore its page to RX before\nreturning,\nso later *_from_cache*() tests see the expected permissions.\n\nIssue: #7805"
    },
    {
      "commit": "e9889977525a0206efcc76bc9a442733ecac514a",
      "tree": "bf4a35b55dc318a19b79bad69025512862714706",
      "parents": [
        "1823dc5bfcde301c04704d1154a2eb0451345c1b"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Fri May 08 16:08:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 16:08:37 2026"
      },
      "message": "i#7889: Zero upper vector on gather to lower bits (#7890)\n\nInvokes the logic to zero the upper bits of the ymm/zmm vector\n(depending on whether the machine supports AVX2 or AVX512), when only\nthe lower bits of it that map to xmm or ymm are gathered into.\n\n#7883 added the zeroing logic already but invoked it only for partial\ngathers where there\u0027s a mismatch between the index and data element\nsizes. Here we invoke it for all cases where the vector gathered into is\nsmaller than the full length supported by the machine.\n\nExtends the allasm_scattergather_x86.asm test to verify that the upper\npart of the vector gathered-into is indeed zeroed. This works fine when\nnot under DynamoRIO which verifies our assumptions.\n\nVerified on a machine with AVX-512 that the tests pass:\n\n```\nThe following tests passed:\n        code_api|client.drx-scattergather\n        code_api|client.drx-scattergather-bbdup\n        code_api|sample.memval_simple_scattergather\n        code_api|tool.drcachesim.scattergather-x86\n        code_api|tool.drcacheoff.allasm-scattergather-basic-counts\n        code_api|tool.drcachesim.allasm-scattergather-basic-counts\n```\n\nAlso verified that each of the new sub-tests fail without the fix.\n\nFixes: #7889"
    },
    {
      "commit": "1823dc5bfcde301c04704d1154a2eb0451345c1b",
      "tree": "598693ecb0f45b405b38b13affcefb8d03b53b58",
      "parents": [
        "9803dbf4aa9f06be8a986dcbec8a32cdd4a465e2"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Thu May 07 23:08:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 23:08:39 2026"
      },
      "message": "i#7842: ISA feature AARCH64 bug fix (#7893)\n\nFixes `instr_get_isa_feature()` in AARCH64 where instructions like `bcond`\nwere incorrectly reported with an `\u003cinvalid\u003e` ISA feature in the opcode_mix tool.\nThe root cause was that `instr_get_isa_feature()` instantiated a `decode_info_t`\nstruct without initialization, leaving the `check_reachable` flag containing\nindeterminate stack data.\nWhen this flag happened to be true, the encoding walk of `instr_get_isa_feature()`\nenforced reachability checks on PC-relative operands.\nDepending on how `instr_get_isa_feature()` is used, `pc` is not necessarily the\ninstruction\u0027s actual pc, it can be an unrelated address like a buffer, so disabling\nthe reachability check is necessary.\n\nAdds a unit test that would trigger returning `\u003cinvalid\u003e` ISA feature if the\nreachability check were to be enabled.\n\nIssue #7842"
    },
    {
      "commit": "9803dbf4aa9f06be8a986dcbec8a32cdd4a465e2",
      "tree": "adac6121fe2322ae5100246ab7e0bf406e6ff145",
      "parents": [
        "6580104f262b2cfe34d60dec4fbe09f917efdc08"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Wed May 06 20:51:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 20:51:58 2026"
      },
      "message": "i#7695: Allow 32-bit log about AVX-512 not fully supported (#7892)\n\nThis log is printed always on 32-bit because of some missing support\nwhen there\u0027s any AVX-512 instr seen. It should be expected.\n\nTested using x86-32 build on a VM with AVX-512 supported where the\nfollowing tests used to fail without this fix but now pass.\n\n```\n        233 - code_api|client.drx-scattergather (Failed)\n        234 - code_api|client.drx-scattergather-bbdup (Failed)\n        263 - code_api|sample.memval_simple_scattergather (Failed)\n        321 - code_api|tool.drcachesim.scattergather-x86 (Failed)\n```\n\nIssue: #7695"
    },
    {
      "commit": "6580104f262b2cfe34d60dec4fbe09f917efdc08",
      "tree": "d4d061a57189abb21543a01f536b3286c0debf74",
      "parents": [
        "97d3db2c9f1d7e64ae23cb5eb83973384f0795f5"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Tue May 05 22:02:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 22:02:02 2026"
      },
      "message": "i#7842: Add ISA feature to opcode_mix (#7879)\n\nSubstitutes the `opcode_counts` map with an `opcode_isa_counts`\nmap that counts the frequency of \u003copcode, isa_feature\u003e pairs\ninstead of just opcodes.\nThis map\u0027s key is a newly introduced `struct opcode_isa_feat_t`,\nits hash is constructed by shifting the 32-bit opcode value into the\nupper half of the key and bitwise-ORing it with the 32-bit ISA feature\nconstant, effectively creating a unique identifier for every\n\u003copcode, isa_feature\u003e pair.\nAdds the ISA feature information to the `opcode_mix` output for\nAARCH64, which now looks like:\n```\nOpcode mix tool results:\n         126122 : total executed instructions\n          15924 :     bcond (BASE)\n          15171 :       stp (BASE)\n...\n```\nThe `opcode_mix` output for other architectures is left unchanged,\nas extracting ISA features (e.g., BASE, SVE, SVE2, etc.) is effectively\nimplemented only for AARCH64, while other architectures always\nreturn `\u003cunknown\u003e` ISA feature at the moment, which would\nunnecessarily pollute the output of `opcode_mix`.\n\nUpdates unit test and  end-to-end tests that rely on the output of\n`opcode_mix` accordingly.\n\nIssue #7842"
    },
    {
      "commit": "97d3db2c9f1d7e64ae23cb5eb83973384f0795f5",
      "tree": "b428b04237c453fc965f3df796bafcf1b7788fce",
      "parents": [
        "680fc1dc2e80cc58774c6349de0fd99cef9e2ad9"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Tue May 05 18:58:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 18:58:15 2026"
      },
      "message": "i#7854 wholesys traces: Fix formal arg name in function declaration (#7888)\n\nThis arg was renamed in #7880 but the definition in header wasn\u0027t.\n\nIssue: #7854"
    },
    {
      "commit": "680fc1dc2e80cc58774c6349de0fd99cef9e2ad9",
      "tree": "64a3f2e8465668775631d2cd27b172106b08271a",
      "parents": [
        "f4f488def00d5512b2c9fd84f7f274ab8b2080b9"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Tue May 05 18:20:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 18:20:12 2026"
      },
      "message": "i#7678: Zero remaining vec reg on partial x86 gathers (#7883)\n\nAdds logic in the x86 gather expansion to zero out the part of the\nvector register that did not map to any gathered data element. This\nhappens on opcodes like vpgatherqd where the index size is greater than\nthe data size (quarter word index, double word data), so there are fewer\ndata elements than what the destination vector register can hold.\n\nRemoves prior workaround added by #5764 in the scatter-gather test setup\n(explicitly zeroing out the dest vector reg in the app code) which\ndoesn\u0027t fix the underlying issue that the gather expansion was missing\nthe above logic.\n\nTested on a machine where the original test issue was reproduced. All\nthe three scenarios of zero extension are hit in the\ndrx-scattergather-x86.c test macro `TEST_AVX512_GATHER_IDX64_VAL32`, and\nalso the smaller two cases of extension in\n`TEST_AVX2_GATHER_IDX64_VAL32`.\n\nIssue: #7695\nFixes: #7678"
    },
    {
      "commit": "f4f488def00d5512b2c9fd84f7f274ab8b2080b9",
      "tree": "5cb3c6e03de3de11288cefeae23a41efffce5f8d",
      "parents": [
        "af5c1cf24fed3354cdfea3c2d619b3c3bf8c3dfd"
      ],
      "author": {
        "name": "Abhinav Anil Sharma",
        "email": "sharmaabhinav@google.com",
        "time": "Tue May 05 13:19:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 13:19:35 2026"
      },
      "message": "i#7854 wholesys traces: Invariant checks for hw cxt markers (#7880)\n\nAugments the invariant checker to identify the\nTRACE_MARKER_TYPE_HARDWARE_EVENT and\nTRACE_MARKER_TYPE_HARDWARE_CONTEXT_RETURN markers.\n\nThis involves treating them similarly to the existing\nTRACE_MARKER_TYPE_KERNEL_EVENT and TRACE_MARKER_TYPE_KERNEL_XFER\nmarkers, and keeping track of the enclosed part of the trace in a\nseparate context.\n\nAlso adds unit tests for the various hardware context marker related\nscenarios.\n\nIssue: #7854"
    },
    {
      "commit": "af5c1cf24fed3354cdfea3c2d619b3c3bf8c3dfd",
      "tree": "c5fc865b3ed5c8059616bb88d0a2599033c2780d",
      "parents": [
        "b0d9c6518490282e04fa348ba33b767b1e6ae634"
      ],
      "author": {
        "name": "Jack Gallagher",
        "email": "jack.gallagher@arm.com",
        "time": "Tue May 05 11:38:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 11:38:59 2026"
      },
      "message": "i#2440 AArch64 IR: Add macros and tests for v8.0 prefetch instructions (#7886)\n\nAdds previously missing INSTR_CREATE_* macros and tests for the v8.0\nprefetch instructions.\n\nIssue: #2440"
    },
    {
      "commit": "b0d9c6518490282e04fa348ba33b767b1e6ae634",
      "tree": "dafdd6594c4158286bf11eae3cc994c41e5612d6",
      "parents": [
        "f011de7829ef2ca306d127bd058aa3412771a2c8"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue May 05 03:58:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 03:58:47 2026"
      },
      "message": "i#7884: Avoid updating schedule_stats thread set on every record (#7885)\n\nMoves the drmemtrace schedule_stats thread set update from on every\nrecord to every context switch.\n\nProfiling shows this shrinks parallel_shard_memref from 11.2% of\nexecution time down to 1.5% on large 80-core runs. The thread insertion\nwas 8.9% of the 11.2% and now does not even show up in the profile.\n\nFixes #7884"
    },
    {
      "commit": "f011de7829ef2ca306d127bd058aa3412771a2c8",
      "tree": "91311ccfbc9b64438dbe90b5cc799161d52c487d",
      "parents": [
        "f4736069a70d4bc41de19b05922ee037f9ab6f15"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue May 05 00:12:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 00:12:52 2026"
      },
      "message": "i#7881 rebalance: Report instruction ratio in schedule_stats (#7869) (#7882)\n\nAdds the ratio of just instructions (as opposed to the existing\n\"activity\" which is instructions+idles for #7860) between the max and\nmin such count for all cores, in the schedule_stats tool. This indicates\nthe schedule balance and is useful for tuning the scheduler\u0027s inter-core\nstealing and rebalancing heuristics.\n\nAdds a unit test.\n\nIssue: #7881"
    },
    {
      "commit": "f4736069a70d4bc41de19b05922ee037f9ab6f15",
      "tree": "50a8dd45392341dd201e47863f34c89d7fd10822",
      "parents": [
        "20df306dfbfb0456abc4b225b0019e86fd3a96cb"
      ],
      "author": {
        "name": "Dmitriy Petrov",
        "email": "dmitry.s.petrov@gmail.com",
        "time": "Sun May 03 19:25:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 19:25:40 2026"
      },
      "message": "i#7590: Cache replacement policy configuration (#7837)\n\nImplemented parsing nested structure containing cache replacement policy\nconfiguration\n\nUse cache replacement policy with default parameters\n    replace_policy \u003cname\u003e\n\nDefine custom parameters for cache replacement policy\n    replace_policy{\n        type \u003cname\u003e     # Cache replacement policy name\n        # Cache replacement policy parameters\n    }\n\nAvailable parameters for RRIP policy are:\n- rrpv_bits\n- rrpv_period\n- rrpv_long_per_period\n\nFixes #7590"
    },
    {
      "commit": "20df306dfbfb0456abc4b225b0019e86fd3a96cb",
      "tree": "93153742de79d9e4b16c51f0042aa7db80879067",
      "parents": [
        "0eed3e54242ebbfe9655d34afb79fd4849a04978"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Apr 30 19:19:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 19:19:12 2026"
      },
      "message": "i#7860 load bal: Add load balancing to drmemtrace analyzer (#7878)\n\nWhen running drmemtrace analyzers with dynamic scheduling (i.e.,\ncore-sharded with live scheduling instead of replay), we want our worker\nthreads to have relatively even \"activity\" as seen by a simulator for a\nreasonable final virtual schedule. Atomic activity counts are\nperiodically updated and examined to accomplish this. If a worker\u0027s\nactivity reaches a specified ratio versus the slowest worker, it sleeps\nuntil it is under the ratio. A new CLI flag --max_load_imbalance sets\nthe max ratio; the default is 2.5.\n\nAdds a unit test, though it would likely become flaky if waiting were\nrequired. Confirmed manually that there is waiting in the 3 fast workers\nfor the slow worker #0 who ends up with fewer instructions but within\nthe ratio (there are no idles in this test):\n```\n12: [analyzer] Worker 2 @3000 waiting for slowest 3 @1000\n12: [analyzer] Worker 3 @13000 waiting for slowest 0 @1000\n12: [analyzer] Worker 1 @14000 waiting for slowest 0 @1000\n12: [analyzer] Worker 0 waited 0 times for load balancing\n12: [analyzer] Worker 1 waited 71 times for load balancing\n12: [analyzer] Worker 3 waited 71 times for load balancing\n12: [analyzer] Worker 2 waited 71 times for load balancing\n12: shard 0 saw 215000 instructions\n12: shard 1 saw 530000 instructions\n12: shard 2 saw 535000 instructions\n12: shard 3 saw 530000 instructions\n```\n\nTested on larger traces on 80 cores with a live max of 60 with target\nratios at 2.0, 2.5, and 3.0, which were precisely hit in two consecutive\nruns each with the 100K check cadence settled on in the code here\n(auto-raising to 1M or higher reduces accuracy with some ratios climbing\ntoo high). The check_load_balance() function does show up in some\nprofiles as high as 3.3% but seems worth the cost. When reducing below\n1.5, targets are hard to reach, and\nthe overhead does go up: check_load_balance() is 4.6% in a 1.25-target\nrun and 15% in a 1.0 run in these experiments, with the ratio not\ndropping under 1.5: so 1.5 may be a practical limit, as noted in the\noption description, for now: which should be fine for initial use cases.\n\nFixes #7860"
    },
    {
      "commit": "0eed3e54242ebbfe9655d34afb79fd4849a04978",
      "tree": "81715cea3a8c60c7706670f27d4018aeda38500f",
      "parents": [
        "c966f3a16101d274c9c98acd0aa7ccb3639042db"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Wed Apr 29 23:29:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 23:29:40 2026"
      },
      "message": "i#7842: Add ISA feature APIs for remaining architectures (#7875)\n\nAdds a trivial implementation of `instr_get_isa_feature()` and\n`instr_get_isa_feature_name()` public APIs for X86, ARM, and\nRISCV64 architectures.\nThis trivial implementation always returns `ISA_FEAT_UNKNOWN`\nand `\u003cunknown\u003e` respectively.\nAdds TODO to remind us to actually implement these APIs at\nsome point.\nAdds (trivial) unit tests, mostly useful to check that we can actually\ncall the above public APIs for these architectures.\n\nIssue #7842"
    },
    {
      "commit": "c966f3a16101d274c9c98acd0aa7ccb3639042db",
      "tree": "5f9b0eceeb8e65c5c856ab9845f73839a2f0405c",
      "parents": [
        "62539f980adf5e84cf4b2cd548750f950eb6489e"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Apr 29 17:06:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 17:06:15 2026"
      },
      "message": "i#7868: Add record_schedule_stats tool version (#7874)\n\nTemplatizes the schedule_stats tool to provide a trace_entry_t \"record_\"\nversion which can be run alongside record_filter for better statistics\nwhen creating new core-sharded-on-disk traces (running afterward\nloses some stats only available from the live scheduler).\n\nTested:\n\nAdded a new regression test tool.record_filter_plus_stats.\n\nAlso tested manually:\n```\n$ bin64/drrun -t drmemtrace -core_sharded -tool record_filter:schedule_stats -cores 3 \\\n-indir ../src/clients/drcachesim/tests/drmemtrace.threadsig.x64.tracedir -verbose 1 -outdir foo\n...\nCore #0 schedule: DEA__A_A__A_A_D_E_A_D\nCore #1 schedule: CGH__H____C_____________\nCore #2 schedule: IBF_____BF__F______\n...\n$ ls -sh foo\ntotal 992K\n4.0K cpu_schedule.bin.zip              356K drmemtrace.core.000002.trace.zip\n236K drmemtrace.core.000000.trace.zip  4.0K serial_schedule.bin.gz\n392K drmemtrace.core.000001.trace.zip\n```\n\nFixes #7868"
    },
    {
      "commit": "62539f980adf5e84cf4b2cd548750f950eb6489e",
      "tree": "859fd21081827eb277cafcd353819acf1f59b9f3",
      "parents": [
        "b877b64fa841f29afb792bd80418d14a4ca3ba0f"
      ],
      "author": {
        "name": "Jack Gallagher",
        "email": "jack.gallagher@arm.com",
        "time": "Wed Apr 29 14:41:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 14:41:37 2026"
      },
      "message": "i#2440 AArch64 IR: Add macros and tests for v8.1 LSE instructions (#7877)\n\nAdds previously missing INSTR_CREATE_* macros for v8.1 LSE atomic\ninstructions and IR tests that make use of the macros.\n\nIssue: #2440"
    },
    {
      "commit": "b877b64fa841f29afb792bd80418d14a4ca3ba0f",
      "tree": "2b34d96fb1b041d487ac84afbbf948632fd19f26",
      "parents": [
        "8bac6247d6c202d499a75d1800c451b18d465234"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Apr 28 01:32:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 01:32:21 2026"
      },
      "message": "i#6684 csod invariants: Report shard id instead of tid (#7871)\n\nFor core-sharded traces, the invariant checker should report the shard\nindex instead of the tid, since the ordinals and timestamp data it\u0027s\nreporting are for the current shard and are not per-software-thread.\n\nUpdates the unit test.\n\nIssue: #6684"
    },
    {
      "commit": "8bac6247d6c202d499a75d1800c451b18d465234",
      "tree": "19776dfeb8feba862ac2bb38f38467d3d4e2d5c8",
      "parents": [
        "1edbd43db7fabeb5cae41c2bf26a4b38dbc3429b"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Apr 27 21:01:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 21:01:53 2026"
      },
      "message": "i#6684 csod invariants: Disable thread exit check for core-sharded (#7870)\n\nDisables the \"Thread is missing exit\" drmemtrace invariant check for\ncore-sharded traces where even if we switch to per-software-thread\ntracking of exit records we would still have errors from the scheduler\nexiting early to avoid tail artifacts.\n\nAdds a unit test; confirmed it fails without the fix:\n```\n$ ctest -V -R checker_test\n16: Recording |Thread is missing exit| in T-1 @ ref # 6 (3 instrs since timestamp 0)\n16: Unexpected error: Thread is missing exit at ref: 6\n16: invariant_checker_test FAILED\n1/1 Test #16: tool.drcachesim.invariant_checker_test ...***Failed    0.04 sec\n```\n\nIssue: #6684"
    },
    {
      "commit": "1edbd43db7fabeb5cae41c2bf26a4b38dbc3429b",
      "tree": "3d245dde91dfcc27c0ced85797699b162b0c309c",
      "parents": [
        "c955231f891d96804f80f5052509bc1f57dddedc"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Apr 27 20:25:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 20:25:02 2026"
      },
      "message": "i#7872: Remove CMake 3.19.7 pinning for x86 Linux CI (#7873)\n\nRemoves the CMake 3.19.7 pinning as that version is no longer available\nvia the action step we\u0027re using.\nThe newer CMake versions seem to not have the problem that 3.20 had.\n\nFixes #7872\nFixes #4830"
    },
    {
      "commit": "c955231f891d96804f80f5052509bc1f57dddedc",
      "tree": "a00c4c39df4e30aad90fdcfc3154d2ec1d6606ac",
      "parents": [
        "2f71ef5f526d477f7608fc1dfb2a125cbe523374"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Apr 23 22:15:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 22:15:51 2026"
      },
      "message": "i#7860 core balance: Report core ratio in schedule_stats (#7869)\n\nAdds the ratio of instructions+idles between the max and min such count\nfor all cores, in the schedule_stats tool. This is to indicate the load\nbalancing when fed into a microarchitectural simulator; this also gives\na good idea of the worker thread load balancing for analyzers (though\nloads/stores and markers are not included).\n\nAdds a unit test.\n\nIssue: #7860"
    },
    {
      "commit": "2f71ef5f526d477f7608fc1dfb2a125cbe523374",
      "tree": "05ab387fd6676eef42970137387b14502dd08c6d",
      "parents": [
        "427369a5cf8b67e5bb5d1580c9c6d1d86974a4fc"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Apr 23 14:17:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 14:17:31 2026"
      },
      "message": "Align client thread stack on aarch64 (#7866)\n\nEnsures the client thread stack is aligned on aarch64. It happens to be\naligned today but it is fragile.\n\ncreate_clone_record() aligns to XSTATE_ALIGNMENT which is set to\nREGPARM_END_ALIGN, which was 8 on AArch64. Here we change it to 16,\nalong with adding an insurance alignment inside dynamorio_clone() (just\nlike we have on x86)."
    },
    {
      "commit": "427369a5cf8b67e5bb5d1580c9c6d1d86974a4fc",
      "tree": "10d5ada08bceb06b090bd17b2d0378869f539c22",
      "parents": [
        "b6ba85b29dfb782e7047f2d9211307d190b0c043"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Apr 22 20:49:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 20:49:57 2026"
      },
      "message": "i#7839 direct fallback: Use rwlock to reduce contention (#7867)\n\nThe drmemtrace scheduler direct_switch_fallbacks feature\u0027s lock was\nadding so much contention it was causing uneven schedules. Switching to\na read-write lock solves that.\n\nTested on a large 80-virtual-core scheduling with\ndirect_switch_fallbacks turned on. Without the fix, we consistently see\na couple of cores with 100x fewer total records (instructions + idles)\nthan the busiest cores. Profiling showed lock contention as a problem.\nWith the fix, the least busy core\u0027s record count is only 2x smaller than\nthe busiest core, which is about what we see on a real run (instruction\ncount, without tracing). This also matches what we see with drmemtrace\nscheduling with direct_switch_fallbacks turned off. Additionally, a\nprofile shows the lock contention on the direct_target_lock is no longer\na bottleneck.\n\nIssue: #7839"
    },
    {
      "commit": "b6ba85b29dfb782e7047f2d9211307d190b0c043",
      "tree": "385fb0fd2880771b99fc5c82824f12a99ebb2faf",
      "parents": [
        "251cf78a227589bd97587439ae3af496d41ccdef"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Apr 22 01:19:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 01:19:56 2026"
      },
      "message": "i#6672 C++-17: Fix Android32 CI status arguments (#7865)\n\nRemoves format arguments accidentally not removed in PR #7864.\n\nIssue: #6672"
    }
  ],
  "next": "251cf78a227589bd97587439ae3af496d41ccdef"
}
