)]}'
{
  "log": [
    {
      "commit": "14472393fc1f49ee0b2046454aa49aec2e149ee4",
      "tree": "29b5e93efe3cbfbf673102de2d2554b647ce94cc",
      "parents": [
        "105f47e54f65dd4d390e91eaab597d9584185c1d"
      ],
      "author": {
        "name": "Suyash Mahar",
        "email": "smahar@meta.com",
        "time": "Tue Sep 01 16:34:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 16:34:46 2026"
      },
      "message": " Reuse raw2trace kernel-event lookahead storage in drcachesim (#8085)\n\nReuse a per-thread vector instead of constructing a deque for every\ninstruction level kernel-event check. The std::deque was being\nconstructed for every instruction and resulted in significant overhead\nfor non-ZIP output of drraw2trace.\n\nBenchmark with raw input and uncompressed output for a single 970 MiB\nraw shard (`-jobs 1`):\n\n* master: 75.78s\n* this PR: 55.34s (-27.0%)\n\nThe output is byte identical."
    },
    {
      "commit": "105f47e54f65dd4d390e91eaab597d9584185c1d",
      "tree": "38d41f4afe2b7d0992f3095e8258f32f44117290",
      "parents": [
        "0cd3d84e20407c57862b4eb01d799dc3ed6d22a2"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Tue Sep 01 14:54:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 14:54:03 2026"
      },
      "message": "i#8021:  Implement kernel module init/exit with symbol resolution and heap reservation (#8075)\n\n- Resolve `kallsyms_lookup_name` at runtime via kprobe, then use it to\nresolve `module_alloc`.\n- Reserve a heap region via `module_alloc`, and release it on module\nexit.\n- Add `MODULE_DESCRIPTION` and `MODULE_AUTHOR`.\n\nIssue: #8021"
    },
    {
      "commit": "0cd3d84e20407c57862b4eb01d799dc3ed6d22a2",
      "tree": "dd44903909b01486a2ed63a50602fb5c3482ed31",
      "parents": [
        "6ee8a5c3e1fce5ce4d7d39f81757145731198c3f"
      ],
      "author": {
        "name": "donfucius",
        "email": "donfucius@gmail.com",
        "time": "Tue Sep 01 06:34:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 06:34:25 2026"
      },
      "message": "i#8082: Fix heap overflow in nt_get_context64_size on non-XSTATE CPUs (#8083)\n\n## Summary\nFix heap overflow risk in `nt_get_context64_size()` on non-XSTATE CPUs.\n\n`RtlGetExtendedContextLength(CONTEXT_XSTATE)` can fail on non-XSTATE\npaths.\nThis change checks availability/success of that query and falls back to\n`sizeof(CONTEXT_64) + 16` when unavailable, avoiding undersized\nallocation\nand out-of-bounds write in later context handling.\n\n## Root cause\n`nt_get_context64_size()` assumed extended context query success and\ncould\ncache a too-small size (effectively 16 bytes) on failure paths in\nrelease\nbuilds.\n\n## Fix\n- Guard `RtlGetExtendedContextLength` usage.\n- Require successful NTSTATUS and valid returned length for extended\npath.\n- Fallback to non-extended `CONTEXT_64` size + alignment headroom.\n\nIssue: https://github.com/DynamoRIO/dynamorio/issues/8082"
    },
    {
      "commit": "6ee8a5c3e1fce5ce4d7d39f81757145731198c3f",
      "tree": "a2d41a48a4737f7df4b9b99943a5f5c63713ada6",
      "parents": [
        "bf55bd0a689a50dc37b9d00fb4bd14fb51d290c8"
      ],
      "author": {
        "name": "Jack Gallagher",
        "email": "jack.gallagher@arm.com",
        "time": "Tue Sep 01 06:25:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 06:25:10 2026"
      },
      "message": "i#8080: Simplify AArch64 feature management in tests (#8081)\n\nUse -march\u003dnative where possible to enable all architecture features\nsupported by hardware. Architecture feature specific test code can now\nbe enabled selectively in the source code using the __ARM_FEATURE_*\nmacros.\n\ngas does not support the -march\u003dnative option so tests written in\nAArch64 assembly now enable features in the test source using .arch or\n.arch_extension directives.\n\nThis should be more scalable than the old system which required a lot of\nCMake boilerplate for each architecture feature and did not allow a test\nto enable more than one feature at a time.\n\nFixes #8080"
    },
    {
      "commit": "bf55bd0a689a50dc37b9d00fb4bd14fb51d290c8",
      "tree": "fbe8d590ade21e6dbd1b28df5b5bf4cc2b1ed0e6",
      "parents": [
        "0ce43c05362777471552a5f7035b85c4ec14d821"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Tue Sep 01 00:04:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 00:04:03 2026"
      },
      "message": "i#8079: Add none raw trace output destination mode to drmemtrace (#8088)\n\nAdds support for `-outdir none` in  offline tracing to measure pure\ninstrumentation and tracing overhead without incurring disk I/O\noverhead.\n\nMeasured execution time of an invocation of `tar -czvf` app with\n`-outdir none` and regular `-outdir ${TMP_DIR}` three times.\nWith `-outdir none`:\n```\n$ /usr/bin/time drrun -s 90 -quiet -debug -killpg -stderr_mask 0xC -dumpcore_mask 0 -code_api -t drmemtrace -offline -subdir_prefix tool.drcacheoff.none -outdir none -- tar -czvf archive.tar.gz ./sizeable_dir\n[...]\n13.58user 6.21system 0:13.93elapsed 142%CPU (0avgtext+0avgdata 21016maxresident)k\n13.45user 6.00system 0:13.71elapsed 141%CPU (0avgtext+0avgdata 21252maxresident)k\n13.44user 5.95system 0:13.66elapsed 141%CPU (0avgtext+0avgdata 21180maxresident)k\n```\nWith `-outdir ${TMP_DIR}`:\n```\n$ /usr/bin/time drrun -s 90 -quiet -debug -killpg -stderr_mask 0xC -dumpcore_mask 0 -code_api -t drmemtrace -offline -subdir_prefix tool.drcacheoff.none -outdir ${PWD}/to_remove -- tar -czvf archive.tar.gz ./sizeable_dir\n[...]\n20.37user 7.55system 0:21.88elapsed 127%CPU (0avgtext+0avgdata 21536maxresident)k\n20.03user 7.73system 0:21.87elapsed 126%CPU (0avgtext+0avgdata 22264maxresident)k\n20.48user 7.69system 0:22.75elapsed 123%CPU (0avgtext+0avgdata 21720maxresident)k\n```\nConsistently getting ~1.6x speedup for `none` compared to dumping\nthe trace.\n\nIn a previous iteration of this feature, a long path passed to `-outdir`\nwould trigger a call to malloc during tracing in 4 different places in\n`clients/drcachesim/tracer/output.cpp`, which is forbidden, causing the\ntracer to fail with:\n```\n\u003cApplication /usr/bin/tar (692738) DynamoRIO usage error : malloc invoked mid-run when disallowed by DR_DISALLOW_UNSAFE_STATIC\u003e\n\u003cUsage error: malloc invoked mid-run when disallowed by DR_DISALLOW_UNSAFE_STATIC (\u003comitted\u003e/core/loader_shared.c, line 1089)\n```\nA long path passed to `-outdir` causes a call to malloc because it\nexceeds the ~20 chars allowed by `std::string` internal buffer for\nSmall String Optimization.\nThis is now fixed by retrieving the value of `-outdir` only once in\n`clients/drcachesim/tracer/output.cpp:init_io()`, where it is safe to\ncall malloc and caching if we are in `-outdir none` mode for the\nrest of tracing.\n\nAdds `tool.drcacheoff.outdir-none`,\n`tool.drcacheoff.outdir-none-windows`,\nand `tool.drcacheoff.outdir-long-dir` tests.\nWhere `tool.drcacheoff.outdir-long-dir` is designed to trigger the\naforementioned \"forbidden call to malloc\" problem.\n\nIssue #8079"
    },
    {
      "commit": "0ce43c05362777471552a5f7035b85c4ec14d821",
      "tree": "81779623f657298f79849975fb69d6d09911debb",
      "parents": [
        "f5e2bada5428752a5dcf74c7fee2fe126e240c7a"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Sat Aug 29 21:04:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 21:04:37 2026"
      },
      "message": "Revert \"i#8079: Add `none` raw trace output destination mode to drmemtrace (#8084)\" (#8086)\n\nThis reverts commit f5e2bada5428752a5dcf74c7fee2fe126e240c7a because it\ncalls malloc mid-run for long -outdir paths, breaking transparency and\ncrashing static-link setups.\n\nI directly observed it crash a large internal application.\n\nYou can see it trip our malloc check in a debug build by running an app\nwith multiple threads and a path long enough to exceed std::string\u0027s\ninlined buffer:\n\n```\n$ bin64/drrun -t drcachesim -offline -raw_compress none -outdir $PWD -- ~/dr/test/threadsig 8 20\n\u003cApplication ~/dr/test/threadsig (2440162) DynamoRIO usage error : malloc invoked mid-run when disallowed by DR_DISALLOW_UNSAFE_STATIC\u003e\n```"
    },
    {
      "commit": "f5e2bada5428752a5dcf74c7fee2fe126e240c7a",
      "tree": "f09e041c66a47cb2bdf6c1a24107d88d39be6c4f",
      "parents": [
        "7188e15d913570a35eb97ac7f27fe6d5c2f60b76"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Sat Aug 29 03:24:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 03:24:23 2026"
      },
      "message": "i#8079: Add `none` raw trace output destination mode to drmemtrace (#8084)\n\nAdds support for `-outdir none` in  offline tracing to measure pure\ninstrumentation and tracing overhead without incurring disk I/O\noverhead.\n\nAdds `tool.drcacheoff.outdir-none` and\n`tool.drcacheoff.outdir-none-windows` tests.\n\nMeasured execution time of `tar -czvf` app with `-outdir none` and\nregular `-outdir ${TMP_DIR}` three times.\nWith `-outdir none`:\n```\n$ /usr/bin/time drrun -s 90 -quiet -debug -killpg -stderr_mask 0xC -dumpcore_mask 0 -code_api -t drmemtrace -offline -subdir_prefix tool.drcacheoff.none -outdir none -- tar -czvf archive.tar.gz ./sizeable_dir\n[...]\n13.58user 6.21system 0:13.93elapsed 142%CPU (0avgtext+0avgdata 21016maxresident)k\n13.45user 6.00system 0:13.71elapsed 141%CPU (0avgtext+0avgdata 21252maxresident)k\n13.44user 5.95system 0:13.66elapsed 141%CPU (0avgtext+0avgdata 21180maxresident)k\n```\nWith `-outdir ${TMP_DIR}`:\n```\n$ /usr/bin/time drrun -s 90 -quiet -debug -killpg -stderr_mask 0xC -dumpcore_mask 0 -code_api -t drmemtrace -offline -subdir_prefix tool.drcacheoff.none -outdir ./to_remove -- tar -czvf archive.tar.gz ./sizeable_dir\n[...]\n20.37user 7.55system 0:21.88elapsed 127%CPU (0avgtext+0avgdata 21536maxresident)k\n20.03user 7.73system 0:21.87elapsed 126%CPU (0avgtext+0avgdata 22264maxresident)k\n20.48user 7.69system 0:22.75elapsed 123%CPU (0avgtext+0avgdata 21720maxresident)k\n```\nConsistently getting ~1.6x speedup for `none` compared to dumping\nthe trace.\n\nIssue #8079"
    },
    {
      "commit": "7188e15d913570a35eb97ac7f27fe6d5c2f60b76",
      "tree": "81779623f657298f79849975fb69d6d09911debb",
      "parents": [
        "b81b41cb47ad99b6f1e7b53a6608abd0183133cf"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Sat Aug 29 02:45:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 02:45:11 2026"
      },
      "message": "i#8077: Add -raw_compress_level option for lz4 raw trace compression (#8078)\n\nAdds a new `-raw_compress_level` option to tracer.cpp to allow\nconfiguring he lz4 compression level when collecting offline raw\ntraces with`-raw_compress lz4`.\nThe option accepts negative integer values for lz4 acceleration mode,\nwhich provides faster compression throughput at lower compression\nratios, as well as positive integers for higher compression mode,\ndefaulting to 0.\n\nAdds documentation and tests.\n\nlz4 does not save the compression level used in its metadata, but\nchecking the tests on `simple_app`, the raw trace files have\ndifferent sizes, which would suggest the compression level is\nworking as intended:\n```\nraw-lz4-level-neg (-1024):\n346K tool.drcacheoff.raw-lz4-level-neg.simple_app.3086728.0997.raw.lz4\n\nraw-lz4-level-pos (3):\n68K tool.drcacheoff.raw-lz4-level-pos.simple_app.3118065.0303.raw.lz4\n\nraw-lz4 (0):\n90K tool.drcacheoff.raw-lz4.simple_app.3047195.4715.raw.lz4\n```\n\nFixes #8077"
    },
    {
      "commit": "b81b41cb47ad99b6f1e7b53a6608abd0183133cf",
      "tree": "f4d193ee9245c008b4602cc8339b68e202600891",
      "parents": [
        "de0b0c1bd0c2a47284ecd74fb2ae53f9f8bd3a82"
      ],
      "author": {
        "name": "donfucius",
        "email": "donfucius@gmail.com",
        "time": "Thu Aug 27 04:10:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 04:10:02 2026"
      },
      "message": "i#8070: Fix NULL deref of RtlGetExtendedContextLength on non-AVX CPUs (#8071)\n\nThe extended-context `ntdll` function pointers are only resolved when\n`YMM_ENABLED()` (in `nt_get_context_extended_functions()`), so on\nCPUs/OS without AVX support they remain `NULL`. `nt_get_context_size()`\npreviously called `ntdll_RtlGetExtendedContextLength()` unconditionally,\ncrashing with an indirect call to address 0 (e.g., in\n`postsys_CreateUserProcess()` when an app creates a child process).\n\nRestructure `nt_get_context_size()` to check `TESTALL(CONTEXT_XSTATE,\nflags)`, mirroring `nt_initialize_context()`. When `CONTEXT_XSTATE` is\nnot requested (such as on non-AVX systems where `CONTEXT_DR_STATE` omits\nit), fall back to `sizeof(CONTEXT)` plus alignment headroom, avoiding\nthe `NULL` dereference.\n\nVerified on real hardware (Celeron J1900, no AVX, Win10 1809): before\nthe fix every child-spawning app crashed 100% under `drrun`; after the\nfix child following works in both release and `-debug` builds. CI cannot\ncover this (needs non-AVX hardware), so verification was manual.\n\nAI assistance disclosure: root-cause analysis and the patch were\ndeveloped with AI assistance; I reviewed the change and verified it\nmanually on the affected hardware.\n\nFixes #8070\nIssue: #6763"
    },
    {
      "commit": "de0b0c1bd0c2a47284ecd74fb2ae53f9f8bd3a82",
      "tree": "278c9015e5c2db67a73d3f36114c7f1543327dc6",
      "parents": [
        "51937e4dccfbfc1d79ba5c37e40a20430c992b60"
      ],
      "author": {
        "name": "ZheWang",
        "email": "wang.zhe20@zte.com.cn",
        "time": "Wed Aug 26 22:29:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 22:29:51 2026"
      },
      "message": "i#3544: OPFVF vector-FP scalar operand decoding as FP register (#8057)\n\nThe OPFVF vector floating-point instructions (OP-V major opcode with\nfunct3\u003d3\u0027b101, e.g. vfadd.vf, vfmv.s.f, vfmerge.vfm) encode their scalar\noperand in the rs1 field as a floating-point register (f0-f31), per the\nRISC-V V spec. Their ISL entries in core/ir/riscv64/isl/v.txt declared\nthis operand as rs1, which selects the integer-register decoder\n(decode_rs1_opnd -\u003e DR_REG_X0+) instead of the floating-point decoder\n(decode_rs1fp_opnd -\u003e DR_REG_F0+). As a result the scalar FP operand was\ndecoded from the wrong register file.\n\nIssue: #3544"
    },
    {
      "commit": "51937e4dccfbfc1d79ba5c37e40a20430c992b60",
      "tree": "d403792c4fa7cc9d3b0902a50738e4e19de7fe4c",
      "parents": [
        "ea4079c247ace00e31095f119abc5214c1ce2507"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Tue Aug 25 18:06:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 18:06:15 2026"
      },
      "message": "i#8021: Include source files in arch/ and arch/x86/ as dependencies for kernel module (#8064)\n\n- Include source files in `core/arch/`, `core/arch/x86/`, and `core/lib`\nas dependencies for the kernel module.\n- Resolve missing header by using wrapper headers or excluding headers\nthat don\u0027t have a kernel equivalent.\n- Exclude logic that doesn\u0027t apply in the kernel space.\n- Fix wrong return values in `dr_nudge_client_ex()` in\n`core/lib/instrument.c`.\n- Replicate assembly processing logic from `cpp2asm_support.cmake` in\n`core/kernel_linux/CMakeLists.txt` because `cpp2asm_support.cmake`\ncannot be used directly with kbuild.\n\nIssue: #8021"
    },
    {
      "commit": "ea4079c247ace00e31095f119abc5214c1ce2507",
      "tree": "c3af1ec247d65269dd7799925bb1a966905e9dd1",
      "parents": [
        "3fd15f649d6e2ebc986765116ad1edbab4887287"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Mon Aug 24 18:53:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 18:53:45 2026"
      },
      "message": "i#6662: Add year to BibTeX citation of Google Workload Traces (#8073)\n\nAdds year 2025 (when we published the traces) to the\nBibTeX citation of the Google Workload Traces Version 2.\n\nIssue #6662"
    },
    {
      "commit": "3fd15f649d6e2ebc986765116ad1edbab4887287",
      "tree": "1d9372ff9f840e7db8ccba415c2f55d3430f56a5",
      "parents": [
        "bf4463e4df1f181080610a8d1de127f6c576a755"
      ],
      "author": {
        "name": "WilliamQiufeng",
        "email": "williamqiufeng@outlook.com",
        "time": "Fri Aug 21 15:42:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 15:42:09 2026"
      },
      "message": "i#8047: Check file name against vdso (#8048)\n\nCheck the `module-\u003enames.file_name` against \"[vdso]\" inside the check for it being null, fixing the prior code which checked `name` instead.\n\nFixes: #8047"
    },
    {
      "commit": "bf4463e4df1f181080610a8d1de127f6c576a755",
      "tree": "39ca1af5546d5e911382ef5b914805402b3bfc1e",
      "parents": [
        "301b2b819ec66263baef2400eea7ad0cb83b4630"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Aug 20 19:34:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 19:34:53 2026"
      },
      "message": "Add intel to drmemtrace -view_syntax docs (#8065)\n\nThe drmemtrace -view_syntax option\u0027s brief description was missing\n\"intel\" as one of the supported disassembly styles."
    },
    {
      "commit": "301b2b819ec66263baef2400eea7ad0cb83b4630",
      "tree": "a57f90fd1213d5d19236ff04acd18e76164570e7",
      "parents": [
        "e9884061d0125054b0f4d0f7d7b8bb4806e3cd3e"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Thu Aug 20 19:30:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 19:30:33 2026"
      },
      "message": "i#8060 fork leak: Free other thread data on fork (#8068)\n\nAugments drmemtrace to free compression buffers in other threads at the\ntime of a fork.\n\nAdds a new linux.fork-multithread test for a simpler, flake-free\nalternative to pthreads_fork_FLAKY which is trying to stress DR itself:\nhere we just want some threads around at the time of the fork.\n\nConfirmed a large (1639616 byte) leak is reported without the leak fix,\nfrom the 4 other threads. The leak goes away with the fix.\n\nAdds a new drcacheoff test that runs the new fork-multithread app. Uses\nbasic_counts instead of dr$sim to speed things up from 50s locally to\n10s (probably 6x slower on GA CI). Switches the existing drcacheoff fork\ntests to also use basic_counts which makes them 3x faster, allowing\nremoval of the doubled timeouts.\n\nThe new test is disabled for 32-bit until #8069 is fixed.\n\nFixes #8060"
    },
    {
      "commit": "e9884061d0125054b0f4d0f7d7b8bb4806e3cd3e",
      "tree": "a32647cb2ee0726ecd45da4b09af313da83699eb",
      "parents": [
        "1a9a91d93a05cf652b77a8e65d3e747844e1c176"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Thu Aug 20 05:39:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 05:39:55 2026"
      },
      "message": "i#1947: Add support for Intel CET instructions (#7916)\n\n- Add decoding/encoding support for Intel CET instructions.\n- Ignore endbr64/endbr32/rdssp in drcpusim, as they decode as nop on\nolder CPUs.\n- Removed an outdated comment about how gdb handles lfence.\n- Use ext # directly for existing group 18/19 since they don\u0027t match\nIntel SDM.\n\nFixes #1947\nFixes #4040\nFixes #5109"
    },
    {
      "commit": "1a9a91d93a05cf652b77a8e65d3e747844e1c176",
      "tree": "d4fb73bd3c9c93c70fbd71044f60bdd12e38ba9d",
      "parents": [
        "bd4d8aa6a14b845a2f639d242e71e4078b7bddb1"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Tue Aug 18 16:55:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 16:55:33 2026"
      },
      "message": "i#8060: Fix drmemtrace leak across fork (#8062)\n\nFixes a leak in drmemtrace across a fork where compression-related\nallocations were not being freed.\n\nAdds compression variant tests of the drcacheoff.fork test to cover\nleaks in those compression types.\n\nDoes not address leaks in other threads at the time of the fork: that\nwill be handled separately.\n\nIssue: #8060"
    },
    {
      "commit": "bd4d8aa6a14b845a2f639d242e71e4078b7bddb1",
      "tree": "94eeb546561abea3336892b42a3c095d60812bbc",
      "parents": [
        "0b5d9a883280313bb0a22351ca13b8c5487229e8"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Mon Aug 17 21:51:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 21:51:36 2026"
      },
      "message": "i#8021: Include source files in ir/ and ir/x86/ as dependencies for kernel module (#8049)\n\n- Include source files as dependencies for kernel module:\n- 3 remaining files in `core/`: `translate.c`, `utils.c`, and\n`vmareas.c`.\n    - Relevant files in `core/ir/`\n    - Relevant files in `core/ir/x86/`\n- Exclude functions and logic that don\u0027t apply in kernel space, such as\nrseq and floating point arithmetic.\n- Update include headers. This includes using wrapper headers or\nexcluding headers that don\u0027t have an equivalent in kernel.\n- Some bug fixes that are uncovered by Kbuild compiler flags.\n\nIssue: #8021"
    },
    {
      "commit": "0b5d9a883280313bb0a22351ca13b8c5487229e8",
      "tree": "e4c95a7fb649c8eb28e6e8d2b3807c60a6be70eb",
      "parents": [
        "50542d1a1fc947d5db4076ffcbcb4984a287f170"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Aug 17 20:20:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 20:20:51 2026"
      },
      "message": "i#8058: Remove missing headers to fix build (#8059)\n\nRemoves the linux/netrom.h and linux/scc.h headers from drsyscall\u0027s\nincludes, as these headers have been removed in recent kernels. The\ncorresponding ioctl codes are already disabled so this removal does not\ncause any problems.\n\nTested on a build on a recent kernel which failed without this change\nand works with the change.\n\nFixes #8058"
    },
    {
      "commit": "50542d1a1fc947d5db4076ffcbcb4984a287f170",
      "tree": "dc084914fe89577e2bfd2c6676b4529eff4cc68f",
      "parents": [
        "fcacba79aa401e4f9b799eb66b50d372338f48e6"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Mon Aug 17 20:20:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 20:20:43 2026"
      },
      "message": "i#8056: Fix flaky fork tests (#8061)\n\nRemoves a parent printout that races with the child\u0027s print and results\nin a flaky test (though it is very rare and we\u0027ve only seen it once in\nthe last several years).\n\nFixes #8056"
    },
    {
      "commit": "fcacba79aa401e4f9b799eb66b50d372338f48e6",
      "tree": "859cbf04272ac51f07fc6b639627c3ad9755d8e9",
      "parents": [
        "73482e820d9c3b69c4b69cb6a25afc2a550e8989"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Mon Aug 17 19:01:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 19:01:32 2026"
      },
      "message": "i#8021: Fix wrong return value in instr_predicate_triggered (#8055)\n\nAs discussed in #8049:\n\n\u003e This was flagged by `-Werror\u003denum-conversion`. Upon a closer look I\nthink it\u0027s wrong to return `false` (equivalent to\n`DR_PRED_TRIGGER_NOPRED`) here. I think the logic here is that there is\npred but DR cannot check if it matches or not, so it should return\nDR_PRED_TRIGGER_UNKNOWN.\n\nIssue: #8021"
    },
    {
      "commit": "73482e820d9c3b69c4b69cb6a25afc2a550e8989",
      "tree": "7461c062f396e3fb305076f4d349d88048bc1d66",
      "parents": [
        "b7f32c071a0578539b0575dde54650edca05dc26"
      ],
      "author": {
        "name": "Tejash Gupta",
        "email": "tejash5489@gmail.com",
        "time": "Mon Aug 17 17:15:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 17:15:05 2026"
      },
      "message": "i#1819: close imagelist file handle in DRload (#8052)\n\nDRload\u0027s `-imagelist` handling opens the list file with `fopen()` but\nnever\ncloses it after reading through it with `fgets()`, leaking the file\nhandle\nfor the lifetime of the process.\n\nAdd the missing `fclose(f)` once the read loop completes.\n\nFixes: #1819"
    },
    {
      "commit": "b7f32c071a0578539b0575dde54650edca05dc26",
      "tree": "ea2ffc3f176a352ada2defb43f393b21db0ddafc",
      "parents": [
        "65a7480ad5584c402273ce52225a918dc961ed10"
      ],
      "author": {
        "name": "Jack Gallagher",
        "email": "jack.gallagher@arm.com",
        "time": "Mon Aug 17 07:27:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 07:27:35 2026"
      },
      "message": "i#8050 Fix selfmod tests on AArch64 (#8051)\n\nThere was a flaw with AArch64 version of the selfmod tests. The test\nfunctions work by modifying the immediate value of a later mov\ninstruction and observing which value was moved.\n\nAArch64 requires explicit synchronisation to guarantee that the\nmodification is seen by the CPU and the updated instruction is executed.\nThe tests implemented this by calling `tools_clear_icache()` after the\nmodification. However this undermines the test because DR detects the\ncall as a control transfer instruction and ends the block before we get\nto the instruction being modified. By the time DR gets to decode and\ntranslate the modified instruction it has already been modified. The\noriginal instruction was never translated and placed in the code cache\nso the test doesn\u0027t actually prove that the modification was handled\nproperly.\n\nWe can fix this by inlining the cache flush code and ensuring that there\nare no CTIs in between the code modification write and the modified\ninstruction.\n\nTo this end I have also lifted the restriction requiring isb to be the\nlast instruction of a block. This was added as part of the AArch64\nselfmod mechanism which mangled ic cvau instructions to store the\naddress range being flushed and mangled isb to do a sideline exit and\nperform the actual code cache flush. This mechanism has since been\nchanged to directly flush the code cache on ic cvau and isb no longer\nhas any special mangling so we don\u0027t need it to be the last instruction.\n\nFixes #8050"
    },
    {
      "commit": "65a7480ad5584c402273ce52225a918dc961ed10",
      "tree": "bce665a294ec41df89988326af85bcc8ea4c16e2",
      "parents": [
        "c9f64b7fac30c0a687586a606ccd761fffe8844e"
      ],
      "author": {
        "name": "Tejash Gupta",
        "email": "tejash5489@gmail.com",
        "time": "Mon Aug 17 02:23:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 02:23:14 2026"
      },
      "message": "i#2073: fix confusing sizeof(XSP_SZ) usage (#8053)\n\nXSP_SZ is already defined as `(ssize_t)sizeof(reg_t)`, i.e. the stack\npointer width in bytes. Several call sites wrote `sizeof(XSP_SZ)`,\nwhich actually computes `sizeof(ssize_t)` rather than the intended\nvalue. As noted in the issue discussion, this happens to be\nnumerically equal on every currently supported platform (`ssize_t`\nand `reg_t` are always pointer-width), so it is not a functional bug,\nbut it reads as one and is worth cleaning up.\n\nReplace `sizeof(XSP_SZ)` with `XSP_SZ` at all three call sites\n(core/ir/opnd.h x2, core/unix/native_elf.c x3 occurrences on 3 lines).\n\nFixes: #2073"
    },
    {
      "commit": "c9f64b7fac30c0a687586a606ccd761fffe8844e",
      "tree": "7eca45898840888eb4cadbbf351773aa25569c69",
      "parents": [
        "5ba42078a09cd3270ab6bcef029c7e73f152a19e"
      ],
      "author": {
        "name": "Tejash Gupta",
        "email": "tejash5489@gmail.com",
        "time": "Mon Aug 17 02:22:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 02:22:54 2026"
      },
      "message": "i#1972: add DISABLE_DRGUI CMake option (#8054)\n\nAdds a DISABLE_DRGUI option, following the same pattern as the existing\nDISABLE_ZLIB option, so DrGUI can be skipped even when Qt5 is found.\n\nThis is useful for:\n1. Reproducible builds that always give the same result whether or not\n   Qt5 is installed.\n2. Situations where compiling Qt5-related code fails, so the user can\n   move on instead of spending time debugging it.\n3. Saving build time and disk space when DrGUI is not wanted.\n\nDefaults to OFF, so existing behavior (build DrGUI if Qt5 is found) is\nunchanged.\n\nFixes: #1972"
    },
    {
      "commit": "5ba42078a09cd3270ab6bcef029c7e73f152a19e",
      "tree": "f455cac5381c3c88a36b0d3dce23b0c242f3177f",
      "parents": [
        "e2b756de6eb4da2dd8f3c1535cd51754708dcc12"
      ],
      "author": {
        "name": "Suyash Mahar",
        "email": "smahar@meta.com",
        "time": "Fri Aug 14 18:46:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 18:46:06 2026"
      },
      "message": "i#8034: Make native_exec_is_back_from_native check more robust to avoid BOLT induced crashes (#8035)\n\nnative_exec_is_back_from_native() bounds its\nrange check with the hard-coded\nMAX_NATIVE_RETSTACK * BACK_FROM_NATIVE_RETSTUB_SIZE\n(40 bytes) rather than the actual extent of the retstub region.\n\nBound the check by\nback_from_native_retstubs_end - back_from_native_retstubs instead.\nOn x86 this is equivalent, the asm emits MAX_NATIVE_RETSTACK\nstubs and native_exec_init() already asserts\nend \u003d\u003d start + MAX_NATIVE_RETSTACK * BACK_FROM_NATIVE_RETSTUB_SIZE.\n\nFixes #8034"
    },
    {
      "commit": "e2b756de6eb4da2dd8f3c1535cd51754708dcc12",
      "tree": "bb944e529880597fab400b45c71cb0e6fe7e43d8",
      "parents": [
        "05e316505beb69586142243af1647449945772b7"
      ],
      "author": {
        "name": "Enrico Deiana",
        "email": "edeiana@google.com",
        "time": "Tue Aug 11 17:14:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 11 17:14:36 2026"
      },
      "message": "i#7230: Update view tool doc with -skip_records and -exit_after_records (#8046)\n\nUpdates the view tool doc suggesting the use of\n`-skip_records` and `-exit_after_records` flags.\nThe `-sim_refs` and `-skip_refs` flags are not\nsupported by the view tool anymore.\nWhen attempting to use them, the following error\nmessage appears:\n```\nUsage error: -skip_refs and -sim_refs are not\nsupported with the view tool. Use -skip_records\nand -exit_after_records instead.\n```\n\nIssue #7230"
    },
    {
      "commit": "05e316505beb69586142243af1647449945772b7",
      "tree": "e54c067b2e760941f10008668db5d9a3e666fe94",
      "parents": [
        "18e7b34cc243edcf32a39c7787b5f8b655300e3f"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Fri Aug 07 20:05:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 20:05:30 2026"
      },
      "message": "i#8043: Remove w suffix from Intel style (#8045)\n\nRemoves the \u0027w\u0027 suffix from iret, pushf, popf, pusha, and popa, since\nthese do not have a suffix at that size in the Intel manual nor in xed.\n\nFixes #8043"
    },
    {
      "commit": "18e7b34cc243edcf32a39c7787b5f8b655300e3f",
      "tree": "b85a50628262c1e98f3d88aa617aa10446cc8113",
      "parents": [
        "1fd3603b213360404f3753fadd0e8e196be1cbdf"
      ],
      "author": {
        "name": "Bin Wang",
        "email": "biwa@google.com",
        "time": "Fri Aug 07 03:54:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 07 03:54:03 2026"
      },
      "message": "i#8038: Remove XXX comments as they are no longer planned (#8042)\n\nPer offline discussion, we think it\u0027s better to have one set of public\nheaders for both user space release and kernel release. Therefore, it\u0027s\nacceptable to have `#ifdef`s in the public headers for conditionally\nincluding system header, and the optimization in #8038 is no longer\nplan. This PR removes the XXX comments referring #8038.\n\nIssue: #8038"
    },
    {
      "commit": "1fd3603b213360404f3753fadd0e8e196be1cbdf",
      "tree": "92aeb8b718b364af66e1cdaedbeaabf56afb1180",
      "parents": [
        "38dd4e6aef38a79c32cc14f6026298fcb69cb637"
      ],
      "author": {
        "name": "Suyash Mahar",
        "email": "smahar@meta.com",
        "time": "Wed Aug 05 20:39:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 20:39:40 2026"
      },
      "message": "i#5427: Make -raw_compress lz4 usable from statically linked clients (#8037)\n\nSince v1.9.4, lz4 supports supplying a custom allocator, allowing it to\nbe safely used with statically linked drmemtrace. This PR adds support\nfor lz4 to static drmemtrace when linked against lz4 v1.9.4+ and when\nthe library actually exports the\n`LZ4F_createCompressionContext_advanced()` symbol.\n\nIf these conditions are met, a CMake link test sets\n`HAS_LZ4_CUSTOM_MEM`, which makes lz4 the default for `-raw_compress` in\nstatic clients, matching the existing non-static default. If custom\nallocator support is not available, behavior is unchanged.\n\nThree new tests:\n- raw-lz4: raw lz4 files are written and read back through raw2trace.\n- check-malloc-lz4: runs the existing malloc check over the lz4 path,\nwhich is possible now that the path no longer disables that check.\n- burst_static-lz4: a statically linked client writes lz4 raw files and\nthe output matches uncompressed burst_static.\n\nIssue: #5427"
    },
    {
      "commit": "38dd4e6aef38a79c32cc14f6026298fcb69cb637",
      "tree": "4b83fb14270f4fff5cefad063b6872174e93b4f6",
      "parents": [
        "436da3609c400dd9ca6d3dcfeebe084839180b61"
      ],
      "author": {
        "name": "Derek Bruening",
        "email": "bruening@google.com",
        "time": "Wed Aug 05 17:56:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 17:56:20 2026"
      },
      "message": "i#8039: Avoid incorrect marker location in avx512lazy (#8040)\n\nTightens the double-mov-const marker check in the avx512lazy test to\navoid incorrectly matching on random application code, which we have\nseen in some builds.\n\nTested on a build where this test fails half the time without this fix.\n\nFixes #8039"
    },
    {
      "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"
    }
  ],
  "next": "db02925c4841efcba96f8eb1b8c3f4255ee63650"
}
