)]}'
{
  "log": [
    {
      "commit": "72bbd423579bb971dc06cdd3c06201faf3fe95e6",
      "tree": "222c460d45ac120ae45940628c501d6cfb50f84b",
      "parents": [
        "afb89c2a01089bb247456634a15a58f111bb55a6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 08 11:14:03 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 20 14:47:33 2014 -0700"
      },
      "message": "Support for jemalloc to replace dlmalloc.\n\nTo use jemalloc, add MALLOC_IMPL \u003d jemalloc in a board config file\nand you get the new version automatically.\n\nUpdate the pthread_create_key tests since jemalloc uses a few keys.\nAdd a new test to verify memalign works as expected.\n\nBug: 981363\n\nChange-Id: I16eb152b291a95bd2499e90492fc6b4bd7053836\n"
    },
    {
      "commit": "b648a8a57ee42533a5bf127225a252f73ca2cbbc",
      "tree": "09fdf06c6e8d5e6985107f4e8fdb2055c5bb6a6f",
      "parents": [
        "0b9a72ce1124f17d514b93c0d26dea76ce8069f0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 19 15:06:58 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue May 20 12:02:24 2014 -0700"
      },
      "message": "Add RTLD_NOLOAD support and some related changes.\n\n * Aligned RTLD_ values with glibc for lp64\n * dlopen supports RTLD_NOLOAD flag\n * soinfo_unload calls find_library(.., RTLD_NOLOAD)\n   instead of naive find_loaded_library_by_name()\n * dlopen changed to add child to caller soinfo instead\n   of somain.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d64069\nChange-Id: I1a65f2c34f3e0edc6d2c41a2e408b58195feb640\n"
    },
    {
      "commit": "7a39094465bbd01a22565fce1f1155c762f8d145",
      "tree": "c3d23c62894a3dbabd5d0160166afe7ab5f4fcf3",
      "parents": [
        "4d35da1df8b74c1965b2201f6089e7d7bb352def"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 23:46:51 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 23:46:51 2014 +0000"
      },
      "message": "Revert \"Removes bionic\u0027s dependence on stlport\"\n\nThis reverts commit 4d35da1df8b74c1965b2201f6089e7d7bb352def.\n\nChange-Id: Ie9a2620441edb55dbc5949e13a4b913ea4e66797\n"
    },
    {
      "commit": "4d35da1df8b74c1965b2201f6089e7d7bb352def",
      "tree": "21c58c7fa8fa2d34d777eeae25a79d5bf05b087a",
      "parents": [
        "48ee47ce25fa9c99df49855ebf77ae1758d58d47"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 10:50:15 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 11:33:14 2014 -0700"
      },
      "message": "Removes bionic\u0027s dependence on stlport\n\nOnly affects tests/benchmarks. Confirmed passing on arm.\n\nChange-Id: If158e23e8cd06e7597ef6f3c9376f6799b467e62\n"
    },
    {
      "commit": "568d64dc6213b137e43d65e007cc2c60adc16071",
      "tree": "18133000f8633d2b200923b5e325ad59c3c73fae",
      "parents": [
        "2a60227223da700e4ae1b5436f61aea99fc7a5aa"
      ],
      "author": {
        "name": "Jingwei Zhang",
        "email": "jingwei.zhang@intel.com",
        "time": "Tue May 13 16:17:24 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 16 15:31:55 2014 -0700"
      },
      "message": "Accuracy tests for libm\n\nThis patch adds tests for 14 math functions to address coverage\nissue of math functions discussed in:\nhttps://android-review.googlesource.com/#/c/49653/\n\nChange-Id: Ia7200b93d4f5c7928a3fb827ca6932226384a116\nSigned-off-by: Jingwei Zhang \u003cjingwei.zhang@intel.com\u003e\nSigned-off-by: Yong Yao \u003cyong.yao@intel.com\u003e\n"
    },
    {
      "commit": "d59e50063ad708509f3ad83350be33f5612c4f54",
      "tree": "4179117769c38d28aff06e56427f54e72e5eed6b",
      "parents": [
        "6897b7b8b95beae120fd53e6fd15921d6420bea7"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri May 09 09:10:14 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 14 15:16:35 2014 -0700"
      },
      "message": "Improve detection of already loaded libraries\n\nLinker is now able to resolve symlinked libraries correctly.\n\nsoinfo is extended to save the graph of dependencies during\nload/unload. Dependencies are used only in CallConstructor.\n\nBug: 9741592\nChange-Id: Id9c48a74c46aa89bcdf3d54ec2f8ba3d398130b1\n"
    },
    {
      "commit": "6a41b0fb0e589c4afc4ecbcf7c425f0aa40eaea4",
      "tree": "a333726f481bd9ca99db2a4ed5752d9b93c37b61",
      "parents": [
        "0ccef7ec5294b34902e07c26db55891d3eddb2be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 16:05:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 18:08:29 2014 -0700"
      },
      "message": "Flesh out \u003carpa/inet.h\u003e.\n\nUse the upstream OpenBSD implementations of these functions.\n\nAlso ensure we have symbols for htonl, htons, ntohl, and ntohs.\ngtest doesn\u0027t like us using the macro versions in ASSERT_EQ.\n\nBug: 14840760\nChange-Id: I68720e9aca14838df457d2bb27b999d5818ac2b5\n"
    },
    {
      "commit": "eb664e24c074b88539b743668109d8b4eaa925bd",
      "tree": "20bd4bb4f2a733dcec384fa7c959c77661f156ba",
      "parents": [
        "dbcba8f5f9a59fac3d22dfc17a14d3d5cfb4f4b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 10:44:07 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 10:44:07 2014 -0700"
      },
      "message": "Add getmntent_r to our collection of \u003cmntent.h\u003e compatibility stubs.\n\nThis helps build \u0027external/flo\u0027 out of the box.\n\nBug: 14841211\nChange-Id: I30dde77239cceaf1f5743163744eb3604d27a266\n"
    },
    {
      "commit": "7db180919c335287b201e859faa8ee0dbe281cde",
      "tree": "c01880b72bdcd67dfeae29644b782a525d4aa423",
      "parents": [
        "b69645248887ddb88517b07c1617d390fdce9c9f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 08 12:27:25 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 08 14:28:34 2014 -0700"
      },
      "message": "Test dlopen with symlinked .so files\n\nBug: 9741592\nChange-Id: I68c59d6f4e690136395c3dc3de13f99ce38de528\n"
    },
    {
      "commit": "f837cbdc27a0f024bdc9898177a8ac05817441a7",
      "tree": "529810fa7c1d92673a165a589e7631334b780df2",
      "parents": [
        "8ec38997ef44c12dc4cac0f19148a44ee70eba74",
        "6396da98cb3313048ae9a8147523ed61f675fd50"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 07 20:49:00 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 07 20:49:00 2014 +0000"
      },
      "message": "Merge \"Add missing test for atexit test suite.\""
    },
    {
      "commit": "6396da98cb3313048ae9a8147523ed61f675fd50",
      "tree": "40f901b2a1f24870f52f971e6abe27e21ce3744e",
      "parents": [
        "35cff760dfc5d9d1432955503ffff02286ac20ef"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 05 19:52:13 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 07 12:29:54 2014 -0700"
      },
      "message": "Add missing test for atexit test suite.\n\nChange-Id: I3d14d7df1da53ccef534c106633593551ab6a7cb\n"
    },
    {
      "commit": "837abf04667c29db178fd28f500537429a18be30",
      "tree": "eb0e2f566231f49b344e4ccfc531f3ebfd7c8c39",
      "parents": [
        "35cff760dfc5d9d1432955503ffff02286ac20ef",
        "0e9d7fccb9c3b688992f2ef9ac1cfd1f456b1ed7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 07 18:31:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 07 18:31:11 2014 +0000"
      },
      "message": "Merge \"Fix bionic-unit-tests-glibc-run target\""
    },
    {
      "commit": "0e9d7fccb9c3b688992f2ef9ac1cfd1f456b1ed7",
      "tree": "a31f1aa0530f919a532855d4f80bc5ae685cbecf",
      "parents": [
        "790890fd5c896a098142e0783b10fa8246462249"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 07 19:06:30 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 07 19:06:30 2014 +0100"
      },
      "message": "Fix bionic-unit-tests-glibc-run target\n\nConfigure multilib for bionic-unit-tests-glibc-run target (the path to\nthe host executable was already patched to support multilib build but\nthe multilib itself wasn\u0027t configured).\n\nChange-Id: If533fbdb19bc737e543cf85a0787505458f24579\n"
    },
    {
      "commit": "26052616915fe2324755687c7db73d69c521b34d",
      "tree": "41cfb3c89c4ab9b94be4c31330877fc0abeeda6a",
      "parents": [
        "9b5ee4aa85cf55467eb9a749b6602f6f2ba1cfc6"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri May 02 14:57:42 2014 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue May 06 11:38:53 2014 +0100"
      },
      "message": "Test that relro sharing actually saves memory.\n\nSpawn 20 child processes, have them all load the library, and compare\nthe total PSS used in the case where we use dlopen() and the case where\nwe use android_dlopen_ext() with relro sharing. We assume we will save\nat least 10% of the memory; in practise this example saves 40% or more\nso this should be a reasonable threshold.\n\nBug: 14299541\nChange-Id: Idccf6b8b0eb137abae2200f1ce68fb76b3cbdd75\n"
    },
    {
      "commit": "9b5ee4aa85cf55467eb9a749b6602f6f2ba1cfc6",
      "tree": "73aef5636242162675ba853641585f3efde61c8d",
      "parents": [
        "185dd72a2c487502717903065e46d14039f17826",
        "26ec9679ff01fb155ae21015f31cc95bed24f670"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue May 06 10:16:18 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 06 10:16:18 2014 +0000"
      },
      "message": "Merge \"Handle empty relro segment or incorrectly sized file.\""
    },
    {
      "commit": "6b56691a678420477595a531b2d2829980eb51c0",
      "tree": "fc538a02922495f757b2d9efdebcfceba0bf0279",
      "parents": [
        "9fb53dd4dbaa7633c234d9da8417827fa3d3c32f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 29 08:41:29 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 05 11:36:57 2014 -0700"
      },
      "message": "Fixes for __cxa_finalize\n\n  * Ability to register atexit handler from atexit handler\n  * Correct way to handle both forms of atexit handler\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d66595\nBug: 4998315\nChange-Id: I39529afaef97b6e1469c21389d54c0d7d175da28\n"
    },
    {
      "commit": "26ec9679ff01fb155ae21015f31cc95bed24f670",
      "tree": "97478537891feb00d442d1e0eba5be1c0d64eefc",
      "parents": [
        "07bab525e24725aaacd71e7cc63dfc31d48ba8a7"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Apr 30 15:48:40 2014 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri May 02 14:25:45 2014 +0100"
      },
      "message": "Handle empty relro segment or incorrectly sized file.\n\nIf the file has no relro segment, the generated relro file will have\nlength 0, which caused mmap to fail. If the relro file has nonzero size,\nbut is too short (e.g. because it\u0027s for the wrong version of the\nlibrary), the linker would segfault while comparing the data. Fix both\nthese issues: don\u0027t try to map a zero length file, and don\u0027t try to\ncompare data that would be beyond the end of the file.\n\nImprove test to explicitly generate two versions of the library: one\nwith -z relro, and one with -z norelro, so we can test both cases; also\nexplicitly test the case where the relro file has length 0.\n\nBug: 14299541\nChange-Id: Id8b95585edda90e8bb5de452a35b70ed2d224934\n"
    },
    {
      "commit": "b8425c549a0bfe08b01b5906b95603d8523c1b16",
      "tree": "2efb8b0f66e170dff1cb9ff3a90001cc49ff9291",
      "parents": [
        "85e780d0557643a81c4a33b3bc5d3806ef9d78e3"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 29 17:49:06 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 29 19:17:00 2014 -0700"
      },
      "message": "Adds quick_exit(3) and at_quick_exit(3) from freebsd\n\nChange-Id: I4fe88abd8f7b8aa45e58aeb2529d59a8d555d338\n"
    },
    {
      "commit": "55cd82762f3173247dc7e0eae2826aa24d22213a",
      "tree": "78441d83b621e82f1c8a40c5f6fcb2c08e2aa60a",
      "parents": [
        "7fdab460a9790959ce6c4201476a3ea982eb148e",
        "3d7a0d9b08ecab054b2dff8332507644de3690b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 22:33:15 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 29 22:33:15 2014 +0000"
      },
      "message": "Merge \"Switch to the OpenBSD wcsto* functions.\""
    },
    {
      "commit": "3d7a0d9b08ecab054b2dff8332507644de3690b0",
      "tree": "b6c4f27e3abdd6590a452c978048ae21d934da09",
      "parents": [
        "07bab525e24725aaacd71e7cc63dfc31d48ba8a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 14:46:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 14:53:11 2014 -0700"
      },
      "message": "Switch to the OpenBSD wcsto* functions.\n\nThis replaces a partial set of non-functional functions with a complete\nset of functions, all of which actually work.\n\nThis requires us to implement mbsnrtowcs and wcsnrtombs which completes\nthe set of what we need for libc++.\n\nThe mbsnrtowcs is basically a copy \u0026 paste of wcsnrtombs, but I\u0027m going\nto go straight to looking at using the OpenBSD UTF-8 implementation rather\nthan keep polishing our home-grown turd.\n\n(This patch also opportunistically switches us over to upstream btowc,\nmbrlen, and wctob, since they\u0027re all trivially expressed in terms of\nother functions.)\n\nChange-Id: I0f81443840de0f1aa73b96f0b51988976793a323\n"
    },
    {
      "commit": "5090964da02c956f099a49b5a3eb732c0085c58b",
      "tree": "9442fa2596395c1b6f4827c15175e1243d463681",
      "parents": [
        "0fd2e87a0cac56f772fe6fac4cd32de8a656a406"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 28 21:10:37 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 28 21:10:37 2014 -0700"
      },
      "message": "Fix potential makefile bug.\n\nSince multilib is not set every time, it needs to be per module or\nthere is a change that another target will use the multilib value set\npreviously.\n\nChange-Id: I5c30e18d5111705cb3f6e3d4cd9ef8a28c9b746c\n"
    },
    {
      "commit": "0c567f1e6cfceada98ba10deb4bac6030c9d20f7",
      "tree": "554711181741f0f353b640e586334c4e13a2679b",
      "parents": [
        "16ea297f1251be100fd7f70e5ed62ca095384c8a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 19:21:32 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 19:21:32 2014 -0700"
      },
      "message": "Fix the glibc tests again.\n\nThe glibc tests are just a regular host binary; they don\u0027t require\nthat you\u0027re targeting x86 or x86_64. They do seem to pick up the\nsuffix of the target though, even though they\u0027re always 32-bit.\n\nChange-Id: I689ca2a4f8d7b397afa4df722b95b0d7ec904bf6\n"
    },
    {
      "commit": "156c3afcf178b8a6c29b9edc7e8d13999a58d857",
      "tree": "f0222f9bae244e587a443654cc1443a9e3c51561",
      "parents": [
        "8eaeaf50cbd769c7c9852621a422a4f0be1e08e5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 22 15:22:25 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 22 15:22:25 2014 -0700"
      },
      "message": "Follow up on building tests for both platforms\n\nthis makes run-on-host work properly\n\nChange-Id: Iaed93ca9d96359b64bbeff995280ecd70fc9cc60\n"
    },
    {
      "commit": "345b49a7c07fde18e9397ffba9079ff81a4c3d74",
      "tree": "0061272e683e9a49d71eb92a8db7280d64da0e7a",
      "parents": [
        "c5eea6d386c23bde6f0400a8959ed21081d8365b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 22 10:42:12 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 22 10:42:12 2014 -0700"
      },
      "message": "Build 32/64 bit versions of tests/benchmarks.\n\nChange-Id: I4d146377aac6573a214dfaa5cab5cce8b10538b4\n"
    },
    {
      "commit": "c363e5dd0a15aac9036b453f655a3a0ae5cd32cd",
      "tree": "385627eccdd2c853f1f571902d27a55ebfb23675",
      "parents": [
        "16f6429c38c24236418cf127a4c11c5d8a2fd47b",
        "12bbb9164578b6512b8b07a3fb093858244b7c7b"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Tue Apr 22 10:33:33 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 22 10:33:34 2014 +0000"
      },
      "message": "Merge \"Support loading libraries to a reserved address.\""
    },
    {
      "commit": "f3c73901cb5ca4de2651151cf2c65b31a729466e",
      "tree": "0a5f3ba73342782ee188f914c8f60f337c2af7d6",
      "parents": [
        "0e351e4011bc98cacc3e37292bfb0e86c3a3bb5b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 10:29:16 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 10:29:16 2014 -0700"
      },
      "message": "Upgrade our \u003cctype.h\u003e implementation to OpenBSD head.\n\nAdding the perfunctory \u003cctype.h\u003e tests showed that we\u0027d accidentally\ndropped several symbols. This puts everything back in its proper place\nand switches us to upstream head at the same time.\n\nChange-Id: Ib527ad280c9baded81e667fa598698526d93e66f\n"
    },
    {
      "commit": "12bbb9164578b6512b8b07a3fb093858244b7c7b",
      "tree": "2a32dc3fe2902444aed43647f0ab1d2612507296",
      "parents": [
        "012cb4583a5f8564059142bb1900ea3a31e7cfa9"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Feb 06 14:34:21 2014 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Thu Apr 17 14:22:17 2014 +0100"
      },
      "message": "Support loading libraries to a reserved address.\n\nAdd flags and parameters to android_dlopen_ext() to allow loading a\nlibrary at an already-reserved fixed address. If the library to be\nloaded will not fit within the space reserved, then the linker will\neither fail, or allocate its own address space as usual, according to\nwhich flag has been specified. This behaviour only applies to the\nspecific library requested; any other libraries loaded as dependencies\nwill be loaded in the normal fashion.\n\nThere is a new gtest included to cover the functionality added.\n\nBug: 13005501\nChange-Id: I5d1810375b20fc51ba6a9b3191a25f9792c687f1\n"
    },
    {
      "commit": "8c42606ae10b59318c9a4ea83854049bab5b9328",
      "tree": "acce4aed7ffff7fbdc337249e79da85e8fd39aec",
      "parents": [
        "4e364d972433bda04614b56bc422ca88bf406c00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 11:34:14 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 11:34:14 2014 -0700"
      },
      "message": "Add a test for external/stlport a6df82320fcb8f26af0d067c7768fedbaeb9ad88.\n\nChange-Id: If4df9f5df41ae5453a3dff6bb032b419819f8703\n"
    },
    {
      "commit": "77e944fd46728075fe632bcb5211da9daf5b7e68",
      "tree": "078c4ed4dcd4a8d857aa948de76dec223c588e0d",
      "parents": [
        "dc5fcf3620bfc221954b3d42f459bfdcf8f48216"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 04 17:34:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 14:29:28 2014 -0700"
      },
      "message": "Implement wctomb(3) for ltrace.\n\nThis is an implementation in the style of the rest: char \u003d\u003d byte.\n\nWe might want to come back and implement UTF-8, but this is enough for ltrace.\n\nBug: 13747066\nChange-Id: Ib2b63609c9014fdef9a8491e067467c4fc5ae3cc\n"
    },
    {
      "commit": "108f6dc3168fa492a7ba906466ac65749f5fbda5",
      "tree": "e7e68e62f45b3475b707df32107f9f6d41d41545",
      "parents": [
        "aad59fafeaa1f46e1744864167e6407b5a5ae55e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 31 13:30:22 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 31 22:43:38 2014 -0700"
      },
      "message": "Move accept4 tests into sys_socket_test.cpp.\n\nIn addition, create basic recvmmsg, sendmmsg tests.\n\nChange-Id: Ie9f4954446d98b5eb5e553d3c616c1ee67c3cb66\n"
    },
    {
      "commit": "9cea3775056d0a8d04d49c3983440b89d82a462b",
      "tree": "7efc58da446fa759651030322662f6f853cf8020",
      "parents": [
        "557942ac58f08675473460b1802b43473c467172"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 31 11:23:39 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 31 11:23:39 2014 -0700"
      },
      "message": "Small accept4 fixes.\n\nPut the accept4 test in the sorted order, and put the accept4 define in\nsorted order.\n\nAlso add the missing SYS_RECVMMSG and SYS_SENDMMSG defines.\n\nChange-Id: Iba55354975e0d5027dbee53f6de752c2df719493\n"
    },
    {
      "commit": "50282f72bb9be6b49212a3978faec70786e9f97f",
      "tree": "fd30ad0ee980643c3f3ae923fa6d17921d15f747",
      "parents": [
        "a58b3f78e14500e7b10fc845ef0a6a8309664663"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Tue Mar 25 13:43:04 2014 +0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 28 11:15:03 2014 +0000"
      },
      "message": "Add lconv declaration and localeconv(3)\n\nlconv is taken from ndk/sources/android/support/include/locale.h and\nmatches\nbsd/glibc upstream.\nKeep old declaration for 32-bits for compatibility.\nlocaleconv.c and deps are taken from openbsd upstream.\nChanged strtod.c accordingly.\n\nChange-Id: I9fcc4d15f5674d192950d80edf26f36006cd31b4\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "2f3ba8844ab8ed6be02485c79c1e974a6513b492",
      "tree": "fa9a5cb69fbfb66ca33dbc9dc8c0dc757802f98a",
      "parents": [
        "bc475bc8d1d202baa48f6c9829fe1cced9122332"
      ],
      "author": {
        "name": "Andrei Emeltchenko",
        "email": "andrei.emeltchenko@intel.com",
        "time": "Tue Feb 18 10:22:58 2014 +0200"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 27 11:08:49 2014 -0700"
      },
      "message": "Add accept4 unit test to bionic.\n\nChange-Id: I1cce5fb8dab16f03164fdd288f35a814d7c49c6a\n"
    },
    {
      "commit": "722706672617d009279a8485b895bd3389de0396",
      "tree": "705bd0f3e8bb73a50cf0a52ffabc0d5889d43748",
      "parents": [
        "849e162d3bedc5ca61bdf15486268b253b9f4e93"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 19 17:45:08 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 19 18:23:36 2014 +0000"
      },
      "message": "Added a test flag to bionic run-test targets.\n\nIt makes it much easier to pass arguments to the tests.\n\nChange-Id: Ia91eba4868627a3cea3f8d2c26ba01af4e860b12\n"
    },
    {
      "commit": "6ff0c75c838e73d2aeccc0102ab58a7b865172ca",
      "tree": "664bed83a31a736af22e3ac37ff36b14e809724c",
      "parents": [
        "000ffd8ab0b4112173ce319869f4111f08fbe975"
      ],
      "author": {
        "name": "Guillaume Ranquet",
        "email": "guillaumex.ranquet@intel.com",
        "time": "Mon Feb 10 13:11:29 2014 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 27 14:29:01 2014 -0800"
      },
      "message": "Add recvmmsg and sendmmsg syscalls.\n\nAlso add the corresponding constant, struct, and function declarations\nto \u003csys/socket.h\u003e, and perfunctory tests so we know that the symbols\nactually exist.\n\nSigned-off-by: Guillaume Ranquet \u003cguillaumex.ranquet@intel.com\u003e\nChange-Id: Ib0d854239d3716be90ad70973c579aff4895a4f7\n"
    },
    {
      "commit": "d4934a70e69365c97b1378820152e134a0089b5e",
      "tree": "c26c1ef275cd79486a03d9e4df76193c4a4ccc33",
      "parents": [
        "fe317a3775e16d466bb884a8e054fd77f7087bb3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 24 16:13:50 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 24 20:22:11 2014 +0000"
      },
      "message": "Added ftw64, nftw64\n\nBug: 13076637\nChange-Id: I5b926526f935b00bba14c2807b61d85f95089c33\n"
    },
    {
      "commit": "da030de702b756077fec536ed139e7ea38b51022",
      "tree": "43e29ce4f9b5128e25bb55efb78a4329104e38ac",
      "parents": [
        "44ef37c1b445e864068cdcd885ab3d7b17079ad3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 20 13:40:36 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 21 16:27:21 2014 +0000"
      },
      "message": "Fixed int fast types for LP64\n\nBug: 13110474\nChange-Id: Id5591603ad4ba7e149c0852f4abb25e4e5a5d065\n"
    },
    {
      "commit": "db1ea3474899ebbd783aba872d3005f95a816d0f",
      "tree": "b70fedd7d69098f5141dbbb09ef41851a61eec8d",
      "parents": [
        "3623d80675e5321b92c2d88a7b7ec6bd998d81d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 17 18:42:49 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 15:39:24 2014 -0800"
      },
      "message": "Implement some of the missing LFS64 support.\n\nThis gives us:\n\n* \u003cdirent.h\u003e\n  struct dirent64\n  readdir64, readdir64_r, alphasort64, scandir64\n\n* \u003cfcntl.h\u003e\n  creat64, openat64, open64.\n\n* \u003csys/stat.h\u003e\n  struct stat64\n  fstat64, fstatat64, lstat64, stat64.\n\n* \u003csys/statvfs.h\u003e\n  struct statvfs64\n  statvfs64, fstatvfs64.\n\n* \u003csys/vfs.h\u003e\n  struct statfs64\n  statfs64, fstatfs64.\n\nThis also removes some of the incorrect #define hacks we\u0027ve had in the\npast (for stat64, for example, which we promised to clean up way back\nin bug 8472078).\n\nBug: 11865851\nBug: 8472078\nChange-Id: Ia46443521918519f2dfa64d4621027dfd13ac566\n"
    },
    {
      "commit": "f04935c85e0b466f0d30d2cd4c0fa2fff62e7d6d",
      "tree": "8f1c6af75517892648f49adad9d4d5d44c20f49c",
      "parents": [
        "e163a3986aa7d1c67fe3274eb9204812be0a6245"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 20 18:43:21 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 06 20:12:21 2014 -0800"
      },
      "message": "Make sure that the same tests are on all platforms.\n\nIn order to be able to generate a list of tests for cts, the same set of\ntests must exist across all platforms. This CL adds empty tests where a\ntest was conditionally compiled out.\n\nThis CL creates a single library libBionicTests that includes all of\nthe tests found in bionic-unit-tests-static.\n\nAlso fix a few missing include files in some test files.\n\nTested by running and compiling the tests for every platform and\nverifying the same number of tests are on each platform.\n\nChange-Id: I9989d4bfebb0f9c409a0ce7e87169299eac605a2\n"
    },
    {
      "commit": "431166d99519f6794f10c48694913d2fe864b841",
      "tree": "7c148908e51c210646a28f890da96897e6000138",
      "parents": [
        "652dd5196df87bdeef7bff452f1a4857a96e3133"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 27 16:28:31 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 27 16:36:56 2014 -0800"
      },
      "message": "Fix 32-bit mmap/mmap64 handling of negative offsets.\n\nWe don\u0027t actually need to worry about sign extension if we reject\nnegative values ourselves. Previously it was possible to come up\nwith negative but aligned values that we would pass to the kernel;\nin the case of mmap (as opposed to mmap64) we\u0027d incorrectly turn\nthose into large positive offsets.\n\nChange-Id: I2aa583e0f892d59bb77429aea8730b72db32dcb0\n"
    },
    {
      "commit": "d1973ca51325393f304e82a4d79874f33e54ac16",
      "tree": "75a657d895a41aa4855a06ef1e0e986c963e0eef",
      "parents": [
        "5b4884fac90753c68d401de73036c2de919958eb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 21 19:50:58 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 23 18:35:39 2014 -0800"
      },
      "message": "bionic: rename aarch64 target to arm64\n\nRename aarch64 build targets to arm64.  The gcc toolchain is still\naarch64.\n\nChange-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3\n"
    },
    {
      "commit": "0f461e35f63200641fc53bba222845a84589c024",
      "tree": "d5b0d3a9e13f4699bdc57dfd422a69ddfdde5090",
      "parents": [
        "8276d2875f64587e266567f5bb2c5e0c70ef0a5d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 09 10:17:03 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 09 11:00:04 2014 -0800"
      },
      "message": "Fix \u003csys/resource.h\u003e.\n\nThe situation here is a bit confusing. On 64-bit, rlimit and rlimit64 are\nthe same, and so getrlimit/getrlimit64, setrlimit/setrlimit64,\nand prlimit/prlimit64 are all the same. On 32-bit, rlimit and rlimit64 are\ndifferent. 32-bit architectures other than MIPS go one step further by having\nan even more limited getrlimit system call, so arm and x86 need to use\nugetrlimit instead of getrlimit. Worse, the 32-bit architectures don\u0027t have\n64-bit getrlimit- and setrlimit-equivalent system calls, and you have to use\nprlimit64 instead. There\u0027s no 32-bit prlimit system call, so there\u0027s no\neasy implementation of that --- what should we do if the result of prlimit64\nwon\u0027t fit in a struct rlimit? Since 32-bit survived without prlimit/prlimit64\nfor this long, I\u0027m not going to bother implementing prlimit for 32-bit.\n\nWe need the rlimit64 functions to be able to build strace 4.8 out of the box.\n\nChange-Id: I1903d913b23016a2fc3b9f452885ac730d71e001\n"
    },
    {
      "commit": "894f8cb1395d3409bb995d18abc1b3409c557d01",
      "tree": "c9ddda0d60085077fd96cd301c3ccbe16c581578",
      "parents": [
        "c1c3f7d4468f02adbf8ced689d738386e42af773"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 03 14:49:37 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 03 14:49:37 2014 -0800"
      },
      "message": "Fix dev_t (for LP64).\n\n32-bit Android\u0027s dev_t was wrong too. We can\u0027t fix that without ABI breakage,\nbut we can at least fix 64-bit Android. And add tests.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d54966\nChange-Id: Ie2e42cc042b78b669a1a44e55f959dbd9c52c5c9\n"
    },
    {
      "commit": "e7c59f9e2041812c597ff1c8689d47d1bfd32883",
      "tree": "97d56c8132b832669676c08de6c9298b50a33a5f",
      "parents": [
        "f293b15728031432317791fb4a17a423545d37b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 20:47:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 09:47:44 2013 -0800"
      },
      "message": "Fix compilation of crtbegin.c and pthread_debug.cpp.\n\nBecause there was no default :\u003d for the aarch64 libc_crt_target_cflags,\nthe +\u003d was causing libc_crt_target_cflags to be recursively-defined\nvariable, which meant that when we were compiling crtbegin.c LOCAL_PATH\nwould be bionic/tests/ and we\u0027d have -Ibionic/tests/include/ and find\nnone of our include files.\n\nAlso fix linking of pthread_debug.cpp, at least in the disabled mode.\nThe enabled mode was already broken for all architectures, and continues\nto be broken after this change. It\u0027s been broken for long enough that\nwe might want to just remove it...\n\n(aarch64 is using the FSF linker where arm uses the gold linker.)\n\nChange-Id: I7db2e386694f6933db043138e6e97e5ae54d4174\n"
    },
    {
      "commit": "e365f9d6543bc6607864ef61257505239dde15d1",
      "tree": "ecc2e3605bc26aeb9b16a1d3adbceb70da40ba19",
      "parents": [
        "2e3826c08171ead1647c800a0a6d9c333d335762"
      ],
      "author": {
        "name": "Marcus Oakland",
        "email": "marcus.oakland@arm.com",
        "time": "Thu Oct 10 15:19:31 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 15:02:43 2013 -0800"
      },
      "message": "AArch64: Linker64 support for AArch64\n\nAddition of support for AArch64 in the linker64 target.\n\nChange-Id: I8dfd9711278f6706063e91f626b6007ea7a3dd6e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n"
    },
    {
      "commit": "282e232e2a32cca8a288e81edddfd95f450cfc79",
      "tree": "43c466720c7ac06b055d9b6c12db0ad944669a6d",
      "parents": [
        "4e78ca63b8d53b96c590d3f1b29b0cfb65a651bc"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Tue Oct 22 11:30:12 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 16 17:40:30 2013 -0800"
      },
      "message": "AArch64: Add fixes to bionic/tests\n\nThis patch adds minor fixes to the bionic unit tests.\n\nChange-Id: Ie10f33c631ed6c10987923d678711d22931ddb05\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "a84f88f0989e9446686ae76a53dc087ff5788fe6",
      "tree": "63fe6c4c6d0218c0eadc5459948b1585d6a08a74",
      "parents": [
        "b39599286d03db13f51a79e4cfe6644da0079f1a",
        "bd3efbc9b585e0c9801b0b35f282347cb8692ca8"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 11 19:05:24 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 11 19:05:25 2013 +0000"
      },
      "message": "Merge \"bionic: move benchmarks out of tests directory\""
    },
    {
      "commit": "bd3efbc9b585e0c9801b0b35f282347cb8692ca8",
      "tree": "ee91fc952e907515d959f80a55de157318ad124a",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 15 17:49:47 2013 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 10 18:24:30 2013 -0800"
      },
      "message": "bionic: move benchmarks out of tests directory\n\nChange-Id: I4d054965198af22c9a9c821d1bc53f4e9ea01248\n"
    },
    {
      "commit": "b687ad3c3491fffe22507cafc9347e10cbf6bd31",
      "tree": "d854ac3533adc7268002f2ad299f4a6a9140b464",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 06 17:32:11 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 15 10:36:21 2013 -0800"
      },
      "message": "Add new tests for memory/string routines.\n\nCreate a few generic testing functions to allow any memory/string tests\nto be created.\n\nAdd alignment tests for memcpy/memset/strcat/strcpy/strlen.\n\nAdd an overread test for memcpy/strcat/strcpy/strlen. This test attempts\nto verify that the functions do not read past the end of their buffers\n(src buffer in the case of src/dst functions).\n\nBug: 9797008\n\nChange-Id: Ib3223ca1b99e729ae8229adc2d03f4dc3103d97c\n"
    },
    {
      "commit": "e61dc71efca544f4066a93706b639a29b3600229",
      "tree": "31137047c1a22f52fa9d61c3f051b6276bd85e89",
      "parents": [
        "22ba86ee44867c2d16973fc2f8da3b0f5b58cc5e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 13 13:14:31 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 13 13:14:31 2013 -0800"
      },
      "message": "Add a unit test for syscall(2).\n\nChange-Id: Ic7d9735d46711af93c3a1747de7b2eb8cebea094\n"
    },
    {
      "commit": "062092543fdbd6fa2676e4f5b37a15f7bba94332",
      "tree": "1363126a8783cca6b0ae3faf7cab2657d1934323",
      "parents": [
        "7115c80231aa88272294076c8775c09727ece85a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 16:20:54 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 16:33:39 2013 -0800"
      },
      "message": "Clean up the 32-bit kernel support, fix LP64 fcntl declaration.\n\nIn practice, thanks to all the registers the stubs don\u0027t actually change,\nbut it\u0027s confusing to have an incorrect declaration.\n\nI suspect that fcntl remains broken for aarch64; it happens to work for\nx86_64 because the first vararg argument gets placed in the right register\nanyway, but I have no reason to believe that\u0027s true for aarch64.\n\nThis patch adds a unit test, though, so we\u0027ll be able to tell when we get\nas far as running the unit tests.\n\nChange-Id: I58dd0054fe99d7d51d04c22781d8965dff1afbf3\n"
    },
    {
      "commit": "b38e4d536f6592cf22b984c143ee6790d6df2351",
      "tree": "e5f41120a4ccff7278f7a8b0507882520feffc2e",
      "parents": [
        "ad8fb26aff16b239fd79fd7223435bdae2462f72"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 25 10:06:57 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 25 10:23:12 2013 -0700"
      },
      "message": "Update running bionic unit tests on host.\n\nAdd a bionic-unit-tests-glibc-run target to run the glibc bionic unit tests.\n\nModify the bionic-unit-tests-run-on-host to make sure that the /system/bin\ndirectory is created properly.\n\nAlso remove the EXTERNAL_STORAGE variable which isn\u0027t used any more.\n\nBug: 11234772\nChange-Id: I9aea501d05700b29e938f672474d550b1872a78b\n"
    },
    {
      "commit": "11952073af22568bba0b661f7a9d4402c443a888",
      "tree": "c4ae77a40e8e309219cd4ab993a39d92f3d13e50",
      "parents": [
        "cdac5f73aca015287d1f40ff50d4fbf293a0c549"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 15:15:14 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 15:48:32 2013 -0700"
      },
      "message": "Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.\n\n(aarch64 kernels don\u0027t have these system calls.)\n\nChange-Id: I6f64075aa412f71520f2df71c3d69b647f91c1ca\n"
    },
    {
      "commit": "f8fcfbc85a3ce3e195626b90736d3a484331494b",
      "tree": "5742644f2305f27b65ae7d3a4d07a7614c36af2a",
      "parents": [
        "f0ed9bf2537e861ae75e6ab71efb4b4722ad0eee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 22 13:28:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 22 16:31:01 2013 -0700"
      },
      "message": "Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.\n\nModern architectures only get the *at(2) system calls. For example,\naarch64 doesn\u0027t have open(2), and expects userspace to use openat(2)\ninstead.\n\nChange-Id: I87b4ed79790cb8a80844f5544ac1a13fda26c7b5\n"
    },
    {
      "commit": "53bfdae4ffdbd43d0c019d1a35af1f8477a272c9",
      "tree": "f6b7395802ff60e74d4da96d0f66418dba31e22a",
      "parents": [
        "a5bab412e0bcb4f9e449d594330819c321cf18ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 19:39:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 19:39:09 2013 -0700"
      },
      "message": "Fix the x86_64 clone implementation.\n\nChange-Id: Ia75f46dcb4d3222049e9a6a6fabc2b17223b47f7\n"
    },
    {
      "commit": "17558dec7fc60775c940be0e494b42829f35e0b1",
      "tree": "c50a149307b868b6f467ff2881650c86f9ed9c63",
      "parents": [
        "e3cc1555f6e478109cc3b648f41d4039efc0fdcc"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Thu Oct 17 14:41:34 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 15:04:19 2013 -0700"
      },
      "message": "x86_64: Fix bionic tests build-and-run\n\nChange-Id: Iab48362893a212afbcbc362fdfaff5bfa5b55259\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "5b9310e502003e584bcb3a028ca3db7aa4d3f01b",
      "tree": "5747ee180ec0d5c352758125487a2815d4eb3716",
      "parents": [
        "f741e1c2ed27f153e92a2a36c9db3b189f9a6388"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 02 16:59:05 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 02 16:59:05 2013 -0700"
      },
      "message": "Fix 32-bit issues in tests, and add a trivial test for the FD_* macros.\n\nChange-Id: Ia3f21ce1f0ed9236527fe44d36ccb7de6bf63113\n"
    },
    {
      "commit": "b4f7616fd618875768b8fffc122b58bdb84a9969",
      "tree": "7a76517ef594dd73dfe18c388483e504fccb0a3d",
      "parents": [
        "f8e71bac14a4bc52cc95c56adfe042c3938279b5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 16:27:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 16:27:24 2013 -0700"
      },
      "message": "Ensure we have the off64_t variant of every function that takes an off_t.\n\nChange-Id: Ib2eee0cf13162be3b62559b84e90c6dcf5aab1c3\n"
    },
    {
      "commit": "e60c4f0a6cb5836caa8d0de299cc83fe4b13744c",
      "tree": "03b38c96b9dfd451cfe9001302fc9203303392e8",
      "parents": [
        "045f311b0a5b3ceed09dfc4b4246c99183a2cef4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 11:28:20 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 11:28:20 2013 -0700"
      },
      "message": "Fix host tests that need the shell.\n\nBy making the /system/bin/sh available.\n\nChange-Id: I99200c1ddc922a2f6b5cea8ff2da98aedbe70e7b\n"
    },
    {
      "commit": "f22fb68751c4040f3335cb0bd2d47f87c3ee1aac",
      "tree": "449d006497b5b5c35b12ac339da142a1e497c015",
      "parents": [
        "8512992f50e8444c1985bbeb17c3385a58fc0fed"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Sep 06 18:43:27 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 18 19:09:24 2013 -0700"
      },
      "message": "Add bionic-unit-tests-run-on-host special target\n\nAllows running the tests linked with bionic .so on the host if host and\ntarget are compatible. See more comments and usage limitation inlined.\n\nmake bionic-unit-tests-run-on-host should do build and run.\n\nChange-Id: I5946fa72e009d324baa9da18f460294b3c1a615e\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "8240bed918722944c9985bc0cca89eb44c4f6c91",
      "tree": "15f43d002f230e7df0d0b5762b4e6be5196dd0b3",
      "parents": [
        "4e3ed44db1200ca810842b0667e7fc80125de28d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 29 11:37:33 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 29 14:00:25 2013 -0700"
      },
      "message": "Move stack unwinding test into library.\n\nBug: 8291716\nChange-Id: Ia270f074b574a8fe86b5ad435bdef80999c64295\n"
    },
    {
      "commit": "153d92765bb693541abf49a2a1d31335e2c90348",
      "tree": "b94f0d824c81b6716a5d896c126f7b865b7f796d",
      "parents": [
        "33dd7c116d652223b5bf3dabe49641c310d1216b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 27 14:32:15 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 27 14:35:56 2013 -0700"
      },
      "message": "Create bionic unit test library for use with CTS.\n\nBug: 8291716\n\nChange-Id: I46b749348456fae7892eecca6b44aef51a0e4747\n"
    },
    {
      "commit": "9b06cc3c1b2c4e2b08582f3fc9393a05aa589766",
      "tree": "230f8e9cadd5dbd6a854b9e7c63f9707a4f84400",
      "parents": [
        "cf0529946a0ffd07e94785102965656768e455e1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 15 14:51:16 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 15 15:34:22 2013 -0700"
      },
      "message": "Fix pthread_getcpuclockid.\n\nclock_gettime was returning EINVAL for the values\nproduced by pthread_getcpuclockid.\n\nBug: 10346183\nChange-Id: Iabe643d7d46110bb311a0367aa0fc737f653208e\n"
    },
    {
      "commit": "d0be7c8f9a06b3ca8ea7647ea35c8f9dc63f0fe1",
      "tree": "a17df28516ef00c47859728418e9b7c7ef26c1ba",
      "parents": [
        "632fd5183a611b80e009be36f881f572acc41619"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 08 17:13:33 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 08 17:13:33 2013 -0700"
      },
      "message": "Add futimens.\n\nBug: 10239370\nChange-Id: I518340084103dc339ef8a065d4837d6258a1381d\n"
    },
    {
      "commit": "06040fd75c1edff9e5ffb2b3d3e2a6e66d57c11d",
      "tree": "26c883a0e074a206e7063d111861a177d91959e1",
      "parents": [
        "4fc8a0c1165537b693c900ac3e2c61470bd7e484"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 09 13:25:03 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 09 13:25:03 2013 -0700"
      },
      "message": "Add \u003csys/statvfs.h\u003e.\n\nBug: 2512019\nChange-Id: I6e7fd3fa281977cc4bc270481a95416b5b2dc351\n"
    },
    {
      "commit": "74f0833df6d04d51eb4e554845862ed7279f78b0",
      "tree": "c0ffd0126ace4a3ad84afab782ca9da8dfb8480e",
      "parents": [
        "1ba3a2c26937c68a4a0bd4fdffe95f5162077997"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 15:23:38 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 02 15:35:27 2013 -0700"
      },
      "message": "Fix inttypes.h PRI?PTR and SCN?PTR macros.\n\nOur intptr_t and uintptr_t aren\u0027t \"long\". Add a compilation test so we remember\nto fix this to cope with 32- and 64-bit later.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d57218\nChange-Id: I2f816d339edb4f7d57e4418b818fb4c602093f38\n"
    },
    {
      "commit": "5bcf39842e8c4b02ae557a2765a84e724f762469",
      "tree": "ed5b7404f85db58dd64433cb033114059705bcfa",
      "parents": [
        "78a7bf998d2d29592504984fcf419cd2701c6c54"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 28 10:34:09 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 28 11:54:29 2013 -0700"
      },
      "message": "Reorganize FORTIFY_SOURCE tests.\n\nGet rid of a lot of the duplication in the various FORTIFY_SOURCE\ntests. Instead, we build 4 separate static libraries, with\n4 different compile time options, and link them into the final test\nbinary.\n\nChange-Id: Idb0b7cccc8dd837adb037bf4ddfe8942ae138230\n"
    },
    {
      "commit": "c45087bffa528c0809f0df2e0a3708eba7018b33",
      "tree": "396514632534992375e81be44ea31194ff56ed9a",
      "parents": [
        "bfacb603e417c1e2c25ce8482b5c6e31b4db8c9b"
      ],
      "author": {
        "name": "Sergey Melnikov",
        "email": "sergey.melnikov@intel.com",
        "time": "Fri Jan 25 16:40:13 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 25 13:12:39 2013 -0700"
      },
      "message": "Kernel dso support for \u0027dl_iterate_phdr\u0027 function\n\nKernel provides virtual DSO for stack unwinding/exception handlind info for\nsignal usage case. Stack unwinding routines use \u0027dl_iterate_phdr\u0027 function\nfor additional DWARF info gathering from DSOs. Patch enables virtual DSO\nenumeration via dl_iterate_phdr function.\n\nSigned-off-by: Sergey Melnikov \u003csergey.melnikov@intel.com\u003e\nChange-Id: Ic2882b28f40b456a088bc1e63c50cbfda7e4a102\n"
    },
    {
      "commit": "16d1af167f8e36a9aa4a07ae77034ad519b00463",
      "tree": "61abe872a5f2ebebc4fe15205a77158bc8372ec2",
      "parents": [
        "b24c0637d06fe0980b9e13a8d0c3e6f4dbda9cd5"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 17 14:49:19 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 18 12:14:20 2013 -0700"
      },
      "message": "libc: add limited FORTIFY_SOURCE support for clang\n\nIn 829c089f83ddee37203b52bcb294867a9ae7bdbc, we disabled all\nFORTIFY_SOURCE support when compiling under clang. At the time,\nwe didn\u0027t have proper test cases, and couldn\u0027t easily create targeted\nclang tests.\n\nThis change re-enables FORTIFY_SOURCE support under clang for a\nlimited set of functions, where we have explicit unittests available.\nThe functions are:\n\n* memcpy\n* memmove\n* strcpy\n* strncpy\n* strcat\n* strncat\n* memset\n* strlen (with modifications)\n* strchr (with modifications)\n* strrchr (with modifications)\n\nIt may be possible, in the future, to enable other functions. However,\nI need to write unittests first.\n\nFor strlen, strchr, and strrchr, clang unconditionally calls the\nfortified version of the relevant function. If it doesn\u0027t know the\nsize of the buffer it\u0027s dealing with, it passes in ((size_t) -1),\nwhich is the largest possible size_t.\n\nI added two new clang specific unittest files, primarily copied\nfrom fortify?_test.cpp.\n\nI\u0027ve also rebuild the entire system with these changes, and didn\u0027t\nobserve any obvious problems.\n\nChange-Id: If12a15089bb0ffe93824b485290d05b14355fcaa\n"
    },
    {
      "commit": "b27e200ad6170ba3163f5ae6ba581bdaabb2e696",
      "tree": "fe98c4e40bc492a8db4221bdf539a50df54e7c77",
      "parents": [
        "5cf32de7a0fea0b10959b598300babc6e4f54d95"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jan 28 17:19:43 2013 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 17 16:58:47 2013 -0700"
      },
      "message": "bionic: add tests for properties\n\n(cherry picked from commit 37d9f75dde881a0ba1c1b3253b1be19d4096963d)\n\nChange-Id: Iac00ce10a4272032a1cbdbc4204277d6876e3365\n"
    },
    {
      "commit": "885f3b9cad01b8158aadc55c159c17dbf34f622c",
      "tree": "55991f909d2a12f185c0773de57cdf01b7074ecd",
      "parents": [
        "b7b4f5b838cd41407c734af74e8211f5c7da0036"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 21 17:48:01 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 07 14:55:32 2013 -0700"
      },
      "message": "Implement malloc_usable_size for debug impls.\n\n- Implemented chk_memalign.\n- Fixed a few bugs in leak_memalign.\n- Implemented {leak,fill,check,qemu}_malloc_usable_size.\n- Make malloc_usable_size update at run time.\n- Add malloc_test.cpp as a small set of tests for the\n  malloc debug routines.\n- Fix the qemu routines since it\u0027s been broken since it moved to C++.\n- Add support for the %u format to the out_vformat in libc_logging.cpp.\n  This is used by the emulator code.\n\nTested using the bionic-unit-tests with setprop libc.debug.malloc\nset to 1, 5, and 10.\n\nI tested as much as possible on the emulator, but tracing doesn\u0027t appear\nto be working properly.\n\nBug: 6143477\n\nMerge change from internal master.\n\n(cherry-picked from commit 3d594c258045783fc9e1956ce7a4d91e302f011e)\n\nChange-Id: I4ae00fffba82315a8c283f35893fd554460722fb\n"
    },
    {
      "commit": "1aae9bd170883805f2e7975cd3dbd2502b083cc1",
      "tree": "de73c01b4e8b61a11b54e8c4ecc8de222c4b0872",
      "parents": [
        "c6dc62f09c814b9688aee83e80dcfe80cb0ef604"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 29 14:07:06 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 29 15:22:10 2013 -0700"
      },
      "message": "strncpy: implement _FORTIFY_SOURCE\u003d2\n\nAdd support for fortify source level 2 to strncpy.\nThis will enable detection of more areas where strncpy\nis used inappropriately. For example, this would have detected\nbug 8727221.\n\nMove the fortify_source tests out of string_test.cpp, and\nput it into fortify1_test.cpp.\n\nCreate a new fortify2_test.cpp file, which copies all\nthe tests in fortify1_test.cpp, and adds fortify_source level\n2 specific tests.\n\nChange-Id: Ica0fba531cc7d0609e4f23b8176739b13f7f7a83\n"
    },
    {
      "commit": "8baa929d5d3bcf63381cf78ba76168c80c303f5e",
      "tree": "bc27560e5930aa49b4f8c0f1db7f9368ed126134",
      "parents": [
        "14c840df90bb4fc9935f7e24350e3269b6bd7f17"
      ],
      "author": {
        "name": "Kito Cheng",
        "email": "kito@0xlab.org",
        "time": "Wed Apr 03 11:29:40 2013 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 03 11:10:37 2013 -0700"
      },
      "message": "Prevent name conflict for eventfd.cpp and eventfd.s when building libc.a\n\n - eventfd.cpp and eventfd.s will output to the same file when building libc.a\n   out/target/product/*/obj/STATIC_LIBRARIES/libc_intermediates/WHOLE/libc_common_objs/eventfd.o\n - And then `eventfd` will undefined when statically linked to libc.\n\nAlso add a unit test.\n\nChange-Id: Ib310ade3256712ca617a90539e8eb07459c98505\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "e0175ca7e440a87e9d03f249fc8f210063df7908",
      "tree": "982e64580d19fc846cd7f2a1fa1dee2fbe2274d8",
      "parents": [
        "ec706c24acb4d1db6a583a57b76adfb9250d39eb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 14:38:08 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 14:38:08 2013 -0700"
      },
      "message": "Don\u0027t search off the end of the index for bad Olson ids.\n\nIn the old code, the index was a file to itself, so it made sense to\nread until you hit the end of the file. In the new code, the index is\nfollowed by hundreds of KiB of data, so we need to just search the\nindex.\n\nBug: 8368791\nChange-Id: Icf5f8b5516cf3a93679fa849c9f6cd1cb100e0f1\n"
    },
    {
      "commit": "4a05bef4c06dac05f1c9aa8cfc5b7e7dd6642385",
      "tree": "493815df9e9ddc9b5ce10780ef416eda8d7bb6e2",
      "parents": [
        "62c5cd0781e95c1c50b63c37a9a87bc158e64d38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 11 17:17:02 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 11 17:17:02 2013 -0700"
      },
      "message": "Cache the most-recently used timezone for mktime_tz and localtime_tz.\n\nNormally, the C library implicitly caches your timezone by virtue\nof the fact that the prehistoric API assumes a single timezone for\nthe entire process.\n\nThe unfortunate mktime_tz and localtime_tz extensions work around\nthis, but represent timezones as strings to their callers, so code\nthat makes heavy use of these needs a cache to be able to perform\nacceptably until it can hopefully one day be rewritten to use\njava.util.Calendar or icu4c.\n\nBug: 8270865\nChange-Id: I92e3964e86dc33ceac925f819cc5e26ff4203f50\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "38bfa21695b19c21784d2074de30d5d102f08972"
}
