)]}'
{
  "log": [
    {
      "commit": "9a2744df301c509ea48361016ab441c792ec6d5a",
      "tree": "ddb8027705abc3fdfd5355b80407ac49811d484b",
      "parents": [
        "2c256a0f0927abd94f2210b37c18ead210d30477",
        "d1aea30b2ade504550f7bb7996c808b9af1c415d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 25 18:01:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 18:01:18 2015 +0000"
      },
      "message": "Merge \"Fix POSIX timer thread naming.\""
    },
    {
      "commit": "d1aea30b2ade504550f7bb7996c808b9af1c415d",
      "tree": "5510d43664f9693ccab80e9b68be854d2ce9f859",
      "parents": [
        "2bb93482a7793640205ade2f7316db5b3f5cac19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 25 10:05:24 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 25 10:05:24 2015 -0700"
      },
      "message": "Fix POSIX timer thread naming.\n\nSpencer Low points out that we never actually set a name because the constant\npart of the string was longer than the kernel\u0027s maximum, and the kernel\nrejects long names rather than truncate.\n\nShorten the fixed part of the string while still keeping it meaningful. 9999\nPOSIX timers should be enough for any process...\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d170089\nChange-Id: Ic05f07584c1eac160743519091a540ebbf8d7eb1\n"
    },
    {
      "commit": "2c256a0f0927abd94f2210b37c18ead210d30477",
      "tree": "2de93d1a6e2c09be6467d79cacc57def83733910",
      "parents": [
        "440242f03805872a0c62528d763e5e98dad9b580",
        "ea295f68f1fae7c701baaa717f67296659d567ac"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Apr 25 05:36:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 05:36:07 2015 +0000"
      },
      "message": "Merge \"Unregister pthread_atfork handlers on dlclose()\""
    },
    {
      "commit": "e91e66f223950fdc963cd89697541a32a253a0a6",
      "tree": "be470cebc8b8809e6b69499e14f11e3e6d689a3b",
      "parents": [
        "ebfb55e4cdf03473d66eaf5928fb3c3a8b0c2f85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 21:05:49 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 21:05:49 2015 -0700"
      },
      "message": "Use bfd linker for x86/x86_64 targets\n\n ld.gold in current toolchain for x86_64\n does not support -z global.\n\nChange-Id: Iea2b192f0f0aa998a02adb356fd4eec4e10a1739\n"
    },
    {
      "commit": "ea295f68f1fae7c701baaa717f67296659d567ac",
      "tree": "745388310ffe715acbfd96b3cedfe55ccb50a2ca",
      "parents": [
        "ebfb55e4cdf03473d66eaf5928fb3c3a8b0c2f85"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 17:57:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nBug: http://b/20339788\nChange-Id: I874c87faa377645fa9e0752f4fc166d81fd9ef7e\n"
    },
    {
      "commit": "6612d7a34768484eb002c07a1c7df1bd85c0997a",
      "tree": "fcc60bf45254bf181ed12930c162b270a5cd6908",
      "parents": [
        "2bb93482a7793640205ade2f7316db5b3f5cac19"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 16:26:03 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 16:26:03 2015 -0700"
      },
      "message": "Enable dlsym_df_1_global test for arm/arm64\n\nChange-Id: I1fdebced93175cb14053e2239e79f97239fc2dc2\n"
    },
    {
      "commit": "094f58fb2a57d1ed5736ae3588bf0355618f915b",
      "tree": "8f41a50086a97f88be5bf98d2a2806a26d854d5a",
      "parents": [
        "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:45:59 2015 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 24 03:46:57 2015 +0000"
      },
      "message": "Revert \"Unregister pthread_atfork handlers on dlclose()\"\n\n The visibility control in pthread_atfork.h is incorrect.\n It breaks 64bit libc.so by hiding pthread_atfork.\n\n This reverts commit 6df122f8528f9b9fcf7dfea14ae98b0ef66274e1.\n\nChange-Id: I21e4b344d500c6f6de0ccb7420b916c4e233dd34\n"
    },
    {
      "commit": "6df122f8528f9b9fcf7dfea14ae98b0ef66274e1",
      "tree": "5a59eb4d1148b6218b8a06895baf6176f17b995b",
      "parents": [
        "ff18108981aa1fa73696d6db1919cdc38788bd4e"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Nov 20 20:47:02 2014 -0800"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 22 19:19:37 2015 -0700"
      },
      "message": "Unregister pthread_atfork handlers on dlclose()\n\nChange-Id: I326fdf6bb06bed12743f08980b5c69d849c015b8\n"
    },
    {
      "commit": "42281880a8ac8614832ff918a14e4b950f35d05d",
      "tree": "0823c1e87386aea7417635e176494ab2b9fb89ab",
      "parents": [
        "3875744f89600027c69ea68650fff1eeb4b29723"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Apr 17 11:26:36 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Fri Apr 17 18:49:12 2015 -0400"
      },
      "message": "add fortified readlink/readlinkat implementations\n\nChange-Id: Ia4b1824d20cad3a072b9162047492dade8576779\n"
    },
    {
      "commit": "3875744f89600027c69ea68650fff1eeb4b29723",
      "tree": "dec2852717151c4004af3e36df748279a88a990a",
      "parents": [
        "fc4850e37b713eae12d0bde7f6e0b4e9b444bfef",
        "2a815361448d01b0f4e575f507ce31913214c536"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 17 03:57:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 17 03:57:46 2015 +0000"
      },
      "message": "Merge \"Support symbol versioning\""
    },
    {
      "commit": "2a815361448d01b0f4e575f507ce31913214c536",
      "tree": "82b941e908b54d6d48ef04495ff2808aa2823ae1",
      "parents": [
        "c6ccdfaf1ff4665ec96962863054263510d73e7b"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 09 13:42:33 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 16 17:57:30 2015 -0700"
      },
      "message": "Support symbol versioning\n\nBug: http://b/20139821\nChange-Id: I64122a0fb0960c20b2ce614161b7ab048456b681\n"
    },
    {
      "commit": "e7e1c875b0f8eefb1d771f200a58f54e64c39d55",
      "tree": "f6f7d5465c32d2dc7144c9e46b8b57da480f8528",
      "parents": [
        "a40cb0ca7fe8ddc146831e92ec543be9feb26a65"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Thu Apr 16 09:07:45 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Thu Apr 16 10:33:35 2015 -0400"
      },
      "message": "add fortified implementations of pread/pread64\n\nChange-Id: Iec39c3917e0bc94371bd81541619392f5abe29b9\n"
    },
    {
      "commit": "a40cb0ca7fe8ddc146831e92ec543be9feb26a65",
      "tree": "4bf0c59669d2bb2bce605a400a49de7eaf62c723",
      "parents": [
        "12d89027457b4d5dce6c3a7fd01a2951f273d9a9",
        "163ab8ba86deb991c73152e6828f270cc71dc4c5"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 16 08:06:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 08:06:03 2015 +0000"
      },
      "message": "Merge \"Call __cxa_thread_finalize for the main thread.\""
    },
    {
      "commit": "2587c6a2f0f946bd7c1e526c20b2623c01accd60",
      "tree": "6d45690a29969aed3585d62f947aa5c537548440",
      "parents": [
        "c6ccdfaf1ff4665ec96962863054263510d73e7b",
        "95f1ee235ae257802a94d7e94d476ea0aaea5cd8"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Apr 16 01:08:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 01:08:25 2015 +0000"
      },
      "message": "Merge \"Change on handling of SIGEV_THREAD timers.\""
    },
    {
      "commit": "95f1ee235ae257802a94d7e94d476ea0aaea5cd8",
      "tree": "cf163cac0ade7c84c7c07bbffcd8f5e07201a0d4",
      "parents": [
        "447cd19681cfd0a71282c87d1b32a7757bbaba81"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 13 19:53:15 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Apr 15 17:36:01 2015 -0700"
      },
      "message": "Change on handling of SIGEV_THREAD timers.\n\n1. Don\u0027t prevent calling callback when SIGEV_THREAD timers are disarmed by timer_settime.\nAs in POSIX standard: The effect of disarming or resetting a timer with pending\nexpiration notifications is unspecified. And glibc didn\u0027t prevent in this situation, so I\nthink it is fine to remove the support.\n2. Still prevent calling callback when SIGEV_THREAD timers are deleted by timer_delete.\nAs in POSIX standard: The disposition of pending signals for the deleted timer is unspecified.\nHowever, glibc handles this (although that is not perfect). And some of our tests in\ntime_test.cpp depend on this feature as described in b/18039727. so I retain the support.\n3. Fix some flaky test in time_test.cpp, and make \"time*\" test pass on bionic-unit-tests-glibcxx.\n\nBug: 18263854\n\nChange-Id: I8ced184eacdbfcf433fd81b0c69c38824beb8ebc\n"
    },
    {
      "commit": "163ab8ba86deb991c73152e6828f270cc71dc4c5",
      "tree": "fdaf88cdc6ae4788a95f2f527e35fa869398397f",
      "parents": [
        "8f3f04184a5772b421867b59acd3d0dfbc6fa4eb"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 15:31:51 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 16:24:21 2015 -0700"
      },
      "message": "Call __cxa_thread_finalize for the main thread.\n\nBug: http://b/20231984\nBug: http://b/16696563\nChange-Id: I71cfddd0d404d1d4a593ec8d3bca9741de8cb90f\n"
    },
    {
      "commit": "66aa0b61f736678e97a0cfaf975052881a23651b",
      "tree": "0377a161a2d6745f88c73bd6474916efb1dcaa99",
      "parents": [
        "cafc948069d447aa1e4dde599ee83bf6c0c5d5d8"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 14:07:28 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 15 14:23:00 2015 -0700"
      },
      "message": "Hide emutls* symbols in libc.so\n\n Also make thread_local in test static to avoid ld.bfd\n warning for arm64.\n\nChange-Id: I09a3f2aa9b73a4fafa3f3bbc64ddc2a128ad50ee\n"
    },
    {
      "commit": "8f3f04184a5772b421867b59acd3d0dfbc6fa4eb",
      "tree": "df95970c47bdea9e89cb5f64ef69f9ff39aef5d5",
      "parents": [
        "447cd19681cfd0a71282c87d1b32a7757bbaba81",
        "5ddbb3f936ee44555a46020239e49ab45109a806"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Apr 14 20:35:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 20:35:08 2015 +0000"
      },
      "message": "Merge \"Prevent using static-allocated pthread keys before creation.\""
    },
    {
      "commit": "5ddbb3f936ee44555a46020239e49ab45109a806",
      "tree": "70395ecf0897580781856c68cbcd57019ff831e3",
      "parents": [
        "4bd8f9637daaada333ff35945b00cfe6cb822376"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 20:35:32 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Apr 14 13:32:09 2015 -0700"
      },
      "message": "Prevent using static-allocated pthread keys before creation.\n\nBug: 19993460\n\nChange-Id: I244dea7f5df3c8384f88aa48d635348fafc9cbaf\n"
    },
    {
      "commit": "de889741201faa338e01babdfd10bbd597769e60",
      "tree": "12166e0d22320706656a26e6ac4dd815c5eba8aa",
      "parents": [
        "c921eb677077f96c09c66ac34cad490356afde6c",
        "ef25592f14d23ce6294ea103e9edf894779d141d"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Apr 11 00:28:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 11 00:28:05 2015 +0000"
      },
      "message": "Merge \"Fix dl* tests to run-on-host\""
    },
    {
      "commit": "ef25592f14d23ce6294ea103e9edf894779d141d",
      "tree": "5c6bd7e34adb984bb2d63f9f115ce6d85b0803f5",
      "parents": [
        "598493e725e0298ae11ddbdee62c3a7007eb503c"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 08 11:53:08 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 09 14:56:26 2015 -0700"
      },
      "message": "Fix dl* tests to run-on-host\n\nBug: http://b/20121152\nChange-Id: I1e1f41d885c75dbb26f91565a53a15d62ef72ce6\n"
    },
    {
      "commit": "9f2c2f53d372001ac6565b060a07d4416ca58e47",
      "tree": "6ad666e24eb8f32caa68dc1740cba8b0706b33a2",
      "parents": [
        "f9ff2eeaeeb841fa9f197ee8b6bc9521e63210dd",
        "76615dae93c18ac890e167c547a08c0228709a33"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Apr 09 17:19:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 09 17:19:44 2015 +0000"
      },
      "message": "Merge \"Provide writer preference option in rwlock.\""
    },
    {
      "commit": "76615dae93c18ac890e167c547a08c0228709a33",
      "tree": "12a7e87c6fb332bebc087f43bcf29b2f7827571e",
      "parents": [
        "4bd8f9637daaada333ff35945b00cfe6cb822376"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 14:22:09 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Apr 08 13:11:13 2015 -0700"
      },
      "message": "Provide writer preference option in rwlock.\n\nPrevious implementation of rwlock contains four atomic variables, which\nis hard to maintain and change. So I make following changes in this CL:\n\n1. Add pending flags in rwlock.state, so we don\u0027t need to synchronize\nbetween different atomic variables. Using compare_and_swap operations\non rwlock.state is enough for all state change.\n\n2. Add pending_lock to protect readers/writers waiting and wake up\noperations. As waiting/wakeup is not performance critical, using a\nlock is easier to maintain.\n\n3. Add writer preference option.\n\n4. Add unit tests for rwlock.\n\nBug: 19109156\n\nChange-Id: Idcaa58d695ea401d64445610b465ac5cff23ec7c\n"
    },
    {
      "commit": "1dce3ed24940808a553f4da1a92a9b6759efd4ab",
      "tree": "736d4b68165f00e2ca60a1eb4de086d5340cb138",
      "parents": [
        "8a1007dbababa6c4812c267ca9119cf0765afc3f"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 19:05:58 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 19:05:58 2015 -0700"
      },
      "message": "Fix x86_64 build\n\nChange-Id: Id81c059bf3ecdb9cc84d04d16ffda34baaadc5a1\n"
    },
    {
      "commit": "8a1007dbababa6c4812c267ca9119cf0765afc3f",
      "tree": "7bea0e59f6c8c8ab2113b297aed8161c750f4fd9",
      "parents": [
        "67de2593b3d7e9e94ac8993efd51da4b512c6af5",
        "aae859cc3ca127d890e853cbf12b731e05624a22"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Apr 07 00:14:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 07 00:14:57 2015 +0000"
      },
      "message": "Merge \"Add realpath for soinfo\""
    },
    {
      "commit": "aae859cc3ca127d890e853cbf12b731e05624a22",
      "tree": "159e996dd6756b99fe70371e99a69ec6040e851b",
      "parents": [
        "e686df8d839216460f02cf7db6c4e26a13e49afd"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 31 11:14:03 2015 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Apr 06 21:15:43 2015 +0000"
      },
      "message": "Add realpath for soinfo\n\n  This change adds realpath to soinfo and\n  extends limit on filenames from 128 to PATH_MAX.\n\n  It also removes soinfo::name field, linker uses\n  dt_soname instead.\n\nBug: http://b/19818481\nBug: https://code.google.com/p/android/issues/detail?id\u003d80336\nChange-Id: I9cff4cb5bda3ee2bc74e1bbded9594ea7fbe2a08\n"
    },
    {
      "commit": "67de2593b3d7e9e94ac8993efd51da4b512c6af5",
      "tree": "fa8a711e1ff6c5e13fd2a55813ba9ebf3213d530",
      "parents": [
        "4bd8f9637daaada333ff35945b00cfe6cb822376",
        "694fd2d880634f23254582ab1161bffbfd104696"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 06 19:36:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 06 19:36:13 2015 +0000"
      },
      "message": "Merge \"Add a test for getdelim(3) on a directory.\""
    },
    {
      "commit": "694fd2d880634f23254582ab1161bffbfd104696",
      "tree": "a3a121297c62764d302ebe574d154cda1df459bd",
      "parents": [
        "ec8b3a7dde3c282c4f9ca5c8bf5a7e1b7469def0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Apr 05 10:51:56 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Apr 05 10:51:56 2015 -0700"
      },
      "message": "Add a test for getdelim(3) on a directory.\n\nApparently uClibc has a bug here. We don\u0027t, but let\u0027s keep it that way.\n\nBug: http://landley.net/notes.html#21-03-2015\nChange-Id: If406df963db9bee47921d7a1c116ebcab08d96bf\n"
    },
    {
      "commit": "4bd8f9637daaada333ff35945b00cfe6cb822376",
      "tree": "558ae0624aff54953ca601079a3560f7340467ff",
      "parents": [
        "e686df8d839216460f02cf7db6c4e26a13e49afd",
        "f796985923e2d8308e00ed9567f36546dafb98d7"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sat Apr 04 19:31:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 04 19:31:55 2015 +0000"
      },
      "message": "Merge \"Fix bug for recursive/errorcheck mutex on 32-bit devices.\""
    },
    {
      "commit": "f796985923e2d8308e00ed9567f36546dafb98d7",
      "tree": "4fd9bbdae36ecfd15a4e08cdad3c7818995760ec",
      "parents": [
        "06b6e3c51d38d70c5ca99f3a3f795697031ac27f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Apr 02 17:47:48 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Apr 03 19:01:17 2015 -0700"
      },
      "message": "Fix bug for recursive/errorcheck mutex on 32-bit devices.\n\nBug: 19216648\nChange-Id: I3b43b2d18d25b9bde352da1e35f9568133dec7cf\n"
    },
    {
      "commit": "45c57131d25c82d6026ed36a791e9f5be40d5d7e",
      "tree": "44c2dd482fed18c90747b660485190c6cc40a288",
      "parents": [
        "cec2ab20a0d2b24c15aa289cbac5d4291c856092"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 15:17:52 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 15:17:52 2015 -0700"
      },
      "message": "Add libdl dependency for target libraries\n\n Fixed x86_64 target build with gcc 4.9\n\nChange-Id: Id3b1e9286c2bcbb8e3ac117bcef957304db7cfd3\n"
    },
    {
      "commit": "aea165cb03abceb85062e94f22f72e1c9d9800a4",
      "tree": "0198e16b3f8c44754be9bf8501794a344b3232db",
      "parents": [
        "b1f1de4dd4b1a3802abd5284de9ebfe6a98057f1",
        "9b82136b987bc01224e3b42732334ea27c97d188"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 19:45:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 03 19:45:24 2015 +0000"
      },
      "message": "Merge \"Add ANDROID_DLEXT_FORCE_LOAD flag\""
    },
    {
      "commit": "9b82136b987bc01224e3b42732334ea27c97d188",
      "tree": "036facba010c670c5d6bfc3fa9dbb2de0f28caf8",
      "parents": [
        "ab7c79e22e5495a2aa171047a044ce1037e461a9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 02 16:03:56 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 03 10:50:48 2015 -0700"
      },
      "message": "Add ANDROID_DLEXT_FORCE_LOAD flag\n\n  This flag allows to force loading of the library\n  in the case when for some reason multiple ELF files\n  share the same filename (because the already-loaded\n  library has been removed and overwritten, for example).\n\nChange-Id: I798d44409ee13d63eaa75d685e99c4d028d2b0c1\n"
    },
    {
      "commit": "06b6e3c51d38d70c5ca99f3a3f795697031ac27f",
      "tree": "1673971f2291c122c8944ec16cf6c99c17cfa245",
      "parents": [
        "d619d6ffb876de6a8f051c850762a6f7a7e55c76",
        "76ac1acdacc045cf1e56504e011dca68137dcd61"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 02 21:55:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 02 21:55:01 2015 +0000"
      },
      "message": "Merge \"Look into local group on dlsym with RTLD_DEFAULT\""
    },
    {
      "commit": "76ac1acdacc045cf1e56504e011dca68137dcd61",
      "tree": "9eb3bee0f92ae74f1eba59efad4c037d50aa3dcd",
      "parents": [
        "ab7c79e22e5495a2aa171047a044ce1037e461a9"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 01 14:45:10 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 02 14:12:45 2015 -0700"
      },
      "message": "Look into local group on dlsym with RTLD_DEFAULT\n\n  Fix dlsym to look into local group when called with\n  RTLD_DEFAULT and RTLD_NEXT.\n\nBug: 17512583\nChange-Id: I541354e89539c712af2ea4ec751e546913027084\n"
    },
    {
      "commit": "00d1101cc170ce786f26143a897b4a3e3363b55f",
      "tree": "38c9343d5aa084c672c6932787c8adab09851c68",
      "parents": [
        "618935d2679e84cc839316c042ee3dde5f7d7097",
        "e69c24543db577d8b219ab74b0ba7566e0f13b38"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Apr 02 20:27:40 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 02 20:27:40 2015 +0000"
      },
      "message": "Merge \"Refactor pthread_mutex to support 32-bit owner_tid on 64-bit devices.\""
    },
    {
      "commit": "618935d2679e84cc839316c042ee3dde5f7d7097",
      "tree": "b14e1469a3fdec5814e733e6ce4a35a7e2cd4f55",
      "parents": [
        "3cc3f17aa4b241da7303299032e4269fcf92a4e6",
        "119cb55d43304579af741d8dbc3ca701b97bbf70"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 02 19:19:38 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 02 19:19:38 2015 +0000"
      },
      "message": "Merge \"gtest_repeat should allow negative values.\""
    },
    {
      "commit": "119cb55d43304579af741d8dbc3ca701b97bbf70",
      "tree": "604c5b9e2e2c255325e58849828ce2c6d0bf15ee",
      "parents": [
        "52a0f01421fde3cd4f879b491a9f491d792fa2d5"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 02 12:02:55 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 02 12:16:00 2015 -0700"
      },
      "message": "gtest_repeat should allow negative values.\n\nIf you pass in a negative value to gtest_repeat, it should run forever.\nThe new runner didn\u0027t allow this, now it does.\n\nChange-Id: Ie0002c12e2fdad22b264adca37c165cfcfe05c7a\n"
    },
    {
      "commit": "e69c24543db577d8b219ab74b0ba7566e0f13b38",
      "tree": "5591f3540876c166a08b80815d1d257d8b98a5eb",
      "parents": [
        "611fd2cc91f79be6759f6e630e1e81998326dfe8"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Feb 13 16:21:25 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Apr 01 21:12:22 2015 -0700"
      },
      "message": "Refactor pthread_mutex to support 32-bit owner_tid on 64-bit devices.\n\nBug: 19216648\nChange-Id: I765ecacc9036659c766f5d1f6600e1a65364199b\n"
    },
    {
      "commit": "0ad256c1b234cddc97290be761f8a0163a5c6c00",
      "tree": "7f1124ef13c059647062349357f5ff7c0d29d5cf",
      "parents": [
        "d227d57d50f7a5251dbbfa3f2b41d3fe882851fa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 01 12:22:40 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 01 12:22:40 2015 -0700"
      },
      "message": "Fix ftw tests when run as non-root.\n\nRoot can create subdirectories inside non-writable directories, but\nother users can\u0027t.\n\nChange-Id: I102fe610d1bd2733aebf184b544e58612465287d\n"
    },
    {
      "commit": "6170693e28dd72a1517c267f3f62b3f37477b8bb",
      "tree": "f7cf73e397d83074a6da0b6cce4459b51af334cf",
      "parents": [
        "611fd2cc91f79be6759f6e630e1e81998326dfe8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 31 10:56:58 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 31 10:56:58 2015 -0700"
      },
      "message": "Make ThreadLocalBuffer a class rather than a macro.\n\nBug: 19995392\nChange-Id: I497c512648fbe66257da3fb3bcd5c9911f983705\n"
    },
    {
      "commit": "947adedebc480917b8490bc16e8b2d82b441095a",
      "tree": "7750e1e29c848a611e7723bdc20d1aa054d0b461",
      "parents": [
        "cfd794a96d0c4f1d97e54b701b408dafdb514d17"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 26 11:07:04 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Mar 27 12:05:36 2015 -0700"
      },
      "message": "Add test for thread_local keyword.\n\n  For gcc only for the time being.\n\nBug: 19800080\nBug: 16696563\nChange-Id: Ifaa59a131ca2d9030554cee7ce631dcb1d081938\n"
    },
    {
      "commit": "8f3eb5a4e5dbbac1fb431e40e25eec07ecc24ee8",
      "tree": "6eaa84d2960c9e3788093101dd9ae2c9d9426ad7",
      "parents": [
        "7c01e3a9ba80c85c7e7998d2347885e9a6e3bbf2",
        "220b99bdc1c5f51825ac2a87062bc05fe3e0d722"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 26 18:14:22 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 26 18:14:23 2015 +0000"
      },
      "message": "Merge \"Revert \"Cause Fatal error when invalid pthread_id is detected.\"\""
    },
    {
      "commit": "220b99bdc1c5f51825ac2a87062bc05fe3e0d722",
      "tree": "a152db94f166379d6691f67b09ff142e768e7ebe",
      "parents": [
        "03324780aae9ff28c8acf52debf0ea39120e5ab8"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 26 18:13:07 2015 +0000"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 26 18:13:07 2015 +0000"
      },
      "message": "Revert \"Cause Fatal error when invalid pthread_id is detected.\"\n\nSome code like in https://buganizer.corp.google.com/u/0/issues/19942911 need to change first.\n\nThis reverts commit 03324780aae9ff28c8acf52debf0ea39120e5ab8.\n\nChange-Id: I13ff1e5b3d0672bae9cde234ffba32fbbf33d338\n"
    },
    {
      "commit": "f2d153f836e529892854b91452fabd2c2fa79c05",
      "tree": "ed380102ca80fbfcf2b0b716d90d7237ec067132",
      "parents": [
        "7f8d91ea8e24e89db39ae868085913e763e04557",
        "df79c330d895af31f39ee301dee62731fa586168"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Mar 26 17:50:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 26 17:50:23 2015 +0000"
      },
      "message": "Merge \"Initial implementation of __cxa_thread_atexit_impl\""
    },
    {
      "commit": "df79c330d895af31f39ee301dee62731fa586168",
      "tree": "7129c6e46b2c150027605af4c6f08c1e6de24815",
      "parents": [
        "0c3b632bd6570064bab1055d2b8a51cfb85e60bb"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 25 17:38:10 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 25 18:07:59 2015 -0700"
      },
      "message": "Initial implementation of __cxa_thread_atexit_impl\n\n  This is initial implementations; does not yet handle\n  dlclose - undefined behavior, needs linker support to\n  handle it right.\n\nBug: 19800080\nBug: 16696563\nChange-Id: I7a3e21ed7f7ec01e62ea1b7cb2ab253590ea0686\n"
    },
    {
      "commit": "17393b06bab9cb3e95d0f466a56c746de19b8eee",
      "tree": "fa260e58da8fe186bca7787e3d7645a86b2f79cb",
      "parents": [
        "fa3dcecc0fd7bbbf04234e41be690a5d33277870"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sat Mar 21 15:08:25 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 25 17:54:17 2015 -0700"
      },
      "message": "Hide internal of pthread_mutex_t.\n\nBug: 19249079\nChange-Id: Iffb79c8d861b698d474f212dc80c638fc2cf1620\n"
    },
    {
      "commit": "03324780aae9ff28c8acf52debf0ea39120e5ab8",
      "tree": "0b20e663701fc040c406d7f7014680b63b73f5ed",
      "parents": [
        "0c3b632bd6570064bab1055d2b8a51cfb85e60bb"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 24 17:43:14 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 25 15:30:39 2015 -0700"
      },
      "message": "Cause Fatal error when invalid pthread_id is detected.\n\nThis is a patch testing whether we can use abort() instead of\nreturning ESRCH for invalid pthread ids. It is an intermediate\nstep to remove g_thread_list/g_thread_list_lock.\n\nBug: 19636317\nChange-Id: Idd8e4a346c7ce91e1be0c2ebcb78ce51c0d0a31d\n"
    },
    {
      "commit": "b58457221364eaad039c2c49a42626b725e980d5",
      "tree": "a7a8d9b3de7c34bda99153ebae330b6d180b112e",
      "parents": [
        "4149dc944bbe3c5f1c14fc998106975e68bdd6bf"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 22:46:42 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 20 17:42:09 2015 -0700"
      },
      "message": "Add test for pthread types alignment check.\n\nBug: 19249079\nChange-Id: I83c4f0d11ec5d82a346ae0057d02a92bb1d519e8\n"
    },
    {
      "commit": "bbb0432a33787f1a627abb396fe343a7943ac7bc",
      "tree": "356c2b33690b7c1e43c4d5a4ba46d0553b1e06f6",
      "parents": [
        "7875b506edfb1fe593034eaf4bc9aa156179fbd2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 15:19:25 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 19 16:48:19 2015 -0700"
      },
      "message": "Return EINVAL when calling pthread_detach for joined thread.\n\nChange-Id: I717015132187e087e0ad485284a13c8801e25e77\n"
    },
    {
      "commit": "52393a56335435efc605aff66aca3145873e1e56",
      "tree": "db601ac602f90c06269d41fb653c15797b2d7188",
      "parents": [
        "6943f2968cb6054f8874e30b309985b41a37e2e0"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 22:50:01 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 22:50:01 2015 -0700"
      },
      "message": "Move open from zip tests to dlext\n\n To avoid building them for glibc.\n\n Also replace snprintf with std::string\n\nChange-Id: I12e1d2e4ab46ff5af6c05453da67842e0d838fc5\n"
    },
    {
      "commit": "618f1a36f8635fa0f2d60c621fbf79ead2c3f3de",
      "tree": "22f103645d9fcd4568dae35f9c76262541bc85bb",
      "parents": [
        "c6fbbb42e69bef4f058d0cbfaaaf3cbf51f95694"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Mar 17 20:06:36 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 18:14:30 2015 -0700"
      },
      "message": "Implement lookup by DT_SONAME\n\n  This CL also fixes SEARCH_NAME hack and resolves\n  https://code.google.com/p/android/issues/detail?id\u003d6670\n  once and for all.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d6670\nChange-Id: I9b8d6a672cd722f30fbfbb40cdee8d9b39cfe56e\n"
    },
    {
      "commit": "c6fbbb42e69bef4f058d0cbfaaaf3cbf51f95694",
      "tree": "ceb7ef7d297876950db808ed6a4e55ac1edf6fe5",
      "parents": [
        "0cf2657bc25242c097d42346d17eaae4107b1d55",
        "fa495d51b02e1575088ed358614d3baa442f455f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 23:11:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 18 23:11:52 2015 +0000"
      },
      "message": "Merge \"Hide statfs/fstatfs\u0027 ST_VALID flag from userspace.\""
    },
    {
      "commit": "fa495d51b02e1575088ed358614d3baa442f455f",
      "tree": "7d44227f43953a5b99d2fc582f917987a5980f56",
      "parents": [
        "ab12dc70f3ef551c490dcfede76033e57ceee64d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 15:46:48 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 18 15:46:48 2015 -0700"
      },
      "message": "Hide statfs/fstatfs\u0027 ST_VALID flag from userspace.\n\nSpotted while debugging the strace 4.10 upgrade.\n\nChange-Id: I1af1be9c9440151f55f74a835e1df71529b0e4fe\n"
    },
    {
      "commit": "c0eaa732844a8397d40a7ec82641f709e4b47a61",
      "tree": "b5fa6d3f36f7520c12f31e6bb75c3fe9ba6331a5",
      "parents": [
        "ab12dc70f3ef551c490dcfede76033e57ceee64d",
        "aef719510a57274e73ca02ab5ecdc5bf17d3985c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Mar 18 17:25:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 18 17:25:33 2015 +0000"
      },
      "message": "Merge \"Support loading shared libraries from zip files\""
    },
    {
      "commit": "ee7649c5ac5f1e56cc8193cd4cee73004c04893d",
      "tree": "a7267fa3a7635c394f47fd409ad11058a6f4df3b",
      "parents": [
        "d917b20b613fd51e5f1056c8648fe8769ae8161e"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Sun Mar 15 21:39:25 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Tue Mar 17 19:50:55 2015 -0400"
      },
      "message": "set errno to ENOENT in getauxval per glibc 2.19\n\nBionic\u0027s getauxval(...) implementation returns zero when entries are\nmissing. Zero can be a valid value, so there is no unambiguous way of\ndetecting an error. Since glibc 2.19, errno is set to ENOENT when an\nentry is missing to make it possible to detect this. Bionic should match\nthis behavior as code in the Linux ecosystem will start relying on it to\ncheck for the presence of newly added entries.\n\nChange-Id: Ic1efe29bc45fc87489274c96c4d2193f3a7b8854\nSigned-off-by: Daniel Micay \u003cdanielmicay@gmail.com\u003e\n"
    },
    {
      "commit": "5490bebd7cdd4406780358f590391b75ab8a7d84",
      "tree": "845211310385c3998a280b73553ef7b852a725b6",
      "parents": [
        "5f8ddf69e59b13653d016e236599b95daf6501a8",
        "5b8e7cd957f9380e93c3aee84962d157fe0bc526"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 18:12:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 17 18:12:32 2015 +0000"
      },
      "message": "Merge \"Remove duplication in pthread_mutex.cpp.\""
    },
    {
      "commit": "aef719510a57274e73ca02ab5ecdc5bf17d3985c",
      "tree": "a3161800a6a0082e59df412a6d4d712041383fc2",
      "parents": [
        "5f8ddf69e59b13653d016e236599b95daf6501a8"
      ],
      "author": {
        "name": "Simon Baldwin",
        "email": "simonb@google.com",
        "time": "Fri Jan 16 13:22:54 2015 +0000"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 17:50:50 2015 -0700"
      },
      "message": "Support loading shared libraries from zip files\n\nAdd code to support loading shared libraries directly from within\nAPK files.\n\nExtends the linker\u0027s handling of LD_LIBRARY_PATH, DT_RUNPATH, etc\nto allow elements to be either directories as normal, or ZIP\nformat files.  For ZIP, the ZIP subdirectory string is separated\nfrom the path to file by \u0027!\u0027.\n\nFor example, if DT_NEEDED is libchrome.so and Chrome.apk is the\nAndroid ARM APK then the path element\n\n  /system/app/Chrome.apk!lib/armeabi-v7a\n\nwould cause the linker to load lib/armeabi-v7a/libchrome.so\ndirectly from inside Chrome.apk.  For loading to succeed,\nlibchrome.so must be \u0027stored\u0027 and not compressed in Chrome.apk,\nand must be page aligned within the file.\n\nMotivation:\n  Chromium tracking issue:\n  https://code.google.com/p/chromium/issues/detail?id\u003d390618\n\nBug: 8076853\nChange-Id: Ic49046600b1417eae3ee8f37ee98c8ac1ecc19e7\n"
    },
    {
      "commit": "cb0443c0fa07e4c049f426e3041894df522732df",
      "tree": "381413df3bfbe60beb5b974fa0b81a69c13c6bbb",
      "parents": [
        "169a84f980d7a55c5f829cdd53a3eaba8f968442"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 14:15:46 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 14:20:57 2015 -0700"
      },
      "message": "Remove obsolete test_isolated wrapper function\n\n We already run all of our tests in isolated mode.\n\nChange-Id: I8236baa302b1026a9b4a1c33a4aa65e223771bc7\n"
    },
    {
      "commit": "d3e2a207ffcaefedf2d3baaaad3d62be1abdb33c",
      "tree": "34f101f8d1352525c184ee76ec0fabd0f151c0c9",
      "parents": [
        "9923c8cd13d1e8305a908ef23712c7d3e4d4131d",
        "32651b8e8e453391c7aaca47cd885e94d54d0bf4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 20:58:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 16 20:58:02 2015 +0000"
      },
      "message": "Merge \"Hide content of pthread_cond_t in pthread_cond_internal_t.\""
    },
    {
      "commit": "b1ada3dd3fbf188ced9ab1edf1ee154d119bbc02",
      "tree": "c395fa5f5d52694f53ea07877d2678c57f2cf68b",
      "parents": [
        "11a06c73f6e7d31442429a58a346d881b0a8a441"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 13:20:23 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 13:20:23 2015 -0700"
      },
      "message": "Fix typo\n\nChange-Id: Ie6dad7d09873c88f6bbb2d45c2780e3b0c618bd6\n"
    },
    {
      "commit": "32651b8e8e453391c7aaca47cd885e94d54d0bf4",
      "tree": "16c36165ce78fbc359bba222ee0744556c3ed4c4",
      "parents": [
        "d2cf59d4633d9e731d0342d4f94b6e925589ab1e"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 20:30:00 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 11:09:52 2015 -0700"
      },
      "message": "Hide content of pthread_cond_t in pthread_cond_internal_t.\n\nBug: 19249079\nChange-Id: I6f55af30bcd6211ce71630c6cacbef0e1663dcee\n"
    },
    {
      "commit": "64a9c4f697a2588bbcfb20534b8b15b823595d1f",
      "tree": "741786b82d596c864abca1b34a1298dc7c9dd63b",
      "parents": [
        "f6f96df5b031b0bf79eb8ad49bd73a3ceab87db5"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 12 22:16:03 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 12 23:36:29 2015 -0700"
      },
      "message": "Make gtest_main exit 1 when some test are failed.\n\nThis is the gtest behavior, which I think can make test status\njudgement more convenient.\n\nChange-Id: I7d3c210d1744b954a4148cd905dd5c353207fce8\n"
    },
    {
      "commit": "5b8e7cd957f9380e93c3aee84962d157fe0bc526",
      "tree": "c454f02e61518005d531a825e2f0469fac261bbf",
      "parents": [
        "c3307dc43b2526c4031837738b139d22831c5d09"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 17:36:59 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 12 21:54:41 2015 -0700"
      },
      "message": "Remove duplication in pthread_mutex.cpp.\n\nAlso add unit tests about thread woken up by pthread_mutex_unlock.\n\nBug: 19216648\n\nChange-Id: I8bde8105b00186c52a2f41d92458ae4a5eb90426\n"
    },
    {
      "commit": "c6e5874a4c19f398eb179a23de9b1d2c06bccea0",
      "tree": "28ef6705ccf67c524b52eaa8e7dc7fc0f31637a7",
      "parents": [
        "e86a86f9f24df7028d2596c69ff008cf88e039e4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 09 13:55:18 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 09 18:13:15 2015 -0700"
      },
      "message": "Loosen fchmodat AT_SYMLINK_NOFOLLOW test on symlink.\n\nIt has been reported in b2/19657449 and b2/19381040 that fchmodat\nAT_SYMLINK_NOFOLLOW operation on symlink can succeed. It seems to be\ncontrolled by kernel(version or configuration) or user configuration\nwhether chmod is allowed on symlinks. Unless we can disable chmod on\nsymlinks in bionic explicitly, we can not guarantee that the test can\npass. But it seems reasonable to allow chmod on symlink if kernel allows\nto. So We prefer to loosen the test here, accepting both success and\nfailure when doing chmod operation on symlinks.\n\nBug: 19657449\nBug: 19381040\nChange-Id: I780e84f0b50d0412fbac9f1c240d07e984892a28\n"
    },
    {
      "commit": "24e8871faa34e9c49c629ae63970422ff75ee4a2",
      "tree": "60381befa1df474ffd154d5e93c182c4545821a6",
      "parents": [
        "5d400204589ceb781fa11864c2e8f3001e5dc96f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 15:31:55 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 00:46:18 2015 -0800"
      },
      "message": "Rename fortify_sprintf_warnings.cpp to fortify_compilation_test.cpp.\n\nBug: 19234260\nChange-Id: Ife27ca13eeae317739eda25b40dd2a08606d6d6f\n"
    },
    {
      "commit": "d9647594dee6fc0352845904f2249b7f1c4e2364",
      "tree": "40e3f834826c8f754bb9284279aea23f65053021",
      "parents": [
        "94545eba371be428c11d587a3b7d9883f37c7b19"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 00:39:09 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 00:39:09 2015 -0800"
      },
      "message": "Fix fortify compilation test in x86_64.\n\nChange-Id: Ic243f6583e4f435899d01c7845dddacacbfc916e\n"
    },
    {
      "commit": "94545eba371be428c11d587a3b7d9883f37c7b19",
      "tree": "c91d2a87811d1597ebc8d9a59d99eb031c28a70f",
      "parents": [
        "5ad57ce6ab95a12ab738eb7cd3595745ddd60d8d"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 22:35:13 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 22:35:13 2015 -0800"
      },
      "message": "Fix fortify compilation test on x86.\n\nChange-Id: I9b88cbcec51b6f1dbac2780a9bf82851bd6cc87c\n"
    },
    {
      "commit": "f3bd305b8f8270f157ee79851fc630abd94d3245",
      "tree": "081017b1a01aff24767fa5f7c58ede336ebd2af5",
      "parents": [
        "e1c0213be3f0c2c4e310cbc262da88835a2e5d86"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 21:43:14 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 21:43:14 2015 -0800"
      },
      "message": "Fix fortify compilation test on mips.\n\nChange-Id: Icff5b859ae58067bfa34430d3f5684335fe063b4\n"
    },
    {
      "commit": "e1c0213be3f0c2c4e310cbc262da88835a2e5d86",
      "tree": "052396403af1b7e83ca747a87ce2bc0ff730ba51",
      "parents": [
        "dec9501af2ee4d7cec3a163310d42e8ea1b8c58f",
        "08ee8d2030fbc73c4c144e819dd68806b0351cbe"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 05 04:42:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 05 04:42:35 2015 +0000"
      },
      "message": "Merge \"Switch pthread_rwlock_t to stdatomic.\""
    },
    {
      "commit": "08ee8d2030fbc73c4c144e819dd68806b0351cbe",
      "tree": "61c0f1027bd8967ff7eb8e95a128ee10e260ca32",
      "parents": [
        "ee17e8800418a74e21dba11658234363cf6f6032"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 11 17:04:36 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 18:16:20 2015 -0800"
      },
      "message": "Switch pthread_rwlock_t to stdatomic.\n\nBug: 19099838\nChange-Id: Ie82967a60b5cec61a8bdd1e0e4a03738d01944f8\n"
    },
    {
      "commit": "20f2268d61966230587957912491b67ad8bb91c8",
      "tree": "20138d3d1bb7c90961cd4bc683747825fc39789d",
      "parents": [
        "e1edd301d2a722e0a0687a7a3a87081c8cb956d3"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 03 20:27:58 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 13:10:38 2015 -0800"
      },
      "message": "Add fortify compile test.\n\nTwo parts of tests are added:\n1. Compile time warnings for gcc checking built-in functions.\n2. Compile time errors for each errordecl() in bionic.\n\nBug: 19234260\nChange-Id: Iec6e4a8070c36815574fe9e0af9595d6143a4757\n"
    },
    {
      "commit": "cc9ca1051dbf5bd2af1b801de13d43a399521cf9",
      "tree": "f8fd2edf4fd85c87a1b9259c821c4d8f9878b104",
      "parents": [
        "e6a33cefe4b3759fb77d9e69356cb50a97ea7e54"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 27 18:22:45 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 27 18:22:45 2015 -0800"
      },
      "message": "Fix fread returning bad data.\n\nBug: 19172514\nChange-Id: I05016577858a02aca7d14e75e6ec28abc925037c\n"
    },
    {
      "commit": "f6237470a3f5ce801b5df2500f3d0ffb1aec4515",
      "tree": "fa2996123c2f5b5a0078051b6539b7d803b50402",
      "parents": [
        "f8eec1e54fbfb7b0304b73cb9ce2de44760a672e"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 26 19:03:54 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 26 19:03:54 2015 -0800"
      },
      "message": "Make bionic gtest main be compatible with gtest output format for cts test.\n\nBug: 17589740\nChange-Id: Ifab521da379a33bf0a7bf11c21386f936f0d494c\n"
    },
    {
      "commit": "ea9c933f360cc07b821b542321309c65cceddbfc",
      "tree": "6141d6350a4aff9501f71f4d498cda3805b0f289",
      "parents": [
        "d91ded81376a10a1c89f7a5ae3c462ae3b24188e"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 14:39:19 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 24 14:44:51 2015 -0800"
      },
      "message": "Make all output of child test go to parent process in gtest_main.\n\nChange-Id: Iad460e89755051cdb99593cbf42c97d9a359f32b\n"
    },
    {
      "commit": "35778253a5ed71e87a608ca590b63729d9f88567",
      "tree": "d9e6112654bf2faa754abd9f28bc20c2ccccff57",
      "parents": [
        "2aef607b25c463baed5ae70d14212e24ea7bcf2b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 24 13:40:43 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 24 13:40:43 2015 -0800"
      },
      "message": "Fix \"faccessat ignores flags\"\n\nThe kernel system call faccessat() does not have any flags arguments,\nso passing flags to the kernel is currently ignored.\n\nFix the kernel system call so that no flags argument is passed in.\n\nEnsure that we don\u0027t support AT_SYMLINK_NOFOLLOW. This non-POSIX\n(http://pubs.opengroup.org/onlinepubs/9699919799/functions/access.html)\nflag is a glibc extension, and has non-intuitive, error prone behavior.\n\nFor example, consider the following code:\n\n  symlink(\"foo.is.dangling\", \"foo\");\n  if (faccessat(AT_FDCWD, \"foo\", R_OK, AT_SYMLINK_NOFOLLOW) \u003d\u003d 0) {\n    int fd \u003d openat(AT_FDCWD, \"foo\", O_RDONLY | O_NOFOLLOW);\n  }\n\nThe faccessat() call in glibc will return true, but an attempt to\nopen the dangling symlink will end up failing. GLIBC documents this\nas returning the access mode of the symlink itself, which will\nalways return true for any symlink on Linux.\n\nSome further discussions of this are at:\n\n  * http://lists.landley.net/pipermail/toybox-landley.net/2014-September/003617.html\n  * http://permalink.gmane.org/gmane.linux.lib.musl.general/6952\n\nAT_SYMLINK_NOFOLLOW seems broken by design. I suspect this is why this\nfunction was never added to POSIX. (note that \"access\" is pretty much\nbroken by design too, since it introduces a race condition between\ncheck and action). We shouldn\u0027t support this until it\u0027s clearly\ndocumented by POSIX or we can have it produce intuitive results.\n\nDon\u0027t support AT_EACCESS for now. Implementing it is complicated, and\npretty much useless on Android, since we don\u0027t have setuid binaries.\nSee http://git.musl-libc.org/cgit/musl/commit/?id\u003d0a05eace163cee9b08571d2ff9d90f5e82d9c228\nfor how an implementation might look.\n\nBug: 18867827\nChange-Id: I25b86c5020f3152ffa3ac3047f6c4152908d0e04\n"
    },
    {
      "commit": "be52e658171edf6651895c40d1563289bafa52f7",
      "tree": "0f58f6022d63e08166da1a03775d50df4d2f13b5",
      "parents": [
        "393bdb156d5024a03f03425a977d0518c84dbb98"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 23 18:02:29 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 23 21:52:56 2015 -0800"
      },
      "message": "Fix dup2 in the case where the two fds are equal.\n\ndup3\u0027s behavior differs from dup2 in this case, so we need to paper\nover that in the C library.\n\nChange-Id: I313cd6f226db5e237f61866f324c5ecdd12bf762\n"
    },
    {
      "commit": "3cfb52aab2548df635e9672218cc433e14922fd3",
      "tree": "eebbf162a1e5e1ed8726a9129ea17a410ebaa3ed",
      "parents": [
        "3e1b5f46c07aef5983ecf2feb1c3369b2cd200c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 18 21:29:13 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 18 22:02:56 2015 -0800"
      },
      "message": "Add GNU extensions mempcpy and wmemcpy.\n\nUsed by elfutils. On the bright side, they stopped using __mempcpy.\n\nBug: 18374026\nChange-Id: Id29bbe6ef1c5ed5a171bb6c32182f129d8332abb\n"
    },
    {
      "commit": "54b61b7ca7d7c9c7474e2beb35d20a9ab635529f",
      "tree": "ea6359d64b68187a34a9fd3a3f6b8544056a4770",
      "parents": [
        "89dad68efb07ef0868c2ac35737a4b2c83aea326",
        "56b2b2916b72eb21352c7aed529e0deeb5582072"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 17 21:41:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 17 21:41:41 2015 +0000"
      },
      "message": "Merge \"Accuracy tests for libm\""
    },
    {
      "commit": "fb48c68221afb1f9e7c63a15a20cca0857d1b9f9",
      "tree": "b845b7e6adc69d65e8b96e31fd25c1cf98d56493",
      "parents": [
        "40d06b25ac86260e9c1701540420c9634bab8bad",
        "41ef902379ba24bd8a3ca6d7733b8376efb55ebd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 17 17:54:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 17 17:54:40 2015 +0000"
      },
      "message": "Merge \"Fix memchr overflow.\""
    },
    {
      "commit": "e1f9ddaf0d314186da8b2a86e5a438f6ff204030",
      "tree": "14e658d45b2e519c75c66a9c4823689a5f0e7430",
      "parents": [
        "4181cc691e36546c556274d46d389d7e0cb9cfab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 14:11:50 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 14:11:50 2015 -0800"
      },
      "message": "Regression test for NDK bug 80199.\n\nBionic never had this bug, but since the proposed fix is to remove the NDK\u0027s\nbroken code, we should add a regression test here.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d80199\nChange-Id: I4de21b5da9913cef990bc4d05a7e27562a71a02b\n"
    },
    {
      "commit": "41ef902379ba24bd8a3ca6d7733b8376efb55ebd",
      "tree": "855ac7e3fa276bfb55594e4efb28c7c29cf28f3f",
      "parents": [
        "f9fb52ab309c97d5b2ef4f8e1daff3eed4cf4024"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 13:21:22 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 14 13:21:22 2015 -0800"
      },
      "message": "Fix memchr overflow.\n\nThe overflow\u0027s actually in the generic C implementation of memchr.\n\nWhile I\u0027m here, let\u0027s switch our generic memrchr to the OpenBSD version too.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d147048\nChange-Id: I296ae06a1ee196d2c77c95a22f11ee4d658962da\n"
    },
    {
      "commit": "56b2b2916b72eb21352c7aed529e0deeb5582072",
      "tree": "1299d64a93aec1d48f3abe304a8db75668a9dad1",
      "parents": [
        "f9fb52ab309c97d5b2ef4f8e1daff3eed4cf4024"
      ],
      "author": {
        "name": "Jingwei Zhang",
        "email": "jingwei.zhang@intel.com",
        "time": "Tue Sep 02 21:39:14 2014 +0800"
      },
      "committer": {
        "name": "Mingwei Shi",
        "email": "mingwei.shi@intel.com",
        "time": "Sat Feb 14 00:56:46 2015 +0800"
      },
      "message": "Accuracy tests for libm\n\nThis patch adds more tests for math functions to address coverage\nissue of math functions discussed in:\nhttps://android-review.googlesource.com/#/c/49653/\nhttps://android-review.googlesource.com/#/c/94780/\n\nThese are data sets used in regression tests for the Intel the math library (libm). They were collected over a long period of testing various libm implementations.\nThe data sets contain function specific data (special and corner cases such as +/-0, maximum/minimum normalized numbers, +/-infinity, QNaN/SNaN, maximum/minimum denormal numbers, arguments that would produce close to overflow/underflow results, known hard-to-round cases, etc), implementation specific data (arguments close to table look-up values for different polynomial approximations, worst cases for range reduction algorithms) and other data with interesting bit patterns.\nThe reference values are computed with Maple and were converted into hexadecimal format.\n\nChange-Id: I7177c282937369eae98f25d02134e4fc3beadde8\nSigned-off-by: Jingwei Zhang \u003cjingwei.zhang@intel.com\u003e\nSigned-off-by: Mingwei Shi \u003cmingwei.shi@intel.com\u003e\n"
    },
    {
      "commit": "7f925097e8a741bb23f91c45ffcbd74688c9e231",
      "tree": "5090dec3999355a83e0561047cc57a42cce40c57",
      "parents": [
        "ee17e8800418a74e21dba11658234363cf6f6032"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 10 14:15:33 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 10 14:15:33 2015 -0800"
      },
      "message": "Fix our ftw tests.\n\nSELinux denies access to some files in /sys, so we can\u0027t just trawl\nthrough that asserting general truths. Instead, create a small known\ntree.\n\nSadly neither ftw nor nftw takes user callback data, otherwise it would\nbe nice to assert that we visit all the expected nodes.\n\nBug: 19252748\nChange-Id: Ib5309c38aaef53e6030281191a265a8d5a619044\n"
    },
    {
      "commit": "05d26211d8d310a30de05b06ce5807198e948f9d",
      "tree": "158296a58bce7975a9dcba039e7db99cbd28ba55",
      "parents": [
        "bda85a12392b10555dc03ac377c8450b8f0790d6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 03 15:16:03 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 06 18:05:58 2015 -0800"
      },
      "message": "Display errors instead of running infinitely.\n\nWhen there is an error detected, the code runs forever and then times\nout without any indication of what happened. Change it so that error\nmessages are printed and the test fails.\n\nChange-Id: Id3160fc2f394984de0157356594fd8b40de66b4a\n"
    },
    {
      "commit": "ead08148bdfe880f40c457d923e6456044196fc7",
      "tree": "d73b76c768a74ae50657fae0e8ff4d007eeea7a3",
      "parents": [
        "63826658f4bcfff4f3a87fe651f22cc9b35fe8b9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 04 20:53:56 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 05 10:39:37 2015 -0800"
      },
      "message": "Add path separator in bionic-unit-tests program path.\n\nBug: 19220800\nChange-Id: I4245b1270363544cd5f083fe7ea7d9b11b46cdc0\n"
    },
    {
      "commit": "63826658f4bcfff4f3a87fe651f22cc9b35fe8b9",
      "tree": "37591f6b07b53d1f7ead6d39c5f0b3bd525b9685",
      "parents": [
        "8e5f9bc8a46872e3f0ac4799558fdfd5999f9c20",
        "1d4c780a2e1fe81cf3ea35ba0641dd14744c142a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 05 04:21:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 05 04:21:03 2015 +0000"
      },
      "message": "Merge \"Add signal handling in bionic gtest main.\""
    },
    {
      "commit": "1d4c780a2e1fe81cf3ea35ba0641dd14744c142a",
      "tree": "78c5b30ec799b75808f6a5f7fce3f9ddee11678a",
      "parents": [
        "d80ec66121b5af96c6b3d07ba34353b3d517f5b3"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 02 19:14:05 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 04 19:06:07 2015 -0800"
      },
      "message": "Add signal handling in bionic gtest main.\n\nThe two bugs are very closely related and code amount is very small,\nSo I think they may be fixed in one change.\n\nBug: 19128558\nBug: 19129994\nChange-Id: I44a35398e64dfca7e9676428cb8f4026e8f6e488\n"
    },
    {
      "commit": "17976019a13a94ae428849bfe297f8e531f95013",
      "tree": "4d285c2535666d3a8bbf928700371a1ba7e2c54b",
      "parents": [
        "2151f09fbfc2f6084366587df10132e93f4d818c",
        "f4fe6937aa5ac5a424b63bc68c5a953aaf46e1c6"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 05 01:14:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 05 01:14:32 2015 +0000"
      },
      "message": "Merge \"Fix poll/ppoll fortify test to avoid hanging in failed fortify clang test.\""
    },
    {
      "commit": "f4fe6937aa5ac5a424b63bc68c5a953aaf46e1c6",
      "tree": "cb4065d1b47a960be80b5ecd6c8a62a7e6634d97",
      "parents": [
        "d80ec66121b5af96c6b3d07ba34353b3d517f5b3"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 17:52:32 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 04 12:27:06 2015 -0800"
      },
      "message": "Fix poll/ppoll fortify test to avoid hanging in failed fortify clang test.\n\nBug: 19220800\nChange-Id: Ie75c640183c4a41a499556fefb4f824a134a5fb1\n"
    },
    {
      "commit": "11829be3e1a9e9e2271ba64a78c327bde6e044eb",
      "tree": "08724ca11c005312e09599a78077483c613c8525",
      "parents": [
        "f00f484cb59c1d599242daecbf833397aa3ba5d8",
        "140f3678f0f21eeda5916e9b8de87b93fd660a61"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 22:28:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 03 22:28:56 2015 +0000"
      },
      "message": "Merge \"Add test about pthread_mutex_t owner tid limit.\""
    },
    {
      "commit": "140f3678f0f21eeda5916e9b8de87b93fd660a61",
      "tree": "4115c771e910e8969cb093fa124df987259bad3c",
      "parents": [
        "86fc96f73311f43980df770f4ff8022f1e9b296a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 10:32:00 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 03 12:20:46 2015 -0800"
      },
      "message": "Add test about pthread_mutex_t owner tid limit.\n\nBug: 19216648\nChange-Id: I7b12955bdcad31c13bf8ec2740ff88ba15223ec0\n"
    },
    {
      "commit": "d80ec66121b5af96c6b3d07ba34353b3d517f5b3",
      "tree": "ac55af52647bb32468e477945a1da988778e9436",
      "parents": [
        "c57b5c5094f915ff975a256e086d58e2e7cfedf1",
        "3cbc6c627fe57c9a9783c52d148078f8d52f7b96"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Feb 02 22:03:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 02 22:03:41 2015 +0000"
      },
      "message": "Merge \"Add fchmodat(AT_SYMLINK_NOFOLLOW) and fchmod O_PATH support\""
    },
    {
      "commit": "3cbc6c627fe57c9a9783c52d148078f8d52f7b96",
      "tree": "ea5b0dc49aaa16f25e2262cd5560070ae65923b9",
      "parents": [
        "21cdd22f035efd50902b7780fc6ea53bd1684357"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jan 31 19:57:46 2015 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Feb 02 13:17:17 2015 -0800"
      },
      "message": "Add fchmodat(AT_SYMLINK_NOFOLLOW) and fchmod O_PATH support\n\nMany libc functions have an option to not follow symbolic\nlinks. This is useful to avoid security sensitive code\nfrom inadvertantly following attacker supplied symlinks\nand taking inappropriate action on files it shouldn\u0027t.\nFor example, open() has O_NOFOLLOW, chown() has\nlchown(), stat() has lstat(), etc.\n\nThere is no such equivalent function for chmod(), such as lchmod().\nTo address this, POSIX introduced fchmodat(AT_SYMLINK_NOFOLLOW),\nwhich is intended to provide a way to perform a chmod operation\nwhich doesn\u0027t follow symlinks.\n\nCurrently, the Linux kernel doesn\u0027t implement AT_SYMLINK_NOFOLLOW.\nIn GLIBC, attempting to use the AT_SYMLINK_NOFOLLOW flag causes\nfchmodat to return ENOTSUP. Details are in \"man fchmodat\".\n\nBionic currently differs from GLIBC in that AT_SYMLINK_NOFOLLOW\nis silently ignored and treated as if the flag wasn\u0027t present.\n\nThis patch provides a userspace implementation of\nAT_SYMLINK_NOFOLLOW for bionic. Using open(O_PATH | O_NOFOLLOW),\nwe can provide a way to atomically change the permissions on\nfiles without worrying about race conditions.\n\nAs part of this change, we add support for fchmod on O_PATH\nfile descriptors, because it\u0027s relatively straight forward\nand could be useful in the future.\n\nThe basic idea behind this implementation comes from\nhttps://sourceware.org/bugzilla/show_bug.cgi?id\u003d14578 , specifically\ncomment #10.\n\nChange-Id: I1eba0cdb2c509d9193ceecf28f13118188a3cfa7\n"
    },
    {
      "commit": "d036e94bb39a551768dc756a79366e6378fe95e3",
      "tree": "347d607af94281c14bf9215fb9d9a9cfcbd24d2e",
      "parents": [
        "7f0f30c6e20c1bf04bec05077eef2d779e7a32df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 11:18:58 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 11:18:58 2015 -0800"
      },
      "message": "Explicitly check that the reason fortify tests abort is fortify.\n\nChange-Id: I95291e2febf7b497c1d9f37fd7fa9acdd21e86a4\n"
    },
    {
      "commit": "4674e3899afcc6b3ac8a48cdb716695d5489d26b",
      "tree": "b4dadb078646cbb46dd62a14c623b7e0d06619e3",
      "parents": [
        "ffbda83b302e3c3970135013d2bb92402e040fe5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 09:15:19 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 09:15:19 2015 -0800"
      },
      "message": "Fortify poll and ppoll.\n\nAnd remove the test for FD_ZERO fortification, which never made much\nsense anyway.\n\nChange-Id: Id1009c5298d461fa4722189e8ecaf22f0c529536\n"
    },
    {
      "commit": "b6e3e800d26d8ca05aca65e529cc31a180fb58d4",
      "tree": "e9238d0b952a25bda4091c7a4d1a197a9c181b5c",
      "parents": [
        "21cdd22f035efd50902b7780fc6ea53bd1684357"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 31 21:32:10 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 31 21:32:10 2015 -0800"
      },
      "message": "Add the fortify tests back into the glibc tests.\n\nChange-Id: I4426d0c7c1bfe3b0028a674f72d1c3b9d883d6af\n"
    },
    {
      "commit": "11c4353cdd9f78bdb36837ab0c97c41bb46d49ed",
      "tree": "3f693dc30db46971c643fb79dd4190a268cb5a83",
      "parents": [
        "9e82c4be359a4637f21988b66b6d25abbfb79ddb"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jan 28 14:28:14 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jan 28 14:28:14 2015 -0800"
      },
      "message": "Add --gtest-filter as synonym for --gtest_filter in bionic gtest main.\n\nBug: 19130480\nChange-Id: I0d3df70ee8f692581cc4b9b742c5f347259fd0d2\n"
    },
    {
      "commit": "385c07a74ca5438a6f7fe0ada2b461f880563073",
      "tree": "1768b47dc5f184c03641a70a57dba1c797c960e0",
      "parents": [
        "86d9896273e81941d16034fdbf781a3f2bf94b81",
        "0bc4e9697e75acae012f54352887bba885cf923f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 27 22:00:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 27 22:00:35 2015 +0000"
      },
      "message": "Merge \"Fix parse of gtest_filter in bionic gtest main.\""
    },
    {
      "commit": "0bc4e9697e75acae012f54352887bba885cf923f",
      "tree": "29d4f28eb9ed246c2981f59ff010f4820a654c25",
      "parents": [
        "4a82ede75449deb1f554ef95b7ce2e4cd2b5d072"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 27 11:22:46 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 27 11:22:46 2015 -0800"
      },
      "message": "Fix parse of gtest_filter in bionic gtest main.\n\nBug: 19130330\nChange-Id: Id6a60570a8aab6ae7259ff228b3801285b378f77\n"
    }
  ],
  "next": "acc06a0b74e41728c6067280134a59d8b700d535"
}
