)]}'
{
  "commit": "cc9be6af06ab5490c31883a4b0ceaf212099cf57",
  "tree": "8947ce0ac3457f67c69a1eaa3f8a6750eedcda14",
  "parents": [
    "215ba4f398c1bfabf50368d7379bcd1337addbe2"
  ],
  "author": {
    "name": "Bernd Edlinger",
    "email": "bernd.edlinger@hotmail.de",
    "time": "Mon Sep 02 17:00:12 2024 +0200"
  },
  "committer": {
    "name": "Andrew Burgess",
    "email": "aburgess@redhat.com",
    "time": "Wed Dec 04 14:03:44 2024 +0000"
  },
  "message": "[wip] Fix range end handling of inlined subroutines\n\nCurrently there is a problem when debugging\noptimized code when the inferior stops at an inline\nsub-range end PC.  It is unclear if that location\nis from the inline function or from the calling\nfunction.  Therefore the call stack is often\nwrong.\n\nThis patch detects the \"weak\" line table entries\nwhich are likely part of the previous inline block,\nand if we have such a location, it assumes the\nlocation belongs to the previous block.\n\nAdditionally it may happen that the infrun machinery\nsteps from one inline range to another inline range\nof the same inline function.  That can look like\njumping back and forth from the calling program\nto the inline function, while really the inline\nfunction just jumps from a hot to a cold section\nof the code, i.e. error handling.\n\nAdditionally it may happen that one inline sub-range\nis empty or the inline is completely empty.  But\nfiltering that information away is not the right\nsolution, since although there is no actual code\nfrom the inline, it is still possible that variables\nfrom an inline function can be inspected here.\n\nThe issue with the empty ranges is also discussed here:\nhttps://gcc.gnu.org/bugzilla/show_bug.cgi?id\u003d94474\n\nConceptually this patch uses a heuristic to work around\na deficiency in the dwarf-4 and dwarf-5 rnglists structure.\nThere should be a location view number for each inline\nsub-range begin PC and end PC, similar to the DW_AT_GNU_entry_view\nwhich is the location view for the inline entry point.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cf7ca6785b0c9ef4f3d809a245261d18ffaf06d8",
      "old_mode": 33188,
      "old_path": "gdb/block.c",
      "new_id": "288a3787cdb5f7d4db532e41322bba135a77ed6c",
      "new_mode": 33188,
      "new_path": "gdb/block.c"
    },
    {
      "type": "modify",
      "old_id": "83ec2cbd6f767e58dca566bac83b71667719795f",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/read.c",
      "new_id": "6cd4ce8051875bebe353556a6b847e9e564c0a77",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/read.c"
    },
    {
      "type": "modify",
      "old_id": "5c0e3f51162803d2aa4e4ca0b41475d616deda29",
      "old_mode": 33188,
      "old_path": "gdb/infcmd.c",
      "new_id": "0580fc67ba173a239bbb07cf98c5e265690eef3c",
      "new_mode": 33188,
      "new_path": "gdb/infcmd.c"
    },
    {
      "type": "modify",
      "old_id": "43eca814e296e9cd300bdc73a3388af1f2dc0113",
      "old_mode": 33188,
      "old_path": "gdb/infrun.c",
      "new_id": "65ac9f3b8ab0df59c4f722ea8534dd77ace568e9",
      "new_mode": 33188,
      "new_path": "gdb/infrun.c"
    },
    {
      "type": "modify",
      "old_id": "f2e357d144973cbf611faf56c7e8db23a2ee1635",
      "old_mode": 33188,
      "old_path": "gdb/symtab.c",
      "new_id": "5abd4b83a35419e8a45253f1c67bd80dac66b483",
      "new_mode": 33188,
      "new_path": "gdb/symtab.c"
    }
  ]
}
