)]}'
{
  "log": [
    {
      "commit": "48af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0",
      "tree": "e8d9f372688f7ae3660b49721e7808b8181a49b3",
      "parents": [
        "40854235256c3f51f9ea866f5f8ef03240c00123"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 21 12:35:09 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 21 14:42:34 2017 -0800"
      },
      "message": "Update to kernel headers v4.10.\n\nTest: Built angler, booted on angler, ran bionic unit tests.\nChange-Id: Ia24511e74106116ea84b44ab724865ec492de8f9\n"
    },
    {
      "commit": "b66a0038ca5c50185270f8a6f2ae67b2580c0833",
      "tree": "4f4138f985bd07a524539713ddc460a2c4d1a297",
      "parents": [
        "ff3197bcc24b0e3429e9a8cb032d5a9773afe3e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 18 16:35:36 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Feb 18 16:35:36 2017 -0800"
      },
      "message": "Fix a comment in the pthread_cond_t implementation.\n\nBug: http://b/34592766\nTest: N/A\nChange-Id: I341f837dca52865ae5f8fe9ff50ba8999e297179\n"
    },
    {
      "commit": "ff3197bcc24b0e3429e9a8cb032d5a9773afe3e1",
      "tree": "146ef06a2ae10f88b78a0126a9df62a8cd1a8db1",
      "parents": [
        "4731fbd6e0c222fe64f4c2518996d5df9baeb9b5",
        "2a4d892c7f14d849b5f349528ed2b921b19f5645"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 18 00:18:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 18 00:18:26 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make libc.so global\"\"\""
    },
    {
      "commit": "2a4d892c7f14d849b5f349528ed2b921b19f5645",
      "tree": "4e010c7f493683d67d7d79d47923247ca0014a21",
      "parents": [
        "fec0e015ce0369b3ad710547f3d6af343b2cd5e1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 16 12:03:21 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 17 22:38:22 2017 +0000"
      },
      "message": "Revert \"Revert \"Make libc.so global\"\"\n\nThis reverts commit 65236d43e8e8ea2155c0d64e35f00b3c30b21147.\n\nBug: http://b/35417197\nBug: http://b/35338922\nTest: vogar --classpath out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/classes.jack  --mode\u003ddevice --variant\u003dX32 dalvik.system.JniTest#testGetSuperclass\nChange-Id: Ibf3bb7396e7d11ebe95e2f9267d0fc4af3fbe8c5\n"
    },
    {
      "commit": "4731fbd6e0c222fe64f4c2518996d5df9baeb9b5",
      "tree": "f46dd61373b6cc94678d62678cba4d2aeb8850ed",
      "parents": [
        "ce958d7e5c5bc480b0948cfd002438abbd7fc3d1",
        "4c78ca7e3cf3f7fd4bc17001ae7576b6c6722036"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 17 21:11:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 17 21:11:27 2017 +0000"
      },
      "message": "Merge \"Cleanup now that we don\u0027t need __NDK_FPABI__.\""
    },
    {
      "commit": "4c78ca7e3cf3f7fd4bc17001ae7576b6c6722036",
      "tree": "2ebf500f1c18dfcf5d36037fa5394df441a18159",
      "parents": [
        "fec0e015ce0369b3ad710547f3d6af343b2cd5e1"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Feb 17 11:08:53 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Feb 17 11:08:53 2017 -0800"
      },
      "message": "Cleanup now that we don\u0027t need __NDK_FPABI__.\n\nTest: tools/update_headers.sh \u0026\u0026 make checkbuild\nBug: None\nChange-Id: I1b9986c4d7d5da349a8ad394e8fcf64b87c89fdf\n"
    },
    {
      "commit": "3fed6ff847d0fb7409a2af4b00b6e47e1ad357ff",
      "tree": "75df78857fe749447ac180111aa3f56534711cda",
      "parents": [
        "4509e0ec94b6310d13b9f06a122ec66acb224a10"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 10:27:45 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 17 10:27:45 2017 -0800"
      },
      "message": "Include the pthread_t in the \"bad pthread_t\" fatal abort.\n\nAlso reword the message to be stronger.\n\nBug: http://b/35455349\nTest: manual\nChange-Id: I8f34fd42f3b635c95a7b921645a016fb303ce3ad\n"
    },
    {
      "commit": "fec0e015ce0369b3ad710547f3d6af343b2cd5e1",
      "tree": "dd13df817ff9920da84aeea0477b6b98fe884bdc",
      "parents": [
        "10a441bfcdc316dd3a73d6d571fc5c3be109a144",
        "273991ceadac558ba3bca5238d81833a7b34cb2d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Feb 16 03:42:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 16 03:42:53 2017 +0000"
      },
      "message": "Merge \"Add __libc_format_buffer_va_list.\""
    },
    {
      "commit": "273991ceadac558ba3bca5238d81833a7b34cb2d",
      "tree": "fd37f96c94c5e26bceb0b5538cd29ffb1a77da38",
      "parents": [
        "7b5245408499ef48afc8def662fcfab09683e1c4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 15 11:46:55 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 15 16:10:37 2017 -0800"
      },
      "message": "Add __libc_format_buffer_va_list.\n\nBug: http://b/35367169\nTest: m\nChange-Id: I133f231d3b93bdef56d06497679320a89c7188a9\n"
    },
    {
      "commit": "bcc4da9b752f0def46d63ed7b31f3f49cc2435ad",
      "tree": "b4e59da798a4f613507a79072eabbaaa995fa447",
      "parents": [
        "606ba2762e6d1062a2cbf4599b7bdb60ce5cc404"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 15 15:31:13 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Feb 15 15:35:33 2017 -0800"
      },
      "message": "Unify linker files under one license (BSD)\n\nHistorically we had part of the linker licensed under BSD and\nanother part under Apache 2 license. This commit makes all the\nlinker code licensed under BSD license.\n\nTest: m\nChange-Id: I11b8163ae75966b5768d3fe992679de376106515\n"
    },
    {
      "commit": "606ba2762e6d1062a2cbf4599b7bdb60ce5cc404",
      "tree": "27dd5ef42c128c4c8dca99f48b0f96ac58f0ac44",
      "parents": [
        "c54937b9726b7d7ca797f47bef249a31e306f267",
        "9c2094f3c527301068f2049eefd9e684a7995352"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 15 19:14:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 19:14:50 2017 +0000"
      },
      "message": "Merge changes I9d06ea8a,I2d157024\n\n* changes:\n  Fixup API level guards for new fortify functions.\n  Guard the GNU strerror_r with an API check.\n"
    },
    {
      "commit": "c54937b9726b7d7ca797f47bef249a31e306f267",
      "tree": "55bae87a1a408a8a63217cf8a01ede792b54475d",
      "parents": [
        "7b5245408499ef48afc8def662fcfab09683e1c4",
        "95b59c520b24aabcdc63b93a3f1eaf73e57a3afe"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 15 18:26:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 18:26:50 2017 +0000"
      },
      "message": "Merge \"add fortified implementations of send/sendto\""
    },
    {
      "commit": "9c2094f3c527301068f2049eefd9e684a7995352",
      "tree": "e5c03a364d9abadd8c2d0cc63e865e81d4cfc4c2",
      "parents": [
        "8b154b1e8233e1d34a6a66b72369f05f8655b653"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 14 19:28:18 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 14 22:22:13 2017 -0800"
      },
      "message": "Fixup API level guards for new fortify functions.\n\nTest: tools/update_headers.sh \u0026\u0026 make checkbuild\nBug: None\nChange-Id: I9d06ea8a5ee9dc27d957f59e6e84150651ed1c76\n"
    },
    {
      "commit": "8b154b1e8233e1d34a6a66b72369f05f8655b653",
      "tree": "dd79c943d9db486842c8e4402cbd529ea2066f1d",
      "parents": [
        "9fc52deab1c6bec6a37860242eafe1ae4c205e44"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 14 16:33:06 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 14 19:29:31 2017 -0800"
      },
      "message": "Guard the GNU strerror_r with an API check.\n\nThe deprecated headers have always had only the POSIX definition\navailable (and it\u0027s always been available). With the unified headers\nas they are now, we actually make it unavailable for C++ users (C++\nimplies _GNU_SOURCE) targeting below M. Adding this guard means that\npre-M users will still at least get the POSIX one.\n\nIt\u0027s not great that moving to M as your target API will actually\nchange the signature of your strerror_r, but I don\u0027t see a better\noption here (not until we have the compatibility library, anyway).\n\nTest: make checkbuild\nBug: None\nChange-Id: I2d15702467533a826c4ec10fd973ee929d2b562a\n"
    },
    {
      "commit": "95b59c520b24aabcdc63b93a3f1eaf73e57a3afe",
      "tree": "76e43d9ec4f387c5774508c9e6c9d728a21c8052",
      "parents": [
        "9fc52deab1c6bec6a37860242eafe1ae4c205e44"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Mon Feb 13 17:27:59 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 14 15:50:28 2017 -0800"
      },
      "message": "add fortified implementations of send/sendto\n\nBug: None\nTest: Bullhead builds+boots; CtsBionicTestCases passes.\nChange-Id: I2f137a100f679f7f2145d84b2f29ddd3e96a36ae\n"
    },
    {
      "commit": "7b5245408499ef48afc8def662fcfab09683e1c4",
      "tree": "e5c3d9a40427a7eed3373c0e97f3ec89973ff3e1",
      "parents": [
        "e7ea7612f91081c3524057ef608520fd2f740e38",
        "125f1c0f224e2e50ea285ed184789765ce12feee"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 23:08:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 23:08:13 2017 +0000"
      },
      "message": "Merge \"Add details on why AT_SYMLINK_NOFOLLOW is dangerous\""
    },
    {
      "commit": "e7ea7612f91081c3524057ef608520fd2f740e38",
      "tree": "0aaf2ee57dc265bf53097955e813442269d3ab8e",
      "parents": [
        "03709055024a84d319404dd23181fd1576ee5b59",
        "65236d43e8e8ea2155c0d64e35f00b3c30b21147"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 22:40:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 22:40:58 2017 +0000"
      },
      "message": "Merge \"Revert \"Make libc.so global\"\""
    },
    {
      "commit": "125f1c0f224e2e50ea285ed184789765ce12feee",
      "tree": "d573ff4a994ab4fa046bf36de2e7132b72d6fbc6",
      "parents": [
        "03709055024a84d319404dd23181fd1576ee5b59"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 14 09:49:30 2017 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Feb 14 12:55:15 2017 -0800"
      },
      "message": "Add details on why AT_SYMLINK_NOFOLLOW is dangerous\n\nThe comment isn\u0027t helpful as-is. Provide some clarifying information.\n\nTest: code compiles. No functional changes.\nChange-Id: I5267e0bc68857fdc8a4b3384a2a1b0d37693ee6e\n"
    },
    {
      "commit": "65236d43e8e8ea2155c0d64e35f00b3c30b21147",
      "tree": "720378e423a3c702358bb4341f93e8e9517d625f",
      "parents": [
        "879177c9e12df4efe9f17ff3536005c258f625e8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 14 19:03:26 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Feb 14 19:03:26 2017 +0000"
      },
      "message": "Revert \"Make libc.so global\"\n\nThis reverts commit 879177c9e12df4efe9f17ff3536005c258f625e8.\n\nBug: http://b/26833548\nChange-Id: I23e0b34777d18e369063185da14c57994807da29\n"
    },
    {
      "commit": "03709055024a84d319404dd23181fd1576ee5b59",
      "tree": "e94707636d516c30c421707f315a946345ddb3f4",
      "parents": [
        "ade3be476fa918ea4e412f584e1e941260a7205c",
        "11859d467c035081f8acafeaf0184b670cd41c48"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 18:32:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 18:32:18 2017 +0000"
      },
      "message": "Merge \"Be more strict about using invalid `pthread_t`s.\""
    },
    {
      "commit": "ade3be476fa918ea4e412f584e1e941260a7205c",
      "tree": "7042787c47c8ed0c40361e33b3b5f8ddf9a2542b",
      "parents": [
        "9fc52deab1c6bec6a37860242eafe1ae4c205e44",
        "a0d374d587ec18d437d0dd15ba1332aceaa188af"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 03:48:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 03:48:26 2017 +0000"
      },
      "message": "Merge \"Add __system_property_wait and return the serial in __system_property_read_callback.\""
    },
    {
      "commit": "11859d467c035081f8acafeaf0184b670cd41c48",
      "tree": "36afb3b9c9bbff69d83945e7ab08b7687908f74c",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 17:59:29 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 17:59:29 2017 -0800"
      },
      "message": "Be more strict about using invalid `pthread_t`s.\n\nAnother release, another attempt to remove the global thread list.\n\nBut this time, let\u0027s admit that it\u0027s not going away. We can switch to using\na read/write lock for the global thread list, and to aborting rather than\nquietly returning ESRCH if we\u0027re given an invalid pthread_t.\n\nThis change affects pthread_detach, pthread_getcpuclockid,\npthread_getschedparam/pthread_setschedparam, pthread_join, and pthread_kill:\ninstead of returning ESRCH when passed an invalid pthread_t, if you\u0027re\ntargeting O or above, they\u0027ll abort with the message \"attempt to use\ninvalid pthread_t\".\n\nNote that this doesn\u0027t change behavior as much as you might think: the old\nlookup only held the global thread list lock for the duration of the lookup,\nso there was still a race between that and the dereference in the caller,\ngiven that callers actually need the tid to pass to some syscall or other,\nand sometimes update fields in the pthread_internal_t struct too.\n\n(This patch replaces such users with calls to pthread_gettid_np, which\nat least makes the TOCTOU window smaller.)\n\nWe can\u0027t check thread-\u003etid against 0 to see whether a pthread_t is still\nvalid because a dead thread gets its thread struct unmapped along with its\nstack, so the dereference isn\u0027t safe.\n\nTaking the affected functions one by one:\n\n    * pthread_getcpuclockid and pthread_getschedparam/pthread_setschedparam\n      should be fine. Unsafe calls to those seem highly unlikely.\n\n    * Unsafe pthread_detach callers probably want to switch to\n      pthread_attr_setdetachstate instead, or using\n      pthread_detach(pthread_self()) from the new thread\u0027s start routine\n      rather than doing the detach in the parent.\n\n    * pthread_join calls should be safe anyway, because a joinable thread\n      won\u0027t actually exit and unmap until it\u0027s joined. If you\u0027re joining an\n      unjoinable thread, the fix is to stop marking it detached. If you\u0027re\n      joining an already-joined thread, you need to rethink your design.\n\n    * Unsafe pthread_kill calls aren\u0027t portably fixable. (And are obviously\n      inherently non-portable as-is.) The best alternative on Android is to\n      use pthread_gettid_np at some point that you know the thread to be\n      alive, and then call kill/tgkill directly.\n\n      That\u0027s still not completely safe because if you\u0027re too late, the tid\n      may have been reused, but then your code is inherently unsafe anyway.\n\nBug: http://b/19636317\nTest: ran tests\nChange-Id: I0372c4428e8a7f1c3af5c9334f5d9c25f2c73f21\n"
    },
    {
      "commit": "a0d374d587ec18d437d0dd15ba1332aceaa188af",
      "tree": "a9466c8841140cf70290c54d50354f245ea3a9db",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:13:46 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 13:30:10 2017 -0800"
      },
      "message": "Add __system_property_wait and return the serial in __system_property_read_callback.\n\nIn order to implement android::base::WaitForProperty well, we need a way to\nwait not for *any* property to change (__system_property_wait_any), but to\nspecifically wait for the property represented by a given `prop_info` to\nchange.\n\nThe android::base::WaitForProperty implementation, like attempts to cache\nsystem properties in the past, also needs a way to keep serials and values\nin sync, but the existing functions don\u0027t provide a cheap way to get a\nconsistent snapshot. Change the __system_property_read_callback callback\u0027s\ntype to include the serial corresponding to the given value.\n\nAdd a test, slightly clean up some of the existing tests (and name them to\ninclude the names of the functions they\u0027re testing, in our usual style).\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: Ibc8ebe2e88eef1e333a1bd3dd7f68135f1ba7fb5\n"
    },
    {
      "commit": "5b74e9b2f5792621b51d9b5f16296807eac7d88e",
      "tree": "67ec35092eb0cecc1113bc48bb9ca5be8da8e5e0",
      "parents": [
        "572b1dde03241d6d6d399395700957cae8d664ca",
        "879177c9e12df4efe9f17ff3536005c258f625e8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 13 20:29:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 13 20:29:52 2017 +0000"
      },
      "message": "Merge \"Make libc.so global\""
    },
    {
      "commit": "879177c9e12df4efe9f17ff3536005c258f625e8",
      "tree": "8181ac3c2da150c73e001412e8f1a3fb6a365afb",
      "parents": [
        "2cb4dfbb8c71ccc7890ecfd792790d7f6842b5a8"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 13 09:17:21 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Feb 13 10:05:17 2017 -0800"
      },
      "message": "Make libc.so global\n\nThis is a way to avoid loading multiple libc.so\nwhen non-default namespace search path includes\n/system/lib. This is used by some art tests.\n\nBug: http://b/26833548\nTest: m -j32 test-art-target-run-test-004-JniTest\nChange-Id: I919d3a0560bd3c9ac19df21a235641a667f0f017\n"
    },
    {
      "commit": "156d5a8ae93c6515919dd6706481991c7c0dc600",
      "tree": "babd491737f6965d7c6910869b435e5e47cf7cdc",
      "parents": [
        "e86a8d605b3df0c396e23ee02933c76d7040a73b"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Feb 10 13:56:22 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Feb 10 18:14:43 2017 -0800"
      },
      "message": "Match __bos0 to __pass_object_size0 in FORTIFY\n\npass_object_size(N) forwards the result of __builtin_object_size(param,\nN) to a function. So, a function that looks like:\n\n  size_t foo(void *const p __pass_object_size) { return __bos0(p); }\n  int bar \u003d foo(baz);\n\nwould effectively be turned into\n\n  size_t foo(void *const p, size_t sz) { return sz; }\n  int bar \u003d foo(baz, __bos(baz)); // note that this is not __bos0\n\nThis is bad, since if we\u0027re using __bos0, we want more relaxed\nobjectsize checks.\n\n__bos0 should be more permissive than __bos in all cases, so this\nchange Should Be Fine™.\n\nThis change also makes GCC and clang share another function\u0027s\nimplementation (recv). I just realized we need to add special\ndiagnostic-related overloads bits for clang to it, but I can do that in\nanother patch.\n\nBug: None\nTest: Bullhead builds and boots; CtsBionicTestCases passes.\nChange-Id: I6818d0041328ab5fd0946a1e57321a977c1e1250\n"
    },
    {
      "commit": "e86a8d605b3df0c396e23ee02933c76d7040a73b",
      "tree": "4acbba792045d1bcfbe85bccb969877835ab934c",
      "parents": [
        "43801a50b071279c58d8d3b4d06ce26b39e57a4e",
        "dd91b32baf376d4ef84f4713bb758e1a0c892701"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 10 06:24:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 10 06:24:32 2017 +0000"
      },
      "message": "Merge \"Removing the kuser_helper elf note from building\""
    },
    {
      "commit": "dd91b32baf376d4ef84f4713bb758e1a0c892701",
      "tree": "26f4813ef507d198465d74db5fcc9ca1c3754dad",
      "parents": [
        "f201c704d64ea40432123a90489d5dc88d613213"
      ],
      "author": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Wed Feb 08 17:01:27 2017 -0800"
      },
      "committer": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Thu Feb 09 18:37:52 2017 -0800"
      },
      "message": "Removing the kuser_helper elf note from building\n\nThis change removes the kuser_helper note from building automatically\nwith any binary but leaves the note.\nAlso fixes a typo in the note.\n\nOriginal patch adding the note:\nIb8366e2a0810092b71381d57dee4bdaa56369a24\n\nBug: 34815073\nTest: Manual - Note is no longer added to binaries\nChange-Id: Ieb81f9d9127d1f8a522434a31c696d743238e2a5\n"
    },
    {
      "commit": "7cc779f15c524e1622f7d5b1c7e82e6ffc6677fd",
      "tree": "0f995c0878649447ef160e727505ae81495dcdde",
      "parents": [
        "2bfb8c9180603bac97dca2d8e359f71bb11f7126"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Feb 09 00:00:31 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Feb 09 15:49:32 2017 -0800"
      },
      "message": "libc: add clang FORTIFY support\n\nThis patch adds clang-style FORTIFY to Bionic. For more information on\nFORTIFY, please see https://goo.gl/8HS2dW . This implementation works\nfor versions of clang that don\u0027t support diagnose_if, so please see the\n\"without diagnose_if\" sections. We plan to swap to a diagnose_if-based\nFORTIFY later this year (since it doesn\u0027t really add any features; it\njust simplifies the implementation a lot, and it gives us much prettier\ndiagnostics)\n\nBug: 32073964\nTest: Builds on angler, bullhead, marlin, sailfish. Bionic CTS tests\npass on Angler and Bullhead.\n\nChange-Id: I607aecbeee81529709b1eee7bef5b0836151eb2b\n"
    },
    {
      "commit": "f201c704d64ea40432123a90489d5dc88d613213",
      "tree": "6452fcfa55eac460e2f4044569aef99d59aef619",
      "parents": [
        "a1fa522927770347ca0c322c1b401e5a49611e7a",
        "bcb152903a26269e2c8ada3b27c787ae875f8812"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 21:12:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 07 21:12:23 2017 +0000"
      },
      "message": "Merge \"Revert \"Stop checking the global thread list in several trivial cases.\"\""
    },
    {
      "commit": "bcb152903a26269e2c8ada3b27c787ae875f8812",
      "tree": "7bd88d5a8cde6ac54c1af51a11f5932988ce9215",
      "parents": [
        "f5a4992b7186c01b98cb9400b2b5b490805a87bb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 21:05:30 2017 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 21:05:30 2017 +0000"
      },
      "message": "Revert \"Stop checking the global thread list in several trivial cases.\"\n\nThis reverts commit f5a4992b7186c01b98cb9400b2b5b490805a87bb.\n\nBreaks OMX_ImgEnc in cameraserver (http://b/35088254).\n\nChange-Id: I6dcf12706a184b0b8b72451584567a42dfa1bb4f\n"
    },
    {
      "commit": "a1fa522927770347ca0c322c1b401e5a49611e7a",
      "tree": "e46ae983af685eb78c71938e9f70e7db75acb0d4",
      "parents": [
        "4708f435f5ebb1db385aaf9b1304493bd0420936",
        "5e6cf05aab0a2fcc6177482606c1b1f2d958a7f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 07 17:01:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 07 17:01:16 2017 +0000"
      },
      "message": "Merge \"Improve a comment.\""
    },
    {
      "commit": "f5a4992b7186c01b98cb9400b2b5b490805a87bb",
      "tree": "5e0da95bd6edc7fb861bf0130fcfab4997a9141a",
      "parents": [
        "4a47d2c436e93caff08fb112f39bb24145950279"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 06 14:09:53 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 06 14:09:53 2017 -0800"
      },
      "message": "Stop checking the global thread list in several trivial cases.\n\nSince removing the global thread is hard, let\u0027s take the different\ngroups of functions individually.\n\nThe existing code was racy anyway, because the thread might still be\non the list but have exited (leaving tid \u003d\u003d 0).\n\nBug: http://b/19636317\nTest: ran tests\nChange-Id: Icc0986ff124d5f9b8a653edf718c549d1563973b\n"
    },
    {
      "commit": "5e6cf05aab0a2fcc6177482606c1b1f2d958a7f9",
      "tree": "6452fcfa55eac460e2f4044569aef99d59aef619",
      "parents": [
        "4a47d2c436e93caff08fb112f39bb24145950279"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 06 10:26:20 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 06 10:26:20 2017 -0800"
      },
      "message": "Improve a comment.\n\nBug: http://b/23675822\nTest: builds\nChange-Id: Ia58ffabf38012035076e4c682faa4c93f3690e24\n"
    },
    {
      "commit": "be8a2af2aab17c6686a2d557c65f6aca3ee159b7",
      "tree": "7bd88d5a8cde6ac54c1af51a11f5932988ce9215",
      "parents": [
        "9886ea3e2d8cfd824f271d38e93dd46fe1d23840"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Jan 25 15:20:52 2017 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Feb 03 09:36:45 2017 -0800"
      },
      "message": "Create seccomp policy without TRAP for further processing\n\nBug: 34946764\nTest: Make sure boots, seccomp still blocks, and is faster\nChange-Id: Ib4abf4307ae545ee69a3fb9328f62c760a1b40f7\n"
    },
    {
      "commit": "33ae5a97f234fab6a6d00ca463b82d30f7b82898",
      "tree": "22eb82ad031853297758fb31f9c63ead0e8643b2",
      "parents": [
        "a187a6f12e4ce0314baba73e77aa3b1ea46a72d2",
        "e76ee993ff30a639d24c7db6a080c14d1b1a10f2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 00:32:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 03 00:32:01 2017 +0000"
      },
      "message": "Merge \"isnan and isinf aren\u0027t functions.\""
    },
    {
      "commit": "e76ee993ff30a639d24c7db6a080c14d1b1a10f2",
      "tree": "b761aae9d6f050408146941680843fb6d0dbc5ed",
      "parents": [
        "3c838bbb4aca12936aa3d8e96f3b04af3803d0f4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 14:02:49 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 14:02:49 2017 -0800"
      },
      "message": "isnan and isinf aren\u0027t functions.\n\nisnan was a function in POSIX in 1997, but changed to a macro only in 2004\nto align with the C standard. isinf wasn\u0027t in POSIX until 2004, where it\nappeared as a macro only (but other C libraries already had it as a\nfunction).\n\nNow the C++ standard has added ::isnan and ::isinf functions with different\nsignatures from the historical ones, so we need to move our historical cruft\nout of the way.\n\nWe\u0027ll keep the implementations for backwards compatibility.\n\nBug: http://b/34724220\nTest: ran tests\nChange-Id: Id665f0344af6fe6ed245106e60231f4ef2027f41\n"
    },
    {
      "commit": "a187a6f12e4ce0314baba73e77aa3b1ea46a72d2",
      "tree": "2d02e20bce64241c2815e50b5a0b75746d510af3",
      "parents": [
        "1fedfedda8a2b75ed56669e28265f943312ec22f",
        "7484c21c4c352a2200d94939fabc10d1bd3f0723"
      ],
      "author": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Feb 02 02:46:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 02 02:46:40 2017 +0000"
      },
      "message": "Merge \"Revert \"Remove the global thread list.\"\""
    },
    {
      "commit": "7484c21c4c352a2200d94939fabc10d1bd3f0723",
      "tree": "fe089ec40970a76f11107534632b1fc5789660ed",
      "parents": [
        "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 02:41:38 2017 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 02:41:38 2017 +0000"
      },
      "message": "Revert \"Remove the global thread list.\"\n\nThis reverts commit b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5.\n\nBreaks swiftshader (http:/b/34883464).\n\nChange-Id: I7b21193ba8a78f07d7ac65e41d0fe8516940a83b\n"
    },
    {
      "commit": "9b9d4ebc8bbbdfe627d23f58084ec4ea0bd7a0cb",
      "tree": "b46d2d5dc0e00d024b7d07b1195d5b48141c5922",
      "parents": [
        "b88112dcfc7954f001e722bb274b110e253dae6e",
        "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 01 16:16:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 01 16:16:41 2017 +0000"
      },
      "message": "Merge \"Remove the global thread list.\""
    },
    {
      "commit": "b88112dcfc7954f001e722bb274b110e253dae6e",
      "tree": "81f847d3fb00adc731b7deaeecf3cd9e55ddb9ce",
      "parents": [
        "9586fe27440fa33ac87e79065c7b5e6b2a7e778b",
        "7518109063a3b13ffe12d14d2bf87d0d5116992a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 01 04:38:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 01 04:38:15 2017 +0000"
      },
      "message": "Merge \"bionic: move ADF uapi header out of bionic\""
    },
    {
      "commit": "8e7396c9d733c73226f3bfa31241cd311b451cf3",
      "tree": "833fc173575d6617e7051fbd126e98fde1c80700",
      "parents": [
        "44bea80d31bfda28008e0a9116f65aab5d85206d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 31 08:24:43 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 31 08:24:43 2017 -0800"
      },
      "message": "s/NULL/nullptr/ in system properties code.\n\ngerrit still hasn\u0027t sent out the mail asking for this in an earlier code\nreview...\n\nBug: http://b/33926793\nTest: builds and boots.\nChange-Id: I080de633e50e47f9a052211d47da96b971b16424\n"
    },
    {
      "commit": "9160ed9bb76f64d1237393dcabf098f9c52f5b3d",
      "tree": "73e17c96f06ffc5621ff164d7e5dd88394902363",
      "parents": [
        "a5066640cc7274e317bf3bae2d960986d58dbbbd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 17:54:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 17:54:57 2017 -0800"
      },
      "message": "clang-format system_properties.cpp.\n\nAsked for on a previous code review.\n\nBug: http://b/33926793\nTest: builds and boots.\nChange-Id: Idf34804896149db5edbddf4ed88396a5df7f708a\n"
    },
    {
      "commit": "5dc75c6c4de42a3a05faed6e39e13e71d258897f",
      "tree": "0daa51584f72beb67cbe072f34ca67898212f381",
      "parents": [
        "93e272d00a4155600227ce485f028c1fa8580f2c",
        "a29821bb455e6c23b2c9fe13bf1436610c4eb412"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 30 23:01:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 23:01:01 2017 +0000"
      },
      "message": "Merge \"glibc ipc64_perm __key compatibility.\""
    },
    {
      "commit": "93e272d00a4155600227ce485f028c1fa8580f2c",
      "tree": "85937ca63918dbe52c62d395d384efc9c0c86618",
      "parents": [
        "0c6f806b1d7c13b8a03c8e64797ab0159976e244",
        "34f0cfa3a8d9d93d6f397993179de2f1951e96c7"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Jan 30 19:16:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 19:16:17 2017 +0000"
      },
      "message": "Merge \"property_contexts: split into platform and non-platform components\""
    },
    {
      "commit": "a29821bb455e6c23b2c9fe13bf1436610c4eb412",
      "tree": "f6b62cb38c967bd8dc9cfdb43e0d727d6f0092f8",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 19:12:32 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 19:12:32 2017 -0800"
      },
      "message": "glibc ipc64_perm __key compatibility.\n\nglibc gives the `struct ipc64_perm` fields `key` and `seq` double-underscore\nnames. strace refers to the fields by those names, and there\u0027s no obvious\nreason not to go along with this.\n\nBug: N/A\nTest: built strace 4.15 with a hacked NDK\nChange-Id: I8b2b0f75363349d99edaecda50fe897ee0fa0c65\n"
    },
    {
      "commit": "f8562c5f8f0a8df88bd864b8c64eeb9b8905b97d",
      "tree": "b5f9e89d8683da813350e680a1e19882473e8485",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 26 16:48:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 16:19:59 2017 -0800"
      },
      "message": "Remove backwards compatibility for old system properties.\n\nNo-one is directly upgrading from pre-K to O...\n\nAlso move more implementation details out of the header file.\n\nBug: http://b/33926793\nTest: boots\nChange-Id: I7a0936acbb1cea8a3b2cd6797ec53ba7e4a050f3\n"
    },
    {
      "commit": "34f0cfa3a8d9d93d6f397993179de2f1951e96c7",
      "tree": "99f50890c87a2f7209bf75eef989de29cfa40a3e",
      "parents": [
        "577a944200e445f806964b7fb5dbd38633f4ae07"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Tue Dec 27 17:37:44 2016 -0800"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Fri Jan 27 13:12:32 2017 -0800"
      },
      "message": "property_contexts: split into platform and non-platform components\n\nBug: 33746484\nBug: 34370523\nTest: Successfully boot with original service and property contexts.\nTest: Successfully boot with split serivce and property contexts.\nTest: Incremental build works on sailfish (reported in b/34370523)\nTest: adb sideload works with aosp updater (reported in b/34370523)\n\nChange-Id: Idf24856193032a8bc89ec384a72451e578a9d5ac\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n"
    },
    {
      "commit": "7518109063a3b13ffe12d14d2bf87d0d5116992a",
      "tree": "6d315becb1b4d55b6a27d90d5c1d9806b2f5b28b",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Jan 27 10:07:36 2017 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Jan 27 13:01:51 2017 -0800"
      },
      "message": "bionic: move ADF uapi header out of bionic\n\nADF isn\u0027t a candidate for upstreaming and isn\u0027t (directly) usable from\nunprivileged NDK code, so it makes more sense to keep video/adf.h as a\nprivate header inside libadf, where it\u0027ll still be usable by HWC\nimplementations without shipping in the NDK.\n\nlibadf exports its entire include/ directory, so this shouldn\u0027t have any\nimpact on HWC implementations that already link against libadf.\n\nTest: mmm system/core/adf/libadf\nTest: /data/nativetest64/adf-unit-tests/adf-unit-tests (on Nexus 9)\nChange-Id: I6573f539cfd7fc65433237d0b115b8b7b2728133\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "351a796d2d17efa09b13afdb983270a33cd8d77d",
      "tree": "5f5e19db9b31c97713e79997db30a379babbb728",
      "parents": [
        "00e388df4efc102d8bd58bcd5746422461bee53b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 27 10:49:48 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 27 10:49:48 2017 -0800"
      },
      "message": "Update to kernel headers v4.9.6.\n\nTest: Built arm/arm64/x86/x86_64 targets.\nChange-Id: Id4d2711aaa96fe537f3726a0a89f2959e9cca34a\n"
    },
    {
      "commit": "00e388df4efc102d8bd58bcd5746422461bee53b",
      "tree": "c23413e1414ecf0373289c9b5da466b47d6927e9",
      "parents": [
        "15db5d0d2986544de1eafe1ee0feb4e7b1d6ce37",
        "6a9755d20a995756487bb1aafb7e954f4fd868a7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 27 17:50:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 27 17:50:46 2017 +0000"
      },
      "message": "Merge \"Update to kernel headers v4.9.3.\""
    },
    {
      "commit": "451909da3159acc34a136262efdc80ae44bacb62",
      "tree": "1ff67d3af090a75592f7192d50d53388b8e9e287",
      "parents": [
        "577a944200e445f806964b7fb5dbd38633f4ae07"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 26 16:52:59 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 26 17:08:01 2017 -0800"
      },
      "message": "Remove dependency on libc.a from the linker\n\nProvide stub for unused but needed symbol __find_icu_symbol\nwhich is not included to libc_nomalloc.a.\n\nTest: mm and boot\nChange-Id: I57ca09c990556d1d401e2f4a75bc49b61b4cd85d\n"
    },
    {
      "commit": "577a944200e445f806964b7fb5dbd38633f4ae07",
      "tree": "59d30d40f49a023cf296ce7e377eb6681d09b269",
      "parents": [
        "3c0363d7fd89497bec912a0c7090346fcca5eb88",
        "2e3d6a1d67f78ea37ceb5a082eefbb812c0a320e"
      ],
      "author": {
        "name": "Max Spector",
        "email": "mspector@google.com",
        "time": "Thu Jan 26 18:43:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 26 18:43:40 2017 +0000"
      },
      "message": "Merge \"Adding kuser_helper on note to all arm32 binaries.\""
    },
    {
      "commit": "0c45c7dc5e0cf62d311b295887d1b3119be98f42",
      "tree": "425d2fe3b9a0af51dde5cc3be8ac7ef80fe8b76d",
      "parents": [
        "6418f95ca2dc29f44943ea95c838fd6feb80b9c6",
        "9935e0fceeceaa344a9b8ec404ba24c173a13509"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 26 07:13:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 26 07:13:21 2017 +0000"
      },
      "message": "Merge \"Don\u0027t mark __res_params or android_net_context as packed.\""
    },
    {
      "commit": "2e3d6a1d67f78ea37ceb5a082eefbb812c0a320e",
      "tree": "21a3d3b8c084f2c2c66c56cb2f183ec4ac8999e6",
      "parents": [
        "3f6d59977545d65f01bd218c7453c7149d7374a4"
      ],
      "author": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Tue Jan 24 21:51:51 2017 -0800"
      },
      "committer": {
        "name": "mspector",
        "email": "mspector@google.com",
        "time": "Wed Jan 25 17:33:05 2017 -0800"
      },
      "message": "Adding kuser_helper on note to all arm32 binaries.\n\nA kernel change is going in for 64bit arm to disable kuser_helper vector\npages for 32bit processes.  This change adds a special elf note to\nall arm32 binaries built with bionic.  This note tells the kernel to\nload the kuser_helper vector page for the process.\n\nBug: 33689037\nTest: Manual - Phone boots, 32bit binaries have the notes, 64bit\nbinaries do not.\nChange-Id: Ib8366e2a0810092b71381d57dee4bdaa56369a24\n"
    },
    {
      "commit": "6a9755d20a995756487bb1aafb7e954f4fd868a7",
      "tree": "0278ddd8ea343a9b9d7038ad907450ec7eca6130",
      "parents": [
        "18c009ca96a432b35c76aeb9f62687b2db5153c0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 13 14:09:31 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 25 16:23:56 2017 -0800"
      },
      "message": "Update to kernel headers v4.9.3.\n\nTest: Built arm, arm64, x86, x86_64 targets.\nTest: Booted on angler, and ran bionic unit tests (32 bit and 64 bit).\n\nChange-Id: I14a8dcbea11b41f83431eabed6590cd25af07b1d\n"
    },
    {
      "commit": "6418f95ca2dc29f44943ea95c838fd6feb80b9c6",
      "tree": "19a7236e1cc6da405be51a914fdbc383a519a03b",
      "parents": [
        "18c009ca96a432b35c76aeb9f62687b2db5153c0",
        "3d9fc696a5a511bc49a41cba936b8b200481982f"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Wed Jan 25 22:46:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 25 22:46:06 2017 +0000"
      },
      "message": "Merge \"Use trap not kill in seccomp filter\""
    },
    {
      "commit": "9935e0fceeceaa344a9b8ec404ba24c173a13509",
      "tree": "cded4b5ee6c4f8694a3ea73979a39380924546cd",
      "parents": [
        "37f1d11482a6ac26ea201264c77d905336a02d18"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jan 25 00:39:47 2017 -0800"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Jan 25 00:42:45 2017 -0800"
      },
      "message": "Don\u0027t mark __res_params or android_net_context as packed.\n\nBug: http://b/31532493\n\nThese internal API structures are never actually used anywhere that\nwould change behavior because it is \"packed\", so it is safe to remove.\n\nTest: Builds correctly with the latest toolchain.\nChange-Id: I5431992d840777605be75ab91dc21158d6d22c26\n"
    },
    {
      "commit": "cafd3553751dfb524316884fb213eb80c75a26a2",
      "tree": "9accfb894608a6c131aa011490cce799f0160abe",
      "parents": [
        "16b2a4de143a026b8d467b7d242126adcf67242b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 12:39:33 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 14:19:03 2017 -0800"
      },
      "message": "Do not send 0 byte string content.\n\nTrying to send even 0 bytes to closed socket leads to\nbroken pipe error. Sometimes property service is just\nquick enough and closes the socket between send(valuelen)\nand send(value) in the case where valuelen is 0.\n\nBug: http://b/34670529\nTest: adb reboot 20 times and make sure phone service did not fail\nTest: run bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I96f90ca6fe1790614e7efd3015bffed1ef1e9040\n"
    },
    {
      "commit": "16b2a4de143a026b8d467b7d242126adcf67242b",
      "tree": "56e0d6455248408f5c485c8a5403bb970441f7a8",
      "parents": [
        "40250bb6837da0eb0f0882efd07bdaefb3f304b1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 20:43:29 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 12:58:18 2017 -0800"
      },
      "message": "Revert \"Revert \"Remove limit of system property name length\"\"\n\nThis reverts commit 489f58b5eaedd5a80635bb3a7b39e97037c585f6.\nBug: http://b/33926793\nBug: http://b/34670529\nTest: Run bionic-unit-tests --gtest_filter\u003dprop*\n\nChange-Id: Id4e94652dc2310a21f5b7bd3af098bf79df3f380\n"
    },
    {
      "commit": "40250bb6837da0eb0f0882efd07bdaefb3f304b1",
      "tree": "4d4efa47e907a5bdc7c940380889bb94308c8967",
      "parents": [
        "f0b42ae97388e3ff6ead4c77650c19f27723d953",
        "489f58b5eaedd5a80635bb3a7b39e97037c585f6"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 20:00:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 24 20:00:44 2017 +0000"
      },
      "message": "Merge \"Revert \"Remove limit of system property name length\"\""
    },
    {
      "commit": "3d9fc696a5a511bc49a41cba936b8b200481982f",
      "tree": "9fb8aac5c5f560eea860e1451c46b0827de53af5",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Jan 24 10:44:55 2017 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Tue Jan 24 11:07:04 2017 -0800"
      },
      "message": "Use trap not kill in seccomp filter\n\nBug: 34647665\nTest: Make sure boots, check that causing a seccomp failure creates a\n      crash dump\n\nChange-Id: I5ab2fe3e8322a3c38318c97d343834baa874af8d\n"
    },
    {
      "commit": "489f58b5eaedd5a80635bb3a7b39e97037c585f6",
      "tree": "af22a101af7a53336af2669978e9a507f589fbd5",
      "parents": [
        "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "message": "Revert \"Remove limit of system property name length\"\n\nThis reverts commit 5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c.\nBug: http://b/33926793\nBug: http://b/34670529\n\nChange-Id: I0dc4a8ae55576c69b34b2958d8e664f7066b9c54\n"
    },
    {
      "commit": "f0b42ae97388e3ff6ead4c77650c19f27723d953",
      "tree": "56e0d6455248408f5c485c8a5403bb970441f7a8",
      "parents": [
        "440d6c7644ac657132189a8d799ba8e8a91d94f5",
        "191d2f3c9959d1b051bac8346b0f80b0bcb0ef15"
      ],
      "author": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Tue Jan 24 17:36:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 24 17:36:09 2017 +0000"
      },
      "message": "Merge \"Removed include log\\logger.h from log_fake.cpp\""
    },
    {
      "commit": "191d2f3c9959d1b051bac8346b0f80b0bcb0ef15",
      "tree": "cfa030fe8325c7e999e6d3c2da136d9ceaa3cfb7",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Mon Jan 23 18:56:53 2017 -0800"
      },
      "committer": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Mon Jan 23 18:56:53 2017 -0800"
      },
      "message": "Removed include log\\logger.h from log_fake.cpp\n\nTest: Compile malloc_debug_unit_tests\nChange-Id: I635687016570ba52c571435b87d8e89f7f04d609\n"
    },
    {
      "commit": "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c",
      "tree": "0652006476a923c95c16837640a52f9298322a35",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 03 11:26:38 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 23 11:21:18 2017 -0800"
      },
      "message": "Remove limit of system property name length\n\nThis change introduces new __system_property_read_callback\nmethod to use in place of deprecated __system_property_read\n__system_property_set() and get() should just work but now\ndo not have limit on system property names.\n\nBug: http://b/33926793\nTest: boot device, run adb shell propget\nTest: boot device with old version of init (protocol v1)\nTest: run bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I619fb5a7e27a272aac30011579665f6160888bc7\n"
    },
    {
      "commit": "7844b4c5dbd0be9ea4212a523da2dd6a4804032c",
      "tree": "af22a101af7a53336af2669978e9a507f589fbd5",
      "parents": [
        "ad3b3995e74dfd1d1d1c4b22fb0b31cbeda47ad3",
        "dc94cf5cd8fb943cb5bcbaccc54c401de7418de4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 20 03:58:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 20 03:58:52 2017 +0000"
      },
      "message": "Merge \"Add props files for each partition\""
    },
    {
      "commit": "dc94cf5cd8fb943cb5bcbaccc54c401de7418de4",
      "tree": "5f93bc09a26bf00d820df2cdbf248313990cc399",
      "parents": [
        "2f238b32cd973f0838d7590ed869d5a43abacacc"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Tue Jan 17 14:44:31 2017 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Jan 20 09:59:26 2017 +0900"
      },
      "message": "Add props files for each partition\n\nThe following files will be added.\n- /vendor/default.prop for default prop overrides from vendor\n partition.\n- /odm/default.prop for default prop overrides from odm partition.\n- /odm/build.prop for build prop overrides from odm partition.\n\nTest: tested default/build prop files with enabling early mount, but\ndidn\u0027t test files of odm partition because odm partition doesn\u0027t\nexist now.\nBug: 34116668\nChange-Id: Ia99895a0afcdc522463d95b2f3e2841dcf2e3516\n"
    },
    {
      "commit": "ad3b3995e74dfd1d1d1c4b22fb0b31cbeda47ad3",
      "tree": "3522ade99749a57863b7a0a205f29febd4e1de48",
      "parents": [
        "082bec5b419806d694f9a7d0283b2f831d52eea4",
        "eabc35265141485e7a531ef67a076ef799500f4e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 19 23:26:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 19 23:26:10 2017 +0000"
      },
      "message": "Merge \"Add seccomp support library\""
    },
    {
      "commit": "eabc35265141485e7a531ef67a076ef799500f4e",
      "tree": "b1a9f66c3777c29c49eb1745eb666fa25dc36c8f",
      "parents": [
        "71952ef625b953d78547da28d7271ea71cb91c92"
      ],
      "author": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Fri Nov 11 11:33:42 2016 -0800"
      },
      "committer": {
        "name": "Paul Lawrence",
        "email": "paullawrence@google.com",
        "time": "Thu Jan 19 13:38:47 2017 -0800"
      },
      "message": "Add seccomp support library\n\nPolicy library which exports an autogenerated policy from SYSCALLS.TXT\nblocking any other calls.\n\nTest: Generate policy, install onto Sailfish, check boots, Chrome runs,\ncalls are blocked.\nBug: 32313202\n\nChange-Id: Ib590704e50122f077eeae26561eb9b0a70386551\n"
    },
    {
      "commit": "082bec5b419806d694f9a7d0283b2f831d52eea4",
      "tree": "4902863a691f86e4e5236344d11ef172d2f8a2c5",
      "parents": [
        "2d261e8e9e1340151698086e8434f312a73f77f0",
        "0a3637d3eb2424d8e825ad1825f843450a888406"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 23:39:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 23:39:08 2017 +0000"
      },
      "message": "Merge \"Runtime support for CFI\""
    },
    {
      "commit": "2d261e8e9e1340151698086e8434f312a73f77f0",
      "tree": "7f7cd654b48da79bad144d07c1e3b8b9df5a8372",
      "parents": [
        "2f238b32cd973f0838d7590ed869d5a43abacacc",
        "2a3b4fa6ec9ab3d4604860b0bdd3766c9f5c44f4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 18 23:04:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 23:04:09 2017 +0000"
      },
      "message": "Merge changes from topic \u0027kill_debuggerd\u0027\n\n* changes:\n  Rename libdebuggerd_client to libdebuggerd_handler.\n  Reserve a realtime signal for debuggerd.\n"
    },
    {
      "commit": "0a3637d3eb2424d8e825ad1825f843450a888406",
      "tree": "dc0d4c31cddc2ff06902fcbdf4233f7759258764",
      "parents": [
        "1b2975d54b9c17ced29883aef24490773a4a9fe6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jul 06 13:20:59 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Jan 18 13:13:52 2017 -0800"
      },
      "message": "Runtime support for CFI\n\nControl Flow Integrity support in bionic.\n\nGeneral design:\nhttp://clang.llvm.org/docs/ControlFlowIntegrityDesign.html#shared-library-support\n\nThis CL implements subsections \"CFI Shadow\" and \"CFI_SlowPath\" in the above document.\n\nBug: 22033465\nTest: bionic device tests\nChange-Id: I14dfea630de468eb5620e7f55f92b1397ba06217\n"
    },
    {
      "commit": "35bbed802085e81e268c1198333aa71d26d34109",
      "tree": "9f195438423944be9b2c722179686e606b16bb8e",
      "parents": [
        "98d200899bbce14e676154435c1a521f98d0c6ba"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 17 18:16:07 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 17 18:31:33 2017 -0800"
      },
      "message": "Declare dependency on android_filesystem_config.h\n\nandroid_filesystem_config.h comes from a directory outside bionic/libc\nso it can\u0027t be referenced directly, add it as a source file through\na filegroup module.\n\nBug: 34283327\nTest: builds\nTest: libc rebuilds after touch system/core/include/private/android_filesystem_config.h\nChange-Id: I90f6b7b25b70842b8619d558074449f13e6e6b03\n"
    },
    {
      "commit": "f8a6d4745daafb6aced5cdeb76325c719ca1374b",
      "tree": "af6e1bd7660a400721a696d89afaecc10e1af3bf",
      "parents": [
        "8d0e0d495209f3bdc20edf0e5c2aa219b4cbe217"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 26 13:27:19 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 17 13:55:18 2017 -0800"
      },
      "message": "Reserve a realtime signal for debuggerd.\n\nAllocate __SIGRTMIN + 3 for triggering native stack dumps (like SIGQUIT\nfor Java processes).\n\nBug: http://b/30705528\nTest: debuggerd_test\nChange-Id: I81d622fba32a651555268a8a2ba6721c61c93a58\n"
    },
    {
      "commit": "1b2975d54b9c17ced29883aef24490773a4a9fe6",
      "tree": "8e2e4221964fb0ed2a569f90cae48f021849c50c",
      "parents": [
        "27fa7542876b312b9c2659ab1dd275b6f8a16ded",
        "ea87716696bf635706b6f3fa56b8a145add83aff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 12 23:19:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 12 23:19:50 2017 +0000"
      },
      "message": "Merge \"localtime_r(3) should act as if it calls tzset(3).\""
    },
    {
      "commit": "ea87716696bf635706b6f3fa56b8a145add83aff",
      "tree": "9d8552a565789486c9d0f7e9057815924c946b90",
      "parents": [
        "940d460f59e566f2d84ea3e114074a50996e76b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:34:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:56:04 2017 -0800"
      },
      "message": "localtime_r(3) should act as if it calls tzset(3).\n\nSee code comment.\n\nBug: http://b/31339449\nTest: ran tests \u0026 benchmarks\nChange-Id: I6b6a63750ef41664dc4698207e6a53e77cc28cdf\n"
    },
    {
      "commit": "907fcc98b20c6520be424fbe40ff17a5652f00e5",
      "tree": "6ede6effd480d05edd4296c8b539613c754944e7",
      "parents": [
        "0625beb2709007e01b59edde7b6d5d4fe502ae6b",
        "581b9f661bc7d32691ac5e5ee8eac38a8807aa09"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 11 01:57:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 11 01:57:56 2017 +0000"
      },
      "message": "Merge \"Hide __system_property_add/update, deprecate find_nth\""
    },
    {
      "commit": "581b9f661bc7d32691ac5e5ee8eac38a8807aa09",
      "tree": "2100650f26ccb76348855e2747f86c77926dba3a",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 09 11:05:52 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 10 13:41:27 2017 -0800"
      },
      "message": "Hide __system_property_add/update, deprecate find_nth\n\nThese functions are supposed to be used only by the\nproperty service.\n\n__system_property_find_nth is deprecated and no longer part\nof NDK. Call to this function will result in abort for apps\ntargeting Android O.\n\nBug: http://b/34114501\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I9846965bf248e2ddf45cd7b293618245bbd87145\n"
    },
    {
      "commit": "0625beb2709007e01b59edde7b6d5d4fe502ae6b",
      "tree": "2fdde7f320d6d5471d99d87c5028d9d64c50610f",
      "parents": [
        "940d460f59e566f2d84ea3e114074a50996e76b3",
        "cbfdc7f9054e0bc8071aaf3a70afc00273a8a869"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 10 18:41:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 10 18:41:15 2017 +0000"
      },
      "message": "Merge \"Fix streaming(memcpy) performance on Cortex-A7\""
    },
    {
      "commit": "940d460f59e566f2d84ea3e114074a50996e76b3",
      "tree": "e8e782b4af97446e3938460330631fa4c3b56caa",
      "parents": [
        "74e1fe1cc04f11b05fdc653a992b72c1aa3ff2b5",
        "3f6eee9793e4c41c7f4b15a723c777ae67fb1e51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 10 01:15:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 10 01:15:30 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"move android_ids into bionic\"\"\""
    },
    {
      "commit": "39b6d5904957c70f46423a27cb96009fd2a89bcc",
      "tree": "1a8b7b476a3fd78b3c05f195797781ea0f64c78a",
      "parents": [
        "500b9be4117e3396278eb6c390c56531090213fb",
        "da7a0b105ddc59cd731812b6e3fcd71821cbb01e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 09 21:23:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 09 21:23:01 2017 +0000"
      },
      "message": "Merge \"Move to .md files for even trivial documentation.\""
    },
    {
      "commit": "b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5",
      "tree": "8362f2754276b72e79a652885be7379127ca6e07",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 04 14:12:54 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 07 14:16:46 2017 -0800"
      },
      "message": "Remove the global thread list.\n\nAnother release, another attempt to fix this bug.\n\nThis change affects pthread_detach, pthread_getcpuclockid,\npthread_getschedparam/pthread_setschedparam, pthread_join, and pthread_kill:\ninstead of returning ESRCH when passed an invalid pthread_t, they\u0027ll now SEGV.\n\nNote that this doesn\u0027t change behavior as much as you might think: the old\nlookup only held the global thread list lock for the duration of the lookup,\nso there was still a race between that and the dereference in the caller,\ngiven that callers actually need the tid to pass to some syscall or other,\nand sometimes update fields in the pthread_internal_t struct too.\n\nWe can\u0027t check thread-\u003etid against 0 to see whether a pthread_t is still\nvalid because a dead thread gets its thread struct unmapped along with its\nstack, so the dereference isn\u0027t safe.\n\nTaking the affected functions one by one:\n\n* pthread_getcpuclockid and pthread_getschedparam/pthread_setschedparam\n  should be fine. Unsafe calls to those seem highly unlikely.\n\n* Unsafe pthread_detach callers probably want to switch to\n  pthread_attr_setdetachstate instead, or using pthread_detach(pthread_self())\n  from the new thread\u0027s start routine rather than doing the detach in the\n  parent.\n\n* pthread_join calls should be safe anyway, because a joinable thread won\u0027t\n  actually exit and unmap until it\u0027s joined. If you\u0027re joining an\n  unjoinable thread, the fix is to stop marking it detached. If you\u0027re\n  joining an already-joined thread, you need to rethink your design.\n\n* Unsafe pthread_kill calls aren\u0027t portably fixable. (And are obviously\n  inherently non-portable as-is.) The best alternative on Android is to\n  use pthread_gettid_np at some point that you know the thread to be alive,\n  and then call kill/tgkill directly. That\u0027s still not completely safe\n  because if you\u0027re too late, the tid may have been reused, but then your\n  code is inherently unsafe anyway.\n\nIf we find too much code is still broken, we can come back and disable\nthe global thread list lookups for anything targeting \u003e\u003d O and then have\nanother go at really removing this in P...\n\nBug: http://b/19636317\nTest: N6P boots, bionic tests pass\nChange-Id: Ia92641212f509344b99ee2a9bfab5383147fcba6\n"
    },
    {
      "commit": "da7a0b105ddc59cd731812b6e3fcd71821cbb01e",
      "tree": "5b09a019f26defb5f96ff863dc404627fbcb5593",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 07 12:47:28 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 07 12:47:28 2017 -0800"
      },
      "message": "Move to .md files for even trivial documentation.\n\nSo it\u0027s automatically displayed for folks browsing the source.\n\nBug: N/A\nTest: N/A\nChange-Id: I80e823415f1fb12ad8ce5348e926519b6e29580f\n"
    },
    {
      "commit": "bb59d4724978d633eca1fb7a30c3d0970c8d5e52",
      "tree": "e1101bf6ce7e3fc147d28803e3d24100f42d6720",
      "parents": [
        "d26267b8b9b6ad8e4726b76455077ea824ad2094"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 06 12:04:29 2017 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 06 12:07:20 2017 -0800"
      },
      "message": "Make /dev/__properties__ 0711\n\nDon\u0027t allow processes to read the contents of the directory\n/dev/__properties__. This is an implementation detail of the properties\nsystem that processes shouldn\u0027t be concerned with.\n\nTest: Device boots and no problems reading individual properties.\nTest: ls -la /dev/__properties__ fails\nChange-Id: I00130fe4529525935654bff91e3cc59253b86e26\n"
    },
    {
      "commit": "d3cfd2687249d2340b738ddeb8ea0660860e9e3f",
      "tree": "02bc3a8cac4de0b2a7059636cb92cf0d7d953ac7",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 05 13:22:26 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 05 15:15:12 2017 -0800"
      },
      "message": "Add declaration of tgkill to signal.h.\n\nExpose a useful function that we\u0027ve had since Jelly Bean.\n\nBug: http://b/34111810\nTest: TreeHugger\nChange-Id: Iaf3097f224c09b533f36050cf21394ba148007ad\n"
    },
    {
      "commit": "cbfdc7f9054e0bc8071aaf3a70afc00273a8a869",
      "tree": "3a8e2572533c625e70d56e891a7d267b7639c885",
      "parents": [
        "c816e9fa03c67b3a5a112836a8e52b988c42f7ee"
      ],
      "author": {
        "name": "Chitti Babu Theegala",
        "email": "ctheegal@codeaurora.org",
        "time": "Fri Dec 16 02:13:28 2016 +0530"
      },
      "committer": {
        "name": "Uday Kishore Pasupuleti",
        "email": "upasupul@codeaurora.org",
        "time": "Mon Dec 19 15:11:43 2016 -0800"
      },
      "message": "Fix streaming(memcpy) performance on Cortex-A7\n\nStream-mode detection for L1 in A7-core is failing for\nnon cache-line-size (non 64 byte) aligned addresses.\nThis leads to destination data getting cached unnecessarily.\nThis A7 issue is confirmed by ARM\n\nThis issue is solved by aligning destination address to 64 byte before\nentering the loop in memcpy routine.\nThough we get lower score for micro_bench memcpy when L1 cache is bypassed,\nit is desirable since it avoids unnecessary eviction of other process data\nfrom L1 which is good for overall system performance.\n\nHigher micro_bench memcpy numbers for \u003c 64byte alignment shows good numbers\nbut this is at the cost of L1 cache pollution. During memcpy/memset,\nunnecessary data is filled in L1 cache, this causes eviction of other\nprocess data from L1.\nFor example during msmset(0), L1 cache gets filled with 0s which should be\navoided.\n\nAdditionally, there is another issue with cortex A7 that impacts performance\nfor all alignments / all Android Wear versions:\nStore Buffer on A7 is 32 byte which limits the 32-byte back to back stores.\nIn the current implementation back to back 32bytes writes is causing CPU stalls.\nThis issue can be solved by interleaved Loads and Stores.\nThis helps in avoiding CPU stalls during memcpy by utilizing efficiently the\nA7 internal load and store buffers.\n\nChange-Id: Ie5f12f2bb5d86f627686730416279057e4f5f6d0\n"
    },
    {
      "commit": "54891837a0d80325a15b6706fccef33e42552bad",
      "tree": "83c1d8d5f5d74cc628a3c84823b4f2e3221d22fc",
      "parents": [
        "f7e793ef7fcfc8f20be3cadd2f5a233151d4b9c9",
        "934bc86df3e9593551e1a09e242c72f0ee1afb3e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Dec 15 21:46:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 15 21:46:30 2016 +0000"
      },
      "message": "Merge \"Define range of GIDs for cached app data.\""
    },
    {
      "commit": "a1d32f95c3bfc899b7f80ea39a52199a5d33abee",
      "tree": "bc720af8acb7d12c4b8c1e6c0ba4b61c0d6b52c7",
      "parents": [
        "a7aac1bf9a26403f747b9e9bfb5ff6b24705f622",
        "0ff61f6d194cf9b30f443f906166192cdc41b0b6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 15 06:15:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 15 06:15:41 2016 +0000"
      },
      "message": "Merge \"Make the __stack_chk_fail message more searchable on the internets.\""
    },
    {
      "commit": "0ff61f6d194cf9b30f443f906166192cdc41b0b6",
      "tree": "7cf661432792dafe4ea8f57760b91d0261cf64b1",
      "parents": [
        "cb0134d96ee67fc78082732835bcd7e5a4f5d63d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 17:30:07 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 17:30:07 2016 -0800"
      },
      "message": "Make the __stack_chk_fail message more searchable on the internets.\n\nNoticed while writing documentation:\n\n  https://source.android.com/devices/tech/debug/\n\nBug: http://b/28746168\nTest: crasher\nChange-Id: Ied1c1b1c75a85a899f07e6927134b9bf91316fe4\n"
    },
    {
      "commit": "bc94bb362da64dc15994b4a17ab54377670e26e7",
      "tree": "e02962445a33738abcde9e4046196aa06d9799a4",
      "parents": [
        "cb0134d96ee67fc78082732835bcd7e5a4f5d63d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 12:43:30 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 12:43:30 2016 -0800"
      },
      "message": "Fix an obsolete comment.\n\n280236537e06c7accaffabf8fb407f93dd1c834f factored the pthread types out\nso that they could be in both \u003csys/types.h\u003e and \u003cpthread.h\u003e.\n\nBug: N/A\nTest: builds\nChange-Id: Ie649c938ec8be1c59a0e4ef777f425550f8d4539\n"
    },
    {
      "commit": "cb0134d96ee67fc78082732835bcd7e5a4f5d63d",
      "tree": "ce42bd5cb98009dc1b8bab1d0f7e05f20bc90697",
      "parents": [
        "f27e97956d6705c09f38442423f5e115cbe55f0f",
        "8d7687143843c4fe8c8e79ea8abbc2d6b9c889f2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 16:28:24 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 14 16:28:24 2016 +0000"
      },
      "message": "Merge \"Update socket constants.\""
    },
    {
      "commit": "3f6eee9793e4c41c7f4b15a723c777ae67fb1e51",
      "tree": "8dae7fc7d418fdf69d34057f8b80add179eeb351",
      "parents": [
        "77cb68d9f2621639ec7f4e1b124ceeee5c80a66a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 23:47:25 2016 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 23:47:25 2016 +0000"
      },
      "message": "Revert \"Revert \"move android_ids into bionic\"\"\n\nThis reverts commit 77cb68d9f2621639ec7f4e1b124ceeee5c80a66a.\n\nChange-Id: Ibc9f775c4cd418be90fd8a6f192dd72ca5dff09a\n"
    },
    {
      "commit": "f27e97956d6705c09f38442423f5e115cbe55f0f",
      "tree": "b0943f5e12d41b7dd969ec323be0c4d159318b22",
      "parents": [
        "8b3e812684d3a2169b4eca0a115692bcf2bbdfff",
        "49f525c47bd383cd6a87db8f067cddb3ab620d17"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Dec 13 23:40:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 13 23:40:01 2016 +0000"
      },
      "message": "Merge \"Update to kernel headers v4.8.14.\""
    },
    {
      "commit": "8d7687143843c4fe8c8e79ea8abbc2d6b9c889f2",
      "tree": "bd70977eb4df7035a737812f95323e4b184051e1",
      "parents": [
        "e54c49050368cda50aa98af653e80f660467e246"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 15:29:58 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 15:29:58 2016 -0800"
      },
      "message": "Update socket constants.\n\nThis corresponds to Linux 4.10.\n\nBug: N/A\nTest: builds\nChange-Id: Ia7135c9fec181613b79726d1b16867133cdefd04\n"
    },
    {
      "commit": "8b3e812684d3a2169b4eca0a115692bcf2bbdfff",
      "tree": "b00b35cb5a6c1e8e4ffba03321438f95b04f9a52",
      "parents": [
        "9438a648eba3739cc02b675086df69c41c118d2d",
        "372f19e9e27c1333c0fc1e83b53d365051e81612"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Dec 13 23:11:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 13 23:11:27 2016 +0000"
      },
      "message": "Merge \"libc: ARM64: update memset/strlen/memcpy/memmove to newlib/cortex-strings\""
    },
    {
      "commit": "9438a648eba3739cc02b675086df69c41c118d2d",
      "tree": "a7c51655c0829fc939ddf82e0fa1b5fcfb3ee3b9",
      "parents": [
        "9f9c73bb2e4e2dd5533d2f6258d6deaf753c38e9",
        "21b70e667d6fb15e13f5848719ed187178acab61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:55:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 13 22:55:06 2016 +0000"
      },
      "message": "Merge \"Remove BSD cruft from \u003cpwd.h\u003e.\""
    },
    {
      "commit": "934bc86df3e9593551e1a09e242c72f0ee1afb3e",
      "tree": "747e62fbc5af8f2f1ad6f658bcb5c6080c441f76",
      "parents": [
        "2eaba9343f1726d3c4a23717ba3a5cc66c8374d2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 13 14:03:19 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 13 14:22:55 2016 -0700"
      },
      "message": "Define range of GIDs for cached app data.\n\nTo support upcoming disk usage calculation optimizations, this change\ncreates a new GID for each app that will be used to mark its cached\ndata.  We\u0027re allocating these unique GIDs so that we can use\nquotactl() to track cached data on a per-app basis.\n\nTest: builds, boots, tests pass\nBug: 27948817\nChange-Id: Ic00c39ccedc23d5d43988029e9921679126f8f2d\n"
    },
    {
      "commit": "49f525c47bd383cd6a87db8f067cddb3ab620d17",
      "tree": "cf718a23048444de49eb9a4a8a7df64990d25893",
      "parents": [
        "e54c49050368cda50aa98af653e80f660467e246"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 12 14:55:36 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 12 19:08:01 2016 -0800"
      },
      "message": "Update to kernel headers v4.8.14.\n\nTest: Built mips/arm/arm64/x86/x86_64. Built and booted angler.\nChange-Id: Icedb035769d8a41a170a6f1ecd707113e332d8dd\n"
    },
    {
      "commit": "21b70e667d6fb15e13f5848719ed187178acab61",
      "tree": "0208a459bbbd93f2281b24f642425a4d1a90a079",
      "parents": [
        "858ec7abec87f573f624434c3d969169640979c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 17:31:02 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 17:31:02 2016 -0800"
      },
      "message": "Remove BSD cruft from \u003cpwd.h\u003e.\n\nOther C libraries don\u0027t have this, and it doesn\u0027t make sense on Android\nanyway.\n\nBug: N/A\nTest: builds\nChange-Id: Iebc490698d620b5baec5f9a7ad5e1a0a1323d16c\n"
    }
  ],
  "next": "50ae6dde5b1d5b94f06f50c0d25e7dc7dcd3e726"
}
