)]}'
{
  "commit": "cb001c0d283dd884efe06770d033a50fb1bc6c7d",
  "tree": "77155357075b8f3b0f45446b16af3ab4216dde0d",
  "parents": [
    "2aa90762b71af7f04032d2bebed6470070d3d801"
  ],
  "author": {
    "name": "Alan Modra",
    "email": "amodra@gmail.com",
    "time": "Mon Mar 02 15:21:09 2020 +1030"
  },
  "committer": {
    "name": "Alan Modra",
    "email": "amodra@gmail.com",
    "time": "Mon Mar 02 19:30:48 2020 +1030"
  },
  "message": "bfd_cleanup for object_p\n\nThe object_p (and archive_p, core_file_p) functions are not supposed\nto have any target specific malloc\u0027d memory attached to the bfd on\ntheir return.  This should be obvious on a failure return, but it\u0027s\nalso true for a successful return.  The reason is that even though the\nobject_p recognises the file, that particular target may not be used\nand thus the bfd won\u0027t be closed calling close_and_cleanup for the\ntarget that allocated the memory.\n\nIt turns out that the object_p bfd_target* return value isn\u0027t needed.\nIn all cases except ld/plugin.c the target is abfd-\u003exvec and with\nld/plugin.c the target isn\u0027t used.  So this patch returns a cleanup\nfunction from object_p instead, called in bfd_check_format_matches to\ntidy the bfd before trying a different target match.  The only cleanup\nthat does anything at this stage is the alpha-vms one.\n\nbfd/\n\t* targets.c (bfd_cleanup): New typedef.\n\t(struct bfd \u003c_bfd_check_format\u003e): Return a bfd_cleanup.\n\t* libbfd-in.h (_bfd_no_cleanup): Define.\n\t* format.c (bfd_reinit): Add cleanup parameter, call it.\n\t(bfd_check_format_matches): Set cleanup from _bfd_check_format\n\tcall and pass to bfd_reinit.  Delete temp, use abfd-\u003exvec instead.\n\t* aout-target.h (callback, object_p): Return bfd_cleanup.\n\t* aout-tic30.c (tic30_aout_callback, tic30_aout_object_p): Likewise.\n\t* archive.c (bfd_generic_archive_p): Likewise.\n\t* binary.c (binary_object_p): Likewise.\n\t* coff-alpha.c (alpha_ecoff_object_p): Likewise.\n\t* coff-ia64.c (ia64coff_object_p): Likewise.\n\t* coff-rs6000.c (_bfd_xcoff_archive_p, rs6000coff_core_p): Likewise.\n\t* coff-sh.c (coff_small_object_p): Likewise.\n\t* coff-stgo32.c (go32_check_format): Likewise.\n\t* coff64-rs6000.c (xcoff64_archive_p, rs6000coff_core_p),\n\t(xcoff64_core_p): Likewise.\n\t* coffgen.c (coff_real_object_p, coff_object_p): Likewise.\n\t* elf-bfd.h (bfd_elf32_object_p, bfd_elf32_core_file_p),\n\t(bfd_elf64_object_p, bfd_elf64_core_file_p): Likewise.\n\t* elfcode.h (elf_object_p): Likewise.\n\t* elfcore.h (elf_core_file_p): Likewise.\n\t* i386msdos.c (msdos_object_p): Likewise.\n\t* ihex.c (ihex_object_p): Likewise.\n\t* libaout.h (some_aout_object_p): Likewise.\n\t* libbfd-in.h (bfd_generic_archive_p, _bfd_dummy_target),\n\t(_bfd_vms_lib_alpha_archive_p, _bfd_vms_lib_ia64_archive_p): Likewise.\n\t* libbfd.c (_bfd_dummy_target): Likewise.\n\t* libcoff-in.h (coff_object_p): Likewise.\n\t* mach-o-aarch64.c (bfd_mach_o_arm64_object_p),\n\t(bfd_mach_o_arm64_core_p): Likewise.\n\t* mach-o-arm.c (bfd_mach_o_arm_object_p),\n\t(bfd_mach_o_arm_core_p): Likewise.\n\t* mach-o-i386.c (bfd_mach_o_i386_object_p),\n\t(bfd_mach_o_i386_core_p): Likewise.\n\t* mach-o-x86-64.c (bfd_mach_o_x86_64_object_p),\n\t(bfd_mach_o_x86_64_core_p): Likewise.\n\t* mach-o.c (bfd_mach_o_header_p, bfd_mach_o_gen_object_p),\n\t(bfd_mach_o_gen_core_p, bfd_mach_o_fat_archive_p): Likewise.\n\t* mach-o.h (bfd_mach_o_object_p, bfd_mach_o_core_p),\n\t(bfd_mach_o_fat_archive_p, bfd_mach_o_header_p): Likewise.\n\t* mmo.c (mmo_object_p): Likewise.\n\t* pef.c (bfd_pef_object_p, bfd_pef_xlib_object_p): Likewise.\n\t* peicode.h (coff_real_object_p, pe_ILF_object_p),\n\t(pe_bfd_object_p): Likewise.\n\t* plugin.c (ld_plugin_object_p, bfd_plugin_object_p): Likewise.\n\t* ppcboot.c (ppcboot_object_p): Likewise.\n\t* rs6000-core.c (rs6000coff_core_p): Likewise.\n\t* som.c (som_object_setup, som_object_p): Likewise.\n\t* srec.c (srec_object_p, symbolsrec_object_p): Likewise.\n\t* tekhex.c (tekhex_object_p): Likewise.\n\t* vms-alpha.c (alpha_vms_object_p): Likewise.\n\t* vms-lib.c (_bfd_vms_lib_archive_p, _bfd_vms_lib_alpha_archive_p),\n\t(_bfd_vms_lib_ia64_archive_p, _bfd_vms_lib_txt_archive_p): Likewise.\n\t* wasm-module.c (wasm_object_p): Likewise.\n\t* xsym.c (bfd_sym_object_p): Likewise.\n\t* xsym.h (bfd_sym_object_p): Likewise.\n\t* aoutx.h (some_aout_object_p): Likewise, and callback parameter\n\treturn type.\n\t* pdp11.c (some_aout_object_p): Likewise.\n\t* plugin.c (register_ld_plugin_object_p): Update object_p\n\tparameter type.\n\t* plugin.h (register_ld_plugin_object_p): Likewise.\n\t* bfd-in2.h: Regenerate.\n\t* libbfd.h: Regenerate.\n\t* libcoff.h: Regenerate.\nld/\n\t* plugin.c (plugin_object_p): Return a bfd_cleanup.\n\t(plugin_cleanup): New function.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "116b89397da610abcf8b7e9d7fd1ce2b9548a333",
      "old_mode": 33188,
      "old_path": "bfd/ChangeLog",
      "new_id": "a917631b3884ea5bfccc777373809d65fb519320",
      "new_mode": 33188,
      "new_path": "bfd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "00024e6be284208ccddf51cea0c27bca461943bc",
      "old_mode": 33188,
      "old_path": "bfd/aout-target.h",
      "new_id": "365202e0ce3364d22a1ef647c413d94921af54f8",
      "new_mode": 33188,
      "new_path": "bfd/aout-target.h"
    },
    {
      "type": "modify",
      "old_id": "06f401cc7e5effbd93406a4c4d0b8651c05b9564",
      "old_mode": 33188,
      "old_path": "bfd/aout-tic30.c",
      "new_id": "222d1f0e30d74c57bcc081cfc9170d4610d0fd8a",
      "new_mode": 33188,
      "new_path": "bfd/aout-tic30.c"
    },
    {
      "type": "modify",
      "old_id": "4fb1282fb6e7c294475a502002993d45c7adc1e4",
      "old_mode": 33188,
      "old_path": "bfd/aoutx.h",
      "new_id": "41ced3dc72aadd100996cd43aa4ff385172094ef",
      "new_mode": 33188,
      "new_path": "bfd/aoutx.h"
    },
    {
      "type": "modify",
      "old_id": "71bc6a4323c999be30d551d42b05f013043276b8",
      "old_mode": 33188,
      "old_path": "bfd/archive.c",
      "new_id": "0c009f10de876b8374141d84b6540252b1f93e3c",
      "new_mode": 33188,
      "new_path": "bfd/archive.c"
    },
    {
      "type": "modify",
      "old_id": "44bc7041cdc9ec7eaf85b212b651a44ee9133914",
      "old_mode": 33188,
      "old_path": "bfd/bfd-in2.h",
      "new_id": "37114607b51521d51aecf36101e1b8e12efd027e",
      "new_mode": 33188,
      "new_path": "bfd/bfd-in2.h"
    },
    {
      "type": "modify",
      "old_id": "0683e414d6eb1c8008a7171f59d2396a87a03439",
      "old_mode": 33188,
      "old_path": "bfd/binary.c",
      "new_id": "999de0d8c41a4e7d8e5072de86983c1717ab900d",
      "new_mode": 33188,
      "new_path": "bfd/binary.c"
    },
    {
      "type": "modify",
      "old_id": "821e5591a9a9562746abf654dafb40dfada6e477",
      "old_mode": 33188,
      "old_path": "bfd/coff-alpha.c",
      "new_id": "b86a8a259b584dd30481389b398fa4f6851ca932",
      "new_mode": 33188,
      "new_path": "bfd/coff-alpha.c"
    },
    {
      "type": "modify",
      "old_id": "180cf9db8a8604f52641d892dddbd01403390a66",
      "old_mode": 33188,
      "old_path": "bfd/coff-ia64.c",
      "new_id": "07e54037f9cd0777edbb4933cec2c0fbd404c8fc",
      "new_mode": 33188,
      "new_path": "bfd/coff-ia64.c"
    },
    {
      "type": "modify",
      "old_id": "1cc708ce1b34071a0dbbff02331cad2c43f4929d",
      "old_mode": 33188,
      "old_path": "bfd/coff-rs6000.c",
      "new_id": "2dd68e08c3b8a3c0832798f9e56ab827740fd1a0",
      "new_mode": 33188,
      "new_path": "bfd/coff-rs6000.c"
    },
    {
      "type": "modify",
      "old_id": "986cd4d1d04f33d0f61847e22689670f4a3dce3a",
      "old_mode": 33188,
      "old_path": "bfd/coff-sh.c",
      "new_id": "b46a5e34f39f7f9d7d1de5011b188d270dc2a482",
      "new_mode": 33188,
      "new_path": "bfd/coff-sh.c"
    },
    {
      "type": "modify",
      "old_id": "6984b4219ee8197f86e451626d036703bb49a56a",
      "old_mode": 33188,
      "old_path": "bfd/coff-stgo32.c",
      "new_id": "676022872aea4f58899da7ab73ad2294d74b2fe8",
      "new_mode": 33188,
      "new_path": "bfd/coff-stgo32.c"
    },
    {
      "type": "modify",
      "old_id": "bb546239fc3c32d54265ec55e971367d38f4013d",
      "old_mode": 33188,
      "old_path": "bfd/coff64-rs6000.c",
      "new_id": "cca876eb4e083335bbc78d5ab68f98785200f1db",
      "new_mode": 33188,
      "new_path": "bfd/coff64-rs6000.c"
    },
    {
      "type": "modify",
      "old_id": "daaaba95c588d10ac29181223d140a5348f7058f",
      "old_mode": 33188,
      "old_path": "bfd/coffgen.c",
      "new_id": "6d84d512844411ac1ee7d46e00885aa92ee2bd9b",
      "new_mode": 33188,
      "new_path": "bfd/coffgen.c"
    },
    {
      "type": "modify",
      "old_id": "61e733f068deecc046a4656c581dfd5dd6f5ad12",
      "old_mode": 33188,
      "old_path": "bfd/elf-bfd.h",
      "new_id": "38a9aa060192818dc9f09da0c95051840361ae9f",
      "new_mode": 33188,
      "new_path": "bfd/elf-bfd.h"
    },
    {
      "type": "modify",
      "old_id": "b67ea8c7d2e88dd644d2da4b0ed53f4203ddfb32",
      "old_mode": 33188,
      "old_path": "bfd/elfcode.h",
      "new_id": "600abfe836e4bafed2a4d66777835da7257277ba",
      "new_mode": 33188,
      "new_path": "bfd/elfcode.h"
    },
    {
      "type": "modify",
      "old_id": "591ca531a6325d44f59059232adb0df1db393b71",
      "old_mode": 33188,
      "old_path": "bfd/elfcore.h",
      "new_id": "44707ebb60fbd7659693fcffd06ef0064c4cc42f",
      "new_mode": 33188,
      "new_path": "bfd/elfcore.h"
    },
    {
      "type": "modify",
      "old_id": "659d407018b81e791dd1231ec38c39afbbd1c278",
      "old_mode": 33188,
      "old_path": "bfd/format.c",
      "new_id": "b181742f3b1699660b4e493f60f81bc6dc7ca757",
      "new_mode": 33188,
      "new_path": "bfd/format.c"
    },
    {
      "type": "modify",
      "old_id": "11c5da6bed4068bb6beb09ca5c2a9851c16def68",
      "old_mode": 33188,
      "old_path": "bfd/i386msdos.c",
      "new_id": "5b56751cd30bd59f36337ab13548d8085cc894ad",
      "new_mode": 33188,
      "new_path": "bfd/i386msdos.c"
    },
    {
      "type": "modify",
      "old_id": "958a84b50705899d7816161146238bd7064a41e5",
      "old_mode": 33188,
      "old_path": "bfd/ihex.c",
      "new_id": "68671cc6239357ec76088eccf87cb11f6e5227ff",
      "new_mode": 33188,
      "new_path": "bfd/ihex.c"
    },
    {
      "type": "modify",
      "old_id": "81ef4cffd5ebb8dfc6658636038f1bfce7a5c222",
      "old_mode": 33188,
      "old_path": "bfd/libaout.h",
      "new_id": "bdf917e5561536e1e811b01cd88a42f170dbf33f",
      "new_mode": 33188,
      "new_path": "bfd/libaout.h"
    },
    {
      "type": "modify",
      "old_id": "6d796b7ef8952f28aa3932a959adda54b93cb0a4",
      "old_mode": 33188,
      "old_path": "bfd/libbfd-in.h",
      "new_id": "c8cf079a919f14157d88c90059212619cc69385f",
      "new_mode": 33188,
      "new_path": "bfd/libbfd-in.h"
    },
    {
      "type": "modify",
      "old_id": "cb7c3b5aba0872bf7666da5db5b054b1bdc76fc5",
      "old_mode": 33188,
      "old_path": "bfd/libbfd.c",
      "new_id": "3579ddb855a643da28c0edf59b43399da324f894",
      "new_mode": 33188,
      "new_path": "bfd/libbfd.c"
    },
    {
      "type": "modify",
      "old_id": "2391500c330cfb17723b6a73ba3caa38a50c51a2",
      "old_mode": 33188,
      "old_path": "bfd/libbfd.h",
      "new_id": "3c184fcadadf82cb093753f2d10ddeb6b0af9dd7",
      "new_mode": 33188,
      "new_path": "bfd/libbfd.h"
    },
    {
      "type": "modify",
      "old_id": "807817c94eeaca01c5d541d79d97c6280e02f8ae",
      "old_mode": 33188,
      "old_path": "bfd/libcoff-in.h",
      "new_id": "3030a65fa77128920d94fab9b301a3d7ca6559de",
      "new_mode": 33188,
      "new_path": "bfd/libcoff-in.h"
    },
    {
      "type": "modify",
      "old_id": "e6af9d6130d577a7a8ce37d68c0bc4800c9b26ee",
      "old_mode": 33188,
      "old_path": "bfd/libcoff.h",
      "new_id": "4c7be6e935a8755c0ba810f6d2c7a0b976d18bf3",
      "new_mode": 33188,
      "new_path": "bfd/libcoff.h"
    },
    {
      "type": "modify",
      "old_id": "f3406b3be25eade0ccde817ab741b6c95c93b3e2",
      "old_mode": 33188,
      "old_path": "bfd/mach-o-aarch64.c",
      "new_id": "c71b92e47cad0bbcabc06fe8c7a92c2940bc6dea",
      "new_mode": 33188,
      "new_path": "bfd/mach-o-aarch64.c"
    },
    {
      "type": "modify",
      "old_id": "efdb6bfb988d31e08393c5b0c5ccf00782eeb97a",
      "old_mode": 33188,
      "old_path": "bfd/mach-o-arm.c",
      "new_id": "f4afce71c86a40594261799e967f0173ed22420b",
      "new_mode": 33188,
      "new_path": "bfd/mach-o-arm.c"
    },
    {
      "type": "modify",
      "old_id": "2fcd0deee1b844cb178d483772702b1873235b89",
      "old_mode": 33188,
      "old_path": "bfd/mach-o-i386.c",
      "new_id": "6ef27d1cd131794b311601eca25689300f6f7c71",
      "new_mode": 33188,
      "new_path": "bfd/mach-o-i386.c"
    },
    {
      "type": "modify",
      "old_id": "fdc6558f5422616ba8b166a8dee028535d609a1d",
      "old_mode": 33188,
      "old_path": "bfd/mach-o-x86-64.c",
      "new_id": "9a6b58bc271f6139ab12c95acc9e4a36aafd79bc",
      "new_mode": 33188,
      "new_path": "bfd/mach-o-x86-64.c"
    },
    {
      "type": "modify",
      "old_id": "4b7be6eb4e19c9a2d96a5f4bd5757b57ba909803",
      "old_mode": 33188,
      "old_path": "bfd/mach-o.c",
      "new_id": "ee58a7adfae1375468c9dee6beb0ef450ab0922f",
      "new_mode": 33188,
      "new_path": "bfd/mach-o.c"
    },
    {
      "type": "modify",
      "old_id": "468de8e96ea604cda19457e10d02bae22238b5f1",
      "old_mode": 33188,
      "old_path": "bfd/mach-o.h",
      "new_id": "278bdd531545a8668ff63e95945c42a56308dbb4",
      "new_mode": 33188,
      "new_path": "bfd/mach-o.h"
    },
    {
      "type": "modify",
      "old_id": "073c37c0acdcb6916e53ea46ed0425f72a1f0fdf",
      "old_mode": 33188,
      "old_path": "bfd/mmo.c",
      "new_id": "3b7e5c0c33fcb72a33bd111046a655c94ff16ec0",
      "new_mode": 33188,
      "new_path": "bfd/mmo.c"
    },
    {
      "type": "modify",
      "old_id": "35d45e64806ffae87b7b7121e1090bec5fe4e2d7",
      "old_mode": 33188,
      "old_path": "bfd/pdp11.c",
      "new_id": "c13e742c0da2a2d55a5979f820d7695a901eb81a",
      "new_mode": 33188,
      "new_path": "bfd/pdp11.c"
    },
    {
      "type": "modify",
      "old_id": "b0f6c2d2a7cb81747127a222070adb4928b0b7ba",
      "old_mode": 33188,
      "old_path": "bfd/pef.c",
      "new_id": "4e749e1949789946e540420920be43a940d5118d",
      "new_mode": 33188,
      "new_path": "bfd/pef.c"
    },
    {
      "type": "modify",
      "old_id": "f569ccf389321c969ea1a01bc9a417c39c97c8b4",
      "old_mode": 33188,
      "old_path": "bfd/peicode.h",
      "new_id": "c5a92afefc4604b29c92a2ac0f56dbc4a4546df9",
      "new_mode": 33188,
      "new_path": "bfd/peicode.h"
    },
    {
      "type": "modify",
      "old_id": "72e55a0f60731302216455ddfc30d135ee53cb88",
      "old_mode": 33188,
      "old_path": "bfd/plugin.c",
      "new_id": "a0f172d363793753601db6afa892c97f79da0aab",
      "new_mode": 33188,
      "new_path": "bfd/plugin.c"
    },
    {
      "type": "modify",
      "old_id": "b2d5e50137f2c30b436c3c14d3017d38676b6b5b",
      "old_mode": 33188,
      "old_path": "bfd/plugin.h",
      "new_id": "af5d1f4cfa9d395878b6331c4f94dcc205756d9f",
      "new_mode": 33188,
      "new_path": "bfd/plugin.h"
    },
    {
      "type": "modify",
      "old_id": "24f3e0655e523f3490fa7a16c9f72ebc3d64e250",
      "old_mode": 33188,
      "old_path": "bfd/ppcboot.c",
      "new_id": "9d9d187613a1cd85ef406dce89ffe63c24343931",
      "new_mode": 33188,
      "new_path": "bfd/ppcboot.c"
    },
    {
      "type": "modify",
      "old_id": "ba7f896b998fd398339a781cd353c4fc570a0c32",
      "old_mode": 33188,
      "old_path": "bfd/rs6000-core.c",
      "new_id": "8e2dd06b464c9b199971bf75ee7d71b6a4042d1c",
      "new_mode": 33188,
      "new_path": "bfd/rs6000-core.c"
    },
    {
      "type": "modify",
      "old_id": "9f37b10f96c4efd4c4931bdeb7ee9ce3e67c0dbd",
      "old_mode": 33188,
      "old_path": "bfd/som.c",
      "new_id": "3aa3d60b02bcd61372a61695f77fe01b27d85969",
      "new_mode": 33188,
      "new_path": "bfd/som.c"
    },
    {
      "type": "modify",
      "old_id": "266c2b19ebbcd82f25fa09bd6d8c08b40d3ea5f4",
      "old_mode": 33188,
      "old_path": "bfd/srec.c",
      "new_id": "5ca4f36ae5944ae34cb7c9d7146f03e626efc453",
      "new_mode": 33188,
      "new_path": "bfd/srec.c"
    },
    {
      "type": "modify",
      "old_id": "e7cd9a810cb0d1506f8413f565540cd2f8b29d07",
      "old_mode": 33188,
      "old_path": "bfd/targets.c",
      "new_id": "39683e83d414f6689710491901e382d68bd47520",
      "new_mode": 33188,
      "new_path": "bfd/targets.c"
    },
    {
      "type": "modify",
      "old_id": "aaaffa05c27819a6ad257fcafae94f8074e48e39",
      "old_mode": 33188,
      "old_path": "bfd/tekhex.c",
      "new_id": "c2834b32d0cdbcd4062e20e1ff32711b4ab63726",
      "new_mode": 33188,
      "new_path": "bfd/tekhex.c"
    },
    {
      "type": "modify",
      "old_id": "272d80ab4c84af8919adf65344015c6dc326b624",
      "old_mode": 33188,
      "old_path": "bfd/vms-alpha.c",
      "new_id": "241dab340d7c723f902c3337e79c6f68ca3b39bc",
      "new_mode": 33188,
      "new_path": "bfd/vms-alpha.c"
    },
    {
      "type": "modify",
      "old_id": "66a40bc91ca8bfbb078cb4ffeca57b1f5072e2ab",
      "old_mode": 33188,
      "old_path": "bfd/vms-lib.c",
      "new_id": "a6335218fa491671c167c2854ff3ac0c06b968d4",
      "new_mode": 33188,
      "new_path": "bfd/vms-lib.c"
    },
    {
      "type": "modify",
      "old_id": "fa8648b9acd7d2f7fcf767484b402a82dc1bbd89",
      "old_mode": 33188,
      "old_path": "bfd/wasm-module.c",
      "new_id": "ac78692816e9c9a1c05f3d14ea511437e0b78a79",
      "new_mode": 33188,
      "new_path": "bfd/wasm-module.c"
    },
    {
      "type": "modify",
      "old_id": "3071a9de3f7e2e876f6450b856f683235fe027a6",
      "old_mode": 33188,
      "old_path": "bfd/xsym.c",
      "new_id": "525d6d98abc1bc385acce6593fb57aca8ae7bde9",
      "new_mode": 33188,
      "new_path": "bfd/xsym.c"
    },
    {
      "type": "modify",
      "old_id": "061efd6b058ddf63de85f88c337affa8d5f970c7",
      "old_mode": 33188,
      "old_path": "bfd/xsym.h",
      "new_id": "393b72b5e0a1de30229a35a001cb2e0db251519e",
      "new_mode": 33188,
      "new_path": "bfd/xsym.h"
    },
    {
      "type": "modify",
      "old_id": "927074e4ba70719a7212bb710853703a46d7d19d",
      "old_mode": 33188,
      "old_path": "ld/ChangeLog",
      "new_id": "14a917b25bf9e0700fbe65e9a996196c5ef2ad14",
      "new_mode": 33188,
      "new_path": "ld/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "af3f9e2ffe88e7d86fca4cba9c7eb78f3bc5f9d4",
      "old_mode": 33188,
      "old_path": "ld/plugin.c",
      "new_id": "4ef4a236650ce97b51ed6bd7edd5369a035f18f6",
      "new_mode": 33188,
      "new_path": "ld/plugin.c"
    }
  ]
}
