)]}'
{
  "log": [
    {
      "commit": "e4ccf5a138a9c6387ee2e4b8e41d628e0a2cc336",
      "tree": "adffd90b54d462c0e48c47c234d16025614a5fec",
      "parents": [
        "2f41531ff9f48dbdaf2ba711e14c669031728e99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 12:06:44 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 12:06:44 2013 -0800"
      },
      "message": "__progname should be const char*, not char*.\n\nChange-Id: I8e846872c30a712fbc05c8da59ffa1cec1be31a4\n"
    },
    {
      "commit": "ab44f52202878cdf2bf22457aeae33ec24089556",
      "tree": "2ae72963003e3ada4cbb19acd73475b4164f515a",
      "parents": [
        "e3dbe1e3820d6ab0370566055e9cdc593c5cce48"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 16:05:09 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 16:05:09 2012 -0700"
      },
      "message": "More upstream NetBSD upgrades.\n\nChange-Id: Idb781d37de3b05585271d7d258ecffd5ba87d0b8\n"
    },
    {
      "commit": "a89864a20b818621a1da10e88fda815334062f9f",
      "tree": "7ebc6e1cf123c0f9d8ab50e775039e183990110b",
      "parents": [
        "d3bf954e9ffbdee8d732ccb6ad6143dc31b605fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:35:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:35:49 2012 -0700"
      },
      "message": "Move non-upstream code into the libc/bionic directory.\n\nI\u0027ll need at least one more pass, because there\u0027s some upstream code\nlurking in libc/bionic, but this is still a step in the right direction.\n\nChange-Id: I55927315972da8327ae01c5240ed587db17e8462\n"
    },
    {
      "commit": "b5f053b5a7deb084e7a052d527e0aa41339ae05c",
      "tree": "a75d6715f7c7c954d22440b8c21c59b01d87e83d",
      "parents": [
        "4a9b7c694a8312160d3cd953a8227c23a1624868"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:17:54 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 15:18:21 2012 -0700"
      },
      "message": "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).\n\nChange-Id: I426109db25e907980d6cb3a7a695796e45783b78\n"
    },
    {
      "commit": "04a83a48ed89f433c78e31106ed50059764797a0",
      "tree": "6629275f2829d31262bc21cd2e2aea9fce4796ff",
      "parents": [
        "449d4634bea0ff8f6b29a2826871279dd654f941"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 16 15:59:12 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 16 15:59:12 2012 -0700"
      },
      "message": "Enhance getcwd(3) to handle NULL like glibc.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d36085\nChange-Id: I960a1b585887eb66176c61d29c5c61c239a4003f\n"
    },
    {
      "commit": "cc213f871bf4c5329eb5eb7a80a0ce9d4a880af8",
      "tree": "614352f0342e88315e758fbf63e35172578f260d",
      "parents": [
        "53493a9b26e9fb665de590abf3502af94eaf3f44"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 14 15:32:42 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 15 15:39:11 2012 -0700"
      },
      "message": "Switch to the current NetBSD regex implementation.\n\nChange-Id: If32b28dd85d6a7ab8957ab81d19fa4c0de9499d5\n"
    },
    {
      "commit": "3d2d448af1b16923f5a329b49bb8e658dbad8a06",
      "tree": "afbfdd1719af181d8bab2a52cabb938ae3a1f425",
      "parents": [
        "b66bc51423a1f3969d0e70e035126ac4c4898b50"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 16:38:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 16:38:29 2012 -0700"
      },
      "message": "Fix nice...\n\n...by switching to the NetBSD implementation.\n\nChange-Id: I562b27b237a24ded95804035cc322c7bff12ff59\n"
    },
    {
      "commit": "abd10011a7a6066df76de7acf5eecb2cc870b0c4",
      "tree": "7e292a489e0deb6ff7b684de45cdacd4d4b8deb8",
      "parents": [
        "0836a7ffb13890558fe568119b023007cce66373"
      ],
      "author": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Thu Aug 09 10:49:32 2012 -0700"
      },
      "committer": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Thu Aug 09 18:51:19 2012 -0700"
      },
      "message": "MIPS support to sigsuspend and sigwait routines\n\nChange-Id: I870e798ed7eac5a8c74e5784a670f3a4f24331a9\n"
    },
    {
      "commit": "387d4b7de9af2afd0c37a895ff9d012eb1f66156",
      "tree": "a515a4be8d2881d734a6b1c2a2e4f1fdd0c43e1d",
      "parents": [
        "709bb0f79ced522e5fb145182472ee4063b85368"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 09 15:17:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 09 16:05:31 2012 -0700"
      },
      "message": "Auto-generate a complete NOTICE file.\n\nRemove the hand-collated ones, and switch to a script that pulls the\ncopyright headers out of every file and collects the unique ones.\n\nChange-Id: Ied3b98b3f56241df97166c410ff81de4e0157c9d\n"
    },
    {
      "commit": "52d6233296ec84eb5b58fcbf7bc9da4b96a943aa",
      "tree": "b0186ce62c2aedc309501f0bfc641a291d91d3e6",
      "parents": [
        "a7916509a3446afd0e863b03e4204cee73e81555"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 17:40:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 17:43:38 2012 -0700"
      },
      "message": "Report errors to the log, not just stderr.\n\nIn particular this affects assert(3) and __cxa_pure_virtual, both of\nwhich have managed to confuse people this week by apparently aborting\nwithout reason. (Because stderr goes nowhere, normally.)\n\nBug: 6852995\nBug: 6840813\nChange-Id: I7f5d17d5ddda439e217b7932096702dc013b9142\n"
    },
    {
      "commit": "00a66a6fe84b13751b86d3e18dc7617e4d1dd0b4",
      "tree": "66df44b3f0e149f6e236a11b53e25166ad50c89e",
      "parents": [
        "c98e2365cdd0c2330711118b689171df143f6399"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Tue Jul 10 11:46:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 17:42:06 2012 -0700"
      },
      "message": "[MIPS] Use an aligned address to provoke SIGSEGV in abort()\n\nChange-Id: I269c9ccc07058773fb0f9d70673673157ab38f6a\n"
    },
    {
      "commit": "a3e230d1fa9a5ed773a029e2acc6eb4f3e849ea3",
      "tree": "6f1dbd761142774dc7bed997d14ec4090c874880",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 02 12:24:42 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 12:30:40 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: Add openat, fix bug\n\nAdd fortify_source support for openat(). This change requires that\nan argument be supplied when using O_CREAT.\n\nFix unnecessary call to __open_2. If, at compile time, we know that\n\"flags\" is constant and DOESN\u0027T contain O_CREAT, the call to __open_2\nis useless.\n\nChange-Id: Ifcd29c4fb25e25656961d7552d672e161f0cfdbd\n"
    },
    {
      "commit": "8118f62a7d3f1af1edb47e0bc2a49af1d523ae0f",
      "tree": "c385eb2c8e0d083fbc9b8715d2f15b3ac0fc6908",
      "parents": [
        "b52e4385c403d18a68309e568ac729c787d900c4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 15:08:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 15:19:12 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add open() checks\n\nAdd a FORTIFY_SOURCE check which requires that you pass a\n\"mode\" argument when calling open(..., O_CREAT). If a mode isn\u0027t\npassed, then the file is created with \"undefined\" permissions.\n\nChange-Id: I4427be4f9ce170c69da01af5b00fb05b03613a28\n"
    },
    {
      "commit": "d0c250271c983c3de282ff02bd2528e74ad8b5f1",
      "tree": "7f8bec490816965d4e4548c9864b7df53d553bb3",
      "parents": [
        "3069270d8641c7bb57aa308d8f90b4d2dcbf66fc",
        "2b89f1e37df838e466d382fc602728930bad4c68"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 13:48:07 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 06 13:48:07 2012 -0700"
      },
      "message": "am 2b89f1e3: Merge \"Fix sysconf(_SC_NPROCESSORS_CONF) on ARM.\"\n\n* commit \u00272b89f1e37df838e466d382fc602728930bad4c68\u0027:\n  Fix sysconf(_SC_NPROCESSORS_CONF) on ARM.\n"
    },
    {
      "commit": "a985076bfe8c89f932fe33be45b887405c4fe7e3",
      "tree": "e46ef556b41c1462c43c4ad506659735e69f7f43",
      "parents": [
        "c2bba24d0a6b906f00d7b9f20ac9d32d63bb2e9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 12:04:38 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 12:04:38 2012 -0700"
      },
      "message": "Fix sysconf(_SC_NPROCESSORS_CONF) on ARM.\n\nBug: http://code.google.com/p/enh/issues/detail?id\u003d33\nChange-Id: I679b4cd888d362031042284e8edf01c5273a92aa\n"
    },
    {
      "commit": "eda7be454d6ff8689392442223335c6558bea932",
      "tree": "0120de8417ec3318c3470726455d21790ac37397",
      "parents": [
        "20bea00090e530f2e6f4d97de4b7cf8031b86a86"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue May 08 13:36:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 14:47:20 2012 -0700"
      },
      "message": "Implement the \"abort\" stub in assembly for ARM.\n\nSo that we can always get the full stack trace regardless of gcc\u0027s handling\nof the \"noreturn\" attribute associated with abort().\n\n(Cherry pick of Id264a5167e7cabbf11515fbc48f5469c527e34d4.)\n\nBug: 6455193\n\nConflicts:\n\n\tlibc/Android.mk\n\nChange-Id: I568fc5303fd1d747075ca933355f914122f94dac\n"
    },
    {
      "commit": "08b51e2c091d036c124259ae59eb7be6bbe346af",
      "tree": "c2ecae1c03f94d025bc3937b8326966f76776a08",
      "parents": [
        "efcf8893a97df2eb2ecb7aab305998878771d2f2"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue May 08 13:36:37 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue May 08 14:39:35 2012 -0700"
      },
      "message": "Implement the \"abort\" stub in assembly for ARM.\n\nSo that we can always get the full stack trace regardless of gcc\u0027s handling\nof the \"noreturn\" attribute associated with abort().\n\n[cherry-picked from master]\n\nBUG:6455193\nChange-Id: I0102355f5bf20e636d3feab9d1424495f38e39e2\n"
    },
    {
      "commit": "8266cf94d399e2bf9f787ac9d6a5ecbfb5af3f5d",
      "tree": "5b26e04c658cd333949cd83388707e6f404b061b",
      "parents": [
        "307d1c982d6be312ef91c12c17a8feeae6b7987b",
        "ff219e57c0ffe5ac2816f79677ce4f1afa677277"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 16 13:15:13 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 16 13:15:13 2012 -0700"
      },
      "message": "am ff219e57: am 6435d27f: Merge \"bionic: fix NULL parameter failure in getcwd()\"\n\n* commit \u0027ff219e57c0ffe5ac2816f79677ce4f1afa677277\u0027:\n  bionic: fix NULL parameter failure in getcwd()\n"
    },
    {
      "commit": "e5bf0681473aa98091c1eec4ea174407b54d7ef0",
      "tree": "85ac53d9a88bee1d941e844b7599cf40ccaddfbb",
      "parents": [
        "6bc18fa58849a4307cf6ddcfd526d9258e8175fc"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Tue Mar 13 18:26:28 2012 +0800"
      },
      "committer": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Mon Apr 16 23:35:05 2012 +0800"
      },
      "message": "bionic: fix NULL parameter failure in getcwd()\n\nLTP: getcwd01 failed in LTP\n\nNeed to check getcwd parameters, otherwise it will lead to\nposix test case to fail.\n\nChange-Id: Ieb673b6dd4ca6481da81c5339dbf7ec0a463f263\nSigned-off-by: Jin Wei \u003cwei.a.jin@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "1ca0b9d158f8d536a777fdb2cef6adadfea9c176",
      "tree": "6bc9967fb1891104da5dcb518bb0625d36e17b69",
      "parents": [
        "16a8fcce9f354b183e1465545baf255a0874ae9a",
        "b8e1e9685efc82d6ac112b9aa316e7f6bf5186ca"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Mar 21 13:51:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 21 13:51:42 2012 -0700"
      },
      "message": "Merge \"bionic: pass MADV_MERGEABLE on private \u0026 anonymous mmaps\""
    },
    {
      "commit": "b8e1e9685efc82d6ac112b9aa316e7f6bf5186ca",
      "tree": "efcb0fbcfd1e3cb904b29d4fe438461c2de1bec8",
      "parents": [
        "2f33c5a8e489fe9ea3fdcc6c8e54cfbb0b7e35fe"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed Mar 21 13:19:51 2012 -0700"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed Mar 21 13:21:33 2012 -0700"
      },
      "message": "bionic: pass MADV_MERGEABLE on private \u0026 anonymous mmaps\n\nChange-Id: I8bc167bb33dec6417fe772172697ea6ff97da2f6\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "d1860ad8ddccc17c31783d08a518380d0f205702",
      "tree": "89425a30d3aa7ff8ad1e653a20c4414c040f2a56",
      "parents": [
        "aac0dc97a9ad91231fa89878e745548d693366c1"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Mar 21 09:46:46 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Mar 21 09:53:05 2012 -0700"
      },
      "message": "fnmatch.c: Update to version in OpenBSD HEAD\n\nUpgrade fnmatch.c from OpenBSD version 1.13 to 1.16.\nThis is needed primarily to address CVE-2011-0419.\n\nThis is a straight copy from upstream\u0027s version at\nhttp://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/gen/fnmatch.c and\nincorporates the following changes:\n\nRevision 1.16:\nNew fnmatch(3) implementation which is not recursive.\nWritten and provided under BSD licence by William A. Rowe Jr.\nOriginally released in Apache APR-1.4.5.\nMerged class matching code from r1.14 and PATH_MAX check from r1.15.\nok miod millert\n\nRevision 1.15:\nPut a limit on recursion during matching, and reject input of size greater\nor equal PATH_MAX. Based on similar fix made in NetBSD.\nok miod@ millert@\n\nRevision 1.14:\nPOSIX character class support for fnmatch(3) and glob(3).  OK deraadt@\n\nVersion 1.14 introduced charclasses.h, which we copy unmodified\nfrom upstream version 1.1.\nhttp://www.openbsd.org/cgi-bin/cvsweb/src/lib/libc/gen/charclass.h\n\nBug: 3435120\nChange-Id: I45133468f0c3d439fd10eb087a1c647799f9d25b\n"
    },
    {
      "commit": "28a7c35feac8d73b94f99493534dad069afe5049",
      "tree": "6c9f36d08271a8870bf1886388bd6c9d1c025bf4",
      "parents": [
        "e30e909363c5c706f394050d9cd00ce222caadbf"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Mon Dec 12 16:17:22 2011 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Sat Jan 14 11:22:36 2012 +0800"
      },
      "message": "execvp: bcopy() is deprecated. Use memcpy() instead\n\nThe function bcopy() is marked as LEGACY in POSIX.1-2001 and removed in\nPOSIX.1-2008. memcpy (POSIX.1-2001) is its recommended replacement.\n\nChange-Id: I2cc0cc4673d1368255afd11132ddbfd3f87b530b\n"
    },
    {
      "commit": "a37f3729730e4e7345977915d67adc3eea93dfe4",
      "tree": "b292c186e3959bdae3a6f558eb7436f75cf01331",
      "parents": [
        "c2d5944e19863bb2d831b13893a3bb78e0d53783"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue Aug 02 06:43:52 2011 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Dec 19 09:38:48 2011 -0800"
      },
      "message": "readdir: fix interface to kernel getdents64 function\n\nIssue:\n  The kernel will pad the entry-\u003ed_reclen in a getdents64 call to a\n  long-word boundary.  For very long records, this could exceed the\n  size of a struct dirent. The mismatch in the size was causing error\n  paranoid checking code in bionic to fail... thus causing an early\n  \"end\" when reading the dirent structures from the kernel buffer.\n\nTest:\n ls\n mkdir abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu\n ls\n\nChange-Id: I75d1f8e45e1655fdd7bac4a08a481d086f28073a\nAuthor: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "7d03c9cbcedb1dc7e3a8210ac0001120558ec6df",
      "tree": "b2ee12be2fee00fae82b89608563a2112a3b9062",
      "parents": [
        "177ba8cb42ed6d232e7c8bcad5e6ee21fc51a0e8"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Fri Oct 21 10:16:11 2011 +0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Wed Dec 07 09:47:20 2011 -0800"
      },
      "message": "pathconf: dead loop in bionic function __2_symlinks\n\nFix dead loops in file ./bionic/libc/unistd/pathconf.c\n\nChange-Id: I7a1e6bcd9879c96bacfd376b88a1f899793295c8\nAuthor: Jin Wei \u003cwei.a.jin@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "3884bfe9661955543ce203c60f9225bbdf33f6bb",
      "tree": "3623958287a5af79d5da2dc15f511d94662da00b",
      "parents": [
        "b8ef90d67950c5d4e04f95c30e164e924f41f70a"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Sat Sep 17 15:22:21 2011 -0700"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Sat Sep 17 15:22:21 2011 -0700"
      },
      "message": "libc: popen: work around data corruption\n\nvfork() would not save the registers that the parent would expect\nto have restored after execl() completed.\nSpecially that execl() would call execve() underneath, further messing\nup the stack of the parent.\nTo avoid that, we fork() for now. Later we will revisit and cleanup\nvfork()+execve() to actually have vfork() store all the register\nthat the parent expects to see, and not those left by execve().\n\nIn the original code, looking at the registers just before the call to\npopen(), and after the call showed that r7 would get clobbered.\nThis would leave the caller with an invalid pointer, leading to all\nkinds of data corruptions.\nexecve() is simpler that execl() in this case.\n\n\nBug: 5336252\nChange-Id: I3bf718c0bb4c0439f6f2753f153cdea14175be9c\n"
    },
    {
      "commit": "6b577759b21ca160d72b1fab6454821b950a05e0",
      "tree": "6d7a4419c6c23829ec4bbfb935bd9d8e67b36c86",
      "parents": [
        "22fc595bfffad0f68d10a1d8fba407473eaa2c06",
        "f2ebd304c3c0822121e6a4d0f542a048a7fc3b20"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 13 14:53:34 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 13 14:53:34 2011 -0700"
      },
      "message": "am f2ebd304: am 57aadbb0: Merge \"enable support for large files (\u003e 2G)\"\n\n* commit \u0027f2ebd304c3c0822121e6a4d0f542a048a7fc3b20\u0027:\n  enable support for large files (\u003e 2G)\n"
    },
    {
      "commit": "f2ebd304c3c0822121e6a4d0f542a048a7fc3b20",
      "tree": "4788833f88f0681f1781d47f9336da9077d69dfd",
      "parents": [
        "b3773e9cc84630fced2117bb57224f0e766c5a26",
        "57aadbb096a118dd33f9f16c67bd18dbb6b92c4a"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon Jul 11 10:46:00 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 11 10:46:00 2011 -0700"
      },
      "message": "am 57aadbb0: Merge \"enable support for large files (\u003e 2G)\"\n\n* commit \u002757aadbb096a118dd33f9f16c67bd18dbb6b92c4a\u0027:\n  enable support for large files (\u003e 2G)\n"
    },
    {
      "commit": "0e1723e684c8781198b0cb500100621d9a25df9c",
      "tree": "014b9947a4ac3980e9fbf6ba3b05057cc84ae7b4",
      "parents": [
        "2f5c6d2d663591b0b5cff9f7e90f58f12a5967eb"
      ],
      "author": {
        "name": "Dragos Tatulea",
        "email": "dragos.tatulea@intel.com",
        "time": "Mon Jul 04 18:37:50 2011 +0300"
      },
      "committer": {
        "name": "DDragos Tatulea",
        "email": "dragos.tatulea@intel.com",
        "time": "Tue Jul 05 15:36:43 2011 +0300"
      },
      "message": "enable support for large files (\u003e 2G)\n\nbionic has an i386 ifdef guard for the O_LARGEFILE flag. The reason for this\nis not traceable in the git history, but it\u0027s most likely due to some old\ntoolchain or emulator problem.\n\nBug Id: 10035\n\nChange-Id: I742ee6e50220276c2cb268d66f89b5655ef689fc\nSigned-off-by: Dragos Tatulea \u003cdragos.tatulea@intel.com\u003e\n"
    },
    {
      "commit": "afc92c702307046f4cd212a65ec27f0c712a72cc",
      "tree": "bb82ae7fcc4e8d76d04fc1dc7610e815054e3741",
      "parents": [
        "8bac1c0dfc0161bba1f96a594adfc278b5d50a8a",
        "c643a4d4c71c2caaf016ab402fba99c1c9377567"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Fri Jun 24 17:16:56 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 24 17:16:56 2011 -0700"
      },
      "message": "am c643a4d4: am 2be3f09f: Merge \"time: Improve C99 compliance\"\n\n* commit \u0027c643a4d4c71c2caaf016ab402fba99c1c9377567\u0027:\n  time: Improve C99 compliance\n"
    },
    {
      "commit": "c643a4d4c71c2caaf016ab402fba99c1c9377567",
      "tree": "fc7e2565f2ab96e7613e8e6f282fee88165021d3",
      "parents": [
        "cd9f1f0b2726fbaac75b47231eb80a91841231f9",
        "2be3f09f2d9b6d35b262f7a6148f51c164bb8cbb"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Thu Jun 23 10:01:11 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 23 10:01:11 2011 -0700"
      },
      "message": "am 2be3f09f: Merge \"time: Improve C99 compliance\"\n\n* commit \u00272be3f09f2d9b6d35b262f7a6148f51c164bb8cbb\u0027:\n  time: Improve C99 compliance\n"
    },
    {
      "commit": "21edf366ea9b5e4dc04c217289fdaf39f08a0060",
      "tree": "22323be22340d19e5d6a74e6b7eb1b9a73ed589a",
      "parents": [
        "4d9b75a9b08c19cef81b22f889edba61257fb356"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jim.huang@linaro.org",
        "time": "Thu Jun 16 22:40:10 2011 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Wed Jun 22 16:44:45 2011 +0800"
      },
      "message": "time: Improve C99 compliance\n\nQuote from Linux Programmer\u0027s Manual:\n  \"If t is non-NULL, the return value is also stored in the memory\n   pointed to by t.\"\n\nChange-Id: I8cb66b67e5f34c536ce2f0db76a6dc337c42ea3f\nSigned-off-by: Jim Huang \u003cjserv@0xlab.org\u003e\n"
    },
    {
      "commit": "2cc2b2be692f1d559a09d2066e56e450249cc9c0",
      "tree": "3391bb270f64051bf1e8c592bbf1dad8c06a5e66",
      "parents": [
        "f8e658cf6b9601e63d4b363ccee83ee4af1a78e4"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Mon Mar 21 20:01:03 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Mon Mar 21 20:01:03 2011 -0700"
      },
      "message": "Add some missing includes.\n\nChange-Id: Ieec623c06bc32ec78334f628af25b00c2bccd2e7\n"
    },
    {
      "commit": "38e53adaddb474d41d1b6282eec38b71b8447d5d",
      "tree": "004cd6c22daa4cd50796282fc5dc850595d57eba",
      "parents": [
        "621bc53339c10e86d92ec89eefbb16af33229774",
        "c59b248241b18492d20e112230a907c14400275b"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Mar 16 11:43:29 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 16 11:43:29 2011 -0700"
      },
      "message": "am c59b2482: am 5a6f593b: Merge \"Use sigemptyset to initialise sigset_t values. sigset_t may not be implemented as an integral type.\"\n\n* commit \u0027c59b248241b18492d20e112230a907c14400275b\u0027:\n  Use sigemptyset to initialise sigset_t values. sigset_t may not be implemented as an integral type.\n"
    },
    {
      "commit": "c1519a52efa2cae96ccc0cb9944a29683a7023a2",
      "tree": "6aa91f86af2e5f1cd04b30fc14752aeee38a0216",
      "parents": [
        "fed58049d50083e4c960d89f4bbd516a181c2d18"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Thu Mar 10 11:12:27 2011 -0800"
      },
      "committer": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Mon Mar 14 12:15:22 2011 -0700"
      },
      "message": "Use sigemptyset to initialise sigset_t values.\nsigset_t may not be implemented as an integral type.\n\nChange-Id: I3f5ec86d6383685979d8d23ef508b6c609569b38\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\n"
    },
    {
      "commit": "5c6a8a6f41120fa74c9a08f70e865c2c0cc9e7e3",
      "tree": "21be6500af532ee68f52913751424a89af000445",
      "parents": [
        "b3cdf7fef86eb17dba5640e9a1b158510326b9b7",
        "84f4753d1b5f89ace0cc89021916f6f5b44e6540"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 21 12:40:07 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 12:40:07 2011 -0800"
      },
      "message": "am 84f4753d: am 56faf66f: raise: Send signal to current thread\n\n* commit \u002784f4753d1b5f89ace0cc89021916f6f5b44e6540\u0027:\n  raise: Send signal to current thread\n"
    },
    {
      "commit": "56faf66fd7a90ea11835f8f0c9a7d6d8b350a09d",
      "tree": "a8064108f7deb59da60863fb26e9a4d8ee64a311",
      "parents": [
        "3c56ce497d1ea3baa6406c49be82c1245fda2443"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 21 11:37:56 2011 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 21 11:39:15 2011 -0800"
      },
      "message": "raise: Send signal to current thread\n\nChange-Id: Ie4318b8ddd01cc2f58f5e07c1d71376953943153\n"
    },
    {
      "commit": "2cc0d38afb4263713f083d4241fb889479f863fc",
      "tree": "86b38b4b4a451c7549c07ccaf256bb5d3691d55a",
      "parents": [
        "eae3fb664ee0e1881c2287b4ff5029da762091fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 09:57:09 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 19 16:14:51 2011 -0800"
      },
      "message": "Bug 3330205, 3362385 clock(3) SMP safety and epoch\n\nChange-Id: Ida1e4400489c8c19818c6af5640ab89942c8f712\n"
    },
    {
      "commit": "95d751feacdb58d3fbc36f3f21a895a3ec2f065b",
      "tree": "fc598e3e60c32a6bb576e224d27f37905769f0e8",
      "parents": [
        "4a7f31fad74417696ce740b1f5c14e4de0740e33"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Dec 16 16:47:14 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Dec 16 17:04:41 2010 +0100"
      },
      "message": "libc: Add ftruncate64 and improve 64-bit parameter syscall handling.\n\nThis patch improves the handling of 64-bit parameters in syscalls on ARM.\nThe ARM EABI mandates that 64-bit quantities be passed in even/odd register\npairs, which requires special treatment.\n\nThis allows us to simplify our implementations of pread() and pwrite()\nand remove the C stubs for pread64() and pwrite64().\n\nAlso add ftruncate64() to \u003cunistd.h\u003e\n\nChange-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef\n\nBug 3107933\n"
    },
    {
      "commit": "ff3129b0fe52fabec273077871cb35515465d44b",
      "tree": "04f4da31b746ffdbc9b3e08eceb6e27976e97173",
      "parents": [
        "abdffc4e23f05d07004eeb46e7c0122204c22a55"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Fri Dec 03 16:48:47 2010 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Dec 09 15:17:28 2010 -0800"
      },
      "message": "sigsetmask.c was not processing the \"mask\" argument.\n\nChange-Id: I79b898ea5b882e8c0564e25466e827a9bedda6e8\nAuthor: yhe19 \u003cyunan.he@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "abdffc4e23f05d07004eeb46e7c0122204c22a55",
      "tree": "d1f0f0b513da7c97a77edc1987f7d45160666c64",
      "parents": [
        "0a0c1edd80a908ad4f972cdbf2e5c71774da87fe"
      ],
      "author": {
        "name": "Yu Shan Emily Lau",
        "email": "yslau@google.com",
        "time": "Thu Dec 09 11:57:42 2010 -0800"
      },
      "committer": {
        "name": "Yu Shan Emily Lau",
        "email": "yslau@google.com",
        "time": "Thu Dec 09 11:57:42 2010 -0800"
      },
      "message": "Revert \"sigsetmask.c was not processing the \"mask\" argument.\"\n\nThis reverts commit 9a9c1619b8124f07fc772c0b700e4d411cd78525.\n"
    },
    {
      "commit": "5d7995be2496fd4288563e26fc5864372dc93cdb",
      "tree": "2ced8cb4589c521bb84a17249ab4f71822b7b2fc",
      "parents": [
        "9962cef7c6ba20bcb4d4f5e6a4c923aa335d9107",
        "b11d7c3eca0e5bc04c14afe82a530429f173706c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Dec 06 16:44:30 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 06 16:44:30 2010 -0800"
      },
      "message": "am b11d7c3e: am bcb0a925: Merge \"sigsetmask.c was not processing the \"mask\" argument.\"\n\n* commit \u0027b11d7c3eca0e5bc04c14afe82a530429f173706c\u0027:\n  sigsetmask.c was not processing the \"mask\" argument.\n"
    },
    {
      "commit": "b11d7c3eca0e5bc04c14afe82a530429f173706c",
      "tree": "30e07f36716f906f028db24a2deac96f6ed9c5b4",
      "parents": [
        "24dc936346b4a31005ac28c4bd464320cca9320a",
        "bcb0a925b0d6d545bbd9a4ebd9ac61bdacbfa2fe"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Dec 06 10:55:14 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 06 10:55:14 2010 -0800"
      },
      "message": "am bcb0a925: Merge \"sigsetmask.c was not processing the \"mask\" argument.\"\n\n* commit \u0027bcb0a925b0d6d545bbd9a4ebd9ac61bdacbfa2fe\u0027:\n  sigsetmask.c was not processing the \"mask\" argument.\n"
    },
    {
      "commit": "9a9c1619b8124f07fc772c0b700e4d411cd78525",
      "tree": "86ac51e29c3332031cea185e39d394e85989132d",
      "parents": [
        "1bc98ccb76c147c46bd666f05247eb11e2847d4b"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Fri Dec 03 16:48:47 2010 -0800"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Fri Dec 03 16:48:47 2010 -0800"
      },
      "message": "sigsetmask.c was not processing the \"mask\" argument.\n\nChange-Id: I79b898ea5b882e8c0564e25466e827a9bedda6e8\nAuthor: yhe19 \u003cyunan.he@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "72e64e08697cc2b3d66397c8b6d34965dd2a7338",
      "tree": "8b2e1e6d6954232282b576d0ea1abfc42cf9b758",
      "parents": [
        "c1974ee144156233c9257aed4bd84a482ec5ffcb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 13:10:49 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 13:14:50 2010 -0800"
      },
      "message": "Add support for pread64/pwrite64\n\n64-bit pread() and pwrite() is needed for ZipFileRO to be able to read\nludicrously large ZIP files just in case someone is crazy enough to do\nit.\n\nAlso fix a license header that was apparently mangled.\n\nChange-Id: I6819ef8b36e46b63b40749c95717b1ecf9307033\n"
    },
    {
      "commit": "168f267723234d3921d6419f0ad36af7e7c965b3",
      "tree": "883adef49cea55eeb65b36560bf79eabc37b6a61",
      "parents": [
        "2410512c4ff29ff9375640261dd7e07fc308930d",
        "ff7d94530db60cf4fe4a4c287ee8821ebdf6263a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Oct 12 01:45:31 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 12 01:45:31 2010 -0700"
      },
      "message": "am ff7d9453: am f67e5211: Merge \"Hide the symbol of helper function __libc_android_abort\"\n\nMerge commit \u0027ff7d94530db60cf4fe4a4c287ee8821ebdf6263a\u0027\n\n* commit \u0027ff7d94530db60cf4fe4a4c287ee8821ebdf6263a\u0027:\n  Hide the symbol of helper function __libc_android_abort\n"
    },
    {
      "commit": "ff7d94530db60cf4fe4a4c287ee8821ebdf6263a",
      "tree": "d96451dc3f2673a4205740c50cb9c8578cd59ad0",
      "parents": [
        "d69ec35bef0d3aa11bfb55501951eed8c3042fda",
        "f67e5211e045af1b12f646448a5a35f96ba5e8f1"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Oct 11 07:27:01 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 11 07:27:01 2010 -0700"
      },
      "message": "am f67e5211: Merge \"Hide the symbol of helper function __libc_android_abort\"\n\nMerge commit \u0027f67e5211e045af1b12f646448a5a35f96ba5e8f1\u0027 into gingerbread-plus-aosp\n\n* commit \u0027f67e5211e045af1b12f646448a5a35f96ba5e8f1\u0027:\n  Hide the symbol of helper function __libc_android_abort\n"
    },
    {
      "commit": "319de1758cca4efcd18be773aba6c0b7e36dcbaf",
      "tree": "70caf979672d77b24188e7952c7fc2e1d81c22d3",
      "parents": [
        "2336503264b9a274d8c05e9d439000a7b1c42858",
        "686af0b3a5978356be3b1a97187c765d63f11623"
      ],
      "author": {
        "name": "repo sync",
        "email": "digit@google.com",
        "time": "Tue Sep 28 12:48:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 28 12:48:34 2010 -0700"
      },
      "message": "am 686af0b3: resolved conflicts for merge of defd1622 to gingerbread-plus-aosp\n\nMerge commit \u0027686af0b3a5978356be3b1a97187c765d63f11623\u0027\n\n* commit \u0027686af0b3a5978356be3b1a97187c765d63f11623\u0027:\n  libc: add \u003csys/eventfd.h\u003e and corresponding implementations.\n"
    },
    {
      "commit": "2336503264b9a274d8c05e9d439000a7b1c42858",
      "tree": "be583c59a27ce10afa5dc020e3c91f8cbd1d41d9",
      "parents": [
        "37c4305633f30eb7c6ced2233a73e66034643413",
        "a511f245614d8e6c7700df624e13a41a084ad7e4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Sep 28 12:48:32 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 28 12:48:32 2010 -0700"
      },
      "message": "am a511f245: am 9973a564: libc: Add missing waitid() implementation.\n\nMerge commit \u0027a511f245614d8e6c7700df624e13a41a084ad7e4\u0027\n\n* commit \u0027a511f245614d8e6c7700df624e13a41a084ad7e4\u0027:\n  libc: Add missing waitid() implementation.\n"
    },
    {
      "commit": "defd162212de3789d2268a1f3339c2a6097fa825",
      "tree": "35242a10fe8453224718e9da6db3b44f58d8aa15",
      "parents": [
        "9973a564222b842eb7497fd6e659fe8c8c49e2b3"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sun Sep 26 22:29:14 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Sep 28 09:20:37 2010 +0200"
      },
      "message": "libc: add \u003csys/eventfd.h\u003e and corresponding implementations.\n\nChange-Id: Ide040884c456190226e580513099fdb8377e015b\n"
    },
    {
      "commit": "9973a564222b842eb7497fd6e659fe8c8c49e2b3",
      "tree": "e1a716e1850f15d9245b82affa0b0e7688b0c782",
      "parents": [
        "a3ae60d343661784e3f6f4566b276d8e6b8a06a7"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Sep 27 17:30:33 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Sep 28 09:18:26 2010 +0200"
      },
      "message": "libc: Add missing waitid() implementation.\n\nChange-Id: I312ee608dbf9249e4886a10d45d13e3cda8a9042\n"
    },
    {
      "commit": "9d16a79b18f43faebbe8155dbc14896e9b7d8a2e",
      "tree": "a97ee2e5c5358a4945322a0dbc594168f80b9bcb",
      "parents": [
        "312be567a03aaf851707a268807ee666b12f8c74"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Mon Sep 27 19:23:06 2010 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Mon Sep 27 22:20:59 2010 +0800"
      },
      "message": "Hide the symbol of helper function __libc_android_abort\n\nIdeally __libc_android_abort would be static, but it could not be\nbecause gcc would not allow calling a static function from an asm\nstatement.  Instead, using GCC visibility is work around.\n\nChange-Id: Ifff6b9957ca3f0fc03c75c3e42582a48d43cefa2\n"
    },
    {
      "commit": "2304a0bf86f224efdd67e38f34c97f35c5cf3c56",
      "tree": "ce28314e9e002cf08826eeb721f3c19e1f8c33f8",
      "parents": [
        "caaf7ecd1c93e03b81bbe3fbf479969d0562de74"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Wed Aug 11 11:28:26 2010 -0500"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Wed Aug 11 11:28:26 2010 -0500"
      },
      "message": "Fix pwrite to take a const void* instead of void* for the buffer.\n\nChange-Id: I10b315946b8f8f7e34825410dfef37e0220edbee\n"
    },
    {
      "commit": "63673645c4da1cf97938d5018d7d373837563174",
      "tree": "adc1ed82a091c2d38b2682a3acbac00b12b46308",
      "parents": [
        "1a48b588c6de8ae43903768adf53b32545f69986"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Aug 06 11:45:43 2010 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri Aug 06 11:47:29 2010 -0700"
      },
      "message": "libc: make lseek64 proto be glibc compatible (loff_t -\u003e off64_t)\n\nChange-Id: Ib79b99be9ca8d4b1f95ceeba416b6abc04187c3c\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "cb7e8c5ef3f5f60a848e469ed40610c8946fe7ac",
      "tree": "57f834d14915d4a63edf62aa0026676064baba8f",
      "parents": [
        "ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 17:19:07 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 17:20:29 2010 -0700"
      },
      "message": "libc: update alarm() implementation to return 0 on error.\n\nThis matches the GLibc behaviour, and allows alarm(0xFFFFFFFF) to return 0.\n\nChange-Id: I419aa71b27d6bb2015d15ba6b6112bf62eadcbb8\n"
    },
    {
      "commit": "ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4",
      "tree": "938dc20fe75d7fcedb7c11c7c44f68aa783463e7",
      "parents": [
        "d466780c7cedb41edcf13f28ad900556c6aaa5b2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 16:52:27 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 16:52:27 2010 -0700"
      },
      "message": "libc: fix fstatfs() implementation.\n\nThe syscall expects the size of the buffer as the second argument.\n\nChange-Id: I99ede2fec7fcd385ca03ff022c2cffa4297bea8d\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": "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": "e8f79c1f5de7ecaf1249ee36813abd2558cacf08",
      "tree": "cabeaa809a3156583c63b4d68329e5ae5cc2f91d",
      "parents": [
        "04ed4a1c888309dc3af3fbeb0a32eb91b3733f23",
        "c6b5cd8d76bdcc046295721d117eae0529aecfc1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 18 11:33:00 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 18 11:33:00 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I408b5705b18d9e93e66bfbfeec0e3baefd618dec\n"
    },
    {
      "commit": "b44fcd6e8f661e7e795212a3b68aa171ab6e49c9",
      "tree": "958e899894cc2cce7cef9a0e3590b6ab76192325",
      "parents": [
        "16c91eff09e13ab62cea4ef5044518264483faeb"
      ],
      "author": {
        "name": "Mikael Ohlson",
        "email": "mikael.ohlson@stericsson.com",
        "time": "Fri May 21 11:20:39 2010 +0200"
      },
      "committer": {
        "name": "Christian Bejram",
        "email": "christian.bejram@stericsson.com",
        "time": "Wed Jun 16 22:02:20 2010 +0000"
      },
      "message": "Fix for incorrect reply from sysconf(_SC_NPROCESSORS_ONLN)\n\nWhen calling sysconf with _SC_NPROCESSORS_ONLN, the value one (1) was\nreturned on systems with two or more cores, since \u0027/proc/stat\u0027 was\nincorrectly parsed.\n\nThe function line_parser_getc (LineParser* p) read 128 characters of\ninput for each invocation.\n\nThe proper and probably aimed for behavior is to read 128 characters\nat the first call, then for each subsequent call only return the next\nbuffered character until a new read is needed and only then read\nanother 128 characters.\n\nDue to a flipped comparison between the two variables in_len and\nin_pos that track the number of bytes of data read into the input\nbuffer and how much of it has been parsed, a new group of 128\ncharacters were read at almost every call to line_parser_getc,\noverwriting the still unhandled bytes from the previous call to\nread. This caused the lines to be read to be sampled more than parsed.\n\nChange-Id: I93eec3c8c9b9f19ef798748579d0977111b5c0bb\n\nSigned-off-by: Christian Bejram \u003cchristian.bejram@stericsson.com\u003e\n"
    },
    {
      "commit": "038fbae518e904c7aba64779714a22dbeeb90887",
      "tree": "713fecf819f653c56c3f8b2bae0e8e86a7afa2e6",
      "parents": [
        "9205fdf8c689a9cb27cfb33aeb58789c7da75788"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 18:15:57 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 18:15:57 2010 -0700"
      },
      "message": "sysconf(): Fix line parser for /proc files.\n\nChange-Id: I2678010ee95933de19c8a8e3b2fe65ceb9b86400\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": "d378c68d74cb4fdac450650fe816c9d649c8edaf",
      "tree": "0d5c15b4606982f26009bdc5c572415ac9dd18d3",
      "parents": [
        "d7ed1ae98249af8a58ce97784a29f048d77789a9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 08 15:13:04 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 08 15:22:13 2010 -0800"
      },
      "message": "Fix spurious DNS lookups in the C library.\n\nThe problem was that the \u0027defdname\u0027 field of res_state structure\nwas not properly initialized in __res_vinit(). This field is used\nto store the default domain name, which is normally build from\ncalling gethostname() (see line 549 of res_init.c).\n\nUnfortunately, in the typical Android case, gethostname() returns\nan error (the hostname is configured) and a random stack string is\nused later to build the DNS search list (see lines 556+ in res_init.c)\n\nFor the sake of illustration, let\u0027s say the search list is set to\na random value like \u0027xWLK\u0027.\n\nThe end result is that when trying to result an unknown domain name\n(e.g. \u0027www.ptn\u0027), the query fails then the resolver tries to make a\nnew query with the DNS search list path(s) appended (e.g. \u0027www.ptn.xWLK\u0027).\n\nThe patch simply initializes \u0027defdname\u0027 to an empty string to avoid\nthis when the net.dns.search system property is not set.\n\nAlso contains whitespace/formatting fixes\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": "e31c1d0b48b4654d3562fc6c9dd648d72356449e",
      "tree": "b777e461f0d2556bc5183a574ef4e67191347c54",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Fri Aug 21 15:45:17 2009 -0500"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Fri Feb 12 16:13:46 2010 -0600"
      },
      "message": "Fix pread()/pwrite() stubs\n\nOn ARM EABI, 64-bit function parameters must be aligned\nto an even/odd register pair.  The weird way these stubs\nwere written (using separate lo/hi parameters) prevented\nthis alignment from being enforced by the compiler.\n"
    },
    {
      "commit": "8c59d96e243ba1a05d7d9ab7a14d1a00e20bad4a",
      "tree": "31e06654cca83d98d5b9b1b60a9623404fed99f1",
      "parents": [
        "64ceac3f493e3063a289aec4a12c74787be974e4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 13 16:39:26 2010 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 15 16:27:04 2010 -0800"
      },
      "message": "Add killpg function\n\nChange-Id:\tI9bc347d264fe38faf2d0f9935d2ebb43a353196e\n"
    },
    {
      "commit": "6458c49c96fd2069a82fa6bb48283b4397087a25",
      "tree": "68fcbb5f16ce4bb500f065129c2cf5297cb59e6f",
      "parents": [
        "0b5db51ea6d9c0b877d2ce26440d963760c38dfe"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 12 12:58:12 2010 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 12 12:58:12 2010 -0800"
      },
      "message": "Fix ptsname_r(3) return type to match glibc\n\nThe gHardy man pages specify the return type of ptsname_r to be char*, but the\nreturn value to be 0 on success, negative on error and the gHardy stdlib.h\ndefines extern int ptsname_r(...).\n\nBusybox telnetd fails to run successfully without this change.\n"
    },
    {
      "commit": "99d7907611725e23b6fad3ae7acff4926504e687",
      "tree": "74eb2d8ded9708c4768aab30022cc6307bc39c1e",
      "parents": [
        "278d960aae1b2f0b8a3fa0c8056ba4aded96b133"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 14 17:07:19 2009 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 14 17:07:19 2009 -0800"
      },
      "message": "Fix usleep(3) return type to be POSIX-compliant.\n\nPOSIX usleep(3) returns 0 on successful completion, -1 otherwise:\n  http://www.opengroup.org/onlinepubs/007908799/xsh/usleep.html\n\nThis was found by an external user porting native code:\n  http://groups.google.com/group/android-porting/browse_thread/thread/674848f001db0292\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": "83362689f5b1f6393d376d242fe29541b63ead2d",
      "tree": "729a4fc7fd44630738510d1477e968cb7ec0fa3f",
      "parents": [
        "ecac54db21256952b4b4a9c6f17604ec31743183",
        "ad13c57298e57d33c130fb03a2c6494da573408c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 08:04:48 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 08:04:48 2009 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "92b10af793da235659198cf38ff2e0237c181058",
      "tree": "66d35bbe34224575dfbf0fde15ec29e424a87ccc",
      "parents": [
        "10093276e98d26428875480c502a278dffe550c7"
      ],
      "author": {
        "name": "Thorsten Glaser",
        "email": "tg@mirbsd.org",
        "time": "Fri Oct 02 15:39:00 2009 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Nov 05 15:50:05 2009 -0800"
      },
      "message": "Add the BSD sys_signame array.\n\nSigned-off-by: Thorsten Glaser \u003ctg@mirbsd.org\u003e\n"
    },
    {
      "commit": "b63e4e88b0d13afa431864190b3515a549c16d85",
      "tree": "849f6641a5662202d4b9b596663c981fda5ea541",
      "parents": [
        "73981476a389847e8537cca37503c43e107fadc9",
        "5f32207a3db0bea3ca1c7f4b2b563c11b895f276"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Oct 16 07:28:34 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 07:28:34 2009 -0700"
      },
      "message": "am 5f32207a: Wrap ARM abort() to improve stack trace.\n\nMerge commit \u00275f32207a3db0bea3ca1c7f4b2b563c11b895f276\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00275f32207a3db0bea3ca1c7f4b2b563c11b895f276\u0027:\n  Wrap ARM abort() to improve stack trace.\n"
    },
    {
      "commit": "5f32207a3db0bea3ca1c7f4b2b563c11b895f276",
      "tree": "a9a966a87f56d00f0682a66ae8451bcd6d8c2dd4",
      "parents": [
        "5c32826841460294cfba98ff713b4804512bacd1"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Oct 15 16:07:43 2009 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Oct 15 16:29:22 2009 -0700"
      },
      "message": "Wrap ARM abort() to improve stack trace.\n\nThe code generated for Thumb and Thumb2 targets has different handling\nfor abort().  Because abort() is \"noreturn\", it doesn\u0027t need to preserve\nthe callee-save registers.  The Thumb2 version trashes LR and makes it\nimpossible to figure out who called abort().\n\nThis inserts a trivial stub function; net effect is stack traces are\nreasonable after an abort().\n\nFor bug 2191452.\n"
    },
    {
      "commit": "73981476a389847e8537cca37503c43e107fadc9",
      "tree": "a60ed9cc386c36ef6937974e0a729c5d429c57b5",
      "parents": [
        "60c221ccfaf67bdd9cadfd151d0bad9d3f8482ce",
        "4e30c09e57a0351daff70f6657794569445be21c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 14 08:18:23 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 14 08:18:23 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "e36502673d98df089acbc645f077ee0c2be20c5d",
      "tree": "14c5fa566500510d0b37fd1cb6da35c6153ad4d7",
      "parents": [
        "fdc5c1f56f9d21034badb8e4b092c47098f19613"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 15:35:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 16:02:12 2009 -0700"
      },
      "message": "fix [2170898] abort() doesn\u0027t print a stack tarce\n\nthe issue here is that abort() can be called from anywhere, in particular\nfrom malloc or free. When we try to use the debug_log functions, these\ncan end up calling into some code (like malloc/free) that called abort()\nin the first place and end up in an infinite recursion loop.\n"
    },
    {
      "commit": "336efb5267e465ac52d78327d37f79553b3f0584",
      "tree": "5113da0deda9f253fd6964e129132b8a2fb8545e",
      "parents": [
        "90ec5f2a3f581927ffef55733e8d531890fdc90e"
      ],
      "author": {
        "name": "Tony Sim",
        "email": "sim.chinyeow@renesas.com",
        "time": "Wed Jul 01 15:35:27 2009 +0900"
      },
      "committer": {
        "name": "Tony Sim",
        "email": "sim.chinyeow@renesas.com",
        "time": "Wed Jul 01 15:35:27 2009 +0900"
      },
      "message": "added syscalls for SuperH which automatically generate by gensyscalls.py\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": "7d9dcdc82a871926e5e3a27143908fa3f4181b5f",
      "tree": "9f06bfedddae069d0388739f5f2779472da5dc7f",
      "parents": [
        "6f04a0f4c72acff80dad04828cb69ef67fa609d1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 20 07:38:28 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 20 07:38:28 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@132569\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"
    }
  ]
}
