)]}'
{
  "commit": "0441f94fba61998b4bd18487aacf70a672df099c",
  "tree": "a2dfd5067d971977544e4f9045e7a694de720b65",
  "parents": [
    "07c9f243b3a12cc6749bc02ee7b165859979348b"
  ],
  "author": {
    "name": "Alan Modra",
    "email": "amodra@gmail.com",
    "time": "Fri Jan 28 09:46:13 2022 +1030"
  },
  "committer": {
    "name": "Alan Modra",
    "email": "amodra@gmail.com",
    "time": "Fri Jan 28 16:54:31 2022 +1030"
  },
  "message": "PR28827, assertion building LLVM 9 on powerpc64le-linux-gnu\n\nThe assertion is this one in ppc_build_one_stub\n  BFD_ASSERT (stub_entry-\u003estub_offset \u003e\u003d stub_entry-\u003egroup-\u003estub_sec-\u003esize);\nIt is checking that a stub doesn\u0027t overwrite the tail of a previous\nstub, so not something trivial.\n\nNormally, stub sizing iterates until no stubs are added, detected by\nno change in stub section size.  Iteration also continues if no stubs\nare added but one or more stubs increases in size, which also can be\ndetected by a change in stub section size.  But there is a\npathological case where stub section sizing decreases one iteration\nthen increases the next.  To handle that situation, stub sizing also\nstops at more than STUB_SHRINK_ITER (20) iterations when calculated\nstub section size is smaller.  The previous larger size is kept for\nthe actual layout (so that building the stubs, which behaves like\nanother iteration of stub sizing, will see the stub section sizes\nshrink).  The problem with that stopping condition is that it assumes\nthat stub sizing is only affected by addresses external to the stub\nsections, which isn\u0027t always true.\n\nThis patch fixes that by also keeping larger individual stub_offset\naddresses past STUB_SHRINK_ITER.  It also catches a further\npathological case where one stub shrinks and another expands in such a\nway that no stub section size change is seen.\n\n\tPR 28827\n\t* elf64-ppc.c (struct ppc_link_hash_table): Add stub_changed.\n\t(STUB_SHRINK_ITER): Move earlier in file.\n\t(ppc_size_one_stub): Detect any change in stub_offset.  Keep\n\tlarger one if past STUB_SHRINK_ITER.\n\t(ppc64_elf_size_stubs): Iterate on stub_changed too.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "05d2d9f91d3e62cdeba05eeba0afd9408cfc863e",
      "old_mode": 33188,
      "old_path": "bfd/elf64-ppc.c",
      "new_id": "8a8b83b283dcf229a2f45c9be538fb965140df24",
      "new_mode": 33188,
      "new_path": "bfd/elf64-ppc.c"
    }
  ]
}
