)]}'
{
  "commit": "2f7bd4fa97232dfab7f2347c745005eb9e2ffd2d",
  "tree": "b94e63646a12311ee8fdd9ee434269f189ccf720",
  "parents": [
    "bc11c85b6b16f1daabfc9e8b326c9568c3318cb9"
  ],
  "author": {
    "name": "Fangrui Song",
    "email": "i@maskray.me",
    "time": "Thu Apr 02 22:00:15 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 02 22:00:15 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.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "80087e9ee59bd8f3cfb28454b86f7582743d33e7",
      "old_mode": 33188,
      "old_path": "lld/ELF/Arch/PPC64.cpp",
      "new_id": "9f49605d89c5886cda8c0d2ffb1601c3dd7bf0ae",
      "new_mode": 33188,
      "new_path": "lld/ELF/Arch/PPC64.cpp"
    },
    {
      "type": "modify",
      "old_id": "0000f1b4d90594c289f2a9041a9b9e725baa3e4a",
      "old_mode": 33188,
      "old_path": "lld/ELF/Relocations.cpp",
      "new_id": "7b4d7217e045262cb758b8ffda7c6cdc5f7d9f4c",
      "new_mode": 33188,
      "new_path": "lld/ELF/Relocations.cpp"
    },
    {
      "type": "modify",
      "old_id": "2da3f1afeb821c854d2b05abd9224075d74c8f63",
      "old_mode": 33188,
      "old_path": "lld/ELF/SyntheticSections.cpp",
      "new_id": "3c08c392ff214e92e5094b98604c96bd7acce049",
      "new_mode": 33188,
      "new_path": "lld/ELF/SyntheticSections.cpp"
    },
    {
      "type": "modify",
      "old_id": "08e404c66676e0dcece864a8166f00fa9f1d6a1f",
      "old_mode": 33188,
      "old_path": "lld/test/ELF/combreloc.s",
      "new_id": "8e76de912bb4ed17b6cd54cf725b52b64e627d60",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/combreloc.s"
    }
  ]
}
