)]}'
{
  "commit": "0aa99dcd70bce68f8efef310350a6294e1143382",
  "tree": "ff8678bad1747516104097a8860d8eb775f370b8",
  "parents": [
    "2f5dd314d60e25b3094694999889c72a49fee76b"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Mon Feb 10 19:01:42 2020 -0800"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Mon Feb 10 19:01:53 2020 -0800"
  },
  "message": "Use GCC LTO wrapper to get real symbols from LTO IR objects\n\nGCC LTO wrapper is needed to extract real symbols from LTO IR objects.\nThis patch does the following:\n\n1. Set up GCC LTO wrapper for each LTO IR object.\n2. Run GCC LTO wrapper to get the real object.\n3. Extract symbol info from the real object.\n4. Cleanup afterwards.\n\nbfd/\n\n\tPR binutils/25355\n\t* configure.ac (HAVE_EXECUTABLE_SUFFIX): New AC_DEFINE.\n\t(EXECUTABLE_SUFFIX): Likewise.\n\t* config.in: Regenerated.\n\t* configure: Likewise.\n\t* plugin.c (bfd_plugin_close_and_cleanup): Removed.\n\t(plugin_list_entry): Add all_symbols_read, cleanup_handler,\n\tgcc, lto_wrapper, resolution_file, resolution_option, gcc_env,\n\treal_bfd, real_nsyms, real_syms, lto_nsyms and lto_syms.\n\t(get_lto_wrapper): New.\n\t(setup_lto_wrapper_env): Likewise.\n\t(current_plugin): Likewise.\n\t(register_all_symbols_read): Likewise.\n\t(register_cleanup): Likewise.\n\t(get_symbols): Likewise.\n\t(add_input_file): Likewise.\n\t(bfd_plugin_close_and_cleanup): Likewise.\n\t(claim_file): Removed.\n\t(register_claim_file): Set current_plugin-\u003eclaim_file.\n\t(add_symbols): Make a copy of LTO symbols.  Set lto_nsyms and\n\tlto_syms in current_plugin.\n\t(try_claim): Use current_plugin-\u003eclaim_file.  Call LTO plugin\n\tall_symbols_read handler.  Copy real symbols to plugin_data.\n\tCall LTO plugin cleanup handler.  Clean up for LTO wrapper.\n\t(try_load_plugin): Don\u0027t reuse the previous plugin for LTO\n\twrapper.  Set up GCC LTO wrapper if possible.  Don\u0027t set\n\tplugin_list_iter-\u003eclaim_file.\n\t(bfd_plugin_canonicalize_symtab): Use real LTO symbols if\n\tpossible.\n\t* plugin.h (plugin_data_struct): Add real_bfd, real_nsyms and\n\treal_syms.\n\nld/\n\n\tPR binutils/25355\n\t* testsuite/ld-plugin/lto.exp: Run PR binutils/25355 test.\n\t* testsuite/ld-plugin/pr25355.c: New file.\n\t* testsuite/ld-plugin/pr25355.d: Likewise.\n\t* testsuite/lib/ld-lib.exp (run_cc_link_tests): Support compile\n\tonly dump.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "083b21fbd97847844e98d9c849786548a0f330f0",
      "old_mode": 33188,
      "old_path": "bfd/ChangeLog",
      "new_id": "fef8bc43004ec2c9e9e06c8f859ad0657db6a0a9",
      "new_mode": 33188,
      "new_path": "bfd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "be572969fc04ea4ab36a72e3ebf7b3823c4eb9f6",
      "old_mode": 33188,
      "old_path": "bfd/config.in",
      "new_id": "e1dc0f0c445ba36abe491adb7370527f85b0d4c5",
      "new_mode": 33188,
      "new_path": "bfd/config.in"
    },
    {
      "type": "modify",
      "old_id": "bcc1a4eaf2fa1753d9f58cf0c5128d5e11d0961c",
      "old_mode": 33261,
      "old_path": "bfd/configure",
      "new_id": "cca67ee1080eea3076bb42664880062c8886046f",
      "new_mode": 33261,
      "new_path": "bfd/configure"
    },
    {
      "type": "modify",
      "old_id": "c5bfbd5d129ceb5668cf2af76e0f227cbc5c3846",
      "old_mode": 33188,
      "old_path": "bfd/configure.ac",
      "new_id": "af4d4b8c1354d7e92a5aa235cd5257f5fb854f41",
      "new_mode": 33188,
      "new_path": "bfd/configure.ac"
    },
    {
      "type": "modify",
      "old_id": "537ab603110b88550032cf49d8a7c6a354c3f09a",
      "old_mode": 33188,
      "old_path": "bfd/plugin.c",
      "new_id": "1edcb57bf3a358a6f01d44c756a3a0bac45a6674",
      "new_mode": 33188,
      "new_path": "bfd/plugin.c"
    },
    {
      "type": "modify",
      "old_id": "098bf0845548b6838ba4457203fd693d0bb4afd3",
      "old_mode": 33188,
      "old_path": "bfd/plugin.h",
      "new_id": "05c3573933dc5929a9472e3a104263a52cf33cdd",
      "new_mode": 33188,
      "new_path": "bfd/plugin.h"
    },
    {
      "type": "modify",
      "old_id": "c3b5541b963c3491354d0cd80e7c870480b86cd0",
      "old_mode": 33188,
      "old_path": "ld/ChangeLog",
      "new_id": "57c215fae468976f38458a90d369aa2025863dba",
      "new_mode": 33188,
      "new_path": "ld/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "9b03b7b397730955e10808463c75c259e711f874",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-plugin/lto.exp",
      "new_id": "1b44b0da3fda900518255a18cf9f2a57e8f07841",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-plugin/lto.exp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "99f01fb5c896a8f90bce6dc4cf9cb8ea8ed826a9",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-plugin/pr25355.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "98d10aba1cf78d0b850446c398d26b37cdcbf6a1",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-plugin/pr25355.d"
    },
    {
      "type": "modify",
      "old_id": "08e2d6978af1f45fa647bea3456500468462ef21",
      "old_mode": 33188,
      "old_path": "ld/testsuite/lib/ld-lib.exp",
      "new_id": "015eda6eb971d6f97905bfa0d55880a8f2131245",
      "new_mode": 33188,
      "new_path": "ld/testsuite/lib/ld-lib.exp"
    }
  ]
}
