)]}'
{
  "commit": "c447183ab0f32d0c2378e72cfd64f5e048b62cb4",
  "tree": "45fb23efba564a56d98d61c4e3a3ee4f271898ab",
  "parents": [
    "32a7e94f84a3df0bcd08a2835e2c316f5ed07f77"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Thu Jul 02 10:14:10 2026 +0800"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Thu Jul 09 18:26:15 2026 +0800"
  },
  "message": "readelf: Save and dump the original section header values\n\nvalidate_section_info clears the garbage values in the section header\nto avoid crash later.  Save and dump the original section header values\nto make the garbage values in the section header visible when dumping\nsection headers.\n\nNote: orig_section_headers, instead of sane_section_headers, is added to\nfiledata since filedata-\u003esection_headers is used in many places.  Replace\nfiledata-\u003esection_headers with filedata-\u003esane_section_headers requires\na much bigger change.\n\n\t* readelf.c (filedata): Add orig_section_headers.\n\t(save_original_section_header_values): New.\n\t(validate_section_info): Add a pointer to the original section\n\theader and call save_original_section_header_values to save the\n\toriginal section header values before clearing the section header\n\tfields.\n\t(get_32bit_section_headers): Allocate the original section header\n\tbuffer.  Pass the original section header pointer to\n\tvalidate_section_info.\n\t(get_64bit_section_headers): Likewise.\n\t(process_section_headers): Dump the original section header\n\tvalues if they exist.\n\t(process_relocs): Pass a dummy original section pointer to\n\tvalidate_section_info.\n\t(free_filedata): Free filedata-\u003eorig_section_headers.\n\t* testsuite/binutils-all/corrupt-1.elf.bz2: New file.\n\t* testsuite/binutils-all/corrupt-1.r: Likewise.\n\t* testsuite/binutils-all/readelf.exp: Run corrupt-1.elf test.\n\nSigned-off-by: H.J. Lu \u003chjl.tools@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2826e0cf1950a5cd8ce94b24f1e1ef32c7e089b0",
      "old_mode": 33188,
      "old_path": "binutils/readelf.c",
      "new_id": "0938fe64b225e11196e4d2a00db810454aa5e462",
      "new_mode": 33188,
      "new_path": "binutils/readelf.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e9c9f44343a4aadd90457df5e49923830881d194",
      "new_mode": 33188,
      "new_path": "binutils/testsuite/binutils-all/corrupt-1.elf.bz2"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae6438703e27e35d23369d8897326b5e49c08cb3",
      "new_mode": 33188,
      "new_path": "binutils/testsuite/binutils-all/corrupt-1.r"
    },
    {
      "type": "modify",
      "old_id": "0f3d75090b2f1ea8ade9c2ef0dbde37f7cc1ad63",
      "old_mode": 33188,
      "old_path": "binutils/testsuite/binutils-all/readelf.exp",
      "new_id": "6c5e63fb9e8cbdd42fdbacc01222ae09768c8935",
      "new_mode": 33188,
      "new_path": "binutils/testsuite/binutils-all/readelf.exp"
    }
  ]
}
