)]}'
{
  "commit": "b42f96bc057fd9e31572069b241ba130c21144e5",
  "tree": "a076e9023dd243f3eca302f8619731b01344032f",
  "parents": [
    "04f2114ab293570604c7178aaf2e4585b61ae8aa"
  ],
  "author": {
    "name": "Brian Cain",
    "email": "brian.cain@oss.qualcomm.com",
    "time": "Sun Jul 20 11:46:31 2025 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Jul 20 11:46:31 2025 -0500"
  },
  "message": "[lld] Add thunks for hexagon (#111217)\n\nWithout thunks, programs will encounter link errors complaining that the\nbranch target is out of range. Thunks will extend the range of branch\ntargets, which is a critical need for large programs. Thunks provide\nthis flexibility at a cost of some modest code size increase.\n\nWhen configured with the maximal feature set, the hexagon port of the\nlinux kernel would often encounter these limitations when linking with\n`lld`.\n\nThe relocations which will be extended by thunks are:\n\n* R_HEX_B22_PCREL, R_HEX_{G,L}D_PLT_B22_PCREL, R_HEX_PLT_B22_PCREL\nrelocations have a range of ± 8MiB on the baseline\n* R_HEX_B15_PCREL: ±65,532 bytes\n* R_HEX_B13_PCREL: ±16,380 bytes\n* R_HEX_B9_PCREL: ±1,020 bytes\n\nFixes #149689 \n\nCo-authored-by: Alexey Karyakin \u003cakaryaki@quicinc.com\u003e\n\n---------\n\nCo-authored-by: Alexey Karyakin \u003cakaryaki@quicinc.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "479131a24dcfc9e1e036ae6f5dcb5d91b976f666",
      "old_mode": 33188,
      "old_path": "lld/ELF/Arch/Hexagon.cpp",
      "new_id": "9b33e78731c973e9aba851048b526fa1ee58caf9",
      "new_mode": 33188,
      "new_path": "lld/ELF/Arch/Hexagon.cpp"
    },
    {
      "type": "modify",
      "old_id": "4333b032c9d4eb1c8e73366ccc74855668ea6a76",
      "old_mode": 33188,
      "old_path": "lld/ELF/Relocations.cpp",
      "new_id": "f8f330a393267cd79945ffcb30c642c210d80ada",
      "new_mode": 33188,
      "new_path": "lld/ELF/Relocations.cpp"
    },
    {
      "type": "modify",
      "old_id": "c26ba76bccb7e4b2cdfa5265af1309ac2f1df7ab",
      "old_mode": 33188,
      "old_path": "lld/ELF/Thunks.cpp",
      "new_id": "65d0f094c43c39299c4bb37510e72b24b0d23107",
      "new_mode": 33188,
      "new_path": "lld/ELF/Thunks.cpp"
    },
    {
      "type": "delete",
      "old_id": "53860b5daf2b16a19fb36e8b95d9297c38a17097",
      "old_mode": 33188,
      "old_path": "lld/test/ELF/hexagon-jump-error.s",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "08e37bf0a5552ff70416f88c118d876fa7597271",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/hexagon-thunk-range-b22rel.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "77fd0e5754568b9492fe6637e47a7bdc3ec3dc98",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/hexagon-thunk-range-gdplt.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3a8f50b681d81060debb1ef2f50ffffd186822b1",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/hexagon-thunk-range-plt.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c8aaad4341ff3e3f473bf0e020a21c69e314d2e3",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/hexagon-thunks-packets.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "211074e1784b9cdfa3862fd7a815f0658f20a822",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/hexagon-thunks.s"
    }
  ]
}
