)]}'
{
  "log": [
    {
      "commit": "6b3f49a5374305ce9690c3c5ca2aadc90f54c521",
      "tree": "7dcd0542e0e59e974bb6aae6a2c861e38f7d5dd1",
      "parents": [
        "db794197cc880e3805bcefbea780476a359066c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 16:20:55 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 16:20:55 2013 -0800"
      },
      "message": "Upgrade to current NetBSD popen/pclose.\n\nThis gets us back to using vfork now our ARM vfork assembler stub is\nfixed, and adds the missing thread safety for the \u0027pidlist\u0027.\n\nBug: 5335385\nChange-Id: Ib08bfa65b2cb9fa695717aae629ea14816bf988d\n"
    },
    {
      "commit": "f0777843c03deb26b1f78c8edd17c557041696e9",
      "tree": "c6daa38f29aa9a327b094eda31340251fdedef11",
      "parents": [
        "c5c6cb3f13642386e08acf687b4bc39f568bad0c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 01 16:59:46 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 01 17:11:39 2013 -0800"
      },
      "message": "Move realpath.c to upstream-freebsd.\n\nThis is actually a slightly newer upstream version than the one I\noriginally pulled. Hopefully now it\u0027s in upstream-freebsd it will\nbe easier to track upstream, though I still need to sit down and\nwrite the necessary scripts at some point.\n\nBug: 5110679\nChange-Id: I87e563f0f95aa8e68b45578e2a8f448bbf827a33\n"
    },
    {
      "commit": "e255642dc1178663860104d9da2590056fae8d0b",
      "tree": "b3e37a52ccb3f6ee74750976cfbab0faedbc8fb5",
      "parents": [
        "f5f906c184677b8295523231cfeead9ed94661ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 28 10:51:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 28 10:51:31 2013 -0800"
      },
      "message": "Avoid changing the C++ ABI with ssize_t.\n\nBug: 8253769\nChange-Id: Ia325003ed6e59da553e2bdde7c43515bc191b8ba\n"
    },
    {
      "commit": "fae89fc4042ee4c360842234dfda7831c313bd44",
      "tree": "aa35c41ee98aad9b065591a5497515163534e956",
      "parents": [
        "ccd403161cdcc88a0ffcaecd1bc707e2d4c88a1c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 11:22:23 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 11:22:23 2013 -0800"
      },
      "message": "Fix raise(3) so it works in signal handlers.\n\nWe could special-case raise(3) in non-threaded programs, but the more\nconservative course is to make pthread_kill(3) work in signal handlers\nat the cost of a race shared by other C libraries.\n\nChange-Id: I59fb23d03bdabf403435e731704b33acdf3e0234\n"
    },
    {
      "commit": "c641cafbc387849510d7f408e85f72fa3608916d",
      "tree": "102909efb095eaa603f94de0617720b5364875b9",
      "parents": [
        "593abb7b593a34d501c90512953a7368add6d185"
      ],
      "author": {
        "name": "Thorsten Glaser",
        "email": "tg@mirbsd.org",
        "time": "Sun Feb 17 16:50:58 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 19 14:12:55 2013 -0800"
      },
      "message": "use architecture-specific ssize_t definition\n\nafter change 32822 was rejected, this is the more light-weight\nversion of the fix: libc/include/sys/types.h already - via\nlibc/kernel/common/linux/posix_types.h - includes a definition\nof __kernel_ssize_t from libc/kernel/arch-*/asm/posix_types.h\nwhich is architecture-specific, toolchain-agnostic and also\ngets rid of the gcc -Wformat warning (which it issues correctly,\nsince this i̲s̲ indeed a bug in bionic)\n\nChange-Id: Ie4503ab16628bc25815a836d07556f665e9795c7\n"
    },
    {
      "commit": "9d23e04c43dbb8480bea8be28b8a2f37423bec49",
      "tree": "e403288cf01ce40d6f330da09a317c7ad6dc2cb2",
      "parents": [
        "081318e3550b1a8d8384d98d7c94527681691120"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 19:21:51 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 19 12:21:41 2013 -0800"
      },
      "message": "Fix pthreads functions that should return ESRCH.\n\nimgtec pointed out that pthread_kill(3) was broken, but most of the\nother functions that ought to return ESRCH for invalid/exited threads\nwere equally broken.\n\nChange-Id: I96347f6195549aee0c72dc39063e6c5d06d2e01f\n"
    },
    {
      "commit": "40eabe24e4e3ae8ebe437f1f4e43cf39cbba2e9e",
      "tree": "19eef7fcbba616a52bd37f4c83ece3e918b25445",
      "parents": [
        "3e3b239d2be0c5a92e91385f4f10b8f7da8d2837"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 14 18:59:37 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 12:08:59 2013 -0800"
      },
      "message": "Fix the pthread_setname_np test.\n\nFix the pthread_setname_np test to take into account that emulator kernels are\nso old that they don\u0027t support setting the name of other threads.\n\nThe CLONE_DETACHED thread is obsolete since 2.5 kernels.\n\nRename kernel_id to tid.\n\nFix the signature of __pthread_clone.\n\nClean up the clone and pthread_setname_np implementations slightly.\n\nChange-Id: I16c2ff8845b67530544bbda9aa6618058603066d\n"
    },
    {
      "commit": "7fd803cdfa873c01138dcbd614ec92418169b1c2",
      "tree": "7cf2172c26930b783a5e19106b35364c8964504d",
      "parents": [
        "0a2cb815974ea96af664fa966079966a08916722"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 14 16:33:52 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 14 16:35:58 2013 -0800"
      },
      "message": "Fix the stack protector death test.\n\nNow __stack_chk_fail calls abort(3) directly, we terminate with\nSIGSEGV rather than SIGABRT. (Because of the workaround for the\ndebuggerd lossage in the abort(3) implementation, which was the\nmotivation for switching __stack_chk_fail over to abort(3).)\n\nAlso clarify the comment on the weird pthread death test, so it\ndoesn\u0027t get copied and pasted onto real death tests.\n\nChange-Id: Ie832eaded61359c99e7a10db65e28f35e8f63eed\n"
    },
    {
      "commit": "fb7eb5e07f43587c2bedf2aaa53b21fa002417bb",
      "tree": "2854e0357877216fe1d7e8722085a561b22b123b",
      "parents": [
        "c2d26ce7452e69b9492cd28b7c0271866798658b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 14 14:37:34 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 14 14:37:34 2013 -0800"
      },
      "message": "Simplify __stack_chk_fail, and fix it so we get debuggerd stack traces.\n\nBug: 2487269\nChange-Id: Iec5e470fc22cd9108404f634a9d4baa2c7b7f58f\n"
    },
    {
      "commit": "26a13bcfb894b19ea4c53e4456b07bedd233dda4",
      "tree": "1c7b2479fc00713072d8df33f87daf392ad77be7",
      "parents": [
        "95b1ea1bb3c93369d96045420b91b7617992d8bd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 16:32:47 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 16:32:47 2013 -0800"
      },
      "message": "Stop using the local gcc.\n\nSome build servers are still out of date, so we\u0027re better off having\nthe known quanitity of the consistently out-of-date prebuilt host gcc.\n\nChange-Id: Ib6308ae926ffa1ac5d95efbbf32052344c17a6b8\n"
    },
    {
      "commit": "73964c592c8d23901e9479893dfbd3d0f25bab04",
      "tree": "dd7c786e0c3011cfcb26a4a8ea45519a6283b404",
      "parents": [
        "627274292edf1d051dd939a0b14b69d3fcb84742"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 14:35:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 14:40:48 2013 -0800"
      },
      "message": "Everyone has CLZ.\n\nEven armv5 had CLZ.\n\nChange-Id: I51bc8d1166d09940fd0d3f4c7717edf26977082c\n"
    },
    {
      "commit": "d8213bb5738ac778fcb5d696d1294b0f8ddae7f3",
      "tree": "6422e3fd1d86e38a74301a05fa37b60115e7b85b",
      "parents": [
        "f659b3c90d8b55a44945af807364a5df0475bd0e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 09:49:33 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 13:11:11 2013 -0800"
      },
      "message": "Update getnameinfo.c, remove dead code, and fix error reporting.\n\nAlso add a unit test for the salen size checking.\n\nBug: 1889275\nChange-Id: I8ec4107df9e2e9a8571e8915525249c6e44b98ad\n"
    },
    {
      "commit": "d3b9d11369ee15dc0ce512014284c3c5432f2813",
      "tree": "dba3210fb3177ad600b337f6adfa3cad661cad6b",
      "parents": [
        "3002d64bcd4644456803dd0547d20b39e14be02c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 08:22:07 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 13 08:22:07 2013 -0800"
      },
      "message": "Add a test that getaddrinfo works when hints are NULL.\n\nBug: 1827911\nChange-Id: I9e1b774c44c10a8c5391bcf3baf1607f50eaf214\n"
    },
    {
      "commit": "5227663d2ffd70dc32f03a7a5b103ef0d3fc0584",
      "tree": "215ba2dfc40261cbe16e229b3276d3441a2d9f6d",
      "parents": [
        "59aeff94178e03c908791695f6dd4c9bd8c7115b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 20:18:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 20:18:49 2013 -0800"
      },
      "message": "Put the right number of Ls after 64-bit constants.\n\nChange-Id: I9f96259f21e42a84b9ebe20655fe0edb31f41892\n"
    },
    {
      "commit": "9701d4b7018ea50f57601eaec5f8f6731a7c6510",
      "tree": "34108258f5ae4aa76e6614f1991355da5bf9d7b3",
      "parents": [
        "991ee7d89574e8d04c8863a2850613073a2f96b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 17:20:42 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 17:55:22 2013 -0800"
      },
      "message": "Give up trying to build the pthread_setname_np tests for glibc.\n\nLooks like using /usr/bin/g++ isn\u0027t enough on some of our older\nbuild servers.\n\nChange-Id: Id7681fb164eb6324b10050f6bb237393e95b41e9\n"
    },
    {
      "commit": "3e898476c7230b60a0f76968e64ff25f475b48c0",
      "tree": "0f876aeb565b7e7ac627a6305a355c40173912f2",
      "parents": [
        "fcaf4e9f9b735e053469c7ecbf63584e10fd67a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:40:24 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 15:27:18 2013 -0800"
      },
      "message": "Revert \"Revert \"More pthreads cleanup.\"\"\n\nThis reverts commit 6f94de3ca49e4ea147b1c59e5818fa175846518f\n\n(Doesn\u0027t try to increase the number of TLS slots; that leads to\nan inability to boot. Adds more tests.)\n\nChange-Id: Ia7d25ba3995219ed6e686463dbba80c95cc831ca\n"
    },
    {
      "commit": "fcaf4e9f9b735e053469c7ecbf63584e10fd67a7",
      "tree": "91c703014ef867443c46cfa8f5c5e5ae5278de3a",
      "parents": [
        "85f491f96da3b79d0d7cc5368bc1f649e1a82340",
        "6f94de3ca49e4ea147b1c59e5818fa175846518f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 06:07:31 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 12 06:07:32 2013 +0000"
      },
      "message": "Merge \"Revert \"More pthreads cleanup.\"\""
    },
    {
      "commit": "6f94de3ca49e4ea147b1c59e5818fa175846518f",
      "tree": "9a2c45004114f53c4cf1f9468a58fe54c58320fa",
      "parents": [
        "2a1bb4e64677b9abbc17173c79768ed494565047"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 06:06:22 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 12 06:06:22 2013 +0000"
      },
      "message": "Revert \"More pthreads cleanup.\"\n\nThis reverts commit 2a1bb4e64677b9abbc17173c79768ed494565047\n\nChange-Id: Ia443d0748015c8e9fc3121e40e68258616767b51\n"
    },
    {
      "commit": "85f491f96da3b79d0d7cc5368bc1f649e1a82340",
      "tree": "aa5be2bfbc8cf9fb094110e2267a32c2f3152e2f",
      "parents": [
        "83bf28e6a38dbf28707147b50d29e81f4b555046",
        "2a1bb4e64677b9abbc17173c79768ed494565047"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 02:33:07 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 12 02:33:08 2013 +0000"
      },
      "message": "Merge \"More pthreads cleanup.\""
    },
    {
      "commit": "5e3fc43ddeada547a155c6f561a12ff0b16e02d3",
      "tree": "9becf3a8442387f408f7f9ee73ab06ab7f8865d1",
      "parents": [
        "1fea0f258a45d918fe5ae8e9769f45c0348bd095"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:36:48 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:39:10 2013 -0800"
      },
      "message": "Fix __pthread_clone on ARM to set errno on failure.\n\nMIPS and x86 appear to have been correct already.\n\n(Also fix unit tests that ASSERT_EQ with errno so that the\narguments are in the retarded junit order.)\n\nBug: 3461078\nChange-Id: I2418ea98927b56e15b4ba9cfec97f5e7094c6291\n"
    },
    {
      "commit": "2a1bb4e64677b9abbc17173c79768ed494565047",
      "tree": "3e843fd4277f2bdc502511bd5e4ee539887c14f1",
      "parents": [
        "2d3e72336e76180fb00822386da4f14203d117ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 12:34:03 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 14:56:39 2013 -0800"
      },
      "message": "More pthreads cleanup.\n\nPOSIX says pthread_create returns EAGAIN, not ENOMEM.\n\nAlso pull pthread_attr_t functions into their own file.\n\nAlso pull pthread_setname_np into its own file.\n\nAlso remove unnecessary #includes from pthread_key.cpp.\n\nAlso account for those pthread keys used internally by bionic,\nso they don\u0027t count against the number of keys available to user\ncode. (They do with glibc, but glibc\u0027s limit is the much more\ngenerous 1024.)\n\nAlso factor out the common errno-restoring idiom to reduce gotos.\n\nBug: 6702535\nChange-Id: I555e66efffcf2c1b5a2873569e91489156efca42\n"
    },
    {
      "commit": "44b53ad6818de344e0b499ad8fdbb21fcb0ff2b6",
      "tree": "9a2c45004114f53c4cf1f9468a58fe54c58320fa",
      "parents": [
        "8397cdba9424febeaed4068829a5b0174ee1138c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 20:18:47 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 12:20:33 2013 -0800"
      },
      "message": "Revert \"Revert \"Pull the pthread_key_t functions out of pthread.c.\"\"\n\nThis reverts commit 6260553d48f6fd87ca220270bea8bafdde5726ec\n\n(Removing the accidental libm/Android.mk change.)\n\nChange-Id: I6cddd9857c31facc05636e8221505b3d2344cb75\n"
    },
    {
      "commit": "6260553d48f6fd87ca220270bea8bafdde5726ec",
      "tree": "9c2cb4dfb830d7918a0d0b8ecfbf25bf87bcc453",
      "parents": [
        "ad59322ae432d11ff36dcf046016af8cfe45fbe4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 20:18:16 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 11 20:18:16 2013 +0000"
      },
      "message": "Revert \"Pull the pthread_key_t functions out of pthread.c.\"\n\nThis reverts commit ad59322ae432d11ff36dcf046016af8cfe45fbe4\n\nsomehow my unfinished libm/Android.mk change got into here.\n\nChange-Id: I46be626c5269d60fb1ced9862f2ebaa380b4e0af\n"
    },
    {
      "commit": "ad59322ae432d11ff36dcf046016af8cfe45fbe4",
      "tree": "04ea728ddd656079ca4b9f228b32c371370be947",
      "parents": [
        "9a9bb243b50be5e3910b8edad72327bc216e72d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 08 15:46:37 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 12:00:48 2013 -0800"
      },
      "message": "Pull the pthread_key_t functions out of pthread.c.\n\nThis was originally motivated by noticing that we were setting the\nwrong bits for the well-known tls entries. That was a harmless bug\nbecause none of the well-known tls entries has a destructor, but\nit\u0027s best not to leave land mines lying around.\n\nAlso add some missing POSIX constants, a new test, and fix\npthread_key_create\u0027s return value when we hit the limit.\n\nChange-Id: Ife26ea2f4b40865308e8410ec803b20bcc3e0ed1\n"
    },
    {
      "commit": "d3920b3a996b358e48232f417aa0a1e44a60f155",
      "tree": "b0520d0d300dbca1e6e54a9a7c26e6d2cd81ed08",
      "parents": [
        "f6afd3b670e23f56bf341d12136416aee17ea249"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 07 18:39:34 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 08 11:16:13 2013 -0800"
      },
      "message": "Switch to using AT_RANDOM for the stack guards.\n\nBug: 7959813\nChange-Id: I8db4b8912ba649bfe668c6f22aa44690ddd401a2\n"
    },
    {
      "commit": "9edb3e004b487e08cbbb54f2af18b15241550513",
      "tree": "afb15c0e496588ed186e7558c1f890b6871cc296",
      "parents": [
        "d10a5a02d1e9315dd7d780c2f221d116ced45a69"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 06 15:47:09 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 06 15:47:09 2013 -0800"
      },
      "message": "Improve benchmarking tool, add a few math benchmarks.\n\nChange-Id: I641305dd0e4ac0705381e735ed1604c5be7aa536\n"
    },
    {
      "commit": "428f5567be25b8090e3dd72e2d3d337c305b514e",
      "tree": "fe9bc208b680b3366150885d6efc5be034c3f21e",
      "parents": [
        "a4f88fdcf0e9be084d04048ad65671716298c3c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 05 16:10:59 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 05 16:10:59 2013 -0800"
      },
      "message": "Remove bogus extra alignment from sbrk.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d37349\nChange-Id: I970c7b6be7bb7fbe6bbbe2c332f05816aeb0e09f\n"
    },
    {
      "commit": "b16b72248bd109b6073df6a45aeffaa69e38cfc6",
      "tree": "e30f6d4ea4a010c2888773e68861955b636a0230",
      "parents": [
        "a1821f015306e221e6a51e5acc27176ae2d72f6b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 04 13:18:00 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 04 13:18:00 2013 -0800"
      },
      "message": "Add basic tests for posix_memalign.\n\nChange-Id: Ie34fcc87aa9e8bfc715e25161752024b11e2032a\n"
    },
    {
      "commit": "a0ee07829a9ba7e99ef68e8c12551301cc797f0f",
      "tree": "fefc432ee572779579a16d2868d4181a33399281",
      "parents": [
        "a990cf5b3392c5aef767aee1e67b4d7ef651afc6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 30 19:06:37 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 01 14:51:19 2013 -0800"
      },
      "message": "Upgrade libm.\n\nThis brings us up to date with FreeBSD HEAD, fixes various bugs, unifies\nthe set of functions we support on ARM, MIPS, and x86, fixes \"long double\",\nadds ISO C99 support, and adds basic unit tests.\n\nIt turns out that our \"long double\" functions have always been broken\nfor non-normal numbers. This patch fixes that by not using the upstream\nimplementations and just forwarding to the regular \"double\" implementation\ninstead (since \"long double\" on Android is just \"double\" anyway, which is\nwhat BSD doesn\u0027t support).\n\nAll the tests pass on ARM, MIPS, and x86, plus glibc on x86-64.\n\nBug: 3169850\nBug: 8012787\nBug: https://code.google.com/p/android/issues/detail?id\u003d6697\nChange-Id: If0c343030959c24bfc50d4d21c9530052c581837\n"
    },
    {
      "commit": "41b3179c9ef03ebb447cac7f5e8405dce399cb17",
      "tree": "b0fa19272b1a7bb1ca7fe17c35a7374b650913b6",
      "parents": [
        "0a91b11d286446fe7849a6f537b4a21a52f63399"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 28 10:36:31 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 28 10:36:31 2013 -0800"
      },
      "message": "Unit tests for formatting code, fix %%.\n\nAlso fix \u003csignal.h\u003e and \u003cstdio.h\u003e so they don\u0027t cause compiler warnings.\n\nChange-Id: Ib1a746bf01de22d47dbd964de0e6af80a7c96303\n"
    },
    {
      "commit": "a44e9afdd16105d6f36319cb538666d9cc78435a",
      "tree": "8606530bcdef438dc305894c805f0713edad5306",
      "parents": [
        "f3fe19459fd9263e8cc8a413a5313b1ec3cf3975"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 17 15:41:33 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 17 15:41:33 2013 -0800"
      },
      "message": "FORTIFY_SOURCE: optimize\n\nDon\u0027t do the fortify_source checks if we can determine, at\ncompile time, that the provided operation is safe.\n\nThis avoids silliness like calling fortify source on things like:\n\n  size_t len \u003d strlen(\"asdf\");\n  printf(\"%d\\n\", len);\n\nand allows the compiler to optimize this code to:\n\n  printf(\"%d\\n\", 4);\n\nDefer to gcc\u0027s builtin functions instead of pointing our code\nto the libc implementation.\n\nChange-Id: I5e1dcb61946461c4afaaaa983e39f07c7a0df0ae\n"
    },
    {
      "commit": "36bd371e26c716cbc18e11801b13eff0352d91b0",
      "tree": "b63e06f7a65f3ac2df09449bb65172644f230386",
      "parents": [
        "ba117e4172fe6f160bf5f4d58b37e12c08c34245"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 13:13:22 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 13:16:42 2013 -0800"
      },
      "message": "Revert \"stack protector: use AT_RANDOM\"\n\nThe AT_RANDOM changes broke setuid / setgid executables\nsuch as \"ping\". When the linker executes a setuid program,\nit cleans the environment, removing any invalid environment\nentries, and adding \"NULL\"s to the end of the environment\narray for each removed variable. Later on, we try to determine\nthe location of the aux environment variable, and get tripped\nup by these extra NULLs.\n\nReverting this patch will get setuid executables working again,\nbut getauxval() is still broken for setuid programs because of\nthis bug.\n\nThis reverts commit e3a49a8661125f24aec8a1453e54b3b78005e21e.\n\nChange-Id: I05c58a896b1fe32cfb5d95d43b096045cda0aa4a\n"
    },
    {
      "commit": "e3a49a8661125f24aec8a1453e54b3b78005e21e",
      "tree": "a6a1be7dbdf1901db051fcfa1bd19f823e7a7f2b",
      "parents": [
        "14e1975e13c197180ed0481f305f83a362b16a24"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jan 14 14:46:26 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jan 16 10:09:52 2013 -0800"
      },
      "message": "stack protector: use AT_RANDOM\n\nPopulate the stack canaries from the kernel supplied\nAT_RANDOM value, which doesn\u0027t involve any system calls.\nThis is slightly faster (6 fewer syscalls) and avoids\nunnecessarily reading /dev/urandom, which depletes entropy.\n\nBug: 7959813\n\nChange-Id: If2b43100a2a9929666df3de56b6139fed969e0f1\n"
    },
    {
      "commit": "606058933c5129cb1026960ea67624b9426c610f",
      "tree": "b041941841289aff7b9fd12217a97ab1bbd22054",
      "parents": [
        "b09d7d86004ab75b774358454d8ee261987af96b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 15 10:35:09 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 15 10:35:09 2013 -0800"
      },
      "message": "fix strerror_r test\n\ne6e60065ff093ff8c859ab146cf543531cb1967c modified strerror_r to\ntreat errno as signed. However, the change to the test code\nmodified the \"strerror\" test, not the \"strerror_r\" test.\n\nMake the same change for the strerror_r code.\n\nChange-Id: Ia236a53df5745935e229a4446a74da8bed0cfd7b\n"
    },
    {
      "commit": "2c5153b043b44e9935a334ae9b2d5a4bc5258b40",
      "tree": "a416a91052c38633d963fb5fc193356ae0c45640",
      "parents": [
        "69c89942db2ed472c71aa84903d0259cc84aa074"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 11 14:43:05 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 11 16:44:15 2013 -0800"
      },
      "message": "libc: add getauxval()\n\nAdd support for getauxval().  This method allows a program an easy way\nto retrieve information from the kernel auxiliary vector, and will\nhopefully replace other clumsy ways of accessing this same information.\n\nThis particular function was also added to glibc in glibc 2.16.\nSee the following URLs for more details.\n\n  * http://lwn.net/Articles/519085/\n  * http://www.gnu.org/software/libc/manual/html_node/Auxiliary-Vector.html\n\nThis change is a prerequisite for bug 7959813.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38441\nChange-Id: Iba19d899df334bddc6f4899077ece2fc87564ea8\n"
    },
    {
      "commit": "dcab1b2c76a498c56bc00024613386de8b4b2aae",
      "tree": "6d7eb1ea166186df3092552b190b4485658b3e68",
      "parents": [
        "bfde0b6fd9e5de545746ab963d3a05ed2a8014f6"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 10 17:12:29 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 11 10:52:36 2013 -0800"
      },
      "message": "Add stack canaries / strcpy tests.\n\nAdd a test to ensure that stack canaries are working\ncorrectly. Since stack canaries aren\u0027t normally generated\non non-string functions, we have to enable stack-protector-all.\n\nAdd a test to ensure that an out of bounds strcpy generates\na runtime failure.\n\nChange-Id: Id0d3e59fc4b9602da019e4d35c5c653e1a57fae4\n"
    },
    {
      "commit": "e6e60065ff093ff8c859ab146cf543531cb1967c",
      "tree": "41de4f1d0cf5cec9fa72c4ad6d0fed5bf1b00329",
      "parents": [
        "0d3700d957debe841c385f66a8026ca8b3755815"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:01:59 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:01:59 2013 -0800"
      },
      "message": "glibc 2.15 treats errno as signed in strerror(3).\n\nAnd the only reason I hadn\u0027t done that in bionic is because I wanted to behave\nthe same as glibc.\n\nChange-Id: I2cf1bf0aac82a748cd6305a2cabbac0790058570\n"
    },
    {
      "commit": "c5d028fc913de84a781bd61084bf7ae2182fd48e",
      "tree": "9086acc9c039dad30feca8a8d80ca7af04b061e1",
      "parents": [
        "2bbb8fac61e482dd96386620cc6f7f193e9c6840"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 14:42:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 14:42:14 2013 -0800"
      },
      "message": "Only have one copy of the kernel_sigset_t hack, and add more tests.\n\nChange-Id: I377522fcba6fb4b5fd2754ab15b091014bd7c16f\n"
    },
    {
      "commit": "a43e906221a3e9c70a66118a8692cd46f77e144e",
      "tree": "1fd6b3a2cdd50c15291c991644dd295371712c35",
      "parents": [
        "7e22db037e6d9ab117bf5d50c7aca85fe74941a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 14:18:22 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 14:44:36 2013 -0800"
      },
      "message": "Don\u0027t test GNU-style ELF hashes on MIPS.\n\nThe MIPS toolchain can\u0027t generate them because they\u0027re incompatible\nwith the MIPS ABI (which requires .dynsym match the GOT, while GNU-style\nrequires .dynsym to be sorted by hash code), so there\u0027s nothing to test.\n\nChange-Id: I2220f452fe6fe595ec1312544cc741dd390a36a5\n"
    },
    {
      "commit": "fb5e5cbdd4e1d75594c37ebb544c0f46482a027b",
      "tree": "310053af341c83e71625b67eb4cba74d6766fe9b",
      "parents": [
        "26c5b2d460e3b2595eb7f0605edcd02753a13594"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 13:58:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 13:58:49 2013 -0800"
      },
      "message": "Fix an off-by-one error in the sigset_t function error handling.\n\nSpotted while running the tests on MIPS, where sigset_t is\nactually large enough. The bits in sigset_t are used such that\nsignal 1 is represented by bit 0, so the range of signals is\nactually [1, 8*sizeof(sigset_t)]; it seems clearer to reword\nthe code in terms of valid bit offsets [0, 8*sizeof(sigset_t)),\nwhich leads to the usual bounds checking idiom.\n\nChange-Id: Id899c288e15ff71c85dd2fd33c47f8e97aa1956f\n"
    },
    {
      "commit": "a55f63083fb16b2595f517a3260083e5f8cddd02",
      "tree": "a21307c7a280a75b425eac764546fb1460e3eb76",
      "parents": [
        "f6524f8bda87f7d25dad7bed7091a93f3de58728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 02 14:23:43 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 02 14:23:43 2013 -0800"
      },
      "message": "Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK).\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d39680\nChange-Id: I11cf10a66f9d305868a725f04f581099fb88bbfc\n"
    },
    {
      "commit": "e66190d2a97a713ae4b4786e60ca3d67ab8aa192",
      "tree": "0bacac6bbb8916d803e2b6f2c991030790e0f718",
      "parents": [
        "4c4b08a32eace878e4780ee340a57c43be950159"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 15:57:55 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 15:57:55 2012 -0800"
      },
      "message": "Check for unknown flags passed to dlopen(3).\n\nChange-Id: I56f4aab0e5a1487bc32d2c4d231e8bd15c4ac8da\n"
    },
    {
      "commit": "d8a5a6f513c6fa99229e9c82c5c308c7cd6b3d54",
      "tree": "1237090d7651fdb2374c60d94e7e1d8f75cd4e35",
      "parents": [
        "6fcf1770e5829b8439b7e7ed7efb39ee5d425e23"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Fri Dec 07 18:41:10 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 10 11:20:57 2012 -0800"
      },
      "message": "Use pthread_kill() in raise()\n\nraise() should use pthread_kill() in a pthreads environment.\nFor bionic this means it should always be used.\n\nChange-Id: Ic679272b664d2b8a7068b628fb83a9f7395c441f\n"
    },
    {
      "commit": "da73f655fcbac6e1a8bfd35303cef6f41187d12b",
      "tree": "7c85d8bc7ff5cb4a8eebd0ea3a6a808790c26f5d",
      "parents": [
        "16c61f088524756ef0fa1b030719f6745eaef2db"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 30 16:40:55 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 30 16:40:55 2012 -0800"
      },
      "message": "Add argument checking to sigemptyset(3) and friends.\n\nYou could argue that this is hurting people smart enough to have manually\nallocated a large-enough sigset_t, but those people are smart enough to\nimplement their own sigset functions too.\n\nI wonder whether our least unpleasant way out of our self-inflicted 32-bit\ncesspool is to have equivalents of _FILE_OFFSET_BITS such as _SIGSET_T_BITS,\nso calling code could opt in? You\u0027d have to be careful passing sigset_t\narguments between code compiled with different options.\n\nBug: 5828899\nChange-Id: I0ae60ee8544835b069a2b20568f38ec142e0737b\n"
    },
    {
      "commit": "fbe44ec0436a8ce735f4dbe06c5109e3c0d4a8ae",
      "tree": "6bf24a0d82391259902118c35ace81e4c10a0126",
      "parents": [
        "49677deca2c2984ae6c0a3df8fbada7132e82940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 09 14:59:21 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 09 14:59:21 2012 -0800"
      },
      "message": "Add a memmove(3) benchmark.\n\nChange-Id: I9c0ffae0b5aae29521b7e68e5ce2318b5a401cba\n"
    },
    {
      "commit": "7be369d4c60e9df2316fdb6c73181a40020abef2",
      "tree": "fea1bc5ddadfa7bac349ec587c8e89f36833e8f7",
      "parents": [
        "d460f3f1af80af40d8c3fab12a68459d8d1ec4c5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 08 15:37:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 08 15:37:43 2012 -0800"
      },
      "message": "Simple google3-compatible benchmarking.\n\nBased on our open-source RE2 benchmarking code.\n\nIncludes benchmarks for a handful of \u003cstring.h\u003e functions.\n\nChange-Id: I30eb70d25dbf4ad5f2ca44976a8ce3b1ff7dad01\n"
    },
    {
      "commit": "d460f3f1af80af40d8c3fab12a68459d8d1ec4c5",
      "tree": "ef21eef95285f63854e05fb3c9d7c58c766d4174",
      "parents": [
        "5408ac3c8dfe4857985b94fb7bd883fd3899c48b",
        "036154b0c2d64d618aded8674f2e13cbbb2867e2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 08 09:15:22 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 08 09:15:22 2012 -0800"
      },
      "message": "Merge \"Tests for string routines.\""
    },
    {
      "commit": "6e33b0296d23c75bdefa53f0bf0b08c0d877a652",
      "tree": "c056940e4a64a7f42183a586085e517ffa508fdc",
      "parents": [
        "604a163e4c7724f881605fdbda94db4f7c8f0e7a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 07 18:16:02 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 07 18:16:02 2012 -0800"
      },
      "message": "Fix dlopen_library_with_only_gnu_hash_Test.\n\nChange-Id: Id3395f155587cfa74061f97a2cb4c6a6e59c13dc\n"
    },
    {
      "commit": "036154b0c2d64d618aded8674f2e13cbbb2867e2",
      "tree": "762ecdcbac0adba6fa068d5704eae2af1688c69d",
      "parents": [
        "604a163e4c7724f881605fdbda94db4f7c8f0e7a"
      ],
      "author": {
        "name": "Anna Tikhonova",
        "email": "anna.tikhonova@intel.com",
        "time": "Fri Oct 05 15:21:11 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 07 18:14:29 2012 -0800"
      },
      "message": "Tests for string routines.\n\nChange-Id: I24068a228f59df1c3b758c5b2026a09720490616\nSigned-off-by: Anna Tikhonova \u003canna.tikhonova@intel.com\u003e\n"
    },
    {
      "commit": "90e10d41c4271a5d517f60f4ff1d2891b8ccc034",
      "tree": "95e944b98a2413d4be4be1a82aa71e758fcccc05",
      "parents": [
        "9df2e000b5d56b2e529656034d684e370aa6a8d1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 17:05:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 05 08:50:19 2012 -0800"
      },
      "message": "Rewrite \u003cfenv.h\u003e for ARM.\n\nThe old code was one big no-op.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38196\nChange-Id: I201a6ffa477385b2629f45e8c948bdfbd47b5bf1\n"
    },
    {
      "commit": "4f251bee5d51228217c1bf4dfc9219f3058bd3ed",
      "tree": "3d0f1faef6a38e494f8157e467e7fc0f876f6cd4",
      "parents": [
        "064f862d557ab741575dfae479499a07ca0ab742"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 16:33:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 17:27:07 2012 -0700"
      },
      "message": "Don\u0027t corrupt the thread list if the main thread exits.\n\n...and don\u0027t pass a non-heap pointer to free(3), either.\n\nThis patch replaces the \"node** prev\" with the clearer \"node* prev\"\nstyle and fixes the null pointer dereference in the old code. That\u0027s\nnot sufficient to fix the reporter\u0027s bug, though. The pthread_internal_t*\nfor the main thread isn\u0027t heap-allocated --- __libc_init_tls causes a\npointer to a statically-allocated pthread_internal_t to be added to\nthe thread list.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d37410\nChange-Id: I112b7f22782fc789d58f9c783f7b323bda8fb8b7\n"
    },
    {
      "commit": "1a6961650c82168864afe040dbdc05977db701df",
      "tree": "37e1243251773431c52c106026b0cb405babb7c3",
      "parents": [
        "0be1819b22b33fbedcb150f96a196ed096abe2fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 13:49:32 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 13:53:26 2012 -0700"
      },
      "message": "Stop defining our own PAGE_SIZE and PAGE_MASK, and test dlclose(3) too.\n\nAlso remove an unnecessary #include and a now-obsolete TODO.\n\nChange-Id: I36d923721e349a286934b9534090a67ce0786e7b\n"
    },
    {
      "commit": "124fae9eabd7a25d80dfa8c3b56bed0f0fba16f1",
      "tree": "4e7b568b09fef856dbc1a7f0cab9770c96a15d39",
      "parents": [
        "b46530bd3e5984047bd780f5d3a6a5ebabd9f02d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 31 14:20:03 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 31 14:30:50 2012 -0700"
      },
      "message": "Reject .so files with no sysv hash table.\n\nAlso ensure that dlopen(3) errors always include the name of the library we\nfailed to open.\n\nAlso fix a bug where we\u0027d fall back to searching LD_LIBRARY_PATH and the\nbuilt-in paths for names that include slashes.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38479\nChange-Id: Ib2c009ed083344a7a012749d58f8679db2f26c78\n"
    },
    {
      "commit": "06b596104a9ed3ac089abd00186a5698d7e8544f",
      "tree": "fee68e3aaa870bc72c2e7f6fee3de18bac42bcc4",
      "parents": [
        "1f21ece48a87abbbdd9fb939b79a1dd81fb867eb",
        "10ce96944eaea4c459392952652fdb24742c9c29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 12:57:57 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 12:57:58 2012 -0700"
      },
      "message": "Merge \"Fix bug in pthread_join, pthread_exit, pthread_detach\""
    },
    {
      "commit": "58b575485c446f9d76ee00f67516ed42cf017769",
      "tree": "1129d62c5b93cf1195be6270b1904d8885264d33",
      "parents": [
        "4d36b0bd38559ae0376b61a0ac2f5fa8329ec56d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 14:27:10 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 14:27:10 2012 -0700"
      },
      "message": "Clean up the \u003clibgen.h\u003e implementation a little, bring in tests.\n\nMost of these tests were in system/extras, but I\u0027ve added more to cover other\ncases explicitly mentioned by POSIX.\n\nChange-Id: I5e8d77e4179028d77306935cceadbb505515dcde\n"
    },
    {
      "commit": "10ce96944eaea4c459392952652fdb24742c9c29",
      "tree": "2691b3629da1399e527f9719bdebea6d14837cbb",
      "parents": [
        "4d36b0bd38559ae0376b61a0ac2f5fa8329ec56d"
      ],
      "author": {
        "name": "Sergey Melnikov",
        "email": "sergey.melnikov@intel.com",
        "time": "Fri Oct 26 14:06:43 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 11:31:26 2012 -0700"
      },
      "message": "Fix bug in pthread_join, pthread_exit, pthread_detach\n\npthread_no_op_detach_after_join test from bionic-unit-tests hangs\non x86 emulator. There is a race in the pthread_join, pthread_exit,\npthread_detach functions:\n- pthread_join waits for the non-detached thread\n- pthread_detach sets the detached flag on that thread\n- the thread executes pthread_exit which just kills the now-detached\nthread, without sending the join notification.\n\nThis patch improves the test so it fails on ARM too, and modifies\npthread_detach to behave more like glibc, not setting the detach state if\ncalled on a thread that\u0027s already being joined (but not returning an error).\n\nChange-Id: I87dc688221ce979ef5178753dd63d01ac0b108e6\nSigned-off-by: Sergey Melnikov \u003csergey.melnikov@intel.com\u003e\n"
    },
    {
      "commit": "14f19592ae7c819855052bcebc79de87069c2954",
      "tree": "db8ec2a48bc49fb499ce7ecbdac495f14cc0e1ab",
      "parents": [
        "9297af943887d9d6974aaec8c45a4e7d93422965"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 10:19:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 10:19:44 2012 -0700"
      },
      "message": "Fix the pthread_join on self error case.\n\nWe should return EDEADLK, not deadlock the calling thread.\n\nChange-Id: I1243483f709c11b2a60e41142725c54c7dbfcbc9\n"
    },
    {
      "commit": "c30396f5f225e0b5a83a35432e2d82a7063cfdb9",
      "tree": "84df04116350a6895e76c26490bbcf499a3e3099",
      "parents": [
        "8f9a1eb108f22fc2ce7283ef184d909ec0ca1152"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Mon Oct 29 15:32:54 2012 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 07:44:27 2012 -0700"
      },
      "message": "libc: Fix alphasort() signature (and implementation).\n\nThe declaration for alphasort() in \u003cdirent.h\u003e used the deprecated:\n\n  int alphasort(const void*, const void*);\n\nwhile both Posix and GLibc use instead:\n\n  int alphasort(const struct dirent** a, const struct dirent** b);\n\nSee: http://pubs.opengroup.org/onlinepubs/9699919799/functions/alphasort.html\n\nThis patch does the following:\n\n- Update the declaration to match Posix/GLibc\n- Get rid of the upstream BSD code which isn\u0027t compatible with the new\n  signature.\n- Implement a new trivial alphasort() with the right signature, and\n  ensure that it uses strcoll() instead of strcmp().\n- Remove Bionic-specific #ifdef .. #else .. #endif block in\n  dirent_test.cpp which uses alphasort().\n\nEven through strcoll() currently uses strcmp(), this does the right\nthing in the case where we decide to update strcoll() to properly\nimplement locale-specific ordered comparison.\n\nChange-Id: I4fd45604d8a940aaf2eb0ecd7d73e2f11c9bca96\n"
    },
    {
      "commit": "063cfb2084ea4b12d3c85b2d2c44e888f0857eb4",
      "tree": "ec94389e76f6fd79d573c4a689b7c83c4711edd0",
      "parents": [
        "7193731ae6b8083bc7a5e5e468fb98b1dbcf3f3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 20:55:23 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 26 16:42:06 2012 -0700"
      },
      "message": "Clean up the implementation of the \u003cdirent.h\u003e functions.\n\nChange-Id: I3c647cc9588525afc41fee90ee468d58cd13503a\n"
    },
    {
      "commit": "ad88a0863110798cef5169dcf917e18b967a7cf6",
      "tree": "9b5fcbe6ebc81b4fb781dd788b8795a334def653",
      "parents": [
        "d0f2b7e7e65f19f978c59abcbb522c08e76b1508"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 24 18:37:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 12:04:03 2012 -0700"
      },
      "message": "Per-thread -fstack-protector guards for x86.\n\nBased on a pair of patches from Intel:\n\n  https://android-review.googlesource.com/#/c/43909/\n  https://android-review.googlesource.com/#/c/44903/\n\nFor x86, this patch supports _both_ the global that ARM/MIPS use\nand the per-thread TLS entry (%gs:20) that GCC uses by default. This\nlets us support binaries built with any x86 toolchain (right now,\nthe NDK is emitting x86 code that uses the global).\n\nI\u0027ve also extended the original tests to cover ARM/MIPS too, and\nbe a little more thorough for x86.\n\nChange-Id: I02f279a80c6b626aecad449771dec91df235ad01\n"
    },
    {
      "commit": "5419b9474753d25dff947c7740532f86d130c0be",
      "tree": "4d746cfc20a1d3b5886f691ed1a49ddf34e2df78",
      "parents": [
        "a9944cfe9e152ca46afb0a77300ec5a2a1a24e64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 15:54:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 17:58:17 2012 -0700"
      },
      "message": "Make dlerror(3) thread-safe.\n\nI gave up trying to use the usual thread-local buffer idiom; calls to\ncalloc(3) and free(3) from any of the \"dl\" functions -- which live in\nthe dynamic linker -- end up resolving to the dynamic linker\u0027s stubs.\nI tried to work around that, but was just making things more complicated.\nThis alternative costs us a well-known TLS slot (instead of the\ndynamically-allocated TLS slot we\u0027d have used otherwise, so no difference\nthere), plus an extra buffer inside every pthread_internal_t.\n\nBug: 5404023\nChange-Id: Ie9614edd05b6d1eeaf7bf9172792d616c6361767\n"
    },
    {
      "commit": "3b297c40794b23d50cb5240f9b03f6ef25fd98db",
      "tree": "ebcb95b3cd9f249f08257e8654307f88c98e6dbb",
      "parents": [
        "417fd2334a694cf6a831b81cd672b4ca31ff2f54"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 11 16:08:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 11 16:08:51 2012 -0700"
      },
      "message": "Fix dlerror(3).\n\nAdd unit tests for dlerror(3) in various situations. I think We\u0027re at least\nas good as glibc now.\n\nAlso factor out the ScopedPthreadMutexLock and use it here too.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d38398\nChange-Id: I040938b4366ab836e3df46d1d8055b92f4ea6ed8\n"
    },
    {
      "commit": "156da966214957c5616a0b83cc84686eedfc4e31",
      "tree": "86ff70465d7ef24b343d0cf29724b50ace96aaad",
      "parents": [
        "9a7366e8943990619c494548050aa906f1971332"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 09 17:14:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 09 17:17:24 2012 -0700"
      },
      "message": "Fix a getcwd(3) bug and make our tests run correctly under valgrind.\n\nThe getcwd(3) bug was found by valgrind.\n\nBug: 7291287\nChange-Id: I59f3bff1c1392a408b905934eebcd5d894d37492\n"
    },
    {
      "commit": "774c7f54ff375d71106283d42779b0cc5f238f87",
      "tree": "3dc911f915d8d120089ca5afd60bb84b6d51e71e",
      "parents": [
        "5b6346f6d5dca4022fe0044dd2807c19ac596788"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 13:11:03 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 13:53:41 2012 -0700"
      },
      "message": "Upgrade to the current NetBSD rand implementation.\n\nAlso add basic unit tests.\n\nChange-Id: I7fc7ef61d47c1e8fdf8b8eff67a635220c3afd56\n"
    },
    {
      "commit": "eac9eb462ed6f7fcfb791e7a08b4011fcca47829",
      "tree": "3b436a25d9ff22616ca22919ff9026e4426a9243",
      "parents": [
        "e4030e0bfc427e755477bbea69afe60308a62d91"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:28:30 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 27 11:38:57 2012 -0700"
      },
      "message": "Add getdelim(3) and getline(3) to bionic\n\nSome userspace programs (e.g. perf) need getline.\n\nChanges:\n() add getdelim.c, getline.c from NetBSD (http://netbsd.org/) under the\nNetBSD Foundation\u0027s (TNF) license (\"2 clause\" Berkeley-style license).\n() add stub for reentrant.h header that is needed by getdelim.c\n() add tests for getdelim(3) and getline(3).\n() update NOTICE file.\n\nChange-Id: I22ed82dd5904b9d7a3695535c04f502be3c27c5d\nSigned-off-by: Irina Tirdea \u003cirina.tirdea@intel.com\u003e\n"
    },
    {
      "commit": "ac184b21425a0681c51ef152f0567168b575da49",
      "tree": "08d0842acb148aa0ec9c01a455cefb28240b8fe6",
      "parents": [
        "8e630dacf61307e4681f04fc6b5ee593f30d91d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:20:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:20:22 2012 -0700"
      },
      "message": "Fix several compiler warnings.\n\nChange-Id: I55caa50a5937442734f4fcbdb4edf1c70f335bf8\n"
    },
    {
      "commit": "8e630dacf61307e4681f04fc6b5ee593f30d91d0",
      "tree": "d20a5fcd6be37121ff368bd51eee8d1380b971b0",
      "parents": [
        "855dde44266e3c8384ea419f51f9a5c748253eda",
        "8e15b08ae22a5230c1fea4779410de0420fa939c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 12:10:55 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 26 12:10:56 2012 -0700"
      },
      "message": "Merge \"Simple tests for dladdr(3).\""
    },
    {
      "commit": "91875dcd6e17b7f3b251efe9b236b905ef414dde",
      "tree": "3e1fb66b922496ec295bd63bfea01fe339f7fcc0",
      "parents": [
        "6e0e03c38bc0e864225b89b3fb273fb56ded8940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 17:55:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 12:02:17 2012 -0700"
      },
      "message": "Fix tmpfile(3).\n\nThis could be better, but at least now it works.\n\nChange-Id: I88b7cf3f7ce8e5fa0b3fe678b7d1679a68ffffc9\n"
    },
    {
      "commit": "8e15b08ae22a5230c1fea4779410de0420fa939c",
      "tree": "48cd808c71d7c440e05af6f9f71ccdf89ae50680",
      "parents": [
        "6e0e03c38bc0e864225b89b3fb273fb56ded8940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 11:44:01 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 11:44:01 2012 -0700"
      },
      "message": "Simple tests for dladdr(3).\n\nChange-Id: I22160b7fc9b950ea19adb6da42af2f893f4fe5d5\n"
    },
    {
      "commit": "8a05a01de75d78a45d646115b20b2a3e3c12ba9e",
      "tree": "5cefd13caf66aede2241cca2b8cc9200a11edd86",
      "parents": [
        "2a54e5ecd0a96398e8d7d9b1629ecf8fb1633a2b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 13 14:31:50 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 13 15:25:09 2012 -0700"
      },
      "message": "Print out shared app gids correctly\n\nFor applications that share resources across users such as\nforward-locked applications, print out their group name correctly.\n\nChange-Id: I06ee0b67e4325cfa415ffd7a03e301700399a66d\n"
    },
    {
      "commit": "2a54e5ecd0a96398e8d7d9b1629ecf8fb1633a2b",
      "tree": "0fa9a13009d0f9e215921fa3bc58b8b8b23d158c",
      "parents": [
        "fa36875df423af968d053c584c0de18a2448516b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 13 10:52:52 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 13 15:25:09 2012 -0700"
      },
      "message": "Add tests for Android-specific stubs\n\nAlso fix problem with multi-user IDs that the home directory was\nreturned as \"/data\" instead of \"/\" unlike all the other uids.\n\nChange-Id: I914d22052e5a86552989f8969b85aadbc748c65d\n"
    },
    {
      "commit": "fa36875df423af968d053c584c0de18a2448516b",
      "tree": "3233bce0d97afe4a06fe33103afb9327e551af2e",
      "parents": [
        "b338ea30b299099a2b26a4e8a6b2ccd7bfac631a",
        "b5f053b5a7deb084e7a052d527e0aa41339ae05c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 15:19:36 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 13 15:19:37 2012 -0700"
      },
      "message": "Merge \"Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).\""
    },
    {
      "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": "38bfa21695b19c21784d2074de30d5d102f08972",
      "tree": "25a2ec65c3d4497fc31a392d930ee32b3e9a31b8",
      "parents": [
        "4a9b7c694a8312160d3cd953a8227c23a1624868"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 11:01:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 11:01:46 2012 -0700"
      },
      "message": "Fix Mac build.\n\nChange-Id: Id625806fab0f2f7f90f9508c5fce649afe970414\n"
    },
    {
      "commit": "acf5aa76a56f101607aeb8e6d1fbea24d0d4f68c",
      "tree": "53f52d0c00d16b35e78a99c778c509a413d74fd2",
      "parents": [
        "7593fa8eb7d8c3950a069e5edd244fb68872ec17"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 12 17:25:30 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 12 19:19:13 2012 -0700"
      },
      "message": "Added new test for dlopen which is failing for MIPS.\n\nChange-Id: I2240faefb387a11647f49b1a15699907a40f98c1\n"
    },
    {
      "commit": "4d014e15b44d3e8d1b0189bc9bb7b0d0685e5af8",
      "tree": "c64212fa81690ddccfcf6d78db03e1af81e263b4",
      "parents": [
        "d10309c36b93176a473baeeddef6f3fba8bf0678"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 07 16:47:54 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 07 16:47:54 2012 -0700"
      },
      "message": "Add more pthreads tests.\n\nSomeone reported a bug if pthread_detach is called while a pthread_join is\nalready in progress, but I\u0027m unable to reproduce it. Keep the tests I wrote,\nthough.\n\nChange-Id: I3d71450bbbb5345f2cb213dc56310ec020d528cc\n"
    },
    {
      "commit": "bfeab1bbe7e8d0c08b7e3f46aedab64e3b2bf706",
      "tree": "d7ee2fec0079394cfacebdc632036a53f079c011",
      "parents": [
        "ff4608ae0cb78caa05b83e109fc2633682958089"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 17:47:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 17:47:37 2012 -0700"
      },
      "message": "Don\u0027t corrupt the thread list in static executables.\n\nSeveral previous changes conspired to make a mess of the thread list\nin static binaries. This was most obvious when trying to call\npthread_key_delete(3) on the main thread.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d36893\nChange-Id: I2a2f553114d8fb40533c481252b410c10656da2e\n"
    },
    {
      "commit": "2e8f4345dfe16e64d7a3c26f688f17f2b48b2dd1",
      "tree": "6d5460b71bcfe30ef4c945fda3aa8449d5e61d35",
      "parents": [
        "b2c5bd543dcbbc1b2cbf7afd8b124256ce2c128e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 14:27:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 14:27:17 2012 -0700"
      },
      "message": "Add missing dependencies.\n\nChange-Id: I53c1cfb59ac7a89952a8d6b906b2b9e16a66624f\n"
    },
    {
      "commit": "5ac9eee1d3291a0d203a125849b4636a11c0d124",
      "tree": "2064bbfedd11f692652778186f5f72d9d7bbcaa8",
      "parents": [
        "6fe901ef38898d9cb6007720940e915f7180fc11"
      ],
      "author": {
        "name": "Benoit Goby",
        "email": "benoit@android.com",
        "time": "Fri Aug 31 19:52:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 04 13:36:54 2012 -0700"
      },
      "message": "bionic: Fix TINY_ANDROID build\n\n(cherry-pick of 545d5dbbcb0dc9e44323c4f2e687a3aace75a483.)\n\nChange-Id: Ifc91e84ffed5a3a287accabd7f08b02752688db6\n"
    },
    {
      "commit": "7b841f3b4ad121dd64f639c1858b42defffd60bd",
      "tree": "43a2aec8e1e2711606923896fefe0a17c6b794ea",
      "parents": [
        "60ef95e1c1b171635adb4d11289347674b1b8987"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Aug 15 20:27:04 2012 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Aug 16 22:36:36 2012 -0700"
      },
      "message": "Don\u0027t over-generalize makefiles.  Host modules always build. This isn\u0027t needed on eng builds.\n\nChange-Id: I5821ced7a8a9042fd2094204e07470d8002263ca\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"
    }
  ]
}
