)]}'
{
  "log": [
    {
      "commit": "a9c41a8e0a62f70a37f7040740a9b1ef06a66612",
      "tree": "6cb6780bb885e4431d7fc16d9a651cbea2fe4cf4",
      "parents": [
        "3f192f55f06610a4aff8ce88548cfa4d1607f0e3",
        "291100c795fc98f4a1320e7de0dbef2615cd8fb9"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Tue Mar 16 17:26:44 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Tue Mar 16 17:26:44 2010 -0700"
      },
      "message": "Merge \"bionic: remove unneeded variable from chk_realloc()\""
    },
    {
      "commit": "699237baf54af3395311ad71ebedce20745c4cb2",
      "tree": "fc04a8463951028e8ebd95401f59dd7da32f001a",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 17:48:07 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 17:48:07 2010 -0200"
      },
      "message": "bionic: equalize the \u003cunknown\u003e program name between ssp.c and libc_init_common.c\n\n... for the consistency sake.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "291100c795fc98f4a1320e7de0dbef2615cd8fb9",
      "tree": "5600a5c95c98ab0e80442f90d65a060fa5b843f9",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:32:56 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:32:56 2010 -0200"
      },
      "message": "bionic: remove unneeded variable from chk_realloc()\n\n... and simplify the generated code.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "95604529ec25fe7923ba88312c590f38aa5e3d9e",
      "tree": "c6f1dd860fcdc273ab21b696778987261f6e4fa8",
      "parents": [
        "71c0aeb44f2301af85d6a370dbd7308602a1dfe0",
        "194d3fa048cf909ca592dd56fa538dc9cd3f5ddb"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 15 12:05:31 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 15 12:05:31 2009 -0800"
      },
      "message": "merge from eclair\n"
    },
    {
      "commit": "194d3fa048cf909ca592dd56fa538dc9cd3f5ddb",
      "tree": "3a00bb9e267cf952d7d1140ff9a39ca07ee6c994",
      "parents": [
        "fde8642fc43bdd224e43e5ee9583a49a758fb03c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 12 18:45:14 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 12 18:45:14 2009 -0800"
      },
      "message": "eclair snapshot\n"
    },
    {
      "commit": "a4e67f4512e2609c13a67d569bff14001413a042",
      "tree": "6e25ea92c5d2d407068b088ca9e46e9ad2ffb9b5",
      "parents": [
        "76ec6891e2bc18c9e12cd2f567358bb817b24cff"
      ],
      "author": {
        "name": "Matthieu CASTET",
        "email": "matthieu.castet@gmail.com",
        "time": "Sat Dec 27 00:04:10 2008 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Sep 14 09:19:42 2009 -0700"
      },
      "message": "Remove code duplication for pthread_cond_timeout_np : use __pthread_cond_timedwait_relative helper\n"
    },
    {
      "commit": "cc05d1271680d6a7804bc89d3b1fe14c40b32396",
      "tree": "9f243790eb257187c67d65b5dd025e75d2b8c81e",
      "parents": [
        "8f53951b054d5d8267f4550a4bc726e09e66fc2d"
      ],
      "author": {
        "name": "Alexey Tarasov",
        "email": "tarasov@dodologics.com",
        "time": "Sat Dec 13 08:24:44 2008 +1000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 25 10:27:26 2009 -0700"
      },
      "message": "Changed logging functions in bionic/logd_write.c.\n\nMain differences from original code:\n1. now log channel for LOG_ID_MAIN may exist even if LOG_ID_RADIO\n   facility failed.\n2. __write_to_log_null() now acts as always successful function.\n3. it\u0027s more simplier to add new logging channels now\n\nammended commit fixes my typo on line 130\n"
    },
    {
      "commit": "bb08537104e8a753deb6109b5fb696882c59be84",
      "tree": "fd0426153624dc89df67c7b28a149fc99430aa33",
      "parents": [
        "c1e553a9cfe14dc0f4aea9784553a178bfe74acc",
        "f30dae9cf452e4308a34450b2a48eb6602936976"
      ],
      "author": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Aug 07 16:43:33 2009 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Aug 07 16:43:33 2009 -0700"
      },
      "message": "Merge change 10057\n\n* changes:\n  Add mspace_merge_objects\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": "c4eee3765bf9dd81ff055e70ff7daa83a3926d2a",
      "tree": "fca5f9156dba6f7a3278699da9665c138c08f816",
      "parents": [
        "6ee8f1b0444c0db94931d2cd64427ded8fba38b0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 08 14:22:41 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 10 00:32:08 2009 +0200"
      },
      "message": "Prevent a crash in the memory leak checker (which happened in chk_free())\n\nSimplify the code a little, removing un-necessary mutex locks/unlocks.\nProvide slightly better diagnostic message in case of corruption.\nUse snprintf/strlcat instead of sprintf/strcat\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": "f30dae9cf452e4308a34450b2a48eb6602936976",
      "tree": "bc018510b61563dbd2f4479ce9a21d98d2abe251",
      "parents": [
        "90ec5f2a3f581927ffef55733e8d531890fdc90e"
      ],
      "author": {
        "name": "Barry Hayes",
        "email": "bhayes@google.com",
        "time": "Tue May 26 10:33:04 2009 -0700"
      },
      "committer": {
        "name": "Barry Hayes",
        "email": "bhayes@google.com",
        "time": "Tue Jun 02 14:48:59 2009 -0700"
      },
      "message": "Add mspace_merge_objects\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": "0ba91ed3ca9e7340a2c55303034c3378967e2327",
      "tree": "a0d9e37c871decea29efca95bd0b6c292b4bfa93",
      "parents": [
        "8169573c8744ee3a484ea74bd5e06a8a4f708e37"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed May 20 11:42:52 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed May 20 11:42:52 2009 +0200"
      },
      "message": "Fix __eabi_atexit() implementation, as well as a bug in the BSD-originated __cxa_finalize() implementation\nThis patch uses \"#if ANDROID\" instead of \"#if 1\" in the __cxa_finalize() fix\n"
    },
    {
      "commit": "d386afcc41e92c96778d9b1a498199f48fa2d4aa",
      "tree": "899fb5159aa103e66597c9b468db4b5cddddbccc",
      "parents": [
        "3e16f84fcad103c97a2df4a58948835277043569"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri May 15 02:11:12 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri May 15 02:11:12 2009 +0200"
      },
      "message": "revert to previous implementation of __aeabi_atexit() since the new one seems to crash a static ICU String destructor.\nI don\u0027t have the time to investigate why right now, so a revert is preferred. Damn...\n"
    },
    {
      "commit": "3e16f84fcad103c97a2df4a58948835277043569",
      "tree": "e959184f911b2d3cf6aa2b0d183179ea13996188",
      "parents": [
        "d1b40d8c69dfca94185ea9231f6cb16f70c02e39"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu May 14 14:25:26 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu May 14 14:25:26 2009 +0200"
      },
      "message": "Fix __aeabi_atexit to call __cxa_atexit properly. This function is defined by the C++ ABI for ARM document.\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": "a799b53f10e5a6fd51fef4436cfb7ec99836a516",
      "tree": "9f06bfedddae069d0388739f5f2779472da5dc7f",
      "parents": [
        "fe5745033a4f397c62a4e00efd9257ac9f83755c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:03:51 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:03:51 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@132589\n"
    },
    {
      "commit": "fe5745033a4f397c62a4e00efd9257ac9f83755c",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "7d9dcdc82a871926e5e3a27143908fa3f4181b5f"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:14 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:14 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@137055\n"
    },
    {
      "commit": "6f04a0f4c72acff80dad04828cb69ef67fa609d1",
      "tree": "915db7d93cb742f72b5d3819e69f48cb29c40a15",
      "parents": [
        "2489551343aa89fc539f369f7689c941b78c08d1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:29 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:29 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@132276\n"
    },
    {
      "commit": "2489551343aa89fc539f369f7689c941b78c08d1",
      "tree": "877da859f88254d7f2ba709801bd57fd00f77dc5",
      "parents": [
        "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:48 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:48 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@131421\n"
    },
    {
      "commit": "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e",
      "tree": "c06064fc9022ef63a40f83a91292103784f49780",
      "parents": [
        "d37527501c85edcb3a6a7c8a0b6297d52d434897"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "d37527501c85edcb3a6a7c8a0b6297d52d434897",
      "tree": "f005d945ce90569b8e63cf42294ab42dddab52c2",
      "parents": [
        "e5cc1f386b167b9f7bfdebc7219e89aa9b71e4b2"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jan 20 14:03:55 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jan 20 14:03:55 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@127101\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": "4e468ed2eb86a2406e14f1eca82072ee501d05fd",
      "tree": "4e05b3c66eef86531e464521a3bf96a1864d4bf5",
      "parents": [
        "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\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"
    }
  ]
}
