)]}'
{
  "commit": "8a6a59a0b4b06e43e508b7ff4c19cbfa3719f777",
  "tree": "72d48a282e5a21b25ae51dd538d1e386920c16b7",
  "parents": [
    "5f491a454cb855179295c0463622393df0c5bb42"
  ],
  "author": {
    "name": "Jonas Devlieghere",
    "email": "jonas@devlieghere.com",
    "time": "Fri Aug 14 17:07:56 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Aug 15 00:07:56 2026 +0000"
  },
  "message": "[DWARFLinker] Constrain a function\u0027s high_pc to its own symbol (#216432)\n\nMach-O objects built with .subsections_via_symbols make every symbol an\nindependently placeable atom, and the linker packs atoms without\npreserving the spacing they had in the object file.\n\nI have an example where the compiler describes such a subprogram as\nextending past its own atom. While it\u0027s debatable whether that\u0027s a good\nidea, it\u0027s not invalid in the object file. However, once linked, it is\ninvalid.\n\nWe can make dsymutil resilient against this by looking at the size of\nthe symbol in the debug map and adjusting the end_pc. I\u0027m doing so\nconservatively so that only a collision is repaired. Already\noverlapping/invalid ranges remain untouched.\n\nrdar://184768778",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "38b9a67b124c19f6532d41718baa7815be458fcb",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/DWARFLinker/AddressesMap.h",
      "new_id": "d554fef4c6394819081210a86b354f7620b14845",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/DWARFLinker/AddressesMap.h"
    },
    {
      "type": "modify",
      "old_id": "24289e09065868fbb5702b53e01df1d4584eb1be",
      "old_mode": 33188,
      "old_path": "llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp",
      "new_id": "e41b8ef9fd9b9cad23cb6739d71ea6b1ff70e815",
      "new_mode": 33188,
      "new_path": "llvm/lib/DWARFLinker/Classic/DWARFLinker.cpp"
    },
    {
      "type": "modify",
      "old_id": "f58869d20291cb1695c244f7e83c2dd1780e8e1b",
      "old_mode": 33188,
      "old_path": "llvm/lib/DWARFLinker/Parallel/DIEAttributeCloner.cpp",
      "new_id": "e03d339b24013ecd4857d3c952ff8e619a00af9c",
      "new_mode": 33188,
      "new_path": "llvm/lib/DWARFLinker/Parallel/DIEAttributeCloner.cpp"
    },
    {
      "type": "modify",
      "old_id": "b84258a8645654b99ad7752c03c3e2052ff8fcd3",
      "old_mode": 33188,
      "old_path": "llvm/lib/DWARFLinker/Parallel/DIEAttributeCloner.h",
      "new_id": "2a5a2250cc5b28a46055b240a764847327879ea2",
      "new_mode": 33188,
      "new_path": "llvm/lib/DWARFLinker/Parallel/DIEAttributeCloner.h"
    },
    {
      "type": "modify",
      "old_id": "124e73b1a15bd3307fa45ecafe13bfeeb5cf4a41",
      "old_mode": 33188,
      "old_path": "llvm/lib/DWARFLinker/Parallel/DependencyTracker.cpp",
      "new_id": "0993497ff080bb796fabd277376c86ffdf72aa93",
      "new_mode": 33188,
      "new_path": "llvm/lib/DWARFLinker/Parallel/DependencyTracker.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49933495d7dc6bd30f258bbda7f7b353a442ae70",
      "new_mode": 33188,
      "new_path": "llvm/test/tools/dsymutil/Inputs/subprogram-high-pc-past-symbol-dwarf2.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f7d02714a29407490c7fde34315aa4cbaaa80816",
      "new_mode": 33188,
      "new_path": "llvm/test/tools/dsymutil/Inputs/subprogram-high-pc-past-symbol.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "591a807fd20ad74b0967fa0d2d3cb9ae7c80dfdb",
      "new_mode": 33188,
      "new_path": "llvm/test/tools/dsymutil/subprogram-high-pc-past-symbol.test"
    },
    {
      "type": "modify",
      "old_id": "446860abe150c6a89c0aafeafc9039dabe524490",
      "old_mode": 33188,
      "old_path": "llvm/tools/dsymutil/DwarfLinkerForBinary.h",
      "new_id": "4ec281fca5dfe90db2bf08f3c689b3e50ecd0604",
      "new_mode": 33188,
      "new_path": "llvm/tools/dsymutil/DwarfLinkerForBinary.h"
    }
  ]
}
