)]}'
{
  "log": [
    {
      "commit": "48e1feaa9d7d7f36b5eba25baccd99a56adf9b64",
      "tree": "cebfb3b8bbea895cf8f56246b8c60839cd8c50db",
      "parents": [
        "69d6c2ccd943f43e87445d00e96eb98deb690ea1"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Jan 27 10:23:16 2011 -0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Wed Feb 16 17:50:23 2011 -0800"
      },
      "message": "Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n\nChange-Id: Ia840a19a45257128eccdcf25d105f500f2d90741\nSigned-off-by: H.J. Lu \u003chjl.tools@gmail.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "1df986c21ee52c6756846b4a5e45cb316f772112",
      "tree": "da7effa96dd8e57e1cd718e69b79827d9011038e",
      "parents": [
        "d3f0638aeec0b1daf4d3347386a5e441d5a4bcc4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Oct 21 04:16:50 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Oct 21 04:16:50 2010 +0200"
      },
      "message": "libc: fix executable destruction support.\n\nThis change allows an executable to call its destructor functions\n(declared with __attribute__((destructor))) to be properly called\nwhen it normally exits.\n\nNote that this is different from calling the destructors of a shared\nlibrary when it is unloaded with dlclose() or through program exit,\nwhich are already supported.\n\nBug: 3106500\nChange-Id: I1412ef5407f13b613fc6cb6103e0a691dbee4b1a\n"
    },
    {
      "commit": "b74ceb25aae555570df64fa4d4076272733a9a20",
      "tree": "3bf49e716722b67f4b0f0bcb391156bf29fa6ad0",
      "parents": [
        "e8870ffc965d553a885f63b26e724da279728b72"
      ],
      "author": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Tue Nov 17 14:13:38 2009 -0800"
      },
      "committer": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Wed Nov 18 10:36:25 2009 -0800"
      },
      "message": "Split libc_debug.so into two .so modules loaded on demand from libc.so\n\nThis change is intended to eliminate need to replace libc.so with libc_debug.so in order to enablememory allocation debugging.\nThis is also the first step towards implementing extended memoryallocation debugging using emulator\u0027s capabilities in monitoring memory access.\n"
    },
    {
      "commit": "39f3745cf30efe38482ffead1c32f4e62f6fe32e",
      "tree": "c7ae2dcba7dd282d787961a641720dce723172ea",
      "parents": [
        "b56b5659b3996e98c2060f168d1cff1474e77d2a"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jul 21 15:25:23 2009 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jul 21 15:44:23 2009 -0700"
      },
      "message": "Restore malloc debug.\n\nSome libc changes were preventing the initialization call from being made.\nThe basic problem appears to be that libc_init_common.c is only built once,\nand it\u0027s only built for the non-debug libc.\n"
    },
    {
      "commit": "b56b5659b3996e98c2060f168d1cff1474e77d2a",
      "tree": "11135868d3dc4a731f7288bcb00abdf48c5c7202",
      "parents": [
        "ef0bd1857041ffde069cf52138aaf22c1af7130e"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Jul 18 01:11:10 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Jul 18 01:11:10 2009 +0200"
      },
      "message": "Fix the C library runtime initialization order.\n\nThis allows libc.so to run the C runtime initializer as soon as the\ndynamic linker loads the shared library, i.e. before any other initializers\n(e.g. static C++ constructors in other shared libraries the executable depends\non).\n\nThis also removes the bug where the initializers from the executable itself\nwere run twice: once by the dynamic linker, and another time by __libc_init\nas defined by libc_init_dynamic.c\n"
    },
    {
      "commit": "3a654b1e04d4275ae315cfe1b196998acf10052c",
      "tree": "79ce08ac573c6c5bd7d7a65f7fdc24237c00452a",
      "parents": [
        "03eabfe65e1e2c36f4d26c78a730fa19a3bdada3"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 03 19:32:37 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 03 19:32:37 2009 +0200"
      },
      "message": "Revert \"Fix the C library initialization to avoid calling static C++ constructors twice.\"\n\nThis reverts commit 03eabfe65e1e2c36f4d26c78a730fa19a3bdada3.\n"
    },
    {
      "commit": "03eabfe65e1e2c36f4d26c78a730fa19a3bdada3",
      "tree": "b965ea27e54b0833639227c619f6e35647c92510",
      "parents": [
        "0353195f344666256dba474a15c9ba22cf0cccc9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu May 28 15:54:03 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 02 23:27:44 2009 +0200"
      },
      "message": "Fix the C library initialization to avoid calling static C++ constructors twice.\n\nThe problem was due to the fact that, in the case of dynamic executables,\nthe dynamic linker calls the DT_PREINIT_ARRAY, DT_INIT and DT_INIT_ARRAY\nconstructors when loading shared libraries and dynamic executables,\n*before* calling the executable\u0027s entry point (i.e. arch-$ARCH/bionic/crtbegin_dynamic.c)\nwhich in turns call __libc_init() in libc.so, as defined by bionic/libc_init_dynamic.c\n\nThe latter did call these constructors array again, mistakenly.\n\nThe patch also updates the documentation of many related functions.\n\nAlso adds a new section to linker/README.TXT explaining restrictions on\nC library usage.\n\nThe patch has been tested on a Dream for stability issues with\nproprietary blobs:\n\n- H264 decoding works\n- Camera + Video recording works\n- GPS works\n- Sensors work\n\nThe tests in system/extra/tests/bionic/libc/common/test_static_cpp_mutex.cpp has been\nrun and shows the static C++ constructor being called only once.\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "e5cc1f386b167b9f7bfdebc7219e89aa9b71e4b2",
      "tree": "2cbd43daa6744ed80e833528f8cbfc0c485e5253",
      "parents": [
        "6d6c82c7a0a6b9a89f61b61c66f9b90d9c7177dc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
