)]}'
{
  "commit": "e26110cfc67d48331a76e9b1e6f7fed7569e1ab3",
  "tree": "9ac70ad405cdf18189017345ee184f268510db3b",
  "parents": [
    "17969268f5938ae1d7f3dedbd73e507badb6146d"
  ],
  "author": {
    "name": "Fam Zheng",
    "email": "famz@redhat.com",
    "time": "Mon Feb 10 14:48:57 2014 +0800"
  },
  "committer": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Thu Feb 20 13:14:18 2014 +0100"
  },
  "message": "module: implement module loading\n\nThis patch adds loading, stamp checking and initialization of modules.\n\nThe init function of dynamic module is no longer directly called as\n__attribute__((constructor)) in static linked version, it is called\nonly after passed the checking of presense of stamp symbol:\n\n    qemu_stamp_$RELEASEHASH\n\nwhere $RELEASEHASH is generated by hashing version strings and content\nof configure script.\n\nWith this, modules built from a different tree/version/configure will\nnot be loaded.\n\nThe module loading code requires gmodule-2.0.\n\nModules are searched under\n - CONFIG_MODDIR\n - executable folder (to allow running qemu-{img,io} in the build\n   directory)\n - ../ of executable folder (to allow running system emulator in the\n   build directory)\n\nModules are linked under their subdir respectively, then copied to top\nlevel of build directory for above convinience, e.g.:\n    $(BUILD_DIR)/block/curl.so -\u003e $(BUILD_DIR)/block-curl.so\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Fam Zheng \u003cfamz@redhat.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9d5311783286ff9db303bbbef8637eed5f9531f4",
      "old_mode": 33188,
      "old_path": "Makefile",
      "new_id": "07d1ed7d835be3e39186b6da6a379a7e90bdca5d",
      "new_mode": 33188,
      "new_path": "Makefile"
    },
    {
      "type": "modify",
      "old_id": "e3bc04eb196a2536e9522d7216ac6422ae09b06c",
      "old_mode": 33261,
      "old_path": "configure",
      "new_id": "136a8f0b1bae18f9b2efd03ed4089ce5c2a0720b",
      "new_mode": 33261,
      "new_path": "configure"
    },
    {
      "type": "modify",
      "old_id": "c4ccd5716640070649ed5638107273e9933cb06e",
      "old_mode": 33188,
      "old_path": "include/qemu/module.h",
      "new_id": "72d94984a2a0fc382fc36990b212723a43708bed",
      "new_mode": 33188,
      "new_path": "include/qemu/module.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "50c67500b11378bf29118cb1680e819aaa14946b",
      "new_mode": 33188,
      "new_path": "module-common.c"
    },
    {
      "type": "modify",
      "old_id": "0abf3d1f36f16be4547dd3d6cc9a3622e0115c62",
      "old_mode": 33188,
      "old_path": "rules.mak",
      "new_id": "9dda9f760f76c2c33e99a542fe6f93ffbee91c61",
      "new_mode": 33188,
      "new_path": "rules.mak"
    },
    {
      "type": "modify",
      "old_id": "06f5316d9d43b08c6f6dbb3ee724374843e3367e",
      "old_mode": 33261,
      "old_path": "scripts/create_config",
      "new_id": "546f889144738da467b0f3a216e28a7607cc8c70",
      "new_mode": 33261,
      "new_path": "scripts/create_config"
    },
    {
      "type": "modify",
      "old_id": "7acc33d076a613f103aba23dbb889be154a2f4d2",
      "old_mode": 33188,
      "old_path": "util/module.c",
      "new_id": "42bc3732c931457d1e70ad3c8398778d001e2864",
      "new_mode": 33188,
      "new_path": "util/module.c"
    }
  ]
}
