)]}'
{
  "log": [
    {
      "commit": "2dc801f9fce57c35c00a3366f86bc38fe3e38c25",
      "tree": "6d92e201afc947632ab31b6731c0d15d22c2796f",
      "parents": [
        "099423ba1c68d960888905ce5de093ea8cb7ad39",
        "8da75ab8936b0b7fcf8dd9a3befeb696ee6aa39d"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 12:24:15 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 01 12:24:15 2011 -0700"
      },
      "message": "am 8da75ab8: Ignore property set timeouts.\n\n* commit \u00278da75ab8936b0b7fcf8dd9a3befeb696ee6aa39d\u0027:\n  Ignore property set timeouts.\n"
    },
    {
      "commit": "8da75ab8936b0b7fcf8dd9a3befeb696ee6aa39d",
      "tree": "76423701d05ee17a93ba91da93a113f1f36082c7",
      "parents": [
        "23bc3ff71dffdfec208aee05938e544c7cb3bc37"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 10:53:12 2011 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 10:53:12 2011 -0700"
      },
      "message": "Ignore property set timeouts.\n\nChange-Id: Ic3f6119398368ba047736370336d0260905abd40\n"
    },
    {
      "commit": "099423ba1c68d960888905ce5de093ea8cb7ad39",
      "tree": "39691bf870cd2198d7e8bb47e9a259c7c4bbaf9a",
      "parents": [
        "6d46b09954847b8905507c22e84c39b33425c5bd",
        "23bc3ff71dffdfec208aee05938e544c7cb3bc37"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Mar 30 15:48:11 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 30 15:48:11 2011 -0700"
      },
      "message": "am 23bc3ff7: Don\\\u0027t futex_wait spin when setting properties. Wait for socket close.\n\n* commit \u002723bc3ff71dffdfec208aee05938e544c7cb3bc37\u0027:\n  Don\u0027t futex_wait spin when setting properties. Wait for socket close.\n"
    },
    {
      "commit": "23bc3ff71dffdfec208aee05938e544c7cb3bc37",
      "tree": "270716248216ba150645e4374498a93252698bea",
      "parents": [
        "2f169162462e44d7aa6443e682b15fc756c2e4ad"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Mar 30 13:10:04 2011 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Mar 30 15:28:11 2011 -0700"
      },
      "message": "Don\u0027t futex_wait spin when setting properties. Wait for socket close.\n\nDepends on init change I8dd685ea\n\nBug: 4185486\nChange-Id: I5a2dbc3b7be1759212d4a3988d9033b9b947a1db\n"
    },
    {
      "commit": "0b3c5c50f7bed92282783995bf6a7cc777fa9392",
      "tree": "15889487a34373cb0c7695d68977cdaf8eef11a4",
      "parents": [
        "aa00ec1a2c6fa2bc06bfa16759d99e17a1d0b9b7"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Mar 15 11:02:26 2011 +0900"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Mar 15 23:06:58 2011 -0700"
      },
      "message": "do not merge. Move property setting from libcutils to bionic.\n\nBackport I110b653a58f3\n\nAll the other property stuff is already here.  Property setting was\nonly in libcutils previously to leverage a utility function / constant\nor two.\n\nUnfortunately in the process of fixing a race condition we would\u0027ve\nhad to do break abstraction boundaries and put some libc-internal\ndetails into libcutils so instead of that we\u0027ll just move this\ninto bionic.\n\nAlong with Iee1ca9b7, this now passes:\n\n$ adb shell am instrument -w -e class android.os.SystemPropertiesTest \\\n  com.android.frameworks.coretests.systemproperties/android.test.InstrumentationTestRunner\n\n  Bug: 3511230\n\nChange-Id: I1b588db3344169621e1279ecc0b660cf4e1015d7\n"
    },
    {
      "commit": "ec7e8cc9dddafc624cd28939c1a38ea336c89455",
      "tree": "1bbea89a5334230a64b7e60b3b429f8cbc8d9069",
      "parents": [
        "2bb79ad9b5941ad11b7ccaa8147577cef69524b2"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Mar 15 11:02:26 2011 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Mar 15 11:02:26 2011 +0900"
      },
      "message": "do not merge. Move property setting from libcutils to bionic.\n\nBackport I110b653a58f3\n\nAll the other property stuff is already here.  Property setting was\nonly in libcutils previously to leverage a utility function / constant\nor two.\n\nUnfortunately in the process of fixing a race condition we would\u0027ve\nhad to do break abstraction boundaries and put some libc-internal\ndetails into libcutils so instead of that we\u0027ll just move this\ninto bionic.\n\nAlong with Iee1ca9b7, this now passes:\n\n$ adb shell am instrument -w -e class android.os.SystemPropertiesTest \\\n  com.android.frameworks.coretests.systemproperties/android.test.InstrumentationTestRunner\n\n  Bug: 3511230\n\nChange-Id: I1b588db3344169621e1279ecc0b660cf4e1015d7\n"
    },
    {
      "commit": "f9316d37b462d523438c621f75c47f52a12e4087",
      "tree": "c6a8c3909a5a33116b8efde994b87a524d56721e",
      "parents": [
        "8d1f2e6ffc7230e4000e5352e5798095a1f6d428",
        "08a4ce983ba14cef394e5198c9561349ec7fef44"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Mar 14 11:50:56 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 14 11:50:56 2011 -0700"
      },
      "message": "am 08a4ce98: am 0c398985: Merge \"[ENDIAN] Build md5 code correctly for bigendian targets\"\n\n* commit \u002708a4ce983ba14cef394e5198c9561349ec7fef44\u0027:\n  [ENDIAN] Build md5 code correctly for bigendian targets\n"
    },
    {
      "commit": "865e3789dd222ca2ec4f173f43085851165a0ecb",
      "tree": "c4b5129903b4ccf0bdad19d622406c313b6f3327",
      "parents": [
        "fed58049d50083e4c960d89f4bbd516a181c2d18"
      ],
      "author": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Thu Mar 10 11:13:50 2011 -0800"
      },
      "committer": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Thu Mar 10 11:13:50 2011 -0800"
      },
      "message": "[ENDIAN] Build md5 code correctly for bigendian targets\n\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\n"
    },
    {
      "commit": "81d79f9fb38d9ae8a5711f5774aa5a1516f6cc26",
      "tree": "1f7155f97090e9f31235dca71d44ad7a651ea920",
      "parents": [
        "b6a562e3895c51741748e90d56d822b0a9d36710",
        "962dcb22218a1a6d4ebd05e4fc4a69875d037234"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Mar 10 01:55:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 10 01:55:35 2011 -0800"
      },
      "message": "am 962dcb22: am fed58049: Merge \"libc: Fix PTHREAD_RWLOCK_INITIALIZER\"\n\n* commit \u0027962dcb22218a1a6d4ebd05e4fc4a69875d037234\u0027:\n  libc: Fix PTHREAD_RWLOCK_INITIALIZER\n  Proxy getnameinfo through netd\n  Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n  Convert cname lenght before use\n"
    },
    {
      "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": "4ce737f5df6bda362b45ca2a9d72d0aad2d5a58f",
      "tree": "be509a811429de013b697c183219ccb8c3edafaa",
      "parents": [
        "5b987745668aa39278f7881d6b91caba1c3ec6cf"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Feb 04 14:45:57 2011 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Feb 04 14:49:49 2011 -0800"
      },
      "message": "Added _memmove_words\n\nAdded a memmove() variant for Dalvik\u0027s System.arraycopy()\nimplementation.  It guarantees 16-bit or 32-bit atomicity depending\non the alignment of the arguments.\n\nBug 3398352\n\nChange-Id: Ie7bd246305ef0ff8290513663327c5b81680368d\n"
    },
    {
      "commit": "a37cf34eded8a84227e9cbb53befaf4b58cf60c0",
      "tree": "d4320b08ecd344fba556cf07999ce6709e410d13",
      "parents": [
        "015610e64eb728dd031c6b1730b70460d9d298b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 12:37:26 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 12:37:26 2011 -0800"
      },
      "message": "Bug 3330205 Reentrant MD5\n\nChange-Id: I4c8e4a8f3ef4cdaac50f32d9e55accb16133ab35\n"
    },
    {
      "commit": "5c8c00a95a6cdcd74ac32dadedf0cea2b1661169",
      "tree": "fafdb4a207ac0dad61b0abd831fe2f0f97b7643b",
      "parents": [
        "be5755969d70668bbab0e0c0ed75ebd867189723"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 20 15:58:06 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 20 15:58:06 2010 +0100"
      },
      "message": "libc: Fix the definition of SIGRTMAX\n\nAfter this change, SIGRTMAX will be set to 64 (instead of 32 currently).\nNote that this doesn\u0027t change the fact that our sigset_t is still defined\nas a 32-bit unsigned integer, so most functions that deal with this type\nwon\u0027t support real-time signals though.\n\nChange-Id: Ie1e2f97d646f1664f05a0ac9cac4a43278c3cfa8\n"
    },
    {
      "commit": "72e6fd42421dca80fb2776a9185c186d4a04e5f7",
      "tree": "322fe185cb1e6bee163cb5c99ed5e1d545ae3c33",
      "parents": [
        "6481b91520150e9664a3c4abc5d2aebdce422f93"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Dec 03 18:04:01 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 13:42:54 2010 +0100"
      },
      "message": "\u003csched.h\u003e: Add sched_getcpu() and cpu_set_t\n\nThis adds the cpu_set_t type definition and related functions\nand macros used to handle CPU thread affinity.\n\n  sched_getcpu()\n  sched_setaffinity()\n  sched_getaffinity()\n\nChange-Id: If382ecafde8926341a88478062b275553645065b\n"
    },
    {
      "commit": "6481b91520150e9664a3c4abc5d2aebdce422f93",
      "tree": "8fadb7aadcc6002a7053da60d50b49704423a5f9",
      "parents": [
        "23d24394e72715ddf580726655c8ba3fbcf11bfe"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:23:16 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:25:52 2010 +0100"
      },
      "message": "\u003ctime.h\u003e: Add timegm(), timelocal() and others.\n\nAdd timegm(), timelocal(), time2posix() and posix2time() to the\nC library.\n\nChange-Id: I34d5771ed83dd994870a5ca58a511d01898b1ffb\n"
    },
    {
      "commit": "ff590cadc269aea03d0f66ddec31ba35053cafa9",
      "tree": "bd62acbc2c96636c1887f7fec53cc618b62aff36",
      "parents": [
        "fb76fd5b6148ec082f751e8a04a3bda239651d67"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 04 17:53:06 2010 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 04 17:53:06 2010 -0700"
      },
      "message": "Use a modern chdir(2)-free realpath(3) implementation.\n\n(This is the current OpenBSD implementation.)\n\nBug: 3055824, 2281992\nChange-Id: Iafa8f78e8d6e44c036a547c7210a13d559b7483a\n"
    },
    {
      "commit": "fa8fef9506a8d4cbfcbbdc9821c985038b698380",
      "tree": "cbd224bf51c7a7e7263dbc051eb89a61523069ea",
      "parents": [
        "209cf825932d5caf1e0985cfc75671785c528635",
        "f2c05baac40bceb754ac69a38b83250c3a5aaddd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Oct 25 18:00:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 25 18:00:00 2010 -0700"
      },
      "message": "am f2c05baa: am 96c03c7d: Merge \"Remove duplicated _rand48 implementation. Use stdlib version instead\"\n\nMerge commit \u0027f2c05baac40bceb754ac69a38b83250c3a5aaddd\u0027\n\n* commit \u0027f2c05baac40bceb754ac69a38b83250c3a5aaddd\u0027:\n  Remove duplicated _rand48 implementation. Use stdlib version instead\n"
    },
    {
      "commit": "f2c05baac40bceb754ac69a38b83250c3a5aaddd",
      "tree": "e4f194e23613bc2945edf94d20d38e50f6f02ffc",
      "parents": [
        "f7ad13b0ce5ad2d2f0340c066b09eb8174877739",
        "96c03c7dcc8cad59f2b8f3e6fef6a77a43750756"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Oct 25 17:32:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 25 17:32:13 2010 -0700"
      },
      "message": "am 96c03c7d: Merge \"Remove duplicated _rand48 implementation. Use stdlib version instead\"\n\nMerge commit \u002796c03c7dcc8cad59f2b8f3e6fef6a77a43750756\u0027 into gingerbread-plus-aosp\n\n* commit \u002796c03c7dcc8cad59f2b8f3e6fef6a77a43750756\u0027:\n  Remove duplicated _rand48 implementation. Use stdlib version instead\n"
    },
    {
      "commit": "70478100d5967f528e6514a42f98a76bb85b7e28",
      "tree": "6e84c6ff7099ad5b5e21fb74e917fdcb05c9d49e",
      "parents": [
        "b2061a30da29ee531c16862a5be3566e3b860839"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Mon Sep 27 22:42:28 2010 +0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Oct 25 16:27:47 2010 -0700"
      },
      "message": "Remove duplicated _rand48 implementation. Use stdlib version instead\n\nOriginally, there are _rand48 (in libc/bionic/_rand48.c) and __rand48\n(in libc/stdlib/_rand48.c) implemented in bionic.  Besides the naming,\nthe functionality is identical.  This patch removes the duplicated\n_rand48.  Also, drand48 and erand48 are modified accordingly.\n\nChange-Id: Ie5761a0a97f45df8538222a77edacb7c3e0125d7\n"
    },
    {
      "commit": "209cf825932d5caf1e0985cfc75671785c528635",
      "tree": "487f689c6e6597ee04252a9b113f7c52b594f4aa",
      "parents": [
        "ff44eeef97b6b2ac669da348db657c5d1b2ec81c",
        "f7ad13b0ce5ad2d2f0340c066b09eb8174877739"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Oct 21 13:50:42 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 13:50:42 2010 -0700"
      },
      "message": "am f7ad13b0: am 1df986c2: libc: fix executable destruction support.\n\nMerge commit \u0027f7ad13b0ce5ad2d2f0340c066b09eb8174877739\u0027\n\n* commit \u0027f7ad13b0ce5ad2d2f0340c066b09eb8174877739\u0027:\n  libc: fix executable destruction support.\n"
    },
    {
      "commit": "51a4f7872acbb26a678940c3bc49b9a3d3a516ac",
      "tree": "7186c39e3ee0f8be04981571b1b303310714ae23",
      "parents": [
        "f97ce8cb7b9ccec18471fca5c275581c342cc3cb",
        "001a321897d0f053b87799dafe17a39036b72470"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Oct 21 13:48:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 13:48:17 2010 -0700"
      },
      "message": "am 001a3218: am 4afe0f47: Merge \"time64: make helper functions static\"\n\nMerge commit \u0027001a321897d0f053b87799dafe17a39036b72470\u0027\n\n* commit \u0027001a321897d0f053b87799dafe17a39036b72470\u0027:\n  time64: make helper functions static\n"
    },
    {
      "commit": "f97ce8cb7b9ccec18471fca5c275581c342cc3cb",
      "tree": "fa96ebcaf8620a3ed806e574d540d63778269674",
      "parents": [
        "d3ecb3cd05bb135bf7cd4ab4d1572e2fb9745a8a",
        "6ac5660e1c8fc9934d11ed675771063624ac1b4b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Oct 21 13:48:14 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 13:48:14 2010 -0700"
      },
      "message": "am 6ac5660e: am ade2a929: Merge \"bionic: stubs: Make internal symbol static\"\n\nMerge commit \u00276ac5660e1c8fc9934d11ed675771063624ac1b4b\u0027\n\n* commit \u00276ac5660e1c8fc9934d11ed675771063624ac1b4b\u0027:\n  bionic: stubs: Make internal symbol static\n"
    },
    {
      "commit": "d3ecb3cd05bb135bf7cd4ab4d1572e2fb9745a8a",
      "tree": "f21a4c9abf91228d8e6359a31da19a7d5a84cb26",
      "parents": [
        "51ae972502b2a67f2fddf1cd4b2b46b4299fda99",
        "1203671b47246efd20279a39ab9bd7ea934ae8dc"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Oct 21 13:48:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 13:48:11 2010 -0700"
      },
      "message": "am 1203671b: am 2215c113: Merge \"pthread-timers: Hide internal symbol __timer_table_start_stop\"\n\nMerge commit \u00271203671b47246efd20279a39ab9bd7ea934ae8dc\u0027\n\n* commit \u00271203671b47246efd20279a39ab9bd7ea934ae8dc\u0027:\n  pthread-timers: Hide internal symbol __timer_table_start_stop\n"
    },
    {
      "commit": "d445a2b27588a3e87eec22c38f997f2613c120b8",
      "tree": "ddbea48297023b8c98e1d611040dd0571be1992d",
      "parents": [
        "482358fda727ceab18412d63098db524a46999e8",
        "bcd940444513a24268d5f9c9a6186274cf09c8dd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Oct 21 09:54:38 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 09:54:38 2010 -0700"
      },
      "message": "am bcd94044: am 847223de: Merge \"__set_errno: Hide internal symbol __set_syscall_errno\"\n\nMerge commit \u0027bcd940444513a24268d5f9c9a6186274cf09c8dd\u0027\n\n* commit \u0027bcd940444513a24268d5f9c9a6186274cf09c8dd\u0027:\n  __set_errno: Hide internal symbol __set_syscall_errno\n"
    },
    {
      "commit": "f7ad13b0ce5ad2d2f0340c066b09eb8174877739",
      "tree": "21a0fc62890f7df4b1315fc41f298ce8fd5bcc9e",
      "parents": [
        "aeb41ec103103c37bf4a1700de714d9ff1befe8e",
        "1df986c21ee52c6756846b4a5e45cb316f772112"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Oct 21 09:43:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 09:43:19 2010 -0700"
      },
      "message": "am 1df986c2: libc: fix executable destruction support.\n\nMerge commit \u00271df986c21ee52c6756846b4a5e45cb316f772112\u0027 into gingerbread-plus-aosp\n\n* commit \u00271df986c21ee52c6756846b4a5e45cb316f772112\u0027:\n  libc: fix executable destruction support.\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": "001a321897d0f053b87799dafe17a39036b72470",
      "tree": "a6778eb746195312a1da840932884a26a0075f67",
      "parents": [
        "6ac5660e1c8fc9934d11ed675771063624ac1b4b",
        "4afe0f4724b3d7180d67eae29bfdad5f815857cb"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 20 18:57:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 20 18:57:55 2010 -0700"
      },
      "message": "am 4afe0f47: Merge \"time64: make helper functions static\"\n\nMerge commit \u00274afe0f4724b3d7180d67eae29bfdad5f815857cb\u0027 into gingerbread-plus-aosp\n\n* commit \u00274afe0f4724b3d7180d67eae29bfdad5f815857cb\u0027:\n  time64: make helper functions static\n"
    },
    {
      "commit": "6ac5660e1c8fc9934d11ed675771063624ac1b4b",
      "tree": "6efb7ffd6c2df4dd92b8b618b28d45ad23c36504",
      "parents": [
        "1203671b47246efd20279a39ab9bd7ea934ae8dc",
        "ade2a92991d1c7edc32c4a300bd83d622fa1567d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 20 18:57:53 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 20 18:57:53 2010 -0700"
      },
      "message": "am ade2a929: Merge \"bionic: stubs: Make internal symbol static\"\n\nMerge commit \u0027ade2a92991d1c7edc32c4a300bd83d622fa1567d\u0027 into gingerbread-plus-aosp\n\n* commit \u0027ade2a92991d1c7edc32c4a300bd83d622fa1567d\u0027:\n  bionic: stubs: Make internal symbol static\n"
    },
    {
      "commit": "1203671b47246efd20279a39ab9bd7ea934ae8dc",
      "tree": "e0e75b6a82bdebfd7e727b79a2e538d42337839e",
      "parents": [
        "958214aa998d9378e7d70c7c08ffab4c5f9d3fde",
        "2215c11325d0af07cde67bfee7bafa09ee5556a7"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 20 18:57:51 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 20 18:57:51 2010 -0700"
      },
      "message": "am 2215c113: Merge \"pthread-timers: Hide internal symbol __timer_table_start_stop\"\n\nMerge commit \u00272215c11325d0af07cde67bfee7bafa09ee5556a7\u0027 into gingerbread-plus-aosp\n\n* commit \u00272215c11325d0af07cde67bfee7bafa09ee5556a7\u0027:\n  pthread-timers: Hide internal symbol __timer_table_start_stop\n"
    },
    {
      "commit": "4afe0f4724b3d7180d67eae29bfdad5f815857cb",
      "tree": "f5b9355e650154e8b4d7f27109684467666b06ab",
      "parents": [
        "ade2a92991d1c7edc32c4a300bd83d622fa1567d",
        "8b2707a6a074e64a36ced73b45f5c5fbe774b63b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 20 18:54:17 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Wed Oct 20 18:54:17 2010 -0700"
      },
      "message": "Merge \"time64: make helper functions static\""
    },
    {
      "commit": "ade2a92991d1c7edc32c4a300bd83d622fa1567d",
      "tree": "c4759946128839ebb2d12bdfd192fa97e79a1da4",
      "parents": [
        "2215c11325d0af07cde67bfee7bafa09ee5556a7",
        "c940945155fa8bf92e23bd1e8bd843cc41e9628d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 20 18:52:10 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Wed Oct 20 18:52:10 2010 -0700"
      },
      "message": "Merge \"bionic: stubs: Make internal symbol static\""
    },
    {
      "commit": "2215c11325d0af07cde67bfee7bafa09ee5556a7",
      "tree": "ac0ade7eb712bca092ff0d7a55568fddeff45d6f",
      "parents": [
        "8ad63d745d4ec1edea0bbd04fd0644983ad77bf5",
        "c9a41a69971b10186f0c9947fd9868d4d570884f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 20 18:49:51 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Wed Oct 20 18:49:51 2010 -0700"
      },
      "message": "Merge \"pthread-timers: Hide internal symbol __timer_table_start_stop\""
    },
    {
      "commit": "bcd940444513a24268d5f9c9a6186274cf09c8dd",
      "tree": "a7daab53970fb4ebe91c464871658883934379e0",
      "parents": [
        "d29b8a51a5f95a3f38e5fb812231e12e5a66a865",
        "847223de9ceff6db468a8246792542517a12d39f"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Oct 19 15:22:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 19 15:22:17 2010 -0700"
      },
      "message": "am 847223de: Merge \"__set_errno: Hide internal symbol __set_syscall_errno\"\n\nMerge commit \u0027847223de9ceff6db468a8246792542517a12d39f\u0027 into gingerbread-plus-aosp\n\n* commit \u0027847223de9ceff6db468a8246792542517a12d39f\u0027:\n  __set_errno: Hide internal symbol __set_syscall_errno\n"
    },
    {
      "commit": "cd9c98dfda3e54fd7191e446079295cf4885f24e",
      "tree": "ac7d34ae721185ef5ded8386c09685de9ab1000f",
      "parents": [
        "f67e5211e045af1b12f646448a5a35f96ba5e8f1"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 03:05:25 2010 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 03:07:22 2010 +0800"
      },
      "message": "__set_errno: Hide internal symbol __set_syscall_errno\n\nChange-Id: I21e7ef6bf0bca288069275add43bd53294c0760d\n"
    },
    {
      "commit": "c9a41a69971b10186f0c9947fd9868d4d570884f",
      "tree": "c28e1579f07e8c60f0cc7df9a43d9dac04709bed",
      "parents": [
        "f67e5211e045af1b12f646448a5a35f96ba5e8f1"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 02:27:50 2010 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 02:28:22 2010 +0800"
      },
      "message": "pthread-timers: Hide internal symbol __timer_table_start_stop\n\nChange-Id: If99c5816fe6fa9107aa6bef4697048fabf92283f\n"
    },
    {
      "commit": "c940945155fa8bf92e23bd1e8bd843cc41e9628d",
      "tree": "558eaf16cd1434e6d99580b1b86d4d5f2b1ac2c0",
      "parents": [
        "f67e5211e045af1b12f646448a5a35f96ba5e8f1"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 02:21:14 2010 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 02:23:00 2010 +0800"
      },
      "message": "bionic: stubs: Make internal symbol static\n\nThread-specific state for the stubs functions should not be exposed to\napplications.\n\nChange-Id: I4d35dab6009dab8db7781671ac5cc9b5f6904e84\n"
    },
    {
      "commit": "8b2707a6a074e64a36ced73b45f5c5fbe774b63b",
      "tree": "62f173ce2dca8f8b0b280fa9b07b0032636e914e",
      "parents": [
        "f67e5211e045af1b12f646448a5a35f96ba5e8f1"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 02:15:54 2010 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 02:16:16 2010 +0800"
      },
      "message": "time64: make helper functions static\n\nChange-Id: I98d9a5f736482e52904228c171a1bdefd2f5b213\n"
    },
    {
      "commit": "9d8be5485c366b4f579bef0b88a4c99b899f21e1",
      "tree": "9ffa7d64f6896681d17944af40ed29d3050827fd",
      "parents": [
        "abdb3695b21631ace52123fbe68f86fa4476a4b0"
      ],
      "author": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Tue Oct 05 13:06:06 2010 -0700"
      },
      "committer": {
        "name": "tedbo",
        "email": "tedbo@google.com",
        "time": "Tue Oct 05 13:23:28 2010 -0700"
      },
      "message": "get_malloc_leak_info: Fix assumption that totalMemory out parameter was initialized to zero.\n\nThe get_malloc_leak_info() currently asssumes that the totalMemory out parameter\nwas pre-initialized to zero before the routine is called. If it is not then the\naccumulated totalMemory value will be incorrect. It is likely that many callers\nwill simply allocate totalMemory on the stack with no initialization and assume\nthat get_malloc_leak_info will set the proper value.\n\nAs an example, the caller in frameworks/base/core/jni/android_os_Debug.cpp\ncalls get_malloc_leak_info() with the address uninitiazed stack variable\nfor totalMemory. It is probably best to fix this in get_malloc_leak_info.\n\nChange-Id: I84c927c3781419585794726115b7d34d8fdd24ae\n"
    },
    {
      "commit": "b1c9cc2f2d1b0478b07278cdef885cabf1cd2798",
      "tree": "25c4183bf8bf069e392797ed55d90ff1f4badc50",
      "parents": [
        "8939c1e1cca71151a841f5c1d47ed7004cc14d80"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 23 12:30:12 2010 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 23 12:30:12 2010 -0700"
      },
      "message": "Add memory barriers to pthread_once.\n\nThe implementation was using a double-checked locking approach that\ncould break on SMP.\n\nIn addition to the barriers I also switched to a volatile pointer.  I\ndon\u0027t think this will matter unless gcc can conclude that _normal_lock\ncan\u0027t affect *once_control, but I figured it was better to be safe.\n(It seems to have no impact whatsoever on the generated code.)\n\nBug 3022795.\n\nChange-Id: Ib91da25d57ff5bee4288526e39d457153ef6aacd\n"
    },
    {
      "commit": "6dbfddfe4e76790ee57ddc0a77b64a9457ec08fb",
      "tree": "890be22dd9e267482a48644ed7394bf2c9558b9f",
      "parents": [
        "f3833b67ee4773f2732814efe9e099558167976e",
        "b9e49ad56e5776ace7c6eab2e997d5b7acb16792"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Sep 23 01:43:43 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 23 01:43:43 2010 -0700"
      },
      "message": "am b9e49ad5: Use a recursive lock for pthread_once. DO NOT MERGE.\n\nMerge commit \u0027b9e49ad56e5776ace7c6eab2e997d5b7acb16792\u0027 into gingerbread-plus-aosp\n\n* commit \u0027b9e49ad56e5776ace7c6eab2e997d5b7acb16792\u0027:\n  Use a recursive lock for pthread_once. DO NOT MERGE.\n"
    },
    {
      "commit": "b9e49ad56e5776ace7c6eab2e997d5b7acb16792",
      "tree": "c0e2ba58abab835fb00e89509a8922297038bdcf",
      "parents": [
        "fedbcde6ef552e84bf7ce7598bca7dddf1722d6a"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Sep 22 14:51:53 2010 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Wed Sep 22 14:51:53 2010 -0700"
      },
      "message": "Use a recursive lock for pthread_once. DO NOT MERGE.\n\nBackport change I9fc8b790 from Master to Gingerbread\n\nChange-Id: I5cf48fcd4efb7991ed82f87d9365c19655dc9b7f\n"
    },
    {
      "commit": "e2ac89869f9b459faa22640fb1bb41e818c1dd55",
      "tree": "8f72e69139c7356c05eafe653d98ca6927802ad6",
      "parents": [
        "964a14d0dd494055d14e2b8ee35ed9394b991c28"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 02 13:34:53 2010 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 02 13:34:53 2010 -0700"
      },
      "message": "Add a memory barrier to cond var signaling.\n\nThis adds an explicit memory barrier to condition variable signaling.\nIt\u0027s a little murky as to whether it\u0027s strictly required, but it seems\nlike a wise thing to do.\n\nChange-Id: Id0faa542d61e4b8ffa775e4adf68e4d7471f4fb7\n"
    },
    {
      "commit": "caaf7ecd1c93e03b81bbe3fbf479969d0562de74",
      "tree": "b5d5abc3973fdab50313b102a679fa05d20dad6c",
      "parents": [
        "45fe7a42f8cff24c30e91f3ef3859ed0d435b312",
        "1ff910858c8ae5863761101c673a196a6a16bca3"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 09 19:57:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 09 19:57:25 2010 -0700"
      },
      "message": "am 1ff91085: am 52e7d3d9: Bulletproof leak dump against null hash entries\n\nMerge commit \u00271ff910858c8ae5863761101c673a196a6a16bca3\u0027\n\n* commit \u00271ff910858c8ae5863761101c673a196a6a16bca3\u0027:\n  Bulletproof leak dump against null hash entries\n"
    },
    {
      "commit": "1ff910858c8ae5863761101c673a196a6a16bca3",
      "tree": "0a94c006284f3e9e37c3a4ab29234018eaeb1f62",
      "parents": [
        "91af9e64b5d86dd5925c0fcfdb3f3db5a86aa43c",
        "52e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 09 19:53:32 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 09 19:53:32 2010 -0700"
      },
      "message": "am 52e7d3d9: Bulletproof leak dump against null hash entries\n\nMerge commit \u002752e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba\u0027 into gingerbread-plus-aosp\n\n* commit \u002752e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba\u0027:\n  Bulletproof leak dump against null hash entries\n"
    },
    {
      "commit": "52e7d3d91ab6a5bab77c5dfb1ed47381fd52f9ba",
      "tree": "95fd304d94292f13851cd4590e89a0b6acb3a297",
      "parents": [
        "18c5bcc66a9a7b2178dcdcf04a0716958798ab81"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 09 13:43:46 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 09 13:43:46 2010 -0700"
      },
      "message": "Bulletproof leak dump against null hash entries\n\nPreviously, the malloc leak checking code would crash in qsort()\nif null entries existed in its bookkeeping table.  This change\nmakes the comparison function detect null entries and sort them\nto the end safely.\n\nChange-Id: I88244a7df1e289dd9d7992ce29606d505bd63079\n"
    },
    {
      "commit": "6b9d2d6839fcb6f2049ae67214dbbc711fc399fd",
      "tree": "54ada0f654666110e1e79d879ffefe159426c10f",
      "parents": [
        "cc1a72b280bd82eeaa3081c29ab61ca91a461dd9",
        "6d4d8cb79c5578d33ab17806d67b1e53a730fbc3"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 15:04:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 23 15:04:24 2010 -0700"
      },
      "message": "am 6d4d8cb7: resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp\n\nMerge commit \u00276d4d8cb79c5578d33ab17806d67b1e53a730fbc3\u0027\n\n* commit \u00276d4d8cb79c5578d33ab17806d67b1e53a730fbc3\u0027:\n  Implemented pthread_atfork()\n"
    },
    {
      "commit": "6d4d8cb79c5578d33ab17806d67b1e53a730fbc3",
      "tree": "9642a50962a867b9cf1a37a53e7485bfad00f256",
      "parents": [
        "4e69dfed0b0fe672e366bb84d5c3feaedc61d630",
        "4f086aeb4aa06e13079b7fec71a8178ceeacf318"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 13:53:19 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 13:53:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp\n\nChange-Id: Ice2a6d41a7e9d04eca02e15ed189d648d61b5801\n"
    },
    {
      "commit": "4f086aeb4aa06e13079b7fec71a8178ceeacf318",
      "tree": "a6b0fbce5c6d0f507a244ef4f87ec648b7c35a76",
      "parents": [
        "e73a571fd9b60315681eacbef5857f0f0b1ece18"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Fri Jun 25 14:36:39 2010 -0500"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 13:10:16 2010 -0700"
      },
      "message": "Implemented pthread_atfork()\n\nChange-Id: Ie6c0bf593315d3507b3c4a6c8903a74a1fa053db\n"
    },
    {
      "commit": "fb6907d39c7ffda90049cb73001ade59e7931a64",
      "tree": "30570c8523488eb97cdf9e8863a25cf9da63483b",
      "parents": [
        "4918d4cb0c4b7ea3c6ca8a5e1bc5c85a8a1efba3",
        "0e78f786777a04af498b43564a8d6ed8e15e8940"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 09 10:54:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 09 10:54:06 2010 -0700"
      },
      "message": "am 0e78f786: merge from open-source master\n\nMerge commit \u00270e78f786777a04af498b43564a8d6ed8e15e8940\u0027\n\n* commit \u00270e78f786777a04af498b43564a8d6ed8e15e8940\u0027:\n  Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb\n"
    },
    {
      "commit": "0e78f786777a04af498b43564a8d6ed8e15e8940",
      "tree": "b156d1bf2c5efdcb6af23294baac4161daf5ede4",
      "parents": [
        "611793d6abcf504544d6ebccb8c46da06464b701",
        "fc6d95b10e7629f61013d221cbc1cdbff0190ac0"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 09 10:48:45 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 09 10:48:45 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: Id84ff747889d6f2c15c0510263e32fdfdd18dbed\n"
    },
    {
      "commit": "fc6d95b10e7629f61013d221cbc1cdbff0190ac0",
      "tree": "b8c2c5a7e8518984f695e5c0072f5463713fdece",
      "parents": [
        "16984423bc67cd334d74b585bac2c01e44583624",
        "2bf607d599b703604cb1caf5beeb2e70c44682fb"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 08 15:38:13 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Thu Jul 08 15:38:13 2010 -0700"
      },
      "message": "Merge \"Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb bionic: fix clearenv() compiler warning and related comment typos\""
    },
    {
      "commit": "cf385317417af76f20d2d579da05c0a336691e40",
      "tree": "7120924251469aaac1de571283ca66f90574a89c",
      "parents": [
        "cd122865a53d1b5f9ae7ce46520911a0c02be643",
        "2576abf0eddb86938d85210c96ea220f2d64d4fd"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 02 15:22:19 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 02 15:22:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of 2576abf0 to master\n\nChange-Id: Ibd3ed11f3cc27ff12c0464b0f56d7057be6a7b85\n"
    },
    {
      "commit": "519763265ec0b634bd9c264a0aca034882458ecc",
      "tree": "263dc7f4fa4256869cea19e6ea8a077d29bd95ad",
      "parents": [
        "a02b93bd75a9d156117264d88069566e447397e2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 28 14:10:14 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 02 15:09:57 2010 -0700"
      },
      "message": "libc: Fix sem_post() implementation to wake up all waiting threads.\n\nThis also allows us to optimize the case where we increment an\nuncontended semaphore (no need to call futex_wake() then).\n\nChange-Id: Iad48efe8551dc66dc89d3e3f18c001e5a6c1939f\n"
    },
    {
      "commit": "3b43f87d2949a340e2c19cb735af7727157d8274",
      "tree": "ee57622555c0a91461f86ba7201863665380f0c3",
      "parents": [
        "e8f79c1f5de7ecaf1249ee36813abd2558cacf08"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Jul 01 23:09:28 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Jul 01 23:09:28 2010 -0700"
      },
      "message": "Allow dlclose() to properly call static C++ destructors.\n\nWith this patch _and_ an upcoming build/ patch, the destruction\nof static C++ objects contained in shared libraries will happen\nproperly when dlclose() is called.\n\nNote that this change introduces crtbegin_so.S and crtend_so.S which\nare currently ignored by the build system.\n\n+ move definition of __dso_handle to the right place\n(before that, all shared libraries used the __dso_handle\nglobal variable from the C library).\n\nNote that we keep a \u0027weak\u0027 __dso_handle in aeabi.c to avoid\nbreaking the build until the next patch to build/core/combo/\nappears. We will be able to remove that later.\n\n+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)\n\nNOTE: The NDK will need to be modified to enable this feature in\n         the shared libraries that are generated through it.\n\nChange-Id: I99cd801375bbaef0581175893d1aa0943211b9bc\n"
    },
    {
      "commit": "4e6043a355ccc04b3e931edd7616d35ef5691278",
      "tree": "cbb6044e78c1b4619a4bccee56f257ba6400c18c",
      "parents": [
        "68bcaa4a7b12250d2582fdf59a9e331537e98be0",
        "7d1d98b97e947de22aff4c0b67eec7ae68c822ee"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 29 12:55:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 29 12:55:34 2010 -0700"
      },
      "message": "am 7d1d98b9: am a02b93bd: libc: add sanity checks to pthread_mutex_destroy()\n\nMerge commit \u00277d1d98b97e947de22aff4c0b67eec7ae68c822ee\u0027\n\n* commit \u00277d1d98b97e947de22aff4c0b67eec7ae68c822ee\u0027:\n  libc: add sanity checks to pthread_mutex_destroy()\n"
    },
    {
      "commit": "a02b93bd75a9d156117264d88069566e447397e2",
      "tree": "82f11630b57fc7a9defa24b8e2955a5614275d1c",
      "parents": [
        "0621a279adfb981ea1f0564e7fc8280cda78e043"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 28 14:20:22 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 28 14:20:22 2010 -0700"
      },
      "message": "libc: add sanity checks to pthread_mutex_destroy()\n\nChange-Id: Iddb2204fa792fa9aca5f19838926dddbb09b74a2\n"
    },
    {
      "commit": "ccc3d1eea124cbeb1ec2d711d5892db1dd4445d3",
      "tree": "80cb85b2175fb5da5eb96d980ea7cc91365581c5",
      "parents": [
        "1deef576b37b5951d1274bc63a89843a8c1d6bc4"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jun 28 11:41:16 2010 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Mon Jun 28 11:41:16 2010 -0700"
      },
      "message": "Use a recursive lock for pthread_once.\n\nbug: 2292366\nChange-Id: I9fc8b790dcfcb30ca94a0beb340d43fe5cd6c22e\n"
    },
    {
      "commit": "2bf607d599b703604cb1caf5beeb2e70c44682fb",
      "tree": "5bb144406d077dcea82fd18fc4003a644105b8ec",
      "parents": [
        "e8f79c1f5de7ecaf1249ee36813abd2558cacf08"
      ],
      "author": {
        "name": "Chris Peterson",
        "email": "cpeterso@cpeterso.com",
        "time": "Sun Jun 27 20:53:04 2010 -0700"
      },
      "committer": {
        "name": "Chris Peterson",
        "email": "cpeterso@cpeterso.com",
        "time": "Sun Jun 27 20:53:04 2010 -0700"
      },
      "message": "Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb\nbionic: fix clearenv() compiler warning and related comment typos\n"
    },
    {
      "commit": "50ace4fec5e8cb5afcbc656a4556fa528adfd760",
      "tree": "04647e039a457f69ba48a8301bebdd605fda7fca",
      "parents": [
        "6a9b888d7c4b246f6f66360789c72b754ff85021"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 16 16:36:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 22 17:51:41 2010 -0700"
      },
      "message": "Remove compiler warnings when building Bionic.\n\nAlso add missing declarations to misc. functions.\nFix clearerr() implementation (previous was broken).\nHandle feature test macros like _POSIX_C_SOURCE properly.\n\nChange-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4\n"
    },
    {
      "commit": "6a9b888d7c4b246f6f66360789c72b754ff85021",
      "tree": "d27e4487c13f200d4cfe193f950e25a01efa7743",
      "parents": [
        "6a09cfd9f916e3a60de707ff0806cdeb143d77a4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 18 14:47:22 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 18 16:07:10 2010 -0700"
      },
      "message": "Allow static C++ destructors to be properly called on dlclose().\n\nWith this patch, _and_ an upcoming build/ patch, the destruction\nof static C++ objects contained in shared libraries will happen\nproperly when dlclose() is called.\n\nNote that this change introduces crtbegin_so.S and crtend_so.S which\nare currently ignored by the build system.\n\n+ move definition of __dso_handle to the right place\n  (before that, all shared libraries used the __dso_handle\n   global variable from the C library).\n\n  Note that we keep a \u0027weak\u0027 __dso_handle in aeabi.c to avoid\n  breaking the build until the next patch to build/core/combo/\n  appears. We will be able to remove that later.\n\n+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)\n\nChange-Id: Ie771aa204e3acbdf02fd30ebd4150373a1398f39\nNOTE: The NDK will need to be modified to enable this feature in\n      the shared libraries that are generated through it.\n"
    },
    {
      "commit": "6c8a2f2a5bc8d612ee953f528f2b5eb35983656a",
      "tree": "7dd45d3e3162220578e93a6cb7244b4209b1c7c5",
      "parents": [
        "038fbae518e904c7aba64779714a22dbeeb90887"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jun 10 23:34:24 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 13:49:09 2010 -0700"
      },
      "message": "libc: remove cutils dependencies\n\nWe simply copy the stuff we need from cutils headers.\n\nA future patch will change cutils to include the private \u003cbionic_atomic_inline.h\u003e\n\nChange-Id: Ib6fd9a03bc9e337ce867bd606dc94c2b4438480a\n"
    },
    {
      "commit": "6304d8b21891fd0cb7b5a4c25159a3d3b1709d62",
      "tree": "8ab9c2bf6022f139b7af2eabda11846abf684171",
      "parents": [
        "a8a21488630980c1d2a2152d0ac39bd7978879e2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 02 18:12:12 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 08 17:04:49 2010 -0700"
      },
      "message": "Use private futexes for semaphores, unless they are initialized with pshared !\u003d 0.\n\nChange-Id: I534e36a7171cd37037ae03b910ba71ea6968286d\nNote: previously, sem_init() would return an error if pshared !\u003d 0.\n"
    },
    {
      "commit": "a8a21488630980c1d2a2152d0ac39bd7978879e2",
      "tree": "aa2c3da5f3cfb2eb44933b5126984940b2c02e59",
      "parents": [
        "fcd00ebbdf3e7f4e1e7782a65ae10fb0fc03a1aa",
        "7b6e6fa57240466c2728d553be136f800600dd71"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jun 03 15:05:04 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jun 03 15:05:04 2010 -0700"
      },
      "message": "resolved conflicts for merge of 7b6e6fa5 to kraken\n\nChange-Id: I2b9b80a7fa32c56be2b85ff8be0d6e7ac1848afe\n"
    },
    {
      "commit": "7b6e6fa57240466c2728d553be136f800600dd71",
      "tree": "5744295128fa6b7b03377c8c7ab3c2df5af16cf5",
      "parents": [
        "8e1ee7fd01986825074ececd39e8c2a5ebc907e0",
        "f982f038329f7da7de5853c9d789ab138a4bcf16"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 03 14:39:20 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 03 14:39:20 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: Ib7fc9c6f79f9b13e2175da137005d8968ea85eaf\n"
    },
    {
      "commit": "fcd00ebbdf3e7f4e1e7782a65ae10fb0fc03a1aa",
      "tree": "859e86f36d6bf63ee284c65fff114bbbfdeff38f",
      "parents": [
        "4fdbadde921ec17b4ff9e97fbd41096903b21772"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri May 28 13:31:45 2010 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri May 28 16:12:01 2010 -0700"
      },
      "message": "Atomic/SMP update, part 3.\n\nUpdate ARM atomic ops to use LDREX/STREX.  Stripped out #if 0 chunk.\n\nInsert explicit memory barriers in pthread and semaphore code.\n\nFor bug 2721865.\n\nChange-Id: I0f153b797753a655702d8be41679273d1d5d6ae7\n"
    },
    {
      "commit": "78c1c04ced772298be8bdb5a94b6ce491bb9b3e1",
      "tree": "31881f9114a2e6975f262200685d39141a144013",
      "parents": [
        "1297428e89ead45849068989d334d8b7eae2f602"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Wed May 19 23:17:16 2010 -0300"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Wed May 19 23:17:16 2010 -0300"
      },
      "message": "pthread: introduce pthread_setname_np() as a mean to give names to threads\n\n... so that each cloned process at the kernel level can be named\nindependently. Tools like \u0027top\u0027 can display the CPU/memory statistics\nfor each process\u0027s thread if \"Show Threads\" mode is on.\n\nWith this function in place, we can convert dalvik/Thread.c setThreadName()\nfunction over this function. This feature ought to be provided by the\nunderlying C library and not coded directly in Dalvik.\n\nChange-Id: Ifa997665dbaa114e0b126f8c667708be9a4137fd\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "8a1d2cf1422e35257c160ac5bb12dd3ee481c433",
      "tree": "6307e0ed69c9b22cb49d7702f71d43d1d910e0bf",
      "parents": [
        "8e1ee7fd01986825074ececd39e8c2a5ebc907e0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue May 11 16:39:22 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 19 14:53:18 2010 -0700"
      },
      "message": "Add pthread_rwlock_t implementation to the C library (DO NOT MERGE)\n\nChange-Id: I756d8c26afc37cd7b71117ddbaa02a2cb40fdecb\n"
    },
    {
      "commit": "f450fa5f991af3c0814f96265cb3b2aafdce2309",
      "tree": "1f0e549863606fb8e11215061ad5dde0f37b50cd",
      "parents": [
        "5ef5272be985dfdeafa86077c306f6b64d334240",
        "0be7eda75a14815aaa3e5cd5d5d4e5d25dc35d1c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon May 03 15:33:05 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon May 03 15:33:05 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: If02d33af51017dbd85e91c79ac2e848eda6cf253\n"
    },
    {
      "commit": "0be7eda75a14815aaa3e5cd5d5d4e5d25dc35d1c",
      "tree": "e650cc8dd8a90d8d424f9035798c5f77b9172b22",
      "parents": [
        "716e06071a93d2c8dfbde99ea1dfcb7d2cf93d70",
        "c22da7ed32f8b537b8e4653fd777056e8315ebdf"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Sat May 01 15:31:39 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Sat May 01 15:31:39 2010 -0700"
      },
      "message": "Merge \"Fix log channel initialization at bionic/logd_write.c.\""
    },
    {
      "commit": "5751c54bf1c84ad9b1e23a6909c59431c973deae",
      "tree": "32d6c36cfb0bdbabfc6051344ad1cb23f450eaeb",
      "parents": [
        "c8a850bcd174acf43f951b5b70783cb636418b53"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:03:09 2010 -0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 29 07:37:42 2010 -0700"
      },
      "message": "bionic: add missing NULL check from memory allocation on record_backtrace()\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n\nChange-Id: I739c63c5a7344fff1775580044dc647edf246ebf\n"
    },
    {
      "commit": "95faecefdea0f55edafdba09052a904df7cd2405",
      "tree": "953a43567de93a20f4074a0617292e799f9915ab",
      "parents": [
        "f1cd18bdec3686c072bc10cbf66e671b07fc4fde",
        "350bb359fa5e31e3dfae8be6b1ce7ee3495f0da7"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 08 11:11:53 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 08 11:11:53 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: If77618a329fc7b497c44c2585e644bc50e7e1406\n"
    },
    {
      "commit": "350bb359fa5e31e3dfae8be6b1ce7ee3495f0da7",
      "tree": "7c927a543863b2e55cd920e343918fda1e91e448",
      "parents": [
        "f8916e2e4547da691b1de9149a23b9b254a4f7ad"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:01:05 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Mar 29 21:21:26 2010 -0300"
      },
      "message": "bionic: fix memory leak in get_malloc_leak_info() error path\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "3f6121278194404f89ea7b22f098e9389e954587",
      "tree": "df769c6d2dfa39e91b5fec22bdfc192c173206fd",
      "parents": [
        "4ad72f89b12fe0157074a253190f6aa2cbfe15ac"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sun Mar 28 21:32:36 2010 -0300"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sun Mar 28 21:32:36 2010 -0300"
      },
      "message": "bionic: clear only the part of the buffer which is not overwritten afterward\n\nChange-Id: I5ddd93f0557e5a7401460dc9fc8a55b330a79c3a\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "5207d78c321571b4b5ef3dd405198267a0d940b1",
      "tree": "d68a66aeac566fac1fe085a8728a86df80cfb295",
      "parents": [
        "b5e4a416060aa7f0a1e2a9ad5b8e318d59986852"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Mar 23 05:30:55 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Mar 23 05:30:55 2010 -0700"
      },
      "message": "Fix typo that broke recursive mutexes implementation.\n\nChange-Id: I832901604b487c6a50304c311b5ba135e153530d\n"
    },
    {
      "commit": "b5e4a416060aa7f0a1e2a9ad5b8e318d59986852",
      "tree": "39115a2ef1c6c4084763687a312a67a52c9597c1",
      "parents": [
        "377d4c979dee3dcb5929e8f7a68a53c2407259ab"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Mar 19 17:59:23 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 22 17:31:50 2010 -0700"
      },
      "message": "pthread: Use private futexes by default in condition variables\n\nNow that the system properly uses shared condvars when needed, we\ncan enable the use of private futexes for them too.\n\nChange-Id: Icf8351fc0a2309f764cba45c65bc3af047720cdf\n"
    },
    {
      "commit": "377d4c979dee3dcb5929e8f7a68a53c2407259ab",
      "tree": "1783fe0272f1437faabfe8365e615696eb8d374c",
      "parents": [
        "709a898de82128c065381e258e8e71f0a55df976",
        "1825fb5d5f214849e39d95660795a0d3633f8eeb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 22 15:55:09 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 22 15:55:09 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I70266ee8c520b216773f267e46c8273d2334c31d\n"
    },
    {
      "commit": "88f06cd84a70f8a5212cb03272ec2c7cf0017afa",
      "tree": "4ff0a88177cd5fb2ca9c0e6df9a331cea7ecad1c",
      "parents": [
        "ee7b077abf1d99503b986489ad93374a057cb354"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 17:13:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 17:13:41 2010 -0700"
      },
      "message": "Use private futexes for pthread_mutex_t.\n\nThis does not change the implementation of conditional variables\nsince we\u0027re waiting for other system components to properly use\npthread_condattr_init/setpshared before that.\n\nAlso remove an obsolete x86 source file.\n\nChange-Id: Ia3e3fbac35b87a534fb04d4381c3c66b975bc8f7\n"
    },
    {
      "commit": "1825fb5d5f214849e39d95660795a0d3633f8eeb",
      "tree": "e80791744a8729b3847a731e7729c385f0ab1af3",
      "parents": [
        "c0e464268d381a5575897e6c2de397167d0985db",
        "a28336c73542f5df1c03de4c142070f408e8d5aa"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Thu Mar 18 16:42:49 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Thu Mar 18 16:42:49 2010 -0700"
      },
      "message": "Merge \"bionic: on pthread_join(), avoid extra check in case we find the thread\""
    },
    {
      "commit": "c0e464268d381a5575897e6c2de397167d0985db",
      "tree": "8ca61174ddde4d67944149e55e5a0d32a93fef9c",
      "parents": [
        "e2a8b1fd19fb3a8ead2ba28ddba27be19fa978b5",
        "3b06c128cf2799cec8f7524dc11c4e6c320fe4c7"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Thu Mar 18 16:35:42 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Thu Mar 18 16:35:42 2010 -0700"
      },
      "message": "Merge \"bionic: ftell() returns a long, not an int\""
    },
    {
      "commit": "ee7b077abf1d99503b986489ad93374a057cb354",
      "tree": "2f424373469e9e040312951e59a9627cb17d6a8d",
      "parents": [
        "40e6b822866ee59f7823000384321bb899416cb1"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 14:07:42 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 14:07:42 2010 -0700"
      },
      "message": "Add pthread_condattr_init/destroy/setpshared/getpshared\n\nNote that this does not change the implementation of conditional variables\nwhich still use shared futexes, independent on the flags being selected.\n\nThis will be fixed in a later patch, once our system is modified to use\npthread_condattr_setpshared(attr, PTHREAD_PROCESS_SHARED) properly.\n\nChange-Id: I935de50964cd41f97a13dbfd6626d3407b0406c3\n"
    },
    {
      "commit": "40e6b822866ee59f7823000384321bb899416cb1",
      "tree": "743a554912d9f7efdac1d217c31b0fc49b2fc21f",
      "parents": [
        "8641833b62e3b319796dc80ea16eb1592c05edf6"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Mar 17 11:25:46 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Mar 17 11:25:46 2010 -0700"
      },
      "message": "Fix indentation in pthread mutex implementation.\n\nThis is preliminary work to simplify later changes to support\nprivate futexes.\n\nChange-Id: I06750936a93747a5e3f5a10228cbdc29e39c528c\n"
    },
    {
      "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": "8641833b62e3b319796dc80ea16eb1592c05edf6",
      "tree": "f0b9b778513da0e049ce1b4c706ae5000848d7c1",
      "parents": [
        "ba9c6f0989ae94778ba2b9f597adc827c9dc81e8"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Mar 11 14:47:47 2010 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Mar 11 14:47:47 2010 -0800"
      },
      "message": "Revert \"bionic: pthread: use private futexes by default for mutexes and condvars\"\n\nThis reverts commit ba9c6f0989ae94778ba2b9f597adc827c9dc81e8.\n"
    },
    {
      "commit": "ba9c6f0989ae94778ba2b9f597adc827c9dc81e8",
      "tree": "2376f2a87f6ac304bd93beca7c8139b890a6227f",
      "parents": [
        "1cfbda826ce66e9bd1507a31b7e6df62e0dbcc6e"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Mar 10 16:44:08 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 11 11:48:38 2010 -0800"
      },
      "message": "bionic: pthread: use private futexes by default for mutexes and condvars\n\nPrivate futexes are a recent kernel addition: faster futexes that cannot be\nshared between processes. This patch uses them by default, unless the PROCESS_SHARED\nattribute flag is used when creating a mutex and/or conditional variable.\n\nAlso introduces pthread_condattr_init/destroy/setpshared/getpshared.\n\nChange-Id: I3a0e2116f467072b046524cb5babc00e41057a53\n"
    },
    {
      "commit": "9f6915631b918a56e0e6be958fb14d274cbab322",
      "tree": "5d3b311f885dd053f4b816f69e8961ee21c37938",
      "parents": [
        "bd9a90c443ee4582d2be1a68c6f3a2928d130ce4"
      ],
      "author": {
        "name": "Mike Chan",
        "email": "mike@android.com",
        "time": "Tue Mar 02 10:55:58 2010 -0800"
      },
      "committer": {
        "name": "Mike Chan",
        "email": "mike@android.com",
        "time": "Tue Mar 02 18:18:04 2010 -0800"
      },
      "message": "bonic: libc: cpuacct support for setuid functions\n\nAny of the setuid functions now updates /acct/uid/ with its own tid\nbefore changing users. This is so we can properly account for cpu time\nper uid.\n\nChange-Id: I34186cf4d5228cac8439e582a9e26c01ef3011e4\nSigned-off-by: Mike Chan \u003cmike@android.com\u003e\n"
    },
    {
      "commit": "8f8b5310d2c3fe8782377bd66b65ed14dc6511a4",
      "tree": "1cd0c6e85535467a0ffd973991aef7bccb499473",
      "parents": [
        "1f6f49396335d88c577c16304b1989d0d1468e5c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 01 11:30:40 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 01 11:30:40 2010 -0800"
      },
      "message": "Fix pthread_sigmask() to return correct error values.\n\nBefore that, it returned -1 on error and set errno (not Posix)\nAfter the patch, it returns the error code and leaves errno untouched.\n"
    },
    {
      "commit": "b55462328f7f7468bb8c0cb44ad1069af30415a3",
      "tree": "291cf73e304ef6840de39e4732d0d8488955f22b",
      "parents": [
        "f31fceaae66dcc1f71f930ed8f2a777b80fe415f",
        "75fba6888a1e5738f8255f3511c4ad40cbcc0eda"
      ],
      "author": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Wed Feb 17 13:43:15 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 17 13:43:15 2010 -0800"
      },
      "message": "Merge \"Merge memory checking functionality from sandbox\""
    },
    {
      "commit": "75fba6888a1e5738f8255f3511c4ad40cbcc0eda",
      "tree": "de49c9233770c63324539012655792937875a5c2",
      "parents": [
        "5c734644eebf8d01be1e86cbe20a111a5c5a2738"
      ],
      "author": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Fri Feb 12 08:59:58 2010 -0800"
      },
      "committer": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Tue Feb 16 11:43:18 2010 -0800"
      },
      "message": "Merge memory checking functionality from sandbox\n\nChange-Id: I304c789a752c9f4af4944ca14b9bf1e7644da15a\n"
    },
    {
      "commit": "4f920f685bb4af8400c70383eecf347a35353778",
      "tree": "b48d0f32e745f252a4ad5781e8da60f45415f7de",
      "parents": [
        "294dd0b86b1484aec7549663aff5b19c98a4b7fd"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:50:32 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:50:32 2010 -0800"
      },
      "message": "Fix sem_post() behaviour to wake up multiple waiting threads.\n"
    },
    {
      "commit": "294dd0b86b1484aec7549663aff5b19c98a4b7fd",
      "tree": "9a54351833b806c3f31f0b8400c10bd746938254",
      "parents": [
        "1dcf07a84c93a0095875f2d2087bfe7bfb66a413"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:18:37 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:18:37 2010 -0800"
      },
      "message": "Fix sem_trywait() implementation + update changelog.\n"
    },
    {
      "commit": "1dcf07a84c93a0095875f2d2087bfe7bfb66a413",
      "tree": "21d5731774d25a54186f8e60230e20c99f459de0",
      "parents": [
        "5c734644eebf8d01be1e86cbe20a111a5c5a2738"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 11:35:38 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 11:35:38 2010 -0800"
      },
      "message": "Fix android_id_from_name to accept \"app_0\" as a valid ID.\n\nThis fixes getpwnam and getpwgrp which returned NULL for \"app_0\".\n\"app_0\" corresponds to uid/gid 10000 and is perfectly valid.\n"
    },
    {
      "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": "a28336c73542f5df1c03de4c142070f408e8d5aa",
      "tree": "4e9349481971a8673e098108b5716a23fa59d9b8",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:21:07 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:21:07 2010 -0200"
      },
      "message": "bionic: on pthread_join(), avoid extra check in case we find the thread\n\n... by using similar logic as used in pthread_detach().\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "3b06c128cf2799cec8f7524dc11c4e6c320fe4c7",
      "tree": "ee7eb9bd29a431486eafe775c1101b25e9ec38f6",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:05:52 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Fri Feb 05 16:05:52 2010 -0200"
      },
      "message": "bionic: ftell() returns a long, not an int\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "97cf7f3394780d524038fc083e2c134031b54728",
      "tree": "40b61956bbe4d28babe839c3be40e9f114810e5f",
      "parents": [
        "1a2917ca954f575cc9698c99e54bd93087793c8f"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 22 18:59:05 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jan 25 11:18:30 2010 -0800"
      },
      "message": "Implement clone() C library function properly.\n\nOnly provide an implementation for ARM at the moment, since\nit requires specific assembly fragments (the standard syscall\nstubs cannot be used because the child returns in a different\nstack).\n"
    },
    {
      "commit": "fc10b24accd082fb33c8f92ff8b92481c22fe3dc",
      "tree": "edadb43992d3ff9334ff7e1f257f13073d25ebd6",
      "parents": [
        "8c59d96e243ba1a05d7d9ab7a14d1a00e20bad4a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 13 17:48:34 2010 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 15 16:52:35 2010 -0800"
      },
      "message": "Add implementation of fdprintf, clearenv, and stubs for ttyname_r, *usershell\n\nChange-Id:\tI5fe7e8b6ee5edbb49e707c3b6737a58563781fa3\n"
    },
    {
      "commit": "64ceac3f493e3063a289aec4a12c74787be974e4",
      "tree": "a2a7f59c5dfc56fd11d454e41e9f4e7d6898fcd0",
      "parents": [
        "c29731a491ae96b5cfe8835a7ec23900c773ca7e"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 13 21:19:52 2010 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 15 15:57:02 2010 -0800"
      },
      "message": "Add fts, err, and sys/queue for grep\n\nChange-Id:\tId47514a1812d828e95efa2fab0e9c15c5b682b58\n"
    },
    {
      "commit": "c22da7ed32f8b537b8e4653fd777056e8315ebdf",
      "tree": "9505f7cf6c5329d3f6c80f928b7b84dd5e3c2db2",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "Alexey Tarasov",
        "email": "tarasov@dodologics.com",
        "time": "Thu Dec 03 11:26:22 2009 +1000"
      },
      "committer": {
        "name": "Alexey Tarasov",
        "email": "tarasov@dodologics.com",
        "time": "Thu Dec 03 11:37:22 2009 +1000"
      },
      "message": "Fix log channel initialization at bionic/logd_write.c.\n\nlog_channel_t contains fd member, which is file descriptor for\nexact logging channel. change cc05d1271680d6a7804bc89d3b1fe14c40b32396\nlacks initialization of this member in __write_to_log_init(), thus\nlogging code is not working, although not crashable.\n\nAdditional details may be found in comments here:\nhttp://review.source.android.com/5617\n"
    },
    {
      "commit": "5cdb2b73d269580b66297c84d9395f5f9b62d963",
      "tree": "9319975ceb566a944f32c4ca5e2daead8a19bfa5",
      "parents": [
        "3bbac05726e0d42db333d0578fc9de9f2c5e910d"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Nov 30 17:09:45 2009 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Nov 30 17:09:45 2009 -0800"
      },
      "message": "Fix libc logging implementation.\n\nThe file descriptor wasn\u0027t getting set, so the writev() call was\nsilently failing.\n\nThere\u0027s a parallel implementation over in system/core/liblog, but it\u0027s\nstill using the old approach and didn\u0027t have this problem.\n"
    }
  ],
  "next": "fdfa16776ca8f33f671cbac5dd9fa8bd761e16a8"
}
