)]}'
{
  "commit": "0b1bf2fc98e2f657a5f259f369446caf39cda786",
  "tree": "016ebf8199b399524adf8a484913cf3e3989ee37",
  "parents": [
    "c915c2c95a3b38749d5a2f455ad5c91a20cb4794"
  ],
  "author": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Sun Jul 06 12:47:05 2025 -0700"
  },
  "committer": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Sun Jul 06 12:53:03 2025 -0700"
  },
  "message": "bfd: gas: ld: libsframe: adopt new encoding for FDE func start addr field\n\nThis patch convenes a set of changes in bfd, gas, ld, libsframe towards\nmoving to the new encoding for the \u0027sfde_func_start_address\u0027 field in\nSFrame FDE.\n\nFirst, gas must now mark all SFrame sections with the new flag\nSFRAME_F_FDE_FUNC_START_PCREL.  gas was already emitting the field\nin the said encoding.\n\n\t* gas/gen-sframe.c (output_sframe_internal): Emit the flag\n\tSFRAME_F_FDE_FUNC_START_PCREL.\n\nSimilarly for ld, adopt the new semantics of sfde_func_start_address\nconsistently.  This means:\n  - When merging SFrame sections, check that all input SFrame sections\n    have the SFRAME_F_FDE_FUNC_START_PCREL flag set.  If the check\n    fails, ld errors out.\n  - When merging SFrame sections, keep even the in-memory contents of\n    the FDE function start address (buffer passed to libsframe\n    sframe_encoder_write () for writing out) encoded in the new\n    semantics.  While it is, in theory, possible that instead of doing this\n    change here, we adjust the value of sfde_func_start_address at the final\n    write (sframe_encoder_write) time.  But latter is not favorable for\n    maintenanance and may be generally confusing for developers.\n  - When creating SFrame for PLT entries, emit flag\n    SFRAME_F_FDE_FUNC_START_PCREL.\n\ninclude/\n        * sframe-api.h (SFRAME_F_LD_MUSTHAVE_FLAGS): New definition.\nbfd/\n\t* elf-sframe.c (_bfd_elf_merge_section_sframe): Check for flag\n\tcombinatation SFRAME_F_LD_MUSTHAVE_FLAGS set for all input and\n\toutput SFrame sections.  If not, error out.  Also, adopt the new\n        semantics of function start address encoding.\n\t* bfd/elfxx-x86.c (_bfd_x86_elf_create_sframe_plt): Emit flag\n\tSFRAME_F_FDE_FUNC_START_PCREL.\n\nNext, for dumping SFrame sections, now that we are emitting the same\nencoding in GAS, non-relocatable and relocatable SFrame links, it is the\ntime to set relocate to TRUE in debug_displays[].\n\nbinutils/\n\t* dwarf.c (struct dwarf_section_display): Allow sframe sections\n\t  to now be relocated.\ngas/testsuite/\n\t* gas/cfi-sframe/cfi-sframe-aarch64-pac-ab-key-1.d: Update the\n\ttest.  Relocatable SFrame sections now display non-zero value\n\t(appropriate function start address).\n\nNow, as the SFrame sections on-disk and in-memory use the new semantics of\nsfde_func_start_address encoding (i.e., function start address is the\noffset from the sfde_func_start_address field to the start PC), the\ncalculation to make it human readable (i.e., relatable to the addresses\nin .text sections) needs adjustment.\n\nlibsframe/\n\t* sframe-dump.c (dump_sframe_func_with_fres): Adjust the\n\tfunction start address for dumping.\n\nNow that both the emission of the new encoding, and the relocation of\nsections before dumping them is in place, it is time to adjust the\ntestcases.\n\ngas/testsuite/\n\t* gas/cfi-sframe/cfi-sframe-aarch64-1.d: Update expected output\n\tto include SFRAME_F_FDE_FUNC_START_PCREL instead of NONE.\n\t* gas/cfi-sframe/cfi-sframe-aarch64-2.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-aarch64-3.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-aarch64-4.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-1.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-10.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-11.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-2.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-3.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-4.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-5.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-6.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-7.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-8.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-common-9.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-x86_64-1.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-x86_64-2.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-x86_64-empty-1.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-x86_64-empty-2.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-x86_64-empty-3.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe-x86_64-empty-4.d: Likewise.\n\t* gas/cfi-sframe/common-empty-1.d: Likewise.\n\t* gas/cfi-sframe/common-empty-2.d: Likewise.\n\t* gas/cfi-sframe/common-empty-3.d: Likewise.\n\t* gas/scfi/x86_64/scfi-cfi-sections-1.d: Likewise.\n\t* gas/scfi/x86_64/scfi-dyn-stack-1.d: Likewise.\nld/testsuite/\n\t* ld-aarch64/sframe-simple-1.d: Update expected output to\n\tinclude SFRAME_F_FDE_FUNC_START_PCREL.\n\t* ld-x86-64/sframe-ibt-plt-1.d: Likewise.\n\t* ld-x86-64/sframe-plt-1.d: Likewise.\n\t* ld-x86-64/sframe-pltgot-1.d: Likewise.\n\t* ld-x86-64/sframe-pltgot-2.d: Likewise.\n\t* ld-x86-64/sframe-simple-1.d: Likewise.\n\nNaturally, the change of semantics for \u0027SFrame FDE function start address\u0027\nhas consequences on the implementation in libsframe.  As per the new\nsemantics:\n  - Function start address in the SFrame FDE (sfde_func_start_address)\n    is an offset from the FDE function start address field to the start\n    PC of the associated function.\n\nNote that, the libsframe library brings the SFrame section contents into\nits own memory to create a sframe_decoder_ctx object via sframe_decode\n().  Many internal and user-interfacing APIs then may use\nsframe_decoder_ctx object to interact and fulfill the work.\n\nIn context of changing semantics for sfde_func_start_address, following\nrelevant examples may help understand the impact:\n  - sframe_find_fre () finds a the SFrame stack trace data (SFrame FRE)\n    given a lookup offset (offset of lookup_pc from the start of SFrame\n    section).  Now that the sfde_func_start_address includes the\n    distance from the sfde_func_start_address field to the start of\n    SFrame section itself, the comparison checks of\n    sfde_func_start_address with the incoming lookup offset need\n    adjustment.\n  - Some internal functions (sframe_get_funcdesc_with_addr_internal ()\n    finds SFrame FDE by using binary seach comparing\n    sfde_func_start_address fields, etc.) need adjustments.\n  - sframe_encoder_write () sorts the SFrame FDEs before writing out\n    the SFrame data.  Sorting of SFrame FDE via the internal function\n    sframe_sort_funcdesc() needs adjustments: the new encoding of\n    sfde_func_start_address means the distances are not from the same\n    anchor, so cannot be sorted directly.\n\nThis patch takes the approach of adding a new internal function:\n  - sframe_decoder_get_secrel_func_start_addr (): This function returns\n    the offset of the start PC of the function from the start of SFrame\n    section, i.e., it gives a section-relative offset.\n\nAs the sframe_decoder_get_secrel_func_start_addr () API needs the value\nof the function index in the FDE list, another internal API needs\nsframe_fre_check_range_p () adjustments too.\n\nSorting the FDEs (via sframe_sort_funcdesc ()) is done by first bringing\nall offsets in sfde_func_start_address relative to start of SFrame\nsection, followed by sorting, and then readjusting the offsets accroding\nto the new position in the FDE list.\n\nlibsframe/\n\t* sframe.c (sframe_decoder_get_secrel_func_start_addr): New\n\tstatic function.\n        (sframe_fre_check_range_p): Adjust the interface a bit.\n\t(sframe_get_funcdesc_with_addr_internal): Use\n\tsframe_decoder_get_secrel_func_start_addr () when comparing\n\tsfde_func_start_address with user input offset.\n        (sframe_find_fre): Adopt the new semantics.\n        (sframe_sort_funcdesc): Likewise.\n\nFor the libsframe testsuite, use the new encoding for FDE func start\naddr: distance between the FDE sfde_func_start_address field and the\nstart PC of the function itself.\n\nUse SFRAME_F_FDE_FUNC_START_PCREL flag, though the sframe_encode ()\ninterface in libsframe applies no sanity checks for the encoding itself.\n\nlibsframe/testsuite/\n\t* libsframe.find/findfre-1.c: Adjust to use the new\n\tSFRAME_F_FDE_FUNC_START_PCREL specific encoding.\n\t* libsframe.find/findfunc-1.c: Likewise.\n\t* libsframe.find/plt-findfre-1.c: Likewise.\n\t* libsframe/testsuite/libsframe.decode/DATA2: Update data file\n\tdue to usage of new SFRAME_F_FDE_FUNC_START_PCREL flag.\n\t* libsframe/testsuite/libsframe.encode/encode-1.c: Use flag\n\tSFRAME_F_FDE_FUNC_START_PCREL.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "97e00734515244f46f4f98d3910735769840907d",
      "old_mode": 33188,
      "old_path": "bfd/elf-sframe.c",
      "new_id": "89c5322bfa22529f3b1a2ebe3779d89e33b93fad",
      "new_mode": 33188,
      "new_path": "bfd/elf-sframe.c"
    },
    {
      "type": "modify",
      "old_id": "bc9bb7010ce061d5ed47c1ed66bb36d3badc4123",
      "old_mode": 33188,
      "old_path": "bfd/elfxx-x86.c",
      "new_id": "663f40ae7f071e9555329574629c2b0d0974a151",
      "new_mode": 33188,
      "new_path": "bfd/elfxx-x86.c"
    },
    {
      "type": "modify",
      "old_id": "51590cc733f6a04ee7a3d100f741f2d092640943",
      "old_mode": 33188,
      "old_path": "binutils/dwarf.c",
      "new_id": "e0e202fd6837428b4248f00a2f5ad90b52d9d14d",
      "new_mode": 33188,
      "new_path": "binutils/dwarf.c"
    },
    {
      "type": "modify",
      "old_id": "2d1c1961fd7ed32fec46332a2fd8964458b1089a",
      "old_mode": 33188,
      "old_path": "gas/gen-sframe.c",
      "new_id": "85d3553773bb01e76ebd36f4db6bb8a3d85e2f8e",
      "new_mode": 33188,
      "new_path": "gas/gen-sframe.c"
    },
    {
      "type": "modify",
      "old_id": "8ae46217117c6bd0bca905f8be19987cafd34041",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-1.d",
      "new_id": "830a652662850263e3d94d36dd48a4276d37ed8c",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-1.d"
    },
    {
      "type": "modify",
      "old_id": "b7834d53b075c138dc90213cabc0c78ec1146ba7",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.d",
      "new_id": "a6ee2ae7cdc95a14696c89ee3b9656cd794ba281",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-2.d"
    },
    {
      "type": "modify",
      "old_id": "f72b70a970ac819602f597968e33a9e274549d98",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-3.d",
      "new_id": "c8ace34e375ef8241ba540d68e9e22685e4a170d",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-3.d"
    },
    {
      "type": "modify",
      "old_id": "51fad9c08932e10938040eeb1fa7223fb3af8382",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-4.d",
      "new_id": "fc753799ac0acdfe13bd0a12097dde49ce1276cc",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-4.d"
    },
    {
      "type": "modify",
      "old_id": "599d4c4e795c8af50018bd03cf0653175379f433",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-pac-ab-key-1.d",
      "new_id": "4f14e390107a4dd5fe55caf433eddbca6880eeed",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-aarch64-pac-ab-key-1.d"
    },
    {
      "type": "modify",
      "old_id": "5f4ae00747deefdce2f69490e9672fc3275ef1be",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-1.d",
      "new_id": "8c746809bc8bd862605dfc19666ab990fbe460bb",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-1.d"
    },
    {
      "type": "modify",
      "old_id": "106e05d160b6fc9efb3e8992757942fd1907f951",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-10.d",
      "new_id": "a91b1fe33363cda85480d64f4a7ddbbf2fbc1625",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-10.d"
    },
    {
      "type": "modify",
      "old_id": "258481501350948f010536f6b720bd9dd73c9ca8",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-11.d",
      "new_id": "2173ddbd4a23bbb782125aafea238c774d2230f7",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-11.d"
    },
    {
      "type": "modify",
      "old_id": "ded8c450a94281d9a5638256be8d4187510cef06",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-2.d",
      "new_id": "146b78918545f001ba77c90dbd5fbb59fef18cf5",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-2.d"
    },
    {
      "type": "modify",
      "old_id": "d23fd9790f631197ea2c2c9af86bef922b2e5172",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-3.d",
      "new_id": "8c065f8c1c96e5227dd31174d75236352bfff7ac",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-3.d"
    },
    {
      "type": "modify",
      "old_id": "8632613f532f52cfd0bc657784d5648a9b910988",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-4.d",
      "new_id": "0aed15c0c7008d6306f032ade13c0d6d1b803127",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-4.d"
    },
    {
      "type": "modify",
      "old_id": "dd2c32d3d9fcc491ccb675cb52063123dbf293cf",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-5.d",
      "new_id": "d7cedb388ac85d7f746149799097d585a510a849",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-5.d"
    },
    {
      "type": "modify",
      "old_id": "34390c46a0743f8c2f9a710d9097ffb79c34097b",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-6.d",
      "new_id": "41074c78a35452505661acebb085220485fe7df9",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-6.d"
    },
    {
      "type": "modify",
      "old_id": "61efb9c4ed129221486d35b2b69f74bf735b7717",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-7.d",
      "new_id": "e68a9a302c4accd95f3e4caad5e97f372df8de84",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-7.d"
    },
    {
      "type": "modify",
      "old_id": "d77645636b36aee3382e2cfe42d7ff6a14ba6617",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-8.d",
      "new_id": "11a15bfc07c49125a920c52cf5780429c4a86b19",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-8.d"
    },
    {
      "type": "modify",
      "old_id": "80c9235707325c244136bab9006be2260316f0fb",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-9.d",
      "new_id": "ef588ea14969196c1e2af9765fa7ba8f966473ca",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-9.d"
    },
    {
      "type": "modify",
      "old_id": "88b4cc63dbaa00d39e17910ec2a6f36bc1b75127",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-1.d",
      "new_id": "7850db2c774a802e98a6d5d7b1ad7ba6cdddbd3a",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-1.d"
    },
    {
      "type": "modify",
      "old_id": "d779b6d126ec5ad9ce3d95d18c1aba04ac67e208",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-2.d",
      "new_id": "c3841aa0aebb2ac2f965e1da29cb2ac6175d2f92",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-2.d"
    },
    {
      "type": "modify",
      "old_id": "0bae4b95b31da7fcdc1f4c97ecae4db8b5944c8f",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-1.d",
      "new_id": "a63231e6b87d60b0162ff59cf8913ffb5b8bc322",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-1.d"
    },
    {
      "type": "modify",
      "old_id": "f1ba0443273e338ccc9ee4faffc889dfa2506afb",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-2.d",
      "new_id": "c3b4c4cea9fc6e7a29e7a2ea118a1e764a6126ce",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-2.d"
    },
    {
      "type": "modify",
      "old_id": "c8fc7a43dd4f89e2ae3797d89cf8bd4233da7e82",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-3.d",
      "new_id": "29a6d0c75950d4d17199279d487005ec5841cda0",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-3.d"
    },
    {
      "type": "modify",
      "old_id": "43f09e09d27f421278f474293d68c8a0f49b8f37",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-4.d",
      "new_id": "1a718af943500f5977a058968cc0427f2f8c3c01",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-x86_64-empty-4.d"
    },
    {
      "type": "modify",
      "old_id": "736aea87505525d1131611e9f37a7324f266dea5",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/common-empty-1.d",
      "new_id": "c64dd92e00348330de4ba34ffc690ad8d886e736",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/common-empty-1.d"
    },
    {
      "type": "modify",
      "old_id": "163b504a687337a3eae5299db8a17495bb45521c",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/common-empty-2.d",
      "new_id": "8174b32292083c76801ef4d11bcc0fba98f55376",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/common-empty-2.d"
    },
    {
      "type": "modify",
      "old_id": "39caad5a1d45b5899552badf1c30482bdf5700c1",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/common-empty-3.d",
      "new_id": "c01498852e83ad1daebfce9da3c0931f3cb32d5f",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/common-empty-3.d"
    },
    {
      "type": "modify",
      "old_id": "7c247e33a6e80a49858c7d518808b8e20d45ef13",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.d",
      "new_id": "52ff74c923af80a8fd416341c0ec711d29c00689",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/scfi/x86_64/scfi-cfi-sections-1.d"
    },
    {
      "type": "modify",
      "old_id": "c6a9b53f4e09f02f883f64f4167a9c28bc46d7a8",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.d",
      "new_id": "d4054201be6440808dad3465f0e851d6c05c0622",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/scfi/x86_64/scfi-dyn-stack-1.d"
    },
    {
      "type": "modify",
      "old_id": "3dc18b6ad394977f97f595c38390210ba2974941",
      "old_mode": 33188,
      "old_path": "include/sframe-api.h",
      "new_id": "753a91f5b3f414e9e45d8f2281873ce52b8ef388",
      "new_mode": 33188,
      "new_path": "include/sframe-api.h"
    },
    {
      "type": "modify",
      "old_id": "6ab8c2ab46ac47c1f7eb87e50d59632dca496028",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-aarch64/sframe-simple-1.d",
      "new_id": "1ae73de28281e6c34f720c8ee486b7a2a8a1cb3a",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-aarch64/sframe-simple-1.d"
    },
    {
      "type": "modify",
      "old_id": "f8682421245bc6c260b6de2b192bb2e2a7787a37",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/sframe-ibt-plt-1.d",
      "new_id": "45bf99a5e42fac99f626fc3c2568335541baccef",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/sframe-ibt-plt-1.d"
    },
    {
      "type": "modify",
      "old_id": "2918ccba1ebcc2df306429ca69d795395fa88195",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/sframe-plt-1.d",
      "new_id": "d23540ea907f7c31d4dec966f955ea8df7c99b25",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/sframe-plt-1.d"
    },
    {
      "type": "modify",
      "old_id": "6c47770c2b59cc865fdb7de2fb52d9b1309cf762",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/sframe-pltgot-1.d",
      "new_id": "e2255b0ca0bc8d56593e30ff1eaf0bbf30596381",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/sframe-pltgot-1.d"
    },
    {
      "type": "modify",
      "old_id": "141be2922302e68af44846b4cbc5cc56ba8f5b75",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/sframe-pltgot-2.d",
      "new_id": "52e712b4a822fdfe942f22438c3cfdd32b969b55",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/sframe-pltgot-2.d"
    },
    {
      "type": "modify",
      "old_id": "3effdbf05290d96c4dd378c12b40a2ea89587d6c",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/sframe-simple-1.d",
      "new_id": "bb4142ff560b78a2b375b10c5bcb8f26f96a41f6",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/sframe-simple-1.d"
    },
    {
      "type": "modify",
      "old_id": "fbaa832688216063207d330dc1826d649b396aac",
      "old_mode": 33188,
      "old_path": "libsframe/sframe-dump.c",
      "new_id": "47ac00e31597e6d64e80814f9ed6969be70d50b6",
      "new_mode": 33188,
      "new_path": "libsframe/sframe-dump.c"
    },
    {
      "type": "modify",
      "old_id": "3e5b60aaefdfad4a7b1048b0c0336f2a437e1348",
      "old_mode": 33188,
      "old_path": "libsframe/sframe.c",
      "new_id": "ea0e1c7cd23096344aaa550f933de6e2c85588a9",
      "new_mode": 33188,
      "new_path": "libsframe/sframe.c"
    },
    {
      "type": "modify",
      "old_id": "472f736f872a0bb23b8f075a2b6da8d3aeaabbcd",
      "old_mode": 33188,
      "old_path": "libsframe/testsuite/libsframe.decode/DATA2",
      "new_id": "90649e2716947e16bd51f42d8cb58ab75a69fd4f",
      "new_mode": 33188,
      "new_path": "libsframe/testsuite/libsframe.decode/DATA2"
    },
    {
      "type": "modify",
      "old_id": "3c2df7619b8f7e148ca418add86fc216808ebb4e",
      "old_mode": 33188,
      "old_path": "libsframe/testsuite/libsframe.encode/encode-1.c",
      "new_id": "1ba75d7e5c4f197bbf2f2f4a693099002741740a",
      "new_mode": 33188,
      "new_path": "libsframe/testsuite/libsframe.encode/encode-1.c"
    },
    {
      "type": "modify",
      "old_id": "94fe2e9493ff93a0324e1f02c564d3e05c3d45df",
      "old_mode": 33188,
      "old_path": "libsframe/testsuite/libsframe.find/findfre-1.c",
      "new_id": "7c7c94799bf59577ab9028811231e714a31d4318",
      "new_mode": 33188,
      "new_path": "libsframe/testsuite/libsframe.find/findfre-1.c"
    },
    {
      "type": "modify",
      "old_id": "3cdcdb6631ec495a65cc602cd863ec91b374673a",
      "old_mode": 33188,
      "old_path": "libsframe/testsuite/libsframe.find/findfunc-1.c",
      "new_id": "00b9e8db91947ca102242721578dcc4e22a32d78",
      "new_mode": 33188,
      "new_path": "libsframe/testsuite/libsframe.find/findfunc-1.c"
    },
    {
      "type": "modify",
      "old_id": "89ca4661922ea8d76340f19e420c6ec4c203ecae",
      "old_mode": 33188,
      "old_path": "libsframe/testsuite/libsframe.find/plt-findfre-1.c",
      "new_id": "91da4bc1c2e6ba0a56addff1193a7a1e5fddb7d0",
      "new_mode": 33188,
      "new_path": "libsframe/testsuite/libsframe.find/plt-findfre-1.c"
    }
  ]
}
