)]}'
{
  "log": [
    {
      "commit": "1f203f0a5d19808e2bff0799f801873026ea5aa7",
      "tree": "9b4645d94e90fbe2d8bcbc848b5078d19a1f7479",
      "parents": [
        "f105901dcc540bb765a8a3f4565edfc002f0aaf1"
      ],
      "author": {
        "name": "Zhaoxuan Jiang",
        "email": "jiangzhaoxuan94@gmail.com",
        "time": "Fri Jun 12 05:00:27 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 11 14:05:47 2026 -0700"
      },
      "message": "[lld][MachO] Add N_COLD_FUNC support (#183909)\n\nParse `N_COLD_FUNC` from input object files and use it to move cold\nfunctions to the end of __text, after all non-cold and ordered symbols.\n\nKey behaviors:\n- Cold functions are placed after all non-cold unordered symbols.\n- Order file entries take precedence over the cold attribute: a cold\nfunction listed in the order file retains its specified position.\n- BP interaction: utilize the subgrouping introduced in #185661 to split\n`N_COLD_FUNC` sections into a distinct subgroup.\n- ICF interaction: when a non-cold section is folded into a cold master,\nthe master\u0027s coldness is unset. With safe_thunks, cold\naddress-significant functions get cold thunks placed in the cold region.\n- The `N_COLD_FUNC` flag is stripped from the output symbol table.\n\nGitOrigin-RevId: 8c64020b2397fc5dddd577276020cbb30cdbc6cc\n"
    },
    {
      "commit": "f105901dcc540bb765a8a3f4565edfc002f0aaf1",
      "tree": "92a1ccd62637cfc9a0c9bc28817bb191b97877bf",
      "parents": [
        "81c36c34c5f176fe12bb0010020d81866dcb392c"
      ],
      "author": {
        "name": "Peter Smith",
        "email": "peter.smith@arm.com",
        "time": "Wed Jun 10 13:04:09 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 10 05:05:34 2026 -0700"
      },
      "message": "[ARM][LLD] Fix buildbot failure due to ununsed variable [NFC] (#202925)\n\nThe variable was used in an assert, have altered the code to use in an a\nnon-assert context.\n\nGitOrigin-RevId: 6ec2261fa29de72fe9520192a3e8b2f5f2082b67\n"
    },
    {
      "commit": "81c36c34c5f176fe12bb0010020d81866dcb392c",
      "tree": "731ef2ce64a0f3bf53904379ffb861ec9e5db215",
      "parents": [
        "b83dbab2cf5983516b1b48f22792debfabaad481"
      ],
      "author": {
        "name": "Peter Smith",
        "email": "peter.smith@arm.com",
        "time": "Wed Jun 10 11:03:28 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Jun 10 03:05:22 2026 -0700"
      },
      "message": "[LLD][ELF] Do not reuse thunks in OVERLAYs (#200415)\n\nWe cannot guarantee that a thunk in an OVERLAY will be in memory at the\nsame time as the caller if the caller is not in the same output section.\nIt is safe for a caller in an OVERLAY to reuse a thunk in a non-OVERLAY\nsection as we know that will be in memory. Thunks that are placed\nbefore their target, are alternative entry points and can also be reused.\n\nResurrect the isThunkSectionCompatible function that was recently\nremoved as it served a similar purpose for thunks in different\npartitions.\n\nPotentially fixes #199966 which mentions a similar problem for sections\nassigned to TCM (Tightly Coupled Memory). It should be possible to model\na TCM as an OVERLAY. If not then there may need to be a command-line\noption to inhibit thunk sharing across output sections.\n\nGitOrigin-RevId: 651afa86119fd138488490862d1418eb40a43473\n"
    },
    {
      "commit": "b83dbab2cf5983516b1b48f22792debfabaad481",
      "tree": "8f7e12e4912aa963c4022c3fa0aa099967ba345c",
      "parents": [
        "db8f66d435dd30ac2b13c798080fb618ed940688"
      ],
      "author": {
        "name": "alx32",
        "email": "103613512+alx32@users.noreply.github.com",
        "time": "Tue Jun 09 17:13:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 09 17:15:49 2026 -0700"
      },
      "message": "[lld][MachO] Handle compact unwind entries with no matching symbol (#180009)\n\nContext: This change is to support [MachO basic block hot-cold\nsplitting](https://discourse.llvm.org/t/rfc-support-fsplit-machine-functions-on-macho-arm64/89739)\n- though it\u0027s presented below outside of this context.\n\nCompact unwind entries can reference function addresses that have no\ncorresponding symbol in the object\u0027s symbol table (e.g. functions with\ntemporary local labels). Previously, this would trigger an assertion\nfailure in assert-enabled builds, or silently drop the unwind entry in\nrelease builds, resulting in missing unwind info at runtime.\n\nFix this by synthesizing a local `Defined` symbol when no symbol exists\nat the target address of a compact unwind entry, so that unwind info is\ncorrectly emitted.\n\n[Assisted-by](https://t.ly/Dkjjk): Cursor IDE + claude-opus-4.6-high +\ngpt-5.2-xhigh\n\nGitOrigin-RevId: 87e5d3898c2dbc73f9e75aa16be27757e3969f52\n"
    },
    {
      "commit": "db8f66d435dd30ac2b13c798080fb618ed940688",
      "tree": "790b52981a3305964ae34986804c3dd565254baa",
      "parents": [
        "33adbf15917f2050b6da29737852f5de36187ff2"
      ],
      "author": {
        "name": "Ellis Hoag",
        "email": "ellis.sparky.hoag@gmail.com",
        "time": "Tue Jun 09 10:14:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 09 10:20:34 2026 -0700"
      },
      "message": "[lld][macho] Fix thunks with multiple text sections (#199747)\n\nWhen there are multiple `__text` sections, LLD might not generate thunks\nto stubs sections when they are required, leading to relocation errors.\n```\nld64.lld: error: a.o:(symbol _foo+0x0): relocation BRANCH26 is out of range: 134217744 is not in [-134217728, 134217727]; references _extern_sym\n```\n\nCreate `TextOutputSection::estimateStubsEndVA()` to correctly estimate\nthe end VA of the last stubs section so we can tell when branches to\nstub symbols will be in range.\n\nTechnically this could cause lld to generate more thunks in some cases.\nIf a binary requires thunks (the `__TEXT` segment is \u003e128MiB) and has\nmultiple `__text` sections like `__text_cold` or `__lcxx_override`, then\nall branches to stub symbols will require thunks. Without this change we\ncould get the relocation errors above. We might be able to workaround\nthe problem by placing the `__text` section last.\n\nFixes https://github.com/llvm/llvm-project/issues/195387.\n\nGitOrigin-RevId: 93bc18ff2d13e3246a7629ca17bb8352d2c51d89\n"
    },
    {
      "commit": "33adbf15917f2050b6da29737852f5de36187ff2",
      "tree": "3562edb87e9a14ca10f76790efc3cda1b7af0b02",
      "parents": [
        "2d55db52391343493c64bcf390c0f67cba231abb"
      ],
      "author": {
        "name": "Nuri Amari",
        "email": "nuri.amari99@gmail.com",
        "time": "Tue Jun 09 10:57:34 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 09 08:00:34 2026 -0700"
      },
      "message": "[lld-macho] Sort LC_LINKER_OPTIONS before processing (#201604)\n\nPreviously https://reviews.llvm.org/D157716 brought handling of\nLC_LINKER_OPTIONS closer to Apple linker behavior by processing the\noptions at the end after all object files have been added.\n\nThis corrects another difference in behavior, processing frameworks\nbefore regular libraries (linked with -lFoo), and processing each group\nin sorted order.\n\nProcessing a LC_LINKER_OPTIONS can trigger loads of more object files\nwhich in turn may have more LC_LINKER_OPTIONS. We iterate this to a\nfixed point, walking this graph in BFS order, processing each \"level\" of\nthe graph in the order described above. This graph traversal order\nhasn\u0027t changed in this commit, only the sorting has.\n\nThe diff of the linker map produced for the included test before and\nafter:\n```\n23,28c23,28\n\u003c 0x000003D0    0x00000001      [  4] _zlib\n\u003c 0x000003E0    0x00000001      [  5] _zed_framework\n\u003c 0x000003F0    0x00000001      [  6] _mlib\n\u003c 0x00000400    0x00000001      [  7] _alpha_framework\n\u003c 0x00000410    0x00000001      [  8] _alib\n\u003c 0x00000420    0x00000001      [  9] _mid_framework\n---\n\u003e 0x000003D0    0x00000001      [  4] _alpha_framework\n\u003e 0x000003E0    0x00000001      [  5] _mid_framework\n\u003e 0x000003F0    0x00000001      [  6] _zed_framework\n\u003e 0x00000400    0x00000001      [  7] _alib\n\u003e 0x00000410    0x00000001      [  8] _mlib\n\u003e 0x00000420    0x00000001      [  9] _zlib\n```\n\nApple\u0027s linker produces the same order as after.\n\n---------\n\nCo-authored-by: Nuri Amari \u003cnuriamari@fb.com\u003e\nGitOrigin-RevId: 2ae3fa77da6c393c5b47ced09b6d91551d178b57\n"
    },
    {
      "commit": "2d55db52391343493c64bcf390c0f67cba231abb",
      "tree": "7275e98498f7c2f4a567339a01c5de96ba046a15",
      "parents": [
        "a0763b326b95fc79eb3a4875452e5d11d69977e6"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Jun 08 09:54:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 08 10:00:20 2026 -0700"
      },
      "message": "ELF: CFI jump table relaxation.\n\nIndirection via the jump table increases the icache and TLB miss rate\nassociated with indirect calls, and according to internal benchmarking\nwas identified as one of the main runtime costs of CFI, contributing\naround 30% of the total overhead. #145579 addressed the problem for\ndirect calls to jump table entries, but the indirect call overhead is\nstill present. This patch implements jump table relaxation, which is a\ntechnique for opportunistically reducing the indirect call overhead.\n\nThe basic idea is to eliminate the indirection by moving function\nbodies into the jump table wherever possible. This is possible in two\ncircumstances:\n\n- When the body size is at most the size of a jump table entry.\n- When the function is the last function in the jump table.\n\nIn both cases, we may move the function body into the jump table by\nsplitting the jump table in two, with enough space in the middle for the\nfunction body, and placing the function there.\n\nWe leave the last function in the jump table at its original location\nand place the rest of the jump table behind it. The goal of this is to\ndecrease the TLB miss rate, on the assumption that it is more likely\nfor functions with the same type (and their callees) to be in the same\npage as each other than for them to be in the same page as the original\nlocation of the jump table (typically clustered together near the end\nof the binary).\n\nA complete implementation of jump table relaxation was found to reduce\nthe overhead of CFI in a large realistic internal Google benchmark\nby between 0.2 and 0.5 percentage points, or 10-25%, depending on the\nmicroarchitecture.\n\nReviewers: vitalybuka, MaskRay\n\nPull Request: https://github.com/llvm/llvm-project/pull/147424\n\nGitOrigin-RevId: 7212c8f83b16afae9f4f4ca2fb724bc6518ae4f2\n"
    },
    {
      "commit": "a0763b326b95fc79eb3a4875452e5d11d69977e6",
      "tree": "142a9b62c02d51b94d459c32eac4cf2fd63f807f",
      "parents": [
        "701a47c95c51f9b5ad8611388a61d7e65782e377"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun Jun 07 11:51:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun Jun 07 11:55:38 2026 -0700"
      },
      "message": "[lld-macho] Replace unordered_{map,set} with Dense{Map,Set} (#202100)\n\nDenseMap no longer uses in-band sentinel keys (#201281) and is superior\nto unordered_map in these scenarios.\n\nGitOrigin-RevId: 1c688221e0f0a737f34960babfef9d63f8709181\n"
    },
    {
      "commit": "701a47c95c51f9b5ad8611388a61d7e65782e377",
      "tree": "02848bf68147c67b7c45aaa82826ab26cd8893ea",
      "parents": [
        "31b4d37b8cc437d78c07e93478c248971f570b7f"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat Jun 06 13:41:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Jun 06 13:45:13 2026 -0700"
      },
      "message": "[lld][WebAssembly] Remove vestigial ImportKey::State after DenseMapInfo cleanup (#202082)\n\nUnused after #201989 removed getEmptyKey()\n\nGitOrigin-RevId: 825d760892c77c00da0eb4a01c5f2397c49c9585\n"
    },
    {
      "commit": "31b4d37b8cc437d78c07e93478c248971f570b7f",
      "tree": "f8948b63146b80014347d998a0a8d2e7c8b654c9",
      "parents": [
        "99737ba8e1b8c31d23b30b341be33a9a63919fea"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat Jun 06 11:18:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Jun 06 11:20:46 2026 -0700"
      },
      "message": "[lld] Remove unused DenseMapInfo::getEmptyKey (#201989)\n\nAfter #201281 DenseMapInfo\u003cT\u003e::getEmptyKey() is no longer used by\nDenseMap. Remove the unused getEmptyKey definitions and dead sentinel\nuses.\n\nGitOrigin-RevId: eafc7b672217288c873bea6d2489e93e2e683246\n"
    },
    {
      "commit": "99737ba8e1b8c31d23b30b341be33a9a63919fea",
      "tree": "3390b349cb083e3b1e47dc92f7842e2d460e4fe2",
      "parents": [
        "e95e3d9dfafc77320748ca60a2f1a3468469d754"
      ],
      "author": {
        "name": "alx32",
        "email": "103613512+alx32@users.noreply.github.com",
        "time": "Fri Jun 05 13:38:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 05 13:40:14 2026 -0700"
      },
      "message": "[lld-macho][LTO] Emit `__llvm_addrsig` for `--icf\u003dsafe_thunks` (#188486)\n\nLTO was emitting `__llvm_addrsig` metadata when `--icf\u003dsafe` was\nspecified, but not for `--icf\u003dsafe_thunks`. After the recent PR\nhttps://github.com/llvm/llvm-project/pull/188400 that makes safe ICF\nconservative without `__llvm_addrsig` (marking all symbols as\naddress-significant when the section is absent), this omission caused\nsafe_thunks to silently degrade for all LTO-compiled objects: every\nsymbol became `keepUnique`, preventing body folding entirely.\n\nFix this by also enabling `EmitAddrsig` when `icfLevel` is\n`safe_thunks`. This allows the LTO backend to emit precise\naddress-significance metadata, so that only truly address-significant\nfunctions get thunk treatment while non-address-significant identical\nfunctions can still be body-folded.\n\nAdd a regression test that verifies LTO + `--icf\u003dsafe_thunks` correctly\nbody-folds non-address-significant identical functions, which would fail\nwithout this fix due to missing addrsig metadata.\n\nGitOrigin-RevId: c3e9d05ce8044612ecae2eb27dd5ca52b612a8ac\n"
    },
    {
      "commit": "e95e3d9dfafc77320748ca60a2f1a3468469d754",
      "tree": "003ac8979a979a7c66f16f451d2ced828a6fa2f3",
      "parents": [
        "923e01d7b914cefb51b241f9741d5873cc8e8869"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jun 05 11:55:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 05 12:00:11 2026 -0700"
      },
      "message": "[lld][WebAssembly] Convert more tests from .ll to .s (#201713)\n\nThis continues the work of converting Wasm tests to use assembly instead\nof LLVM IR.\n\nFor this change I chose all of the `.ll` tests that could be converted\nwith minimal changed.\n\nSome changes that were needed:\n- data-segments.s: Updated segment order and offsets to match .tdata\nbehavior.\n- visibility-hidden.s: Removed __stack_pointer export expectation as\nit\u0027s no longer automatically exported in the assembly-based test.\n- init-fini.s: Updated body encoding and InitFunctions indices to match\nllvm-mc output.\n- locals-duplicate.test: Added explicit alignment to inputs to match\noriginal test expectations.\n- function-imports-first.s, init-fini.s, signature-mismatch-export.s:\nRemoved __stack_pointer export expectation as it\u0027s no longer\nautomatically exported in assembly-based tests when unused.\n- gc-sections.s: Updated expectations to reflect that __stack_pointer is\ngarbage collected when GC is enabled.\n- tag-section.s: Added and exported an explicit global variable\n(`my_global`) to ensure a GLOBAL section is created, preserving the test\nfor checking that the GLOBAL section comes after the TAG section.\n\nTo verify the expectation changes, you can use the following command to\ndiff the .ll (pre-image) and .s (post-image) expectations ignoring\ncomment character differences:\n\n```shell\ngit diff --name-status HEAD~1 HEAD | grep \u0027^D\u0027 | grep \u0027\\.ll$\u0027 | while read -r _ ll; do \\\n  s\u003d\"${ll%.ll}.s\"; \\\n  if [ -f \"$s\" ]; then \\\n    echo \"\u003d\u003d\u003d Diff for $s \u003d\u003d\u003d\"; \\\n    diff -u \\\n      \u003c(git show HEAD~1:\"$ll\" | grep -E \u0027CHECK|RUN\u0027 | sed -E \u0027s/^;[[:space:]]*//\u0027) \\\n      \u003c(cat \"$s\" | grep -E \u0027CHECK|RUN\u0027 | sed -E \u0027s/^#[[:space:]]*//\u0027); \\\n  fi; \\\ndone\n```\n\nGitOrigin-RevId: 3b983204e4c2cc3c383dba022fe85463e520b3b5\n"
    },
    {
      "commit": "923e01d7b914cefb51b241f9741d5873cc8e8869",
      "tree": "adc87a9680ceea02cef2386ef8e20b125c72ee92",
      "parents": [
        "1067c22b7f3c7b0cb537f78726e467b94cc9f661"
      ],
      "author": {
        "name": "Hex Wu",
        "email": "hex4@foxmail.com",
        "time": "Sat Jun 06 00:46:14 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 05 09:50:43 2026 -0700"
      },
      "message": "[lld][WebAssembly] Add missing space in unmodeled diagnostic (#201764)\n\nThis is just a nit change, I hit this fatal while trying to use a GC\nobject, and noticed that the diagnostic showed `foo.ofile has unmodeled\nreference or GC types`\n\nGitOrigin-RevId: 7839f1fad5402dcf081432c2cd4c2b19ee987f62\n"
    },
    {
      "commit": "1067c22b7f3c7b0cb537f78726e467b94cc9f661",
      "tree": "4d8e4102fe7367bb58572ce09a47478a010c5ca7",
      "parents": [
        "7a6b3896a10094ad621a9718ab7ad795b1c524c8"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jun 04 17:34:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Jun 05 09:50:33 2026 -0700"
      },
      "message": "[lld][Webassembly] Merge lld/test/wasm/export-all.ll into export-all.s. NFC (#201724)\n\nPart of the effort to convert all our tests to assembly.\n\nGitOrigin-RevId: d7a23b7ab0afad10d26f0f1a5edfce88de452f81\n"
    },
    {
      "commit": "7a6b3896a10094ad621a9718ab7ad795b1c524c8",
      "tree": "08db6e96c514130e7a175da0c842bb1140611f2b",
      "parents": [
        "215a271410bc44fdaa715a83c1d7fbb4e7333748"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jun 04 17:34:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Jun 04 17:35:45 2026 -0700"
      },
      "message": "[lld][WebAssembly] Simplify many-functions.ll test (#201711)\n\nRemove superfluous checks (function bodies, data section, symbol table,\nand segment info) from the test.\n\nThe primary purpose of this test is to verify that relocations within\nthe CODE section are handled correctly when linking objects with many\nfunctions (requiring multi-byte LEB128 for function count).\n\nChecking the entire symbol table, segment info, data section, and all\n129 function bodies is superfluous and adds unnecessary noise (over 1000\nlines of expectations) to the test. These features are covered by other,\nmore targeted tests. Reducing these checks makes the test much easier to\nread and maintain.\n\nGitOrigin-RevId: fbbf5f0398ea7509c2da194ac67882096e232f80\n"
    },
    {
      "commit": "215a271410bc44fdaa715a83c1d7fbb4e7333748",
      "tree": "3dd4f82fc3bafc7ad4eab440f25ab844e0319312",
      "parents": [
        "bc419ecb4fcf44d193d2f4e2c3675d21040f50ae"
      ],
      "author": {
        "name": "Konstantin Belochapka",
        "email": "konstantin.belochapka@sony.com",
        "time": "Tue Jun 02 23:54:14 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 02 23:55:03 2026 -0700"
      },
      "message": "[DTLTO] Refactor the DTLTO code. (#192629)\n\nDTLTO implementation code has been moved from `llvm/lib/LTO/` to\n`llvm/lib/DTLTO/`. This refactor does not change any externally visible\nbehavior, so existing DTLTO tests and documentation remain valid. The\nmove was done to reduce code duplication, improve maintainability, and\nmake it easier to adopt future performance improvements.\n\nGitOrigin-RevId: c264e07c2f3d9f25a2526e69926daea3a68be74b\n"
    },
    {
      "commit": "bc419ecb4fcf44d193d2f4e2c3675d21040f50ae",
      "tree": "857fa8e6f0aa4d7cc553ec57910eb801100b3340",
      "parents": [
        "cc082f999bad16cb9fa1c15257e31731c215aa7f"
      ],
      "author": {
        "name": "Mircea Trofin",
        "email": "mtrofin@google.com",
        "time": "Tue Jun 02 14:46:36 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Jun 02 14:50:43 2026 -0700"
      },
      "message": "Reverting PR #184065 and #200323 to address some interplay with CFI (#201194)\n\nThere is a relation between CFI and ThinLTO GUIDs that still needs to be\ndisentangled first. Note that we leave the `MD_unique_id` in\n`FixedMetadataKinds.def` to avoid needing to re-number it later. Plus\nthe metadata string (\"guid\") itself is used by ctxprof.\n\nGitOrigin-RevId: 87d6941017aa6022ce00baa9f1dfae5a49b113f4\n"
    },
    {
      "commit": "cc082f999bad16cb9fa1c15257e31731c215aa7f",
      "tree": "de38ce9452e3aee82bb0e5e8419e8ae74513a420",
      "parents": [
        "c4b363d897f91a2f04391bd32b9d072165df7665"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jun 01 14:08:33 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 01 14:10:33 2026 -0700"
      },
      "message": "[lld][WebAssembly] Refine type used for internal TLS-related symbols. NFC (#200899)\n\nI noticed this while reviewing #200855.\n\nGitOrigin-RevId: 7ccb0ed0172625239626a7503f6996ebd27a6aea\n"
    },
    {
      "commit": "c4b363d897f91a2f04391bd32b9d072165df7665",
      "tree": "b4892477d2f4cfeba0cf5002b31cc92f1ec10328",
      "parents": [
        "3950aa6220dc3159185250ae22b47f4183c41d31"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Mon Jun 01 14:07:01 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Jun 01 14:10:25 2026 -0700"
      },
      "message": "[lld] Remove unused DenseMapInfo::getTombstoneKey (#200636)\n\n#200595 changed DenseMap to no longer create tombstone buckets, so\nDenseMapInfo\u003cT\u003e::getTombstoneKey() is never called. Remove dead\ndefinitions and dead tombstone branches.\n\nGitOrigin-RevId: fbcf6bbf35a176a27ce8ca509c00d6b5c8a8c064\n"
    },
    {
      "commit": "3950aa6220dc3159185250ae22b47f4183c41d31",
      "tree": "78c69d966ba43c3d36683b937bc935e424687dc0",
      "parents": [
        "8185cac04086d79bd72be4cafa4ee2f05f74a568"
      ],
      "author": {
        "name": "hev",
        "email": "wangrui@loongson.cn",
        "time": "Fri May 29 22:24:48 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 29 07:31:03 2026 -0700"
      },
      "message": "[lld][LoongArch] Handle DTPREL relocations in debug sections (#199327)\n\nTeach the LoongArch lld backend to classify R_LARCH_TLS_DTPREL32 and\nR_LARCH_TLS_DTPREL64 as R_DTPREL.\n\nThis allows linker processing of TLS debug info references emitted into\n.debug_info via .dtprelword/.dtpreldword. Add 32-bit and 64-bit tests\nthat assemble objects with DTPREL relocations in debug sections.\n\nGitOrigin-RevId: c4a6fe766e2fe71d478efc9652f45abec8ce5abb\n"
    },
    {
      "commit": "8185cac04086d79bd72be4cafa4ee2f05f74a568",
      "tree": "acca03956ce90d014a9ee6048d1d59b24f3fe665",
      "parents": [
        "a41c5f278d5b0f4be2855cfc51f2f072eb00844b"
      ],
      "author": {
        "name": "Deepak Shirke",
        "email": "117824396+deepakshirkem@users.noreply.github.com",
        "time": "Fri May 29 15:28:29 2026 +0530"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 29 03:00:24 2026 -0700"
      },
      "message": "[ELF] Fix location counter used for output section address with MEMOR… (#197293)\n\nWhen a section uses \u0027.\u0027 as its address expression inside a MEMORY region\n(e.g. \u0027s02 . : { ... } \u003e FLASH\u0027), lld was incorrectly evaluating \u0027.\u0027\nagainst the memory region\u0027s current position instead of the global\nlocation counter. Save the global dot before the memRegion override and\nrestore it when an explicit addrExpr is present.\n\nFixes #112919\n\n@maskray @smithp35 could you please review this patch?\n\nGitOrigin-RevId: 7a4d7733ae55ef8ac139d80e2b0f2bd1951ff5c8\n"
    },
    {
      "commit": "a41c5f278d5b0f4be2855cfc51f2f072eb00844b",
      "tree": "826498f891de41947b53122e886847ced33beaa5",
      "parents": [
        "4671fac9d0dc87e3903cd62ebb1b867e67823094"
      ],
      "author": {
        "name": "Alan Zhao",
        "email": "ayzhao@google.com",
        "time": "Thu May 28 15:56:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu May 28 16:00:15 2026 -0700"
      },
      "message": "[lld][nfc] Fix spelling (#200279)\n\nGitOrigin-RevId: 75fb8e47f6170d66c72311b9629b19c02e97841b\n"
    },
    {
      "commit": "4671fac9d0dc87e3903cd62ebb1b867e67823094",
      "tree": "dad10f7b6e9181a9b8d9dff0f31c2a4532bfcb11",
      "parents": [
        "b8208924e6946ffb114be8585001c3c7817cd0ba"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Thu May 28 11:03:51 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu May 28 01:05:19 2026 -0700"
      },
      "message": "[LLD] [COFF] Fix handling of immediates in ARM64_SECREL_HIGH12A (#200060)\n\nJust like for PAGEBASE_REL21, the immediate in SECREL_HIGH12A is the\nbyte offset, not a page offset. The byte level offset is added to the\nsymbol offset, which only then after that gets shifted right by 12. This\nmakes the handling of this immediate consistent with what MS link.exe\ndoes.\n\nThe existing testcase had a zero immediate in the instruction for this\nrelocation.\n\nThis makes it clear that immediate offsets with SECREL_HIGH12A do work\nfine, where the byte level offsets end up carrying over to the upper\nbits.\n\nGitOrigin-RevId: 5c95f6a859394757b92b0d63ff90b9175056deb6\n"
    },
    {
      "commit": "b8208924e6946ffb114be8585001c3c7817cd0ba",
      "tree": "e06d473eb717579d2ee7b43cf00546332187edec",
      "parents": [
        "3bf5dcecaf897ce8d39f60434dd0993bc61b6fc5"
      ],
      "author": {
        "name": "amachronic",
        "email": "amachronic@protonmail.com",
        "time": "Wed May 27 15:13:25 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed May 27 07:15:42 2026 -0700"
      },
      "message": "[lld][ELF] Exclude SHT_NOBITS sections from LMA overlap checks (#196423)\n\nIn embedded applications it\u0027s sometimes useful to load a section at the\nsame virtual address as the .bss section. For example, one possible use\ncase is for temporary code/data that is only needed for a short time\nwhen the program is starting up:\n\n    REGIONS {\n        RAM  : ORIGIN \u003d 0x100000, LENGTH \u003d 1M\n        INIT : ORIGIN \u003d 0x200000, LENGTH \u003d 1M\n    }\n\n    .text { *(.text); } \u003e RAM\n    .bss (NOLOAD) : { *(.bss); } \u003e RAM\n    .init : AT(LOADADDR(.bss)) { *(.init); } \u003e INIT\n\nThe .init section gets placed in the file immediately after the .text\nsection. At startup the .init section contents are copied to the INIT\nregion before zeroing .bss. Once the .init section is no longer needed\nits memory can be reused, eg. as heap memory.\n\nCurrently, lld does not support this and prints an error because the\nLMAs of .bss and .init overlap. There are two workarounds:\n\n1. Use --no-check-sections to disable all overlap checks, but this also\ndisables VMA and file offset checks, which might not be desired.\n2. Assign a fake LMA to the .bss section, which doesn\u0027t overlap with the\nLMA of any other section. However, this is not very intuitive and\naffects the generated program headers (because a second Phdr is needed\nnow that .bss has a unique p_paddr), which might not be acceptable.\n\nThese ugly workarounds can be avoided by ignoring LMA overlaps involving\nSHT_NOBITS sections. This is also what binutils does, which is why the\nexample above works under GNU ld.\n\nGitOrigin-RevId: f55acff22c4185418e2057a90c22826d3e947f73\n"
    },
    {
      "commit": "3bf5dcecaf897ce8d39f60434dd0993bc61b6fc5",
      "tree": "cb41574507fd42be239841e1cdfea4619195cf81",
      "parents": [
        "8cd4348845c876fd7ffddf4540a752b1aa0b1713"
      ],
      "author": {
        "name": "Haohai Wen",
        "email": "haohai.wen@intel.com",
        "time": "Wed May 27 09:45:38 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 18:49:11 2026 -0700"
      },
      "message": "[LLD][COFF] Gate second-dot section-name stripping on MinGW (#199625)\n\nThe comment in getOutputSectionName has always called the second-dot\nstripping \"for MinGW\" (e.g. .ctors.NNNN), but the code applied it on\nevery target. This hiddes a split-dwarf bug #199616.\n\nTake an isMinGW gate and skip the stripping when it is false.\n\nGitOrigin-RevId: 40602b6346cc3e2fda464f31d9e9473c55be94b3\n"
    },
    {
      "commit": "8cd4348845c876fd7ffddf4540a752b1aa0b1713",
      "tree": "46dcb606e945972d74c8efb28a6eda90f0000ac3",
      "parents": [
        "15abb2a275d8e5f6ef2009ae28cb63334d884946"
      ],
      "author": {
        "name": "Owen Rodley",
        "email": "orodley@google.com",
        "time": "Wed May 27 10:10:48 2026 +1000"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 17:15:10 2026 -0700"
      },
      "message": "Compute GUIDs once and store in metadata (#184065)\n\nThis allows us to keep GUIDs consistent across compilation phases which\nmay change the name or linkage type.\n\nSee https://discourse.llvm.org/t/rfc-keep-globalvalue-guids-stable/84801\n\nThis is a large change since the addition of metadata breaks many tests.\nThe test changes are mostly just trivial changes to checks to get them\npassing.\n\nGitOrigin-RevId: 7938535a54b51a4ca84821b7766d68049c9aa895\n"
    },
    {
      "commit": "15abb2a275d8e5f6ef2009ae28cb63334d884946",
      "tree": "38527fe133b9833daef6fb0484857888f63a5d2d",
      "parents": [
        "7821bc23c71016721a75253f387fc9c2970fbe8d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue May 26 17:02:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 17:05:09 2026 -0700"
      },
      "message": "[lld][WebAssembly] Only include __stack_pointer when needed (#199739)\n\nGitOrigin-RevId: e0ef143823ce8f733c50fae675f05d0df0f702e5\n"
    },
    {
      "commit": "7821bc23c71016721a75253f387fc9c2970fbe8d",
      "tree": "b2cf6d5d3cc7a3bf05c95563d700c9276b82557f",
      "parents": [
        "c2da49e64a62cae5d2a8e01d9b06b3fcee1bb976"
      ],
      "author": {
        "name": "Sy Brand",
        "email": "sy.brand@fastly.com",
        "time": "Tue May 26 23:46:13 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 15:46:53 2026 -0700"
      },
      "message": "[WebAssembly] WASIP3 Library Call Thread Context Support (#175800)\n\nThe [WebAssembly Component\nModel](https://component-model.bytecodealliance.org/) has added support\nfor [cooperative\nmultithreading](https://github.com/WebAssembly/component-model/pull/557).\nThis has been implemented in the [Wasmtime\nengine](https://github.com/bytecodealliance/wasmtime/pull/11751) and is\npart of the wider project of [WASI preview\n3](https://wasi.dev/roadmap#upcoming-wasi-03-releases), which is\ncurrently tracked\n[here](https://github.com/orgs/bytecodealliance/projects/16).\n\nThese changes require updating the way that `__stack_pointer` and\n`__tls_base` work purely for a new `wasm32-wasip3` target; other targets\nwill not be touched. Specifically, rather than using a Wasm global for\ntracking the stack pointer and TLS base, the new\n[`context.get/set`](https://github.com/WebAssembly/component-model/blob/main/design/mvp/CanonicalABI.md#-canon-contextget)\ncomponent model builtin functions will be used (the intention being that\nruntimes will need to aggressively optimize these calls into single\nload/stores). For justification on this choice rather than switching out\nthe global at context-switch boundaries, see [this\ncomment](https://github.com/WebAssembly/wasi-libc/issues/691#issuecomment-3716405618)\nand [this\ncomment](https://github.com/WebAssembly/wasi-libc/issues/691#issuecomment-3716916730).\n\nThis PR adds support for using library calls instead of globals for\nholding the stack pointer and TLS base. When used, this thread context\nABI emits calls to `__wasm_{get,set}_{stack_pointer,tls_base}` when\nneeded. These functions can then be implemented in `libc`. This is\nenabled only for the WASIp3 target.\n\nThere is a temporary macro define for `__wasm_libcall_thread_context__`\nwhich can be removed once `wasi-libc` has fully migrated to the new ABI\nfor the WASIp3 target.\n\nGitOrigin-RevId: 577e9a7cc82faf3dae98dba4aea917a6ffaab293\n"
    },
    {
      "commit": "c2da49e64a62cae5d2a8e01d9b06b3fcee1bb976",
      "tree": "ab5686d576f52f6d09531a436e49c99fb2e8ab55",
      "parents": [
        "5e426d19251f766efc5e12f012617c8af8ba1c9e"
      ],
      "author": {
        "name": "Liza Burakova",
        "email": "liza@chromium.org",
        "time": "Tue May 26 15:09:08 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 12:11:01 2026 -0700"
      },
      "message": "[lld][MachO] Fix SIGBUS crash in saveOrHardlinkBuffer (#198381)\n\nThis change removes a hardlink in saveOrHardlinkBuffer if the\nhardlink already exists.\n\nOn Mac, -object_path_lto files are hardlinked to the cache when\npossible. If the hardlink fails, the saveOrHardlinkBuffer method\nfalls back to saveBuffer instead.\n\nsaveBuffer() opens the file that is being written to as a\nraw_fd_ostream object, which truncates a file when opening if the\nfile already exists.\n\nMost of the time this is not an issue, however, if the hardlink\nfails because it actually already exists, AND the hardlink exists\nspecifically between the -object_path_lto file and the cache file,\nthen when the file is opened and truncated, we also accidentally\ntruncate the file we are trying to read from.\n\nThis fixes a recurring issue Chromium saw in buildbots that\noccassionally hit the above circumstances to cause the crash.\nChromium bug for reference is crbug.com/40060675.\n\nThis test adds a new file with a large-ish array (32KB) to ensure\nthe file is large enough to be mmap\u0027d during the linking process.\nThis was necessary to reproduce the crash, as smaller files were\nnot mmap\u0027d. The SIGBUS crash only occurs when the file is mmap\u0027d\nthen truncated.\n\nGitOrigin-RevId: ff243860d7934d763dea4f3fa345b4bfef6d393c\n"
    },
    {
      "commit": "5e426d19251f766efc5e12f012617c8af8ba1c9e",
      "tree": "7d54fd225039eb07ed3d79428bbd701da8cfa300",
      "parents": [
        "65a3e87a71932c55975d4fbafceee5191c3a7ce6"
      ],
      "author": {
        "name": "Karim Alweheshy",
        "email": "9082720+karim-alweheshy@users.noreply.github.com",
        "time": "Tue May 26 13:20:13 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 10:25:12 2026 -0700"
      },
      "message": "[lld][MachO] Preserve __eh_frame ordering during BP section sorting (#191412)\n\nThe Balanced Partitioning section orderer collects all live\n`ConcatInputSection`s as candidates for content-similarity reordering.\nThis includes `__eh_frame` CIE and FDE records, which have internal\nordering constraints: each FDE contains a backward-relative 32-bit\noffset to its parent CIE, requiring CIEs to precede their FDEs.\n\nWhen the BP orderer assigns priorities to `__eh_frame` subsections and\n`Writer.cpp` sorts by those priorities, FDEs can end up before their\nparent CIEs. The resulting CIE-pointer offsets resolve correctly with\n32-bit wrapping arithmetic but underflow with 64-bit pointer arithmetic,\ncausing DWARF consumers (crash reporters, debuggers) to silently lose\nunwind data.\n\n## Fix\n\nHave the BP orderer skip the Mach-O `__TEXT,__eh_frame` section\nexplicitly before collecting candidate subsections, preserving the\nexisting CIE/FDE order without adding state to `Section`.\n\nThis is the only MachO section with this constraint:\n- `__unwind_info` is a `SyntheticSection` (not a `ConcatOutputSection`),\nso it never enters the BP pipeline\n- `__gcc_except_tab` LSDA entries are referenced by absolute offset, so\nreordering is safe\n- `-order_file` is unaffected because it assigns priorities through\nsymbol definitions (which live in `__text`, not `__eh_frame`). Only the\nBP orderer enumerates sections directly.\n\n## Production impact\n\nVerified on a large iOS application (~218 MB binary, ~34,000 FDEs)\nlinked with `lld` + `--bp-compression-sort\u003dboth`.\n\n### Static analysis of `__eh_frame`\n\nSimulating 64-bit CIE pointer resolution on the output binary across\nmultiple builds:\n\n| Build | `__eh_frame` layout | FDEs resolved (64-bit) | FDEs failed |\n|---|---|---|---|\n| lld + BP sort | FDEs first | 15 / 34,257 | **34,242 (99.96%)** |\n| lld + fix | CIEs first | 30,558 / 30,558 | **0** |\n\n### Runtime verification\n\nProxied crash report uploads from a device running both the affected and\nfixed binaries:\n\n|  | Affected build | Fixed build |\n|---|---|---|\n| Threads captured | 3 | 24 |\n| Total frames | 28 | 135 |\n| Background threads | 0-2 | 23 |\n\nThe affected build lost ~85% of thread data. The crash reporter could\nonly unwind the crashed thread (via compact unwind). All background\nthread unwind data was silently dropped.\n\n## Reproducer\n\nMinimal test case (ARM64). Requires `--bp-compression-sort\u003dboth` to\ntrigger:\n\n```bash\nllvm-mc -filetype\u003dobj -emit-compact-unwind-non-canonical\u003dtrue \\\n  -triple\u003darm64-apple-macos11.0 test.s -o test.o\nld64.lld -arch arm64 -platform_version macos 11.0 11.0 \\\n  -syslibroot $(xcrun --show-sdk-path) -lSystem -lc++ \\\n  test.o -o test --bp-compression-sort\u003dboth\nllvm-objdump --dwarf\u003dframes test\n# Without fix: \"error: parsing FDE data at 0x0 failed due to missing CIE\"\n# With fix: CIE records correctly precede their FDEs\n```\n\nStandalone reproducer with 64-bit CIE simulation script:\nhttps://gist.github.com/karim-alweheshy/ae28196c4fbb295f81cc793cfbe0c1b7\n\n## Test\n\nThe lit test creates multiple functions with `cfi_escape` (forcing DWARF\nunwind mode) and different personality functions (producing separate\nCIEs), then links with `--bp-compression-sort\u003dboth`. Verified on both\nx86_64 and arm64.\n\nMade with [Cursor](https://cursor.com)\n\n---------\n\nCo-authored-by: Karim Alweheshy \u003ckarim.alweheshy@reddit.com\u003e\nCo-authored-by: Ellis Hoag \u003cellis.sparky.hoag@gmail.com\u003e\nGitOrigin-RevId: bacd876134494c69d02b4509e125c47b5e86d3d2\n"
    },
    {
      "commit": "65a3e87a71932c55975d4fbafceee5191c3a7ce6",
      "tree": "208cb38a063bf9d9fd72ae6ccf39c41dc7f9b361",
      "parents": [
        "c6cf1c789e2c727b88be6ee0419d264cf5659104"
      ],
      "author": {
        "name": "Ellis Hoag",
        "email": "ellis.sparky.hoag@gmail.com",
        "time": "Tue May 26 09:41:41 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 26 09:46:29 2026 -0700"
      },
      "message": "[lld][macho] Restructure thunk generation algorithm (#193367)\n\nRefactor the algorithm that generates thunks for Mach-O. Prior to this\nPR, sections were finalized as early as possible while still leaving\nenough room (`slopScale * thunkSize`) for new thunks to be created.\nThere was also additional bookkeeping\n(`estimateBranchTargetThresholdVA()`) so that once all sections were\nfinalized, we could estimate the end of the stubs sections. This avoided\nnew thunks to stubs sections in some cases.\n\nIn this PR, I\u0027ve restructured the algorithm to avoid eagerly finalizing\nsections. Instead, I maintain a `branchesToProcess` queue to hold\nbranches that could need to use a thunk. I avoid processing this branch\nuntil its target has been finalized, or if finalizing another section\nnot leave enough room for new thunks (computed using `slopScale`). This\nincreases the likelihood that a branch will be direct, rather than use a\nthunk, as reflected in the test change. Once all sections are finalized,\nwe can compute an upper bound on the number of thunks that need to be\ncreated. We use this to estimate the end of the stubs section, allowing\nus to keep some direct branches.\n\nFor testing, I linked a large binary before and after this PR. Results\nshow a 0.80% reduction in the number of thunks and 6.6% reduction in\nnumber of thunk calls. The change in the duration of the link was\nnegligible.\n\n| | Thunk Count | Thunk Calls |\n|-| - | - |\n| Base | 138499 | 1707623 |\n| New | 137395 | 1595313 |\n\nGitOrigin-RevId: 68ebd09d5e19c30a79d416940d3400b5637b0f69\n"
    },
    {
      "commit": "c6cf1c789e2c727b88be6ee0419d264cf5659104",
      "tree": "774306d6f732b9bbca79201968e55f9324e148ab",
      "parents": [
        "16814d69a6cbe41627bb5e9f62f24b8ec787fef7"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Fri May 22 01:55:56 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 22 02:00:33 2026 -0700"
      },
      "message": "[ELF] Remove the symbol partition feature (#199186)\n\nFollow-up to #198718: SHT_LLVM_SYMPART sections are no longer recognized\nand are treated as ordinary sections.\n\nThe sole user has been retired (crbug.com/401249151).\n\nThe per-partition synthetic sections (.dynamic, .dynsym, .gnu.hash,\n.eh_frame, .ARM.exidx, ...) move into `ctx.in`; the program headers move\ninto `ctx.phdrs`. Delete the `Partition` struct, `ctx.mainPart`,\n`ctx.partitions`, the\nPartitionElfHeaderSection/PartitionProgramHeadersSection shim sections,\nand the `.part.end` marker.\n\nGitOrigin-RevId: 5fb0fe4a107cb1da959a48ebff84545d80328dba\n"
    },
    {
      "commit": "16814d69a6cbe41627bb5e9f62f24b8ec787fef7",
      "tree": "61c1053db02dba6a6be3cd2b0cb314b7dae1eca4",
      "parents": [
        "ca7916c11ef3c28622be79c9a3de5559e0c39e27"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Fri May 22 00:29:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 22 00:35:13 2026 -0700"
      },
      "message": "[ELF] Reduce symbol partitions to shim binaries (#198718)\n\nThe experimental symbol partition feature can move arbitrary symbols and\ninput sections out of the main partition into named loadable partitions\nthat consumers extract with `llvm-objcopy --extract-partition`. It is\nincompatible with many features, has seen no adoption beyond Chromium\u0027s\n`build/extract_partition.py`. Chrome hasn\u0027t needed this feature for many\nyears.\n\nThe partitioning machinery (per-partition `MarkLive` runs, `moveToMain`,\ncross-partition pull in `InputSection::replace`, per-symbol\ndynsym/gnuhash/thunk-compat filters, `PartitionIndexSection`,\n`copySectionsIntoPartitions`, etc.) does not pull its weight for that.\n\nRemove the partitioning brain and keep a minimal shim shell.\n`Symbol::partition` is deleted; every dynsym add goes to\n`ctx.mainPart`. `ctx.partitions` wraps a `std::vector\u003cPartition\u003e`\nwhose iterator yields only the main partition; shim partitions live\nin `storage[1..]` and are reached via `shims()`. The two paths that\nactually emit shim binaries (`createPhdrs` and `pageAlign` in\nWriter.cpp) name `shims()` directly.\n\nShim partitions carry no per-partition synthetic content; the\nextracted shim is just an ELF header plus PT_PHDR/PT_LOAD.\n`llvm-objcopy --extract-partition` keeps working but\n`--dump-section .note.gnu.build-id` on a shim no longer finds\nanything. Features that previously used `dlopen()` to lazy-load a\nfeature partition now live in main and are always loaded.\n\nAided by Claude Opus 4.7\n\nGitOrigin-RevId: 352fb9a2dfc275a90c5cd5f387de187f0554881c\n"
    },
    {
      "commit": "ca7916c11ef3c28622be79c9a3de5559e0c39e27",
      "tree": "58111d2b273cef5abd40575208495fe458ea1d2f",
      "parents": [
        "63d23922262ef420586e021d3ae1539581efb057"
      ],
      "author": {
        "name": "Jakub Chlanda",
        "email": "jchlanda@accesssoftek.com",
        "time": "Thu May 21 13:44:05 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu May 21 05:46:16 2026 -0700"
      },
      "message": "[lld][PAC] Print full version and platform values on core mismatch (#198758)\n\n`toHex()` only prints a single byte of the integer value, which can hide\nthe actual mismatch in AArch64 PAuth ABI core info diagnostics.\n\nGitOrigin-RevId: 542397ae3f9c61c159d7640023531c53b9fc7456\n"
    },
    {
      "commit": "63d23922262ef420586e021d3ae1539581efb057",
      "tree": "3ce1227f9753f325b063361bc511634219ab0f5c",
      "parents": [
        "85bec334ae4b54e9ff71452e456110681f3bfcb6"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Tue May 19 21:18:55 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 19 21:20:47 2026 -0700"
      },
      "message": "[ELF] -r: Don\u0027t let a weaker offset-0 R_RISCV_ALIGN suppress ALIGN synthesis (#198147)\n\nPR #151639 skipped synthesizing the section-start R_RISCV_ALIGN whenever\nany R_RISCV_ALIGN existed at offset 0, regardless of its alignment. This\nworks with newer LLVM integrated assembler (#150816).\n\nHowever, older MC and GNU Assembler as of today\n(https://sourceware.org/bugzilla/show_bug.cgi?id\u003d33236) can carry a weak\noffset-0 R_RISCV_ALIGN (addend 2 \u003d\u003e align 4) while its real alignment\nrequirement comes from a `.option norelax` .balign, which emits no\nrelocation.\n\nFix the condition to not suppress synthesis.\n\nLink: https://sourceware.org/bugzilla/show_bug.cgi?id\u003d33236#c4\nGitOrigin-RevId: a88714bd5557a5df51c80f2748bea4390e0f96d5\n"
    },
    {
      "commit": "85bec334ae4b54e9ff71452e456110681f3bfcb6",
      "tree": "65b31dc85db6ea9813f41e2bba749247d4ccf741",
      "parents": [
        "825a1596920b6058e025e8628b43a08565ab78bf"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat May 16 18:23:35 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat May 16 18:25:49 2026 -0700"
      },
      "message": "[ELF] Fix imprecise --why-live message for exported symbols (#198139)\n\nThe \"; may interpose\" suffix is imprecise: a symbol is preserved because\nit is exported into the dynamic symbol table, regardless of whether it\nis interposable (preemptible).\n\nFix #192035 and add a test (previously uncovered)\n\nGitOrigin-RevId: bf89698f77702f79feab751bb3a329b76c1b3ffb\n"
    },
    {
      "commit": "825a1596920b6058e025e8628b43a08565ab78bf",
      "tree": "18907e3695b54603a7f209b5254f192edc488cba",
      "parents": [
        "fb11944f292de409c0937aa20ead1f5c16ce8533"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat May 16 15:56:54 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat May 16 16:01:19 2026 -0700"
      },
      "message": "[ELF] Remove redundant memset in SymbolTable::insert. NFC (#198132)\n\nmake\u003cSymbolUnion\u003e() value-initializes the union, zero-initializing all\nsizeof(SymbolUnion) bytes. The following memset(sym, 0, sizeof(Symbol))\nis therefore redundant.\n\nThis placeholder path runs no Symbol constructor, so it was not covered\nby the constructor initialization in\n905a88b923433eb8cd83677ea55bee82eb9ba498.\n\nGitOrigin-RevId: 20b0089ea340d6c9355e631c81f0ce82d80263e5\n"
    },
    {
      "commit": "fb11944f292de409c0937aa20ead1f5c16ce8533",
      "tree": "ccaf0df0a7ff1225d7e2554ba9bee270ac512dd1",
      "parents": [
        "41f73f2bc2bd686d65bd20d6c9cd3f3bf38fb4e4"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat May 16 14:38:18 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat May 16 14:40:57 2026 -0700"
      },
      "message": "[ELF] Initialize Symbol fields in the constructor instead of via memset (#198129)\n\n`initSectionsAndLocalSyms` and `makeDefined` memset the storage to zero\nand then placement-new a Symbol-derived object into it. Placement new\nbegins a new object\u0027s lifetime. The standard does not seem to guarantee\nthe memset bytes carry into members the constructor leaves\nuninitialized.\n\nlld built by GCC 16 can make Valgrind report reads of Symbol::flags\n(via getSymSectionIndex during finalizeSections) as uses of\nuninitialized values (ClangBuiltLinux/linux#2162).\n\nThis patch reinstates the per-field initialization that commit\n778742760534 (\"[ELF] Avoid redundant assignment to Symbol fields. NFC\")\nhad replaced with a bulk memset.\n\nGitOrigin-RevId: 905a88b923433eb8cd83677ea55bee82eb9ba498\n"
    },
    {
      "commit": "41f73f2bc2bd686d65bd20d6c9cd3f3bf38fb4e4",
      "tree": "d7e4aacc5a32ab4d191a3897ae7233420294a919",
      "parents": [
        "ed68680a7f9c57e9a5ae4d1f95a2240815307ccb"
      ],
      "author": {
        "name": "Oliver Old",
        "email": "mail@oold.dev",
        "time": "Fri May 15 14:16:20 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 15 05:21:01 2026 -0700"
      },
      "message": "[LLD] [MinGW] Implement --{push,pop}-state (#197748)\n\nImplement `--push-state` and `--pop-state` for the MinGW lld driver.\nThose options were already implemented by GNU ld for MinGW:\n```\n  --push-state                Push state of flags governing input file handling\n  --pop-state                 Pop state of flags governing input file handling\n```\n\nThis will align the MinGW frontend\u0027s options closer with those of the\nELF frontend and fix issues due to e.g. CMake misdetecting\n`--push-state`/`--pop-state` support by accidentally querying the ELF\ndriver.\n\nFixes #131007.\n\nGitOrigin-RevId: 400c37665f99c7ed407f32cf3c70f9d33eb6193a\n"
    },
    {
      "commit": "ed68680a7f9c57e9a5ae4d1f95a2240815307ccb",
      "tree": "6afe72e579c91d529ddf03ebed579c15f51c48c7",
      "parents": [
        "b8c5a1d77b9bafeffc1d3b9df64efdb1cbffa23c"
      ],
      "author": {
        "name": "Liza Burakova",
        "email": "liza@chromium.org",
        "time": "Wed May 13 15:48:58 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed May 13 12:50:41 2026 -0700"
      },
      "message": "[lld][MachO] Fix symbol resolution order with --read-workers (#193239)\n\nWhen read-workers is enabled, archives are deferred while\nframeworks and dylibs are processed immediately. This can cause\nincorrect resolution if dylib\u0027s symbols are inserted into the\nsymbol table before an archive\u0027s lazy-symbols.\n\nThis also fixes Chromium bug crbug.com/500256589 whose root cause\nwas due to this incorrect resolution of dylib symbols being\ninserted too soon.\n\nThis patch now defers all library and framework types.\n`ArchiveFile::addLazySymbols()` is also called immediately after\neach archive is created in the processing loop.\n\n---------\n\nCo-authored-by: Nico Weber \u003cthakis@chromium.org\u003e\nGitOrigin-RevId: b11e4fb50c0ff5dc87ab6113f4850af991750d66\n"
    },
    {
      "commit": "b8c5a1d77b9bafeffc1d3b9df64efdb1cbffa23c",
      "tree": "b3deee2842e0f29f5ce6ef53ea83943859f283bf",
      "parents": [
        "56cc77f998688c225a40cf481f7e1cb8643a57e2"
      ],
      "author": {
        "name": "Juan Manuel Martinez Caamaño",
        "email": "jmartinezcaamao@gmail.com",
        "time": "Wed May 13 09:20:08 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed May 13 00:25:37 2026 -0700"
      },
      "message": "[Support][Cache] Make `pruneCache` return an `Expected` (#191367)\n\nWhen `sys::fs::disk_space` would fail in during a call to `pruneCache`,\nit would report a `fatal_error`. However, a failure to prune doesn\u0027t\nmean the caller should fail catastrophically.\n\nDownstream, we use LLVM\u0027s cache in the OpenCL runtime. A failure to\nprune the cache can be safely ignored without stopping the user\u0027s\napplication.\n\nGitOrigin-RevId: d476ab3e85075fb83aef5ef29dafd4f032daddce\n"
    },
    {
      "commit": "56cc77f998688c225a40cf481f7e1cb8643a57e2",
      "tree": "fd67fd194dcfbe609b05e83e239922cf6fce8cf9",
      "parents": [
        "d456b86fac8e723e72ee12fadb25c0537e7e9fb3"
      ],
      "author": {
        "name": "Sergei Barannikov",
        "email": "barannikov88@gmail.com",
        "time": "Tue May 12 11:15:09 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 12 01:20:49 2026 -0700"
      },
      "message": "[lld] Remove unused argument of DataExtractor constructor (NFC) (#196361)\n\n`AddressSize` parameter is not used by `DataExtractor` and will be\nremoved in the future. See #190519 for more context.\n\nGitOrigin-RevId: c9560139d3053fe5eb49131c0354ed6a67177fbc\n"
    },
    {
      "commit": "d456b86fac8e723e72ee12fadb25c0537e7e9fb3",
      "tree": "76eef0c3c0f0328b43e4ee5b06df4b79b865b6ad",
      "parents": [
        "dd6195e8b09b47b077073f6cb1f5730bae038090"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon May 11 12:12:29 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon May 11 12:15:41 2026 -0700"
      },
      "message": "[lld][WebAssembly] Allow defining of arbitrary symbols types in LTO objects (#196552)\n\nBitcode files don\u0027t contains precise symbol type information so we\nalways allow the post-LTO defined symbols (from the LTO object file) to\noverwrite bitcode symbols. We don\u0027t want to be reporting type mismatches\nin these cases.\n\nFixes: #195311\nGitOrigin-RevId: 875e6226aad6c771631ce97297d5d3f09d13a176\n"
    },
    {
      "commit": "dd6195e8b09b47b077073f6cb1f5730bae038090",
      "tree": "40978f7d410ce79d8f0491aa685ebeeb6fb8c037",
      "parents": [
        "9bac261861f0bd879af92e6f7717dc619456cc2b"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat May 09 20:09:23 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat May 09 20:11:58 2026 -0700"
      },
      "message": "[ELF] Fix --reproduce non-determinism with parallel input loading (#196773)\n\nAfter #191690, LoadJob::Archive runs in parallel and getArchiveMembers()\ncalls ctx.tar-\u003eappend() from the parallel body. TarWriter::append is\nunsynchronized. Member order in the tar is also non-deterministic\nbecause parallelFor scheduling determines append order.\n\nBuffer per-job tar entries during the parallel pass and flush them in\nthe\nexisting serial post-pass, mirroring the thinBufs / files pattern.\n\nGitOrigin-RevId: 46ef11b7d5a0f61c1d7ea80f24663229fc4a7635\n"
    },
    {
      "commit": "9bac261861f0bd879af92e6f7717dc619456cc2b",
      "tree": "71900da96856ac42d24b64f3afe35b216dc535c9",
      "parents": [
        "78e6bbb83b7b725a3a5096867ae11f522b2d7d7a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri May 08 15:34:12 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri May 08 15:35:21 2026 -0700"
      },
      "message": "[lld][WebAssembly] Remove the experimental warning for PIC/dynamic linking (#196566)\n\nThe current dynamic linking support has been used for several years not\nboth in emscripten and in wasi-sdk and is documented\nhttps://github.com/WebAssembly/tool-conventions/blob/main/DynamicLinking.md.\nWe did/do have have plans to develop another version of the dynamic\nlinking ABI that doesn\u0027t use a global symbol namespace, and that can\nstill happen, but the current API is clearly production worthy\nregardless of future plans.\n\nThis change removes the linker warning and the corresponding\n`--experimental-pic` flag.\n\nIf we do want to still make breaking changes to the dylink format we can\nrename the `dylink.1` section (which already contains a version number).\n\nThis change is leads the way for enabling shared libraries by default in\nemscripten.\n\nGitOrigin-RevId: d063eeb4dd340de9f2167529aaccf5e26f22de7e\n"
    },
    {
      "commit": "78e6bbb83b7b725a3a5096867ae11f522b2d7d7a",
      "tree": "925ff4ce00b41b9da2083ef759089199aa825416",
      "parents": [
        "ad57785b81b1e91701d9780a768449bc766d7ab3"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu May 07 19:21:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu May 07 19:25:43 2026 -0700"
      },
      "message": "[lld][WebAssembly] Improve formatting consistency. NFC (#196458)\n\nGitOrigin-RevId: d335cce3eafe559de5b16e2f31a0aff199ab0180\n"
    },
    {
      "commit": "ad57785b81b1e91701d9780a768449bc766d7ab3",
      "tree": "4f0e01775ac62df372c241844aead58ae49ead2a",
      "parents": [
        "9fada7aab463190ee6ff970c72adb3a9fcf72c93"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed May 06 23:44:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed May 06 23:50:35 2026 -0700"
      },
      "message": "[ELF,test] Cover target-specific option errors (#196247)\n\nGitOrigin-RevId: 67e8fc468cc7c90fdb7ba6bc78ec6cb1890e56a6\n"
    },
    {
      "commit": "9fada7aab463190ee6ff970c72adb3a9fcf72c93",
      "tree": "22b4fd48915e261fd4d2a0b7d1aa4896f90bc98e",
      "parents": [
        "1263b7bdb0da1416e166c22760136a597086d8aa"
      ],
      "author": {
        "name": "Daniel Thornburgh",
        "email": "dthorn@google.com",
        "time": "Wed May 06 14:10:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed May 06 14:15:09 2026 -0700"
      },
      "message": "Reland \"[LTO][LLD] Prevent invalid LTO libfunc transforms (#164916)\" (#196177)\n\nThis reverts commit 24154a55d698a98e7b6d2aae1778b79f15ce5b09.\n\nThe issue that lead to this being reverted was subtle, but entirely\ndownstream. Note that by making LTO DCE more conservative, this patch\nmay uncover latent undefined references caused by build system issues.\n\nGitOrigin-RevId: 0b705b2b79431b27a359e8dcfb721e33594816fe\n"
    },
    {
      "commit": "1263b7bdb0da1416e166c22760136a597086d8aa",
      "tree": "505323d054718c877f0a7e6ccd335ca795be3668",
      "parents": [
        "74f9519c57312d4f38f683bffbca3024f73171a1"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Tue May 05 23:37:12 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 05 23:40:42 2026 -0700"
      },
      "message": "[ELF,test] Cover --why-live mark() paths in MarkLive (#196007)\n\nAdd cases that exercise the non-parallel mark() loop reached only when\nTrackWhyLive is true: cNamedSections.lookup in resolveReloc\n(__libc_atexit\nvia __start_/__stop_), the nextInSectionGroup fallthrough, and the\n.eh_frame personality CIE relocation processed by scanEhFrameSection.\n\nMarkLive.cpp coverage on check-lld-elf goes 90.88% -\u003e 92.18% regions,\n84.15% -\u003e 86.04% branches.\n\nGitOrigin-RevId: b19741877cbc30384a29f9138119c4e9192c082b\n"
    },
    {
      "commit": "74f9519c57312d4f38f683bffbca3024f73171a1",
      "tree": "39c01db636a434d02b3bf7d4a701480690324a62",
      "parents": [
        "8d209d610dc75da5b2cdd49c624bd129221a7d8e"
      ],
      "author": {
        "name": "Haohai Wen",
        "email": "haohai.wen@intel.com",
        "time": "Wed May 06 09:29:50 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 05 18:31:14 2026 -0700"
      },
      "message": "[PseudoProbe] Include function hash in descriptor COMDAT key (#190296)\n\nThe .pseudo_probe_desc section uses COMDAT to deduplicate descriptors\nfor the same function across translation units. On COFF, the COMDAT key\nis uniquely determined by the function name. The COMDAT selection type\nis EXACT_MATCH, which requires byte-identical content. This holds for\napplications that strictly follow C/C++ ODR rules.\n\nUnfortunately, we consistently observe .pseudo_probe_desc COMDAT\nduplicate symbol errors on Windows (see also #177540). Most of them are\ndue to hash mismatches, meaning two non-internal functions with the same\nname but different bodies — a violation of ODR rules. Some of these\nfunctions are generated by the compiler (e.g., TU-local optimizations\nthat alter the CFG of a linkonce_odr function), and some are caused by\nsource code issues (e.g., different preprocessor settings or\noptimization pragmas across TUs).\n\nIt is hard to fix all of them, but they seriously affect the user\nexperience of using pseudo probe on Windows due to the endless COFF\nCOMDAT symbol duplication errors. Users have to resort to\n/force:multiple, which may hide other issues.\n\nThis patch includes the function hash in the COMDAT key for\n.pseudo_probe_desc sections on both ELF and COFF. Descriptors with\ndifferent hashes now get separate COMDAT sections to avoiding linker\nerrors.\n\nTo help users identify functions affected by cross-TU inconsistencies,\nMCPseudoProbe now detects duplicate GUIDs with mismatching hashes\nduring pseudo probe decoding. A summary count is printed by default;\nusers can also use llvm-profgen\u0027s --show-detailed-warning for\nper-function details.\n\nGitOrigin-RevId: 289bef6989d931c8304cd03b3c3d91e0520e8600\n"
    },
    {
      "commit": "8d209d610dc75da5b2cdd49c624bd129221a7d8e",
      "tree": "036456912d7fc91b2b13d2922f7f6b088e4b99d6",
      "parents": [
        "b6facd9c6745e705a57fba201ddb08ad690fb94c"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue May 05 18:08:57 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 05 18:10:49 2026 -0700"
      },
      "message": "ELF: Use dyn_cast to access sym field.\n\ndyn_cast_or_null is unnecessary because this field is non-null.\n\nReviewers: MaskRay\n\nPull Request: https://github.com/llvm/llvm-project/pull/195785\n\nGitOrigin-RevId: 2d7bfcdd868a8c29ee567ef7eb5029fe825d175f\n"
    },
    {
      "commit": "b6facd9c6745e705a57fba201ddb08ad690fb94c",
      "tree": "4e7c5121d53117b7aed779aaf2d544388ed754f1",
      "parents": [
        "563eeaaad5c7c3dcbb4d7e0e4aad95693f23c187"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Tue May 05 10:11:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue May 05 10:15:23 2026 -0700"
      },
      "message": "[ELF] Support non-section Defined symbols at MergeInputSection end (#195801)\n\nCommit bb443359a8ad (\"[ELF] Validate merge section offsets in getSymVA\nand\nmatch GNU ld\") accepts offset \u003d\u003d section_size for section-symbol\nreferences\nin getSymVA, and skips the out-of-bounds case in MarkLive.\n\nThis patch extends the support for non-section Defined symbols,\nmodifying the per-symbol pre-resolution added by commit 42cc45477727\n(\"[ELF] Optimize binary search in getSectionPiece\").\n\nFix #118148\n\nGitOrigin-RevId: 09abee845d2136630fc3f50524148daa55a740a8\n"
    },
    {
      "commit": "563eeaaad5c7c3dcbb4d7e0e4aad95693f23c187",
      "tree": "775fab36d020ad753570d165b47e1059428a267d",
      "parents": [
        "f72585ceb8cb24e2a2584c54867375ff71c772e5"
      ],
      "author": {
        "name": "Jiang Ning",
        "email": "jiangninghx@foxmail.com",
        "time": "Mon May 04 18:32:19 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon May 04 03:35:53 2026 -0700"
      },
      "message": "[DebugInfo] Verify DISubprogram has a type (#194556)\n\nRequire DISubprogram metadata to carry a non-null type in the verifier.\n\nLangRef specifies that the `type:` field of `DISubprogram` points to a\n`DISubroutineType`. This patch diagnoses malformed debug info where the\nfield is omitted or resolves to null, while preserving the existing wrong-type\ndiagnostic for non-DISubroutineType operands.\n\nUpdate hand-written LLVM IR tests to use valid DISubprogram metadata\nwhere they are not intentionally testing malformed debug info. These tests now\nuse minimal DISubroutineType metadata so the new verifier check does not mask\ntheir original coverage.\n\nFixes #186557\n\nGitOrigin-RevId: 81518d06acaa52b9a6e9221834ab64334a25105d\n"
    },
    {
      "commit": "f72585ceb8cb24e2a2584c54867375ff71c772e5",
      "tree": "0a5b5a0b63cbe9cd0760e11644799c28a5b2105a",
      "parents": [
        "7dff6407430b33e12fe2da212b1f856836e68686"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Mon May 04 00:19:04 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon May 04 00:20:18 2026 -0700"
      },
      "message": "[ELF] Remove dead stable_sort in TargetInfo::scanSectionImpl. NFC (#195601)\n\nDead since the code is moved to target-specific relocation scanning.\n\nGitOrigin-RevId: 3a5f8ae674451b2296e3140652fc055b8eae4b83\n"
    },
    {
      "commit": "7dff6407430b33e12fe2da212b1f856836e68686",
      "tree": "c72411d4f8e897db7baffc15740b021d17f4d5d2",
      "parents": [
        "3356c7a17d8f4054009959388ffa3bf151d2f0b8"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Mon May 04 00:15:44 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon May 04 00:20:12 2026 -0700"
      },
      "message": "[SystemZ,test] Cover non-preemptible PLTOFF (#195600)\n\nR_390_PLTOFF{16,32,64} against a non-preemptible (hidden) symbol takes\nfromPlt(R_PLT_GOTREL) → R_GOTREL in RelocScan::process so the relocation\nresolves to symbol - .got with no PLT entry. Add tests to fix the\nthe test gap from the initial SystemZ port\n(fe3406e349884e4ef61480dd0607f1e237102c74).\n\nGitOrigin-RevId: ec0ee3b51f220f03161a607c7b8002b3a93ce228\n"
    },
    {
      "commit": "3356c7a17d8f4054009959388ffa3bf151d2f0b8",
      "tree": "5fa6937faa89fdf0a62f68e1a54dd634187633aa",
      "parents": [
        "0a88a03f1539603a78ceccb42fa5f3acabb831c9"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun May 03 23:45:43 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun May 03 23:50:16 2026 -0700"
      },
      "message": "[ELF] Remove dead code related to relocation scanning (#195594)\n\nGitOrigin-RevId: 9cb00e1c2f118a8549b90f5234db0c336f9a0873\n"
    },
    {
      "commit": "0a88a03f1539603a78ceccb42fa5f3acabb831c9",
      "tree": "c5d8aca32cc227487d7e0670642c7a32d9b57485",
      "parents": [
        "b85a2d7284de64a74726d2b7ae280d19d0f7b697"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun May 03 16:11:07 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun May 03 16:15:42 2026 -0700"
      },
      "message": "[ELF] Remove duplicate SHT_CREL writeTo branch and cover discarded section symbol path. NFC (#195558)\n\nOutputSection::writeTo had two identical\n`if (type \u003d\u003d SHT_CREL \u0026\u0026 !(flags \u0026 SHF_ALLOC))` blocks added together in\n0af07c078798 (#98115). Drop a dead copy.\n\nA section relocation against a /DISCARD/\u0027d section sees the section\nsymbol demoted to Undefined. Add a -r --crel case to relocatable-crel.s\nthat exercises that path.\n\nGitOrigin-RevId: 6e72c62229bedbf5d6f09098b5a42945553650d7\n"
    },
    {
      "commit": "b85a2d7284de64a74726d2b7ae280d19d0f7b697",
      "tree": "899dcd9fc36e4498e3cd76feb994d383157310e8",
      "parents": [
        "0abade3308544f2619d4cb36b44ced0d963b29b5"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun May 03 14:28:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun May 03 14:30:16 2026 -0700"
      },
      "message": "[test] Cover R_RISCV_ADD/SUB and R_RISCV_RVC_{BRANCH,JUMP} (#195555)\n\nThese were uncovered according to an LLVM_BUILD_INSTRUMENTED_COVERAGE\nbuild.\n\nllvm-mc resolves `.L1 - .L0` differences at assembly time, so\nriscv-reloc-add.s doesn\u0027t emit the R_RISCV_ADD*/R_RISCV_SUB* pairs it\nwas meant to test.\n\nAdd riscv-reloc-rvc.s, modeled on riscv-branch.s/riscv-jal.s, to\nexercise R_RISCV_RVC_BRANCH and R_RISCV_RVC_JUMP. Drive offsets via\n-Ttext + --defsym to land precise values that isolate complementary\nextractBits groups.\n\nGitOrigin-RevId: 2dccc37739e69a1634fadb3497216b83b13f66ff\n"
    },
    {
      "commit": "0abade3308544f2619d4cb36b44ced0d963b29b5",
      "tree": "5deeb53062d78d324964ec51bd99aeb2b8ab7336",
      "parents": [
        "338a48cbc0b49df14285be615a6ff8c9bd11ecb0"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun May 03 13:19:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun May 03 13:20:26 2026 -0700"
      },
      "message": "[ELF] Remove unused functions. NFC (#195546)\n\nGitOrigin-RevId: e8a85b26a9989d8eb929f6e0b7c5d05cfc927e04\n"
    },
    {
      "commit": "338a48cbc0b49df14285be615a6ff8c9bd11ecb0",
      "tree": "3320659c456b53ced833b7d01407ce00d994b0ad",
      "parents": [
        "56d0f99a7e01b49a844fc7ac63115301a1835431"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun May 03 13:03:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun May 03 13:05:43 2026 -0700"
      },
      "message": "[ELF] maybeWarnUnorderableSymbol: drop redundant `d \u0026\u0026`, assert isShared. NFC (#195543)\n\nTest Defined first via dyn_cast. Lazy/Common/Placeholder cannot reach\nhere: readCallGraph runs after replaceCommonSymbols, buildSectionOrder\nruns after demoteSymbolsAndComputeIsPreemptible, and redirectSymbols\ndetaches Placeholder foo@v1 stubs from objectFiles.\n\nIn symbol-ordering-file-warnings.s, add a common-symbol case and use\n`count 0` for empty-output checks.\n\nGitOrigin-RevId: 268813df7fc9666e4b50b95aaf463937805554f5\n"
    },
    {
      "commit": "56d0f99a7e01b49a844fc7ac63115301a1835431",
      "tree": "20c093180c3e39ba9131c56189c574f6b173ae0a",
      "parents": [
        "6069b67a3b73ac701ab34dd5358d69cc6f0e89fd"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sun May 03 12:34:38 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sun May 03 12:35:47 2026 -0700"
      },
      "message": "[ELF] Simplify checkDuplicate; cover SharedSymbol/CommonSymbol resolve. NFC (#195541)\n\nDrop the redundant isDefined() check.\n\nExtend common-shared.s to also exercise the case where the\nSharedSymbol\u0027s\nst_size is not larger than the incoming CommonSymbol\u0027s.\n\nGitOrigin-RevId: 92a10f4a23307678ed5b54e21e3b9034a46270f1\n"
    },
    {
      "commit": "6069b67a3b73ac701ab34dd5358d69cc6f0e89fd",
      "tree": "03351a4bd86b8acd3019fbdb05ababea78e78708",
      "parents": [
        "012508c95c353831061e165fadb38116a59862d2"
      ],
      "author": {
        "name": "Shilei Tian",
        "email": "i@tianshilei.me",
        "time": "Sat May 02 12:15:44 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat May 02 09:20:36 2026 -0700"
      },
      "message": "Revert \"[AMDGPU] Update data layout string to use the new pointer spec about null pointer value\" (#195460)\n\nReverts llvm/llvm-project#194101 since the infrastructure to use that is\nnot ready such that updating it right now will cause some inconsistency.\n\nGitOrigin-RevId: 0555d590f09e061c60570ba8d034d4a495067e05\n"
    },
    {
      "commit": "012508c95c353831061e165fadb38116a59862d2",
      "tree": "c56a71176a33ebb8bb0a9b1c5d2531c45d8e7e3c",
      "parents": [
        "b244c1bc8b67fa3f71fb9ef9b96d704b61cad459"
      ],
      "author": {
        "name": "Shilei Tian",
        "email": "i@tianshilei.me",
        "time": "Thu Apr 30 14:22:20 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 30 11:25:50 2026 -0700"
      },
      "message": "[AMDGPU] Update data layout string to use the new pointer spec about null pointer value (#194101)\n\nGitOrigin-RevId: 1a861970f2ba5a8e0bdc47423a892d5f39a25c05\n"
    },
    {
      "commit": "b244c1bc8b67fa3f71fb9ef9b96d704b61cad459",
      "tree": "03351a4bd86b8acd3019fbdb05ababea78e78708",
      "parents": [
        "cd3bc672a353ed9d358c452ee137ee551dd12b92"
      ],
      "author": {
        "name": "Jacek Caban",
        "email": "jacek@codeweavers.com",
        "time": "Wed Apr 29 12:33:42 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 29 03:36:00 2026 -0700"
      },
      "message": "[LLD][COFF] Use lazy object mechanism instead of relying on the archive map for thin archives on ARM64EC (#194349)\n\nOn ARM64EC/ARM64X, an archive may contain both native and EC symbols in\nthe symbol table, which can potentially conflict. Regular archives\nhandle this using the extended archive format, which stores the EC\nsymbol table in a separate section, but this is not available for thin\narchives.\n\nWork around this limitation by lazily parsing all thin archive members\ninstead of relying on the archive symbol table. This uses the same\nmechanism as when thin archive members are passed with\n-start-lib/-end-lib, where symbols are added to the symbol table without\npulling in the object file unless it is referenced.\n\nFixing this at the archive format level would require changes to the\nformat. Currently, the ECSYMBOLS section is supported only by the COFF\narchive format, while thin archives require the GNU format. We would\neither need to extend the COFF format to support thin archives or\nintroduce ECSYMBOLS support in the GNU format.\n\nGitOrigin-RevId: 61b06773b79c59095f29804da123f4d053e58713\n"
    },
    {
      "commit": "cd3bc672a353ed9d358c452ee137ee551dd12b92",
      "tree": "fa98d27826ba0dc8697266abc8da0492a5d876d4",
      "parents": [
        "4d01b9ac699c216ac3e705ce55f1a78315f5e8ca"
      ],
      "author": {
        "name": "Andrew Ng",
        "email": "andrew.ng@sony.com",
        "time": "Wed Apr 29 11:29:43 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 29 03:35:46 2026 -0700"
      },
      "message": "[LLD][ELF] Fix performance regression when using linker scripts (#194668)\n\nThe addition of the support for `--enable-non-contiguous-regions` from\nPR #90007 moved an \"early out\" condition in\n`LinkerScript::computeInputSections()`. This could result in other\nrelatively expensive checks, i.e. `pat.sectionPat.match`,\n`cmd-\u003ematchesFile`, `pat.excludesFile` and `flagsMatch`, to be performed\nunnecessarily in the default situation where\n`--enable-non-contiguous-regions` is disabled.\n\nThis fix restores the \"early out\" condition and shows an ~14%\nimprovement for the Linux kernel benchmark link and has been seen to\nimprove performance by up to ~30% for a large UE5 link.\n\nGitOrigin-RevId: dbdbf1e63d735eada7c9e4ff42ac0e56f56f5774\n"
    },
    {
      "commit": "4d01b9ac699c216ac3e705ce55f1a78315f5e8ca",
      "tree": "b55a06473b78c5498cc6fde4116b4cccc03fcfe1",
      "parents": [
        "edb7b61a746c3d45e45742ce3baa3d7f6f0ff034"
      ],
      "author": {
        "name": "Jacek Caban",
        "email": "jacek@codeweavers.com",
        "time": "Wed Apr 29 11:47:12 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 29 02:50:24 2026 -0700"
      },
      "message": "[LLD][COFF] Move Archive::create call to LinkerDriver::addBuffer (NFC) (#194346)\n\nThis allows an upcoming change to Archive::create() to make decisions\nbased on the archive type.\n\nGitOrigin-RevId: a39ba6ed4c58a83a7e8f95e643282e6b17503e05\n"
    },
    {
      "commit": "edb7b61a746c3d45e45742ce3baa3d7f6f0ff034",
      "tree": "0231cc37592cad3dc917f76091a2e7c7e5544a49",
      "parents": [
        "a2e8d9db444d8a072986ce9a8275352187ae7e05"
      ],
      "author": {
        "name": "Vitaly Buka",
        "email": "vitalybuka@google.com",
        "time": "Fri Apr 24 12:46:58 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 24 12:50:20 2026 -0700"
      },
      "message": "[NFC][lld] Avoid hex address case sensitivity in fill-trap tests (#194037)\n\nUbuntu is switching from GNU coreutils to Rust version, and new\nod util has different case in output.\n\nhttps://github.com/uutils/coreutils/issues/11985\n\nGitOrigin-RevId: 719c38062a3b06faee91c255d2b8abc9e1dd3813\n"
    },
    {
      "commit": "a2e8d9db444d8a072986ce9a8275352187ae7e05",
      "tree": "b6ea6a388e0ad5e8a1e459ebaef798b056982861",
      "parents": [
        "7f39750e9c0da4373080f46b7b164f3261e1cd29"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Apr 23 11:39:38 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 23 11:40:38 2026 -0700"
      },
      "message": "[lld][WebAssembly] Always initialize fixed `__tls_base` in single threaded mode (#193563)\n\nWithout this fix `__tls_base` can remain set to zero which leads\n`__builtin_thread_pointer` to return NULL, which is should not.\n\nSee https://github.com/emscripten-core/emscripten/pull/26747\n\nGitOrigin-RevId: 44a1d740333b271e752e921581513ac4a37ce8f0\n"
    },
    {
      "commit": "7f39750e9c0da4373080f46b7b164f3261e1cd29",
      "tree": "1c2bcf1cc49dce719e5084e807de416a68cf4402",
      "parents": [
        "8ae6a82acc94a8ef078c8c5fe182d3920dfb4648"
      ],
      "author": {
        "name": "Jacek Caban",
        "email": "jacek@codeweavers.com",
        "time": "Thu Apr 23 10:57:05 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 23 02:00:29 2026 -0700"
      },
      "message": "[LLD][MinGW] Introduce --native-def argument (#193598)\n\nThis is the MinGW counterpart of -defarm64native.\n\nWhen --native-def is not specified, pass the input def file as\n-defarm64native on the ARM64X target as well. This reflects the most\ncommon intent when providing a def file for ARM64X and, since the\nregular def file is already passed as an input file, it feels consistent\nto allow a proper build without requiring additional arguments. This can\nbe overridden by passing an empty value with --native-def\u003d if using only\nthe EC def file is desired.\n\nGitOrigin-RevId: 2aadaae9a0ba8d4858897e8453ceb891cd27a4c1\n"
    },
    {
      "commit": "8ae6a82acc94a8ef078c8c5fe182d3920dfb4648",
      "tree": "5776a9d63f926c2db0627cd113eb6a68a1b5f4a5",
      "parents": [
        "3e5e77114880ce3c568e8fd52258a3a81bdcadfd"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 22 19:59:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 22 20:00:32 2026 -0700"
      },
      "message": "[ELF] Handle INCLUDE like a call stack (#193427)\n\nThe lexer maintains a stack of buffers, which allows a construct\nstarted in an INCLUDE\u0027d file to be closed by the parent. This produces\nspurious acceptance of malformed scripts (e.g. a bare assignment with\nno trailing `;` in the include, terminated by the parent\u0027s `;` after\n`INCLUDE`) and undefined-behavior span computations in\n`readAssignment`\u0027s `commandString` (issue #190376).\n\nForce each INCLUDE to fully parse its own content, similar to a call\nstack frame. `ScriptLexer::lex` no longer auto-pops on EOF; the\n`buffers` member is gone. `readInclude` takes a `function_ref\u003cvoid()\u003e`\ncallback, and the four call sites (top-level, SECTIONS, output\nsection, MEMORY) pass a context-appropriate parser.\n\nWith this, each buffer contains complete parser structures by\nconstruction, so the `[oldS, curTok)` pointer range in\n`readAssignment` no longer needs a guard.\n\nGitOrigin-RevId: 2855525c4a1f7c1e105b2b71a3c6b9b34f842f36\n"
    },
    {
      "commit": "3e5e77114880ce3c568e8fd52258a3a81bdcadfd",
      "tree": "25bc5a8543582285d5e1ac6e58fda562cd2a3201",
      "parents": [
        "35e9d32ab15e33c260f88e2eb7933e6dc8a7a151"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 22 10:33:24 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 22 10:35:25 2026 -0700"
      },
      "message": "[ELF] Factor linker-script dispatch loops into helpers. NFC (#193547)\n\nExtract the per-token dispatch inside readLinkerScript, readSections,\nreadOutputSectionDescription, and readMemory into four new helpers.\nPreparatory for making INCLUDE run a nested parse (#193427).\n\nGitOrigin-RevId: 7136a4b39b050e3e1e7ca5047bae37178c72ac40\n"
    },
    {
      "commit": "35e9d32ab15e33c260f88e2eb7933e6dc8a7a151",
      "tree": "82f7f1bc74a9e90b0e3020704dddc144082b85da",
      "parents": [
        "fdbcc3fd9593d0bed723113a19c34540d7aa8122"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Tue Apr 21 23:31:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 21 23:35:33 2026 -0700"
      },
      "message": "[ELF] Improve allocateHeaders tests (#193419)\n\nGitOrigin-RevId: bfd6ea0241ec2326b9ca81c53f30d67cf8d56a5a\n"
    },
    {
      "commit": "fdbcc3fd9593d0bed723113a19c34540d7aa8122",
      "tree": "60970fbcae86b1f03570b14c656fa7cc09dc19c2",
      "parents": [
        "903c2defe87cb7d28c4cd37dc6dfbebdbd2b6186"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Tue Apr 21 22:45:28 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 21 22:50:33 2026 -0700"
      },
      "message": "[ELF,test] Cover empty INCLUDE inside MEMORY { ... } (#193411)\n\nGitOrigin-RevId: 554edb289bb208eaff55509bb1168b749a17eedf\n"
    },
    {
      "commit": "903c2defe87cb7d28c4cd37dc6dfbebdbd2b6186",
      "tree": "20a569882f9ae556ecfe2afd1e13936e613ea5da",
      "parents": [
        "48f89576ed5f8e5c1ecaf65f6de189f898da4eaf"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Tue Apr 21 21:57:02 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 21 22:00:26 2026 -0700"
      },
      "message": "[ELF,test] Convert INCLUDE tests to split-file pattern (#193403)\n\nPreparatory for adding negative test cases.\n\nGitOrigin-RevId: d0bb0c83787648ff1ce3d376773ea0f4cb1304b8\n"
    },
    {
      "commit": "48f89576ed5f8e5c1ecaf65f6de189f898da4eaf",
      "tree": "39d443eaef68f5d5d8ecdc94947a432da1cf982f",
      "parents": [
        "dca0105eb81c7719a427e5ebc3f44e994999d8d7"
      ],
      "author": {
        "name": "Nuri Amari",
        "email": "nuri.amari99@gmail.com",
        "time": "Tue Apr 21 14:07:29 2026 -0400"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 21 11:10:22 2026 -0700"
      },
      "message": "[lld/mac] For catalyst outputs, tolerate implicitly linking against arm64e mac tbd files (#193065)\n\nSome mac libraries published in the Xcode SDK are now arm64e only, and\ncatalyst applications should be able to link against these even if\nbuilding for arm64.\n\nThis matches ld-prime behavior.\n\nhttps://reviews.llvm.org/D124336 allows linking against MacOS libraries,\nbut only if the architecture matches exactly.\nhttps://reviews.llvm.org/D130683 allows linking against tbds with ABI\ncompatibility architectures, but the logic isn\u0027t used for this\nparticular case.\n\n[Assisted-by](https://t.ly/Dkjjk): [Claude Opus\n4.6](https://www.anthropic.com/news/claude-opus-4-6)\n\n---------\n\nCo-authored-by: Nuri Amari \u003cnuriamari@fb.com\u003e\nGitOrigin-RevId: bddd3d32bc6406697804a28c65d15c2882d732de\n"
    },
    {
      "commit": "dca0105eb81c7719a427e5ebc3f44e994999d8d7",
      "tree": "30ec0261e3fa1256005c484a4dd08fcf4b56dd33",
      "parents": [
        "9143072db5ca6620c9dfd505da502f20204ab9af"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Mon Apr 20 23:01:37 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Apr 20 23:05:23 2026 -0700"
      },
      "message": "[ELF] Fix heap-use-after-free with INPUT(relative-path) (#193146)\n\n`ScriptParser::addFile` Case 4 (relative path resolved against the\nscript\u0027s parent directory) passes a `SmallString\u003c0\u003e` stack local by\nStringRef, causing asan error after #191690.\n\nFix with ctx.saver similar to other cases.\n\nGitOrigin-RevId: 773a14b324187c9189f318714f4282211bcc6cb9\n"
    },
    {
      "commit": "9143072db5ca6620c9dfd505da502f20204ab9af",
      "tree": "f4a0c789201aad3e18b5a2e14720ae4b924eaa2d",
      "parents": [
        "d960b1585d540dad6bb57d6894de813384b14220"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Mon Apr 20 21:07:34 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Apr 20 21:10:36 2026 -0700"
      },
      "message": "[ELF] Parallelize input file loading (#191690)\n\nDuring `createFiles`, `addFile()` records a `LoadJob` for each\nnon-script input (archive, relocatable, DSO, bitcode, binary) with a\nstate-machine snapshot (`inWholeArchive`, `inLib`, `asNeeded`,\n`withLOption`, `groupId`) and expands them on worker threads in\n`loadFiles()`. Linker scripts are still processed inline since their\n`INPUT()` and `GROUP()` commands recursively call `addFile()`.\n\nOutside `createFiles()`, `loadFiles()` is called with a single job and\ndrained immediately (`deferLoad` is false). Two cases:\n- `addDependentLibrary()`: `.deplibs` sections trigger `addFile()`\n  during the serial `doParseFiles()` loop.\n- `--just-symbols`: pushes files directly, bypassing\n`addFile`/`LoadJob`.\n\nThread-safety:\n- A mutex serializes `BitcodeFile` / fatLTO constructors that call\n  `ctx.saver` / `ctx.uniqueSaver`. Zero contention on pure ELF links.\n- Thin-archive member buffers accumulate in per-job `SmallVector`s and\n  are merged into `ctx.memoryBuffers` in command-line order.\n- `groupId` is pre-claimed during the serial walk and written to each\n  produced file after construction (the `InputFile` constructor no\n  longer reads `nextGroupId`).\n\nPerformance (--threads\u003d8):\n\n```\n  clang-relassert (267 thin archives, 10 .o, 2 .so):\n    965 +/- 32 ms -\u003e 924 +/- 24 ms (1.05x, 80 runs)\n\n    (Apple M4) 249.7ms ± 2.5ms -\u003e 221.2ms ± 1.4ms (1.13x, 10 runs)\n\n  chromium (532 .a, 3314 .o, 343 .so):\n    8.071 +/- 0.472 s -\u003e 7.370 +/- 0.198 s (1.10x, 20 runs)\n```\n\nParallelizing all file kinds (not just archives) matters for\n.o-dominated workloads like chromium where archive-only parallelization\nshows no improvement.\n\nOutput is byte-identical to the old lld and deterministic across\n`--threads` values.\n\nGitOrigin-RevId: 83f8eee57d5a2e9215b506a5ddc82db980fb47d0\n"
    },
    {
      "commit": "d960b1585d540dad6bb57d6894de813384b14220",
      "tree": "b89afe8fbbb526d876565f5faafb5160c6c27c1a",
      "parents": [
        "e62adb0011e723e7bb0251022160df01effdc7e7"
      ],
      "author": {
        "name": "PiJoules",
        "email": "leonardchan@google.com",
        "time": "Fri Apr 17 15:23:48 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 17 15:26:06 2026 -0700"
      },
      "message": "Revert \"Reland \"[LTO][LLD] Prevent invalid LTO libfunc transforms (#164916)\"\" (#192741)\n\nReverts llvm/llvm-project#190642\n\nA bisect shows this as the change leading to the link failure at\nhttps://g-issues.fuchsia.dev/issues/503377901\n\nGitOrigin-RevId: 24154a55d698a98e7b6d2aae1778b79f15ce5b09\n"
    },
    {
      "commit": "e62adb0011e723e7bb0251022160df01effdc7e7",
      "tree": "bd213c6ccd7c254bff67cf4862040e709aed6ad9",
      "parents": [
        "001519126762efd5b70b82df642deb286e93f130"
      ],
      "author": {
        "name": "Zhaoxuan Jiang",
        "email": "jiangzhaoxuan94@gmail.com",
        "time": "Thu Apr 16 08:17:47 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 15 17:21:10 2026 -0700"
      },
      "message": "[lld][MachO] Key branch-extension thunks on (referent, addend) (#191808)\n\nTextOutputSection::finalize ignored branch relocation addends. Two call\nsites branching to the same symbol with different addends therefore\ncollapsed onto a single thunk.\n\nKey thunkMap on (isec, value, addend) so two call sites with different\naddends get independent thunks. The addend is encoded in the thunk\u0027s\nrelocs and is zeroed at the call site after the callee is redirected to\nthe thunk. Thunk names carry a `+N` suffix when the addend is non-zero.\n\nGitOrigin-RevId: 326a9fa5631ebb497c1137d28469186a76f583ed\n"
    },
    {
      "commit": "001519126762efd5b70b82df642deb286e93f130",
      "tree": "d65876447a32c15d9a5e8fbad4e2734cffc96d7a",
      "parents": [
        "15e760bb9840adf8418661eb93a2c39549db7326"
      ],
      "author": {
        "name": "Ashlyn",
        "email": "pale.auraaaa@gmail.com",
        "time": "Tue Apr 14 16:29:14 2026 -0600"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 14 15:30:15 2026 -0700"
      },
      "message": "[lld][llvm-objcopy] Enable Xbox subsystem for PE images. (#191779)\n\nThis patch enables selecting the Xbox subsystem (IMAGE_SUBSYSTEM_XBOX)\nfor PE images. Certain existing tools used in the Xbox homebrew scene\nexpect images to use the Xbox subsystem, so it\u0027s nice to be able to set\nthis within the LLVM toolchain instead of invoking yet another tool or\nmanually patching the binaries.\n\nGitOrigin-RevId: 18519f34650db7fc8e1885ac0293c1e9a5f1b071\n"
    },
    {
      "commit": "15e760bb9840adf8418661eb93a2c39549db7326",
      "tree": "022b056df574ee96322c2c7021fca3e0b9d5209d",
      "parents": [
        "dccedc194e13b3722a3e239dda6ddcb4b673e982"
      ],
      "author": {
        "name": "Keith Smiley",
        "email": "keithbsmiley@gmail.com",
        "time": "Mon Apr 13 10:20:27 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Apr 13 10:25:39 2026 -0700"
      },
      "message": "[lld] Add missing include in AArch64ErrataFix (NFC) (#190664)\n\nThis header assumed SmallVector would be included before it\n\nGitOrigin-RevId: f285a55b9cd70818b1f4e8bb4fddbe32fe8caa52\n"
    },
    {
      "commit": "dccedc194e13b3722a3e239dda6ddcb4b673e982",
      "tree": "1e198276100dff3e46f9420a296970e445b465c4",
      "parents": [
        "bd3e1a45c6144216b38210f2a7786572ca306f74"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Sat Apr 11 22:25:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Apr 11 22:29:34 2026 -0700"
      },
      "message": "[ELF] Move ++nextGroupId from InputFile ctor to callers. NFC (#191685)\n\nMove this side effect to the call sites in addFile() where the groupId\nassignment is more visible.\n\nThis makes InputFile construction safe to call from parallel contexts.\n\nGitOrigin-RevId: b6c8cba516daabced0105114a7bcc745bc52faae\n"
    },
    {
      "commit": "bd3e1a45c6144216b38210f2a7786572ca306f74",
      "tree": "e37c0666b091f5c72b813e2534efb0fd230d367c",
      "parents": [
        "d62957bc76baf8a282746315c09a7a7d5d9d0775"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Fri Apr 10 21:21:47 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 10 21:25:30 2026 -0700"
      },
      "message": "Revert \"[lld][AMDGPU] Support R_AMDGPU_ABS32_(LO|HI) relocations\" (#191591)\n\nReverts llvm/llvm-project#191550\n\nMerged without understanding getImplicitAddend and test convention, and\nless than 4 hours after a colleague rubber stamping with \"I am not ELF\nor linker expert but to me looks good.\"\n\nGitOrigin-RevId: a3ae5b508086facac81dea35ad71f955e592c9c1\n"
    },
    {
      "commit": "d62957bc76baf8a282746315c09a7a7d5d9d0775",
      "tree": "8520bf96630d5a6239558c4ee359fc8edacc376d",
      "parents": [
        "7c1f1b023b80d089e447bababd6baae0e27a1a48"
      ],
      "author": {
        "name": "Joseph Huber",
        "email": "huberjn@outlook.com",
        "time": "Fri Apr 10 22:04:47 2026 -0500"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Fri Apr 10 20:05:43 2026 -0700"
      },
      "message": "[lld][AMDGPU] Support R_AMDGPU_ABS32_(LO|HI) relocations (#191550)\n\nSummary:\nThese relocations are extremely rare, but they are listed as an expected\nrelocation in https://llvm.org/docs/AMDGPUUsage.html#relocation-records\nand you can theoretically make them happen so we should probably support\nit in the linker.\nGitOrigin-RevId: 3a47349c084217d83f9968db8b551a8526de9702\n"
    },
    {
      "commit": "7c1f1b023b80d089e447bababd6baae0e27a1a48",
      "tree": "e37c0666b091f5c72b813e2534efb0fd230d367c",
      "parents": [
        "118deef9ed7ded547ad9319deb3fb2d1e9d56bfa"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Wed Apr 08 13:51:59 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 08 03:55:46 2026 -0700"
      },
      "message": "[LLD] [COFF] Explicitly prefer def files and export directives over /export-all-symbols (#190749)\n\nIf a def file is specified (or explicit export directives), they should\nbe preferred over exports from /export-all-symbols. There is no need to\nwarn about conflicts in these cases, just make a clear preference and\nignore the export with lower preference.\n\nGitOrigin-RevId: b384622f61e8ced35b80d9cc02a0c47c0778b878\n"
    },
    {
      "commit": "118deef9ed7ded547ad9319deb3fb2d1e9d56bfa",
      "tree": "ada2d23abff5289a188373fec818a9565238f140",
      "parents": [
        "4fcaaea4271159cb01659ccd770468bd15fa981a"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Wed Apr 08 13:46:20 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 08 03:50:46 2026 -0700"
      },
      "message": "[LLD] [COFF] Make weak aliases to implementations take priority over null pointers (#190491)\n\nNormally, one uses weak aliases in one out of two ways.\n\nEither one uses weak definitions to let a weak definition work as\nfallback if a strong definition isn\u0027t available (which works with\nlink.exe as well), or as a sort of selectany COMDAT, to let multiple\nweak definitions coexist, letting the linker pick any of them. (This\nisn\u0027t supported by MS link.exe, but requires the LLD extension option\n-lld-allow-duplicate-weak, normally implied by the mingw mode.)\n\nOr, one uses weak references, to let a referencing translation unit\ncheck at runtime, whether a symbol was found (at link time) or not,\noptionally using the symbol.\n\nIn the latter case, the referencing object file provides a fallback\nvalue for the weak symbol, as an absolute null symbol.\n\nPreviously, if we had multiple weak externals for the same symbol, we\u0027d\npick any (the first one in practice); this is compatible with either of\nthe use cases above.\n\nHowever if both use cases are combined, then we suddenly have multiple\nconflicting weak externals for the same symbol; both one (or more)\nsymbols providing a fallback implementation for the symbol, and the\nreferencer that provides an absolute null pointer for the symbol.\n\nIn these cases, instead of just picking whichever choice the linker saw\nfirst, prefer actual concrete implementations over the absolute null\nsymbol.\n\nFor mingw mode, this makes linking a translation unit referencing a\nsymbol declared with `__attribute__((weak))` work consistently if\nlinking it against another translation unit providing that symbol\ndefined with `__attribute__((weak))`, regardless of the order that those\ntwo object files are linked.\n\nGitOrigin-RevId: 7ca5698b4c3698d06065e0941df7f23d72913d23\n"
    },
    {
      "commit": "4fcaaea4271159cb01659ccd770468bd15fa981a",
      "tree": "cc502cb7fef27174eb1fcab2fc9b89dba7ddefc9",
      "parents": [
        "be9a89a9e734cd0db748413d2e514d86811d340d"
      ],
      "author": {
        "name": "Farid Zakaria",
        "email": "fmzakari@fb.com",
        "time": "Tue Apr 07 23:25:11 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 07 23:30:32 2026 -0700"
      },
      "message": "[lld][ELF] Merge .ltext.* input sections into .ltext output section (#190305)\n\n## Motivation\nThe default output section name rules in `getOutputSectionName()`\nalready merge .ldata.*, .lrodata.*, and .lbss.* into their respective\noutput sections, but .ltext.* was missing from the prefix list. This\ncaused mcmodel\u003dlarge builds with `-ffunction-sections` to produce a\nseparate output section for every function instead of combining them\ninto .ltext.\n\nWe actually then ran into a bunch of esoteric issues because we the had\nto handle SHN_XINDEX binaries with \u003e65535 sections, so in that sense it\nhelped us find those gaps :)\n\n## Changes\nAdd .ltext to the prefix list alongside the other large-model section\nprefixes.\n\nCo-authored-by: Grigory Pastukhov \u003cgpastukhov@meta.com\u003e\nGitOrigin-RevId: f26470aeb7668f437c4d669e4a72c614ba775bb4\n"
    },
    {
      "commit": "be9a89a9e734cd0db748413d2e514d86811d340d",
      "tree": "751af219880d1dfb2c980ac431101e47c7a06d37",
      "parents": [
        "f60964ab54765b78615e7f9b7726f269b2187d99"
      ],
      "author": {
        "name": "Hans Wennborg",
        "email": "hans@hanshq.net",
        "time": "Tue Apr 07 16:16:30 2026 +0200"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 07 07:19:50 2026 -0700"
      },
      "message": "[pdb] Fix public symbol hashing in GSIHashStreamBuilder::finalizeBuckets (#190133)\n\nBulkPublic.Name is not necessarily null terminated, so make sure not to\nhash past its actual length.\n\nIn practice it would often be null terminated, but in the cases where it\nwas not, we would compute the wrong hash here, put it in the wrong hash\nbucket, preventing debuggers from looking up the symbol by name, causing\nissues such as\nhttps://discourse.llvm.org/t/pdb-generated-by-lld-link-doesnt-point-to-correct-entry-point-when-debugged-using-visual-studio/90349\n\nGitOrigin-RevId: 6732640f5f3b2729c245e3b8026637d322c7f31d\n"
    },
    {
      "commit": "f60964ab54765b78615e7f9b7726f269b2187d99",
      "tree": "7dceb4b1475104ede16cd3ec657b79e35b363e6e",
      "parents": [
        "5ce59d1f6e894f1bf2c3abd60e4966235a2d76f1"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Tue Apr 07 10:57:52 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 07 01:00:34 2026 -0700"
      },
      "message": "[LLD] [COFF] Fix crashes for conflicting exports with -export-all-symbols (#190492)\n\nCommit adcdc9cc3740adba3577b328fa3ba492cbccd3a5 (since LLD 17) added a\nwarning message if there are conflicting attempts to export a specific\nsymbol.\n\nThat commit missed one source of exports, from the LLD specific\n-export-all-symbols flag (which only has an effect in mingw mode).\n\nTo trigger this case, one needs to have an export set by a def file,\ncombined with the -export-all-symbols flag (which attempts to export all\nglobal symbols, despite explicit exports through embedded directives or\na def file).\n\nTo trigger the warning (and the previous crash), one would have to have\nsome difference between the export produced by -export-all-symbols and\nthe one from the def file. That difference could be e.g. that the def\nfile contained an explicit ordinal, or that the def file lacked a DATA\nmarking for a symbol that the automatic export of all symbols decides to\nexport as a data symbol.\n\nThis fixes https://github.com/llvm/llvm-project/issues/187318. (In the\nrepro case in that bug, the def file lacked DATA markings for a data\nsymbol.)\n\nGitOrigin-RevId: df081924cf21d3b289f976172f6583cc63ec40fb\n"
    },
    {
      "commit": "5ce59d1f6e894f1bf2c3abd60e4966235a2d76f1",
      "tree": "d92a153f059b48843f6a7484c0a8255c953de3be",
      "parents": [
        "a179b7d7ee9ee24d0f22ee7e7903c70129e13438"
      ],
      "author": {
        "name": "Martin Storsjö",
        "email": "martin@martin.st",
        "time": "Tue Apr 07 10:56:52 2026 +0300"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Tue Apr 07 01:00:23 2026 -0700"
      },
      "message": "[LLD] [COFF] Remove a now incorrect comment in a test. NFC. (#190489)\n\nThis comment was added in 26572002749ee2e7d734e4e0aed4cca0e1c623c3 in\n2018. Later in 8f540dad6120d00e3ad896b98cd32bcf00623ccd in 2020, the\nLLVM MC layer was adjusted to do essentially the same as GNU binutils\ndo.\n\nTherefore, I think that this test now technically could be done with\nobject files generated by llvm-mc as well, instead of bundled binary\nobject files.\n\nGitOrigin-RevId: 1e10ab2ddba11f8e5a46cd89e4e579b0b75657d3\n"
    },
    {
      "commit": "a179b7d7ee9ee24d0f22ee7e7903c70129e13438",
      "tree": "6e7b623a68c5d9a7246402ba34597edb62497a4c",
      "parents": [
        "ebfe3fad2f58d12510495a55efc0d16eefc71867"
      ],
      "author": {
        "name": "Daniel Thornburgh",
        "email": "dthorn@google.com",
        "time": "Mon Apr 06 12:20:45 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Mon Apr 06 12:25:47 2026 -0700"
      },
      "message": "Reland \"[LTO][LLD] Prevent invalid LTO libfunc transforms (#164916)\" (#190642)\n\nThis reverts commit 1ec7e86b3a779df2a0af3f37e58c8f5b3a398d7f after issue\n#190072 was fixed.\n\nGitOrigin-RevId: fecf609998340a5a2c27346468beba67e58afcc2\n"
    },
    {
      "commit": "ebfe3fad2f58d12510495a55efc0d16eefc71867",
      "tree": "23ab7b31f6abce112be2f6ca6bfdc36250d52045",
      "parents": [
        "ed3e9aaae3bfa930cc0140e557583071abda3ff9"
      ],
      "author": {
        "name": "Jasmine Tang",
        "email": "jjasmine@igalia.com",
        "time": "Sat Apr 04 22:53:20 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Apr 04 22:55:39 2026 -0700"
      },
      "message": "[WebAssembly] Add support for shared tags (#188367)\n\nMostly following the structure of other Shared* constructs\n\nFixes: #188120\nGitOrigin-RevId: e3e4b8481d97880dd595bbc48eff372777053f12\n"
    },
    {
      "commit": "ed3e9aaae3bfa930cc0140e557583071abda3ff9",
      "tree": "158a0bc4cee8e8cc241217ed17d458ca67650fbf",
      "parents": [
        "c8ebc565dd92d877ea1f22408f751351e64c68e3"
      ],
      "author": {
        "name": "Haohai Wen",
        "email": "haohai.wen@intel.com",
        "time": "Sat Apr 04 20:26:12 2026 +0800"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Sat Apr 04 05:30:32 2026 -0700"
      },
      "message": "[lld][COFF] Add /discard-section option to discard input sections by name (#189542)\n\nThis provides a general mechanism similar to ELF linker scripts\u0027\n/DISCARD/ for COFF. Though the intention is to explicitly discard\n.llvmbc and .llvmcmd sections. (See discussion in #150897, #188398\nfor more details.)\n\nGitOrigin-RevId: 6565e08c1ec76359f88ca87b790218e7a8ea7cbb\n"
    },
    {
      "commit": "c8ebc565dd92d877ea1f22408f751351e64c68e3",
      "tree": "8bc3436bca871f9d8e1f7047a0175c1ec285cb79",
      "parents": [
        "9b3bf70fc107a82e0395fa1b5dd2a59c51246657"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Thu Apr 02 22:00:15 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 02 22:05:22 2026 -0700"
      },
      "message": "[ELF] Enable parallel relocation scanning for -z nocombreloc and PPC64 (#190309)\n\nThe `bool serial` condition in scanRelocations disabled parallelism for\nthree cases: -z nocombreloc, MIPS, and PPC64. Resolve two cases:\n\n- nocombreloc: .rela.dyn is now always created with combreloc\u003dtrue so\n  non-relative relocations are sorted deterministically. Since\n  #187964 already separates relative relocations unconditionally,\n  the only remaining effect of -z nocombreloc is suppressing\n  DT_RELACOUNT (gated on ctx.arg.zCombreloc in DynamicSection).\n\n- PPC64: After #181496 moved scanning into scanSectionImpl, the\n  sole thread-unsafe access is ctx.ppc64noTocRelax (DenseSet::insert).\n  Protect it with ctx.relocMutex, which is already used for rare\n  operations during parallel scanning.\n\nMIPS retains serial scanning due to `MipsGotSection` mutations.\n\nGitOrigin-RevId: 2f7bd4fa97232dfab7f2347c745005eb9e2ffd2d\n"
    },
    {
      "commit": "9b3bf70fc107a82e0395fa1b5dd2a59c51246657",
      "tree": "9b33b5f62624ba869a03524391014b8c41287769",
      "parents": [
        "7b04a4420412ae49e9f6bdab6958ed7b360b94ec"
      ],
      "author": {
        "name": "Simi Pallipurath",
        "email": "simi.pallipurath@arm.com",
        "time": "Thu Apr 02 10:16:54 2026 +0100"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Thu Apr 02 02:20:59 2026 -0700"
      },
      "message": "[LLD][ELF] Skip non-inputsections to avoid invalid cast in Arm BE8 handling (#188154)\n\nThis patch fixes https://github.com/llvm/llvm-project/issues/187033\n\nIn BE8 mode, instruction bytes are reversed for sections containing\ncode. This logic currently assumes that arm mapping symbols (e.g. $a,\n$t, $d) are always associated with InputSections.\n\nHowever, mapping symbols can also be defined in other section types such\nas mergeable sections (SHF_MERGE). These are not represented as\nInputSection, and attempting to cast them using\ncast_if_present\u003cInputSection\u003e results in an assertion failure.\n\nGitOrigin-RevId: dc9be4ee30d07060a21273bdf8c64e4f34165562\n"
    },
    {
      "commit": "7b04a4420412ae49e9f6bdab6958ed7b360b94ec",
      "tree": "112fe653fc17fbb0facccdadb433dbc64ea107f7",
      "parents": [
        "a25a053373a7f1602d51d9741d9d45cd31b4e206"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 01 23:42:00 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 01 23:45:56 2026 -0700"
      },
      "message": "[ELF] Parallelize --gc-sections mark phase (#189321)\n\nAdd `markParallel` using level-synchronized `parallelFor`. Each BFS\nlevel is processed in parallel; newly discovered sections are collected\nin per-thread queues and merged for the next level.\n\nThe parallel path is used when `!TrackWhyLive \u0026\u0026 partitions.size()\u003d\u003d1`.\n`parallelFor` naturally degrades to serial when `--threads\u003d1`.\n\nUses depth-limited inline recursion (depth\u003c3) and optimistic\nload-then-exchange dedup for best performance.\n\nLinking a Release+Asserts clang (--gc-sections, --time-trace) on an old\nx86-64:\n\n8 threads: markLive 315ms -\u003e 82ms (-234ms). Total 1562ms -\u003e 1350ms\n(1.16x).\n16 threads: markLive 199ms -\u003e 50ms (-149ms). Total 1017ms -\u003e 862ms\n(1.18x).\n\nand on Apple M4: markLive 61ms -\u003e 13ms. Total 317.3ms -\u003e 272.7ms\n(1.16x).\n\nGitOrigin-RevId: 6f9646a598f25efa3c4db066d2d51fb248b13526\n"
    },
    {
      "commit": "a25a053373a7f1602d51d9741d9d45cd31b4e206",
      "tree": "13308bdc79cf42d82485cf5be0dde135fdca7ae0",
      "parents": [
        "1bd897e7371369ed51dc75cc139653161dcb140a"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 01 23:21:13 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 01 23:25:39 2026 -0700"
      },
      "message": "[ELF] Move Symbol::used to atomic flags field (#190117)\n\nMove the `used` bitfield into the existing `std::atomic\u003cuint16_t\u003e\nflags`,\nmaking it safe for concurrent access from parallel GC mark (#189321).\n\nGitOrigin-RevId: 6a874161621ec52b8efa125790e3e8e72bb9167a\n"
    },
    {
      "commit": "1bd897e7371369ed51dc75cc139653161dcb140a",
      "tree": "a3d44b029ab563520fb04b2009e0518c2b73ea6b",
      "parents": [
        "38e883a71fdfe986497b3c5403274b1b5b2c667d"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 01 22:42:51 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 01 22:46:05 2026 -0700"
      },
      "message": "[ELF] Decouple SharedFile::isNeeded from GC mark. NFC (#190112)\n\n... out of the per-relocation resolveReloc and into a post-GC scan of\nglobal symbols. This decouples the --as-needed logic from the mark\nalgorithm, simplifying the imminent parallel GC mark.\n\nGitOrigin-RevId: 2118499a898b514f70fb1754ad8713a4267f7bd3\n"
    },
    {
      "commit": "38e883a71fdfe986497b3c5403274b1b5b2c667d",
      "tree": "39ee268f236768ad7693fe7985dc23abee429750",
      "parents": [
        "2bc430591dc0d2f9cd1396bdef0b1cf91fd1beaa"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 01 22:07:42 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 01 22:09:50 2026 -0700"
      },
      "message": "[ELF] Pass SectionPiece by reference in getSectionPiece. NFC (#190110)\n\nThe generated assembly looks more optimized. In addition, this avoids\nwidened load, which would cause a TSan-detected data race with parallel\n--gc-sections (#189321).\n\nGitOrigin-RevId: 0bde74ab04992bcd63bc0bfd8b79e2ef5eab270b\n"
    },
    {
      "commit": "2bc430591dc0d2f9cd1396bdef0b1cf91fd1beaa",
      "tree": "2007712061619b2ddcc024739edc529cc4e8b1f2",
      "parents": [
        "bd9f7ebe28d9c1eb6b4e0c8c6d13fcf487a15bae"
      ],
      "author": {
        "name": "Fangrui Song",
        "email": "i@maskray.me",
        "time": "Wed Apr 01 19:20:16 2026 -0700"
      },
      "committer": {
        "name": "Copybara-Service",
        "email": "copybara-worker@google.com",
        "time": "Wed Apr 01 19:25:53 2026 -0700"
      },
      "message": "[Support] Support nested parallel TaskGroup via work-stealing (#189293)\n\nNested TaskGroups run serially to prevent deadlock, as documented by\nhttps://reviews.llvm.org/D61115 and refined by\nhttps://reviews.llvm.org/D148984 to use threadIndex.\n\nEnable nested parallelism by having worker threads actively execute\ntasks from the work queue while waiting (work-stealing), instead of\njust blocking. Root-level TaskGroups (main thread) keep the efficient\nblocking Latch::sync(), so there is no overhead for the common\nnon-nested case.\n\nIn lld, https://reviews.llvm.org/D131247 worked around the limitation\nby passing a single root TaskGroup into OutputSection::writeTo and\nspawning 4MB-chunked tasks into it. However, SyntheticSection::writeTo\ncalls with internal parallelism (e.g. GdbIndexSection,\nMergeNoTailSection) still ran serially on worker threads. With this\nchange, their internal parallelFor/parallelForEach calls parallelize\nautomatically via helpSync work-stealing.\n\nThe increased parallelism can reorder error messages from parallel\nphases (e.g. relocation processing during section writes), so one lld\ntest is updated to use --threads\u003d1 for deterministic output.\n\nGitOrigin-RevId: 8daaa26efdda3802f73367d844b267bda3f84cbe\n"
    }
  ],
  "next": "bd9f7ebe28d9c1eb6b4e0c8c6d13fcf487a15bae"
}
