)]}'
{
  "commit": "4e94f00756694ff3aa2ea9433bd4ef114964aa48",
  "tree": "0496e5ea8c644527770d54ffe3f2bb0bc3ff6b9c",
  "parents": [
    "5bd7ac079aeeec1a2d87fb2d24dab60a135b387f"
  ],
  "author": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Mon May 26 10:54:06 2025 -0700"
  },
  "committer": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Mon May 26 10:54:06 2025 -0700"
  },
  "message": "libsframe: fix issue finding FRE in PCMASK type SFrame FDEs\n\nSFrame FDEs of type SFRAME_FDE_TYPE_PCMASK are used for repetitive code\npatterns, e.g., pltN entries.  For SFrame FDEs of type\nSFRAME_FDE_TYPE_PCMASK, sframe_fre_check_range_p erroneously tested the\ngiven PC instead of the masked PC offset from function start address.\nTherefore it only worked correctly by chance, e.g., if the function start\naddress was aligned on the repetition block size.\n\nFor regular SFrame FDEs the PC offset from function start address must\nbe within a SFrame FRE\u0027s start IP offset and end IP offset.  For SFrame\nFDEs of type SFRAME_FDE_TYPE_PCMASK, the masked PC offset must be within\nthat range.\n\nSFrame FRE start/end IP offsets are relative to the SFrame FDE function\nstart address. For regular SFrame FDEs, the PC offset from function\nstart address must be within a SFrame FRE\u0027s start IP offset and end IP\noffset.  For SFRAME_FDE_TYPE_PCMASK type FDEs, the masked PC offset must\nbe within that range.\n\nExercise the testcase for a variety of placements; without the fix some\nof these tests will fail.  Also, make the testcase itself easier to\nfollow by adding appropriate vars where applicable.\n\nlibsframe/\n\t* sframe.c (sframe_fre_check_range_p): Fix logic for\n\tSFRAME_FDE_TYPE_PCMASK type FDE.\nlibsframe/testsuite/\n\t* libsframe.find/plt-findfre-1.c: Adjust the test for a variety\n\tof placements of .sframe and .plt.\n\nCo-Authored-by: Jens Remus \u003cjremus@linux.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c2693b978ec3992e99540877107db0ba9aa8a512",
      "old_mode": 33188,
      "old_path": "libsframe/sframe.c",
      "new_id": "c1bc692829a9c175101c70eef3b505d322d9bf01",
      "new_mode": 33188,
      "new_path": "libsframe/sframe.c"
    },
    {
      "type": "modify",
      "old_id": "c84b46f4d35f1d7465951a73b06ba93130144f86",
      "old_mode": 33188,
      "old_path": "libsframe/testsuite/libsframe.find/plt-findfre-1.c",
      "new_id": "60037fd67ea0c01d5dcc575239c52895b32cd70a",
      "new_mode": 33188,
      "new_path": "libsframe/testsuite/libsframe.find/plt-findfre-1.c"
    }
  ]
}
