)]}'
{
  "log": [
    {
      "commit": "b3b11edda111a44c979aa5cd5363ce6064ff4092",
      "tree": "7870537e6928c46555b5fcb9bd1b3494e6e5ea4f",
      "parents": [
        "77258163a2f6d42103f1e942cf10350a8e81f7d9",
        "176cf1f65b4431a00f9238e811f71295c36d4a27"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 09 19:20:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 09 19:20:55 2017 +0000"
      },
      "message": "Merge \"Prefer property_contexts from /system \u0026 /vendor\""
    },
    {
      "commit": "176cf1f65b4431a00f9238e811f71295c36d4a27",
      "tree": "803349727a128d616beac61a91784e9ec44811d9",
      "parents": [
        "f9f320ba73cbcd29c413ad52b8d681c65e2268a6"
      ],
      "author": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Wed Mar 08 13:16:03 2017 -0800"
      },
      "committer": {
        "name": "Alex Klyubin",
        "email": "klyubin@google.com",
        "time": "Wed Mar 08 15:28:29 2017 -0800"
      },
      "message": "Prefer property_contexts from /system \u0026 /vendor\n\nThis changes system_properties\u0027 initialize_properties to prefer\nloading property_contexts from /system/etc/selinux \u0026\n/vendor/etc/selinux, while falling back to the pre-existing behavior\nof loading from /.\n\nTest: Device with *_property_contexts in / boots up fine, no denials\n      to do with properties, getprop -Z lists correct labels.\nTest: Device with *_property_contexts in /system \u0026 /vendor, but not\n      in /, boots up fine, no denials to do with properties,\n      getprop -Z lists correct labels.\nTest: Device with *_property_contexts in /system \u0026 vendor and with\n      empty *_property_contexts in / boots up fine, no denials to do\n      with properties, getprop -Z lists correct labels.\nBug: 36002573\n\nChange-Id: I15174acdf89ee8f5a96acf1e38a54d4214df51ef\n"
    },
    {
      "commit": "5450f86b31287173278513eb8b4c8e73b9fdd3ae",
      "tree": "adfd4a7a9cd2fb1d5ef7dbf724b12bbd6f0baeb5",
      "parents": [
        "cdf19c84e8c10f5afa079790e5a2b0a55a3599e9"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 07 23:05:08 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 07 23:24:50 2017 -0800"
      },
      "message": "Fix leak of bionic TLS when threads are detached.\n\n__pthread_internal_free doesn\u0027t happen on threads that are detached,\ncausing the bionic TLS allocation (and guard pages) to be leaked.\n\nFix the leak, and name the allocations to make things apparent if this\never happens again.\n\nBug: http://b/36045112\nTest: manually ran a program that detached empty threads\nChange-Id: Id1c7852b7384474244f7bf5a0f7da54ff962e0a1\n"
    },
    {
      "commit": "4a92ffd3029e9e38c3a55222676a126db5a3b962",
      "tree": "433d790ddfffcfb36b0b362e8c968ee2e6197a55",
      "parents": [
        "ebceea8e85ad2897a5ce8575b81f18fdd7aa0320"
      ],
      "author": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:36:13 2017 +0100"
      },
      "committer": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:43:42 2017 +0100"
      },
      "message": "Stop using __system_property_area__\n\nApparently that \"backdoor\" is no longer needed - the proper way is\nto reinitialize properties:\n    https://android-review.googlesource.com/#/c/181794/24/tests/system_properties_test.cpp\n\nAlso removes mentions of libnativehelper test (it no longer uses\n__system_property_area__) and removes useless \"extern\" declaration\n(actual use was removed long ago).\n\nTest: refactoring CL, existsing tests still pass\n\nBUG\u003d21852512\nBUG\u003d34114501\n\nChange-Id: I2223cab2fcb671ea180ad4470a7aba5c9cd20bd8\n"
    },
    {
      "commit": "6391e1a44d4a183cb1fc092fc62c4e30f59429c5",
      "tree": "95d7fc5c55a2310babc87890d15f6f32c5edbcfd",
      "parents": [
        "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 17:57:14 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 14:00:04 2017 -0800"
      },
      "message": "libc: __system_property_set uses writev to write atomically\n\n__system_property_set sometimes produces broken_pipe error\nwhen trying to write a property.\n\nThis change improves error messages and uses writev() instead\nof sequence of send() calls.\n\nBug: http://b/35381074\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I7a5b169c015db4e6b720370e58662de8206d1086\n"
    },
    {
      "commit": "5d0c1fcc8b50c040f8828db4b3bb9ba11f8f9447",
      "tree": "356089008fdef73010c8268c529588bd28d49cda",
      "parents": [
        "77463d81e6d75c9c8882f825563c6560864730ac",
        "963daed78044724547ff1c7c35b34a4d50a0b867"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Feb 24 18:50:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 24 18:50:35 2017 +0000"
      },
      "message": "Merge \"Replace cxa_guard fences with acquire loads\""
    },
    {
      "commit": "963daed78044724547ff1c7c35b34a4d50a0b867",
      "tree": "e8293055d696d79e994e7094dfb58cce2957963f",
      "parents": [
        "c9a840ac76c7cdbe6028ac91cdb8eb6698f0a854"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Feb 22 15:34:29 2017 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Feb 23 11:50:58 2017 -0800"
      },
      "message": "Replace cxa_guard fences with acquire loads\n\nThis seemed to be the only place in bionic where a fence on a\nperformance-critical path could be easily replaced by a stronger\nload/store order constraint. Do so.\n\nOn x86 this should generate the same code either way. Based on\nmicrobenchmarks of the relevant ARM instructions, this is currently\nperformance-neutral in this kind of context. But in the future, the\nnewly generated acquire loads should give us a performance benefit.\n\nTest: Booted AOSP\nChange-Id: I7823e11d6ae4fd58e0425244c293262e2320fd81\n"
    },
    {
      "commit": "5e2285d3ccdbb64a49ad2e5e521f50c897a3954d",
      "tree": "cd56c251f1710652fad3b84121248a12071b42e0",
      "parents": [
        "c9a840ac76c7cdbe6028ac91cdb8eb6698f0a854"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 22 12:19:05 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 22 16:05:03 2017 -0800"
      },
      "message": "Allocate thread local buffers in __init_tls.\n\nThread local buffers were using pthread_setspecific for storage with\nlazy initialization. pthread_setspecific shares TLS slots between the\nlinker and libc.so, so thread local buffers being initialized in a\ndifferent order between libc.so and the linker meant that bad things\nwould happen (manifesting as snprintf not working because the\nlocale was mangled)\n\nBug: http://b/20464031\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\n      everything passes\nTest: /data/nativetest/bionic-unit-tests/bionic-unit-tests\n      thread_local tests are failing both before and after (KUSER_HELPERS?)\nTest: /data/nativetest64/bionic-unit-tests-static/bionic-unit-tests-static\n      no additional failures\nChange-Id: I9f445a77c6e86979f3fa49c4a5feecf6ec2b0c3f\n"
    },
    {
      "commit": "c9a840ac76c7cdbe6028ac91cdb8eb6698f0a854",
      "tree": "33427655e2794f197fa3cf55a72d9e3f3683034b",
      "parents": [
        "2cb4fb033f18353717373154aebd1eecd90f3dea",
        "40c885a4d18dd1e4480615ddd00c9f035dc08567"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 22 01:43:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 22 01:43:31 2017 +0000"
      },
      "message": "Merge \"Add timeout support to __system_property_wait.\""
    },
    {
      "commit": "40c885a4d18dd1e4480615ddd00c9f035dc08567",
      "tree": "58adbfd0852a7bb1d51122339b6a00e27bb6bcaf",
      "parents": [
        "40854235256c3f51f9ea866f5f8ef03240c00123"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:13:04 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 14:36:24 2017 -0800"
      },
      "message": "Add timeout support to __system_property_wait.\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: I3a78813bf3cd50d1b308ecb3c742f923606c0cc4\n"
    },
    {
      "commit": "6ce686c48bf6ec07a1e25b94bba7e9a3a6df4b49",
      "tree": "cd2b90df1e7b51cc6d993590f0d488e3cdbd2bb2",
      "parents": [
        "40854235256c3f51f9ea866f5f8ef03240c00123"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 13:15:20 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 14:21:43 2017 -0800"
      },
      "message": "Downgrade the special case of pthread_t(0) to a warning.\n\nSo far this is the only issue we\u0027ve hit in vendor code, and we\u0027ve hit\nit several times already. Rather than try to fix bullhead (the current\nproblem), let\u0027s just admit that the special case of 0 is a lot less\nworrying.\n\nAlso fix the test expectations to correspond to the new abort message.\n\nBug: http://b/35455349 (crashes on 0)\nBug: http://b/35622944 (tests)\nTest: ran tests\nChange-Id: Iec57011fa699a954ebeaec151db2193e36d1ef35\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "50ae6dde5b1d5b94f06f50c0d25e7dc7dcd3e726",
      "tree": "01396721e9e9ac797ecb3f49e70e6262e261084f",
      "parents": [
        "901de13c37912286db015b6f9113e39be46ce04d",
        "77cb68d9f2621639ec7f4e1b124ceeee5c80a66a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 13 00:31:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 13 00:31:25 2016 +0000"
      },
      "message": "Merge \"Revert \"move android_ids into bionic\"\""
    },
    {
      "commit": "77cb68d9f2621639ec7f4e1b124ceeee5c80a66a",
      "tree": "ed8d084df93ed051a0688432dac858a6987f381e",
      "parents": [
        "1a13db5b2675759316a8529873c5d29831a9ba32"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 22:11:37 2016 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 22:11:37 2016 +0000"
      },
      "message": "Revert \"move android_ids into bionic\"\n\nThis reverts commit 1a13db5b2675759316a8529873c5d29831a9ba32.\n\nChange-Id: I7f571b3a9d542694d16fb9cf1131ef9e59d330ea\n"
    },
    {
      "commit": "ded6c91acc562f0923bb0c6946fba4ea41c0e764",
      "tree": "9df10c348eb8fe30b7b8a8b131aa041f50e6ab4b",
      "parents": [
        "227894a754eb11cb1203c359192d59654b01b93e",
        "1a13db5b2675759316a8529873c5d29831a9ba32"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 10 00:13:04 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 10 00:13:05 2016 +0000"
      },
      "message": "Merge \"move android_ids into bionic\""
    },
    {
      "commit": "722d01a991f6ddc629488660e806350336e35826",
      "tree": "c3814ed60ca3b34372ab6a38e28a8143dd6adc80",
      "parents": [
        "51366e9b16c3bc3ea6d200be66f561cc516fc995"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 15:16:37 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 15:16:37 2016 -0800"
      },
      "message": "Fix icu4c calling on x86.\n\nSome of the function pointer types were wrong, and x86 cares if you\nsay `int` when you meant `int8_t` (because it feels at liberty to\nleave the top bits dirty and ignore them, both sides need to agree\nwhich they\u0027re dealing with).\n\nAlso slightly improve the wcstoimax and wcstoumax tests, since my\ninvestigation started there.\n\nBug: http://b/33451822\nTest: tests pass on x86, arm, and arm64\nChange-Id: I553193962f0cb993666f9f8e415990bba5b669e1\n"
    },
    {
      "commit": "f634655e6453e7d7ec453faa16cf4c97e4a5c630",
      "tree": "ef75cd449ddf401e084a49f90bdb28109b58c6c9",
      "parents": [
        "4511a59ab461745ec8f0d520645aa88ad8390aba"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Dec 02 12:02:03 2016 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Dec 02 13:03:30 2016 -0800"
      },
      "message": "Fix wcsto* where strings begin with whitespace.\n\nThe libc++ tests caught this.\n\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nBug: None\nChange-Id: I14864e006f6cf9de3f96acac6aa3eb235894f2b1\n"
    },
    {
      "commit": "cf922ff804a00fab3bc81b418053eb5f595f1c58",
      "tree": "0fa724ee1eab2905f9228681febb7074b2eeb5bb",
      "parents": [
        "68ddf5cad39de9d43b9f3b0f14e85153ce07fe52",
        "9af74907d1eaa4e970770715b1aa424b25242260"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 03:08:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 03:08:44 2016 +0000"
      },
      "message": "Merge \"Clean up \u003csys/limits.h\u003e a bit.\""
    },
    {
      "commit": "68ddf5cad39de9d43b9f3b0f14e85153ce07fe52",
      "tree": "acb2ced64adb06f38c960c70ca87d53de96acdc7",
      "parents": [
        "f347046f2dcc1900224370bb9a4f8580a25c2a16",
        "4bf55226623801fab4751bc0736a07e044d00b49"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 23:06:26 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 23:06:26 2016 +0000"
      },
      "message": "Merge \"Abort harder.\""
    },
    {
      "commit": "f347046f2dcc1900224370bb9a4f8580a25c2a16",
      "tree": "e0778a5cbc06cb6f7a199cfac8a0fc73e8e1f7e9",
      "parents": [
        "f563ae89be76fbe43a0299ed17485abd06927b6a",
        "bc232b9f3430734c5fcd965962e80cc2a6d2a31e"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Nov 30 21:34:04 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 21:34:05 2016 +0000"
      },
      "message": "Merge changes Iade6a185,Iab3050bd\n\n* changes:\n  Cleanup: replace sanitize:never with address:false.\n  Add __libc_arc4random_unlimited_entropy.\n"
    },
    {
      "commit": "1a13db5b2675759316a8529873c5d29831a9ba32",
      "tree": "8dae7fc7d418fdf69d34057f8b80add179eeb351",
      "parents": [
        "fa1a85d0031c1846f7c2a6137c614f6a12dd2279"
      ],
      "author": {
        "name": "William Roberts",
        "email": "william.c.roberts@intel.com",
        "time": "Fri Apr 08 13:44:19 2016 -0700"
      },
      "committer": {
        "name": "William Roberts",
        "email": "william.c.roberts@intel.com",
        "time": "Wed Nov 30 12:54:08 2016 -0800"
      },
      "message": "move android_ids into bionic\n\nGenerate the android_ids array and include into the\nbuild.\n\nTest: The bionic is built and that core AIDs work as\nexpected with commands like chown, mkdir and init services\nand builtins.\nBug: 27999086\nChange-Id: Ib575bf85326c91801c5674db475dcb9cf44c00dc\nSigned-off-by: William Roberts \u003cwilliam.c.roberts@intel.com\u003e\n"
    },
    {
      "commit": "9af74907d1eaa4e970770715b1aa424b25242260",
      "tree": "f1fe75fc71843b7123bf80ede7e55b57440bcc47",
      "parents": [
        "609880c12f009bba9bca696df1d6796eb4aba5ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 18:06:34 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 09:06:53 2016 -0800"
      },
      "message": "Clean up \u003csys/limits.h\u003e a bit.\n\n\u003csys/limits.h\u003e shouldn\u0027t even exist, but leave it in for backwards\ncompatibility.\n\nEverything that seems legit moves to \u003climits.h\u003e, though it still seems\nlike a lot of that ought to come from the compiler instead (there\u0027s even\nan angry rant in the clang header to that effect).\n\nUnfortunately, we\u0027ve long exposed [a copy and paste of] the contents\nof \u003cfloat.h\u003e from \u003climits.h\u003e and \u003csys/limits.h\u003e. This patch preserves\nthat for backwards compatibility, but at least switches us over to\nusing the real \u003cfloat.h\u003e instead.\n\nBug: http://b/32776472\nTest: builds\nChange-Id: I2d5b3b5237b3a0442195e99bb967c076ce484f35\n"
    },
    {
      "commit": "4bf55226623801fab4751bc0736a07e044d00b49",
      "tree": "38365d7202df1459e15a0eae01a1e1144f0177ea",
      "parents": [
        "bd734f07167b9e24cd292e669717795f83d10157"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 16:59:26 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 22:02:25 2016 -0800"
      },
      "message": "Abort harder.\n\nSome PoS internal system can\u0027t cope with more than 4 stack frames,\nso the fact that our abort(3) implementation takes 4 frames by itself\nmakes it useless.\n\nRe-reading POSIX, it only says \"behaves as if\", so the previous\nimplementation chain wasn\u0027t mandatory and we can just go straight to\ncalling tgkill...\n\nBefore:\n\n     #00 pc 0000000000069be4  /system/lib64/libc.so (tgkill+8)\n     #01 pc 0000000000066d50  /system/lib64/libc.so (pthread_kill+64)\n     #02 pc 0000000000028110  /system/lib64/libc.so (raise+24)\n     #03 pc 000000000001d4ec  /system/lib64/libc.so (abort+52)\n\nAfter:\n\n     #00 pc 0000000000069bc8  /system/lib64/libc.so (tgkill+8)\n     #01 pc 000000000001d4c8  /system/lib64/libc.so (abort+80)\n     #02 pc 0000000000001494  /system/xbin/crasher64 (_ZL9do_actionPKc+872)\n     #03 pc 00000000000010e0  /system/xbin/crasher64 (main+88)\n\nThis is less useful on 32-bit ARM because there there\u0027s an extra trampoline\nfrom an assembler abort(3) implementation, so you\u0027ll still only get one\nmeaningful stack frame. But every other architecture will now get two!\n\nBut wait!\n\nIt turns out that the assembler hack isn\u0027t needed any more. Here we are\nunwinding just fine all the way through the 32-bit ARM crasher:\n\nBefore (with direct call to tgkill but still using the assembler):\n\n     #00 pc 00049e7c  /system/lib/libc.so (tgkill+12)\n     #01 pc 00019c6f  /system/lib/libc.so (__libc_android_abort+50)\n     #02 pc 000181f8  /system/lib/libc.so (abort+4)\n     #03 pc 00001025  /system/xbin/crasher (_ZL9do_actionPKc+656)\n     #04 pc 00017721  /system/lib/libc.so (__libc_init+48)\n     #05 pc 00000b38  /system/xbin/crasher (_start+96)\n\nAfter:\n\n     #00 pc 00049e6c  /system/lib/libc.so (tgkill+12)\n     #01 pc 00019c5f  /system/lib/libc.so (abort+50)\n     #02 pc 00001025  /system/xbin/crasher (_ZL9do_actionPKc+656)\n     #03 pc 00017721  /system/lib/libc.so (__libc_init+48)\n     #04 pc 00000b38  /system/xbin/crasher (_start+96)\n\n(As you can see, the fact that we see __libc_init rather than main was true\nwith the assembler stub too, so that\u0027s not a regression even if it does seem\nodd...)\n\nBug: N/A\nTest: ran crasher64\nChange-Id: I9dd5b214c495604c8b502c7ec0de3631080d8c29\n"
    },
    {
      "commit": "609880c12f009bba9bca696df1d6796eb4aba5ad",
      "tree": "1f56652db13d03ea145fb4ffc8724018eb581744",
      "parents": [
        "3b6b2f7c2d922888e1644355b6cb03bef363b691",
        "8f0e42fda6e5c19c3f06d8ba022501f6f480313b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 30 05:49:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 05:49:03 2016 +0000"
      },
      "message": "Merge \"Fix getpriority/setpriority types.\""
    },
    {
      "commit": "585fc3e5541ca8764820b5a15196dc2811541941",
      "tree": "736f251691429ad4bbcc825b53162df11150ac39",
      "parents": [
        "bd734f07167b9e24cd292e669717795f83d10157"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 10 16:26:44 2016 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 29 15:26:08 2016 -0800"
      },
      "message": "Add __libc_arc4random_unlimited_entropy.\n\nLet the caller know when libc has an entropy source and arc4random is safe.\nThis is useful for the callers that want entropy, but don\u0027t absolutely need it.\n\nBug: http://b/27729263\nTest: booted angler-userdebug w/ safestack\nChange-Id: Iab3050bd19f23518e1676629573eebc656ba1090\n"
    },
    {
      "commit": "8f0e42fda6e5c19c3f06d8ba022501f6f480313b",
      "tree": "66b46d97df20982bf1c86dbbea9bab952aba3170",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 15:10:29 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 15:14:11 2016 -0800"
      },
      "message": "Fix getpriority/setpriority types.\n\nBug: N/A\nTest: builds\nChange-Id: Ica099bae04a0260871783452811a54672094ba4a\n"
    },
    {
      "commit": "bd734f07167b9e24cd292e669717795f83d10157",
      "tree": "792553a647477a2a57612c45afaac7df43c80752",
      "parents": [
        "86841573ed240e113adba82e97d586d568b9a8b2",
        "a57ca0da69ab9a3f870a584ba1ddab9af432c639"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 23:05:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 23:05:31 2016 +0000"
      },
      "message": "Merge \"Use icu4c to implement \u003cwctype.h\u003e.\""
    },
    {
      "commit": "a57ca0da69ab9a3f870a584ba1ddab9af432c639",
      "tree": "1e26c4f0e54f3db93ce18f04f49076de6cb4bdee",
      "parents": [
        "a5c16983a65e2169174a0e77a54c0ce650f87b48"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 17 18:18:08 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 19:19:30 2016 +0000"
      },
      "message": "Use icu4c to implement \u003cwctype.h\u003e.\n\nPretty useless, because the POSIX APIs are useless for actually\ninternationalization, but it lets us put this to bed for good.\n\nBug: http://b/18492914\nTest: bionic tests\nChange-Id: I4dd0aff66c44b5547039be3ffea806c865b9014a\n"
    },
    {
      "commit": "86841573ed240e113adba82e97d586d568b9a8b2",
      "tree": "a581beccee52a1fdfd1005090779ddbd27ba0912",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e",
        "fc8e688c322a28803b62eb5bff3c842a440bb2b5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 19:16:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 29 19:16:09 2016 +0000"
      },
      "message": "Merge \"Implement \u003clanginfo.h\u003e.\""
    },
    {
      "commit": "ae693ad06cbde6049d962aeea03e285d67caa58b",
      "tree": "cc0da92b41be8c3d7e3545027bfa0dfd53836487",
      "parents": [
        "d39380cc4d3e9fdd2942da0aaafe939c38b6331e"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Wed Nov 23 10:41:35 2016 -0800"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Wed Nov 23 15:10:52 2016 -0800"
      },
      "message": "bionic: make NONBLOCK call to getrandom\n\nBy default getrandom() blocks if the entropy pool has not yet been initialized.\nThis will be an issue when init was first executed in some kernels.\n\nThis CL makes a check of getrandom readyness, by adding the GRND_NONBLOCK flag.\nIn such case, getrandom() does not block returns -1 with errno set to EAGAIN.\n\nTest: on M/S devices\nBug: 33059407\nChange-Id: I2a2ba8372a5e1c336852ba2ab77cdaac03c90389\n"
    },
    {
      "commit": "fc8e688c322a28803b62eb5bff3c842a440bb2b5",
      "tree": "afd7c15b513b9ed246f7b1cbb34de3004c5e53e0",
      "parents": [
        "a5c16983a65e2169174a0e77a54c0ce650f87b48"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 18 16:27:29 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Nov 19 11:46:54 2016 -0800"
      },
      "message": "Implement \u003clanginfo.h\u003e.\n\nPOSIX locale only, as usual.\n\nThe GNU YESSTR and NOSTR extensions return the empty string in the C locale,\nso I haven\u0027t bothered supporting them.\n\nBug: http://b/1401872\nTest: bionic tests\nChange-Id: I6846839e4f9f1812344ed5dce0b93f83c0c20eb3\n"
    },
    {
      "commit": "c2395be74a69ef43f53aa6505af4df78bb03df7c",
      "tree": "6a3b0d1a67dd93d53c3704489f106148c01b01b7",
      "parents": [
        "a7e74f09b8db4dbe5ca8c74603f74dc45911aef7",
        "ac81fe8657119c265edcc2f05b3e5b7c5b17ae9f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 18 21:33:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 18 21:33:18 2016 +0000"
      },
      "message": "Merge \"Enable malloc debug using environment variables\""
    },
    {
      "commit": "ac81fe8657119c265edcc2f05b3e5b7c5b17ae9f",
      "tree": "99a6e825926829bb7c8d955cbc96ae1777691ef9",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Aug 26 15:54:59 2016 +0100"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 17 13:13:27 2016 -0800"
      },
      "message": "Enable malloc debug using environment variables\n\nPreviously malloc debug can be enabled only using global settings\naccessible to the root user only. This CL adds a new option to enable\nit using environment variables making it possible to use it with pure\nnative (shell) applications on production builds (from shell user) and\nprepares it for using it from logwrapper on production devices.\n\nRemove the old environment variable and property since they are not\nnecessary.\n\nTest: Enable malloc debug using environment variable and verify\nTest: that it only affects the commands launched from the shell.\nTest: Enable malloc debug using the property variable and verify\nTest: that it affects all commands.\nTest: Run all unit tests in 32 bit and 64 bit.\nChange-Id: Iecb75a3471552f619f196ad550c5f41fcd9ce8e5\n"
    },
    {
      "commit": "a5c16983a65e2169174a0e77a54c0ce650f87b48",
      "tree": "1e2afb4c99341581ab9ad07e0b415b2372fbce36",
      "parents": [
        "3613c20c59f931caa7d5411e4350306a4d6ad1e0",
        "f76a21a1854f56a28415e0fd87a8f43a2abcab94"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 17 20:06:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 20:06:05 2016 +0000"
      },
      "message": "Merge \"Fix iswlower/iswupper.\""
    },
    {
      "commit": "5bc78c8bcd0c1e634c04029309ede3ec05f2d424",
      "tree": "ba41f009cdf5fb27c766b4efe05c4cbb566d2a85",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 11:35:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:55:42 2016 -0800"
      },
      "message": "Add and use constants for the Android API levels.\n\nTest: bionic tests still pass\nChange-Id: If1b619cfc9db1d3f5d91f14f2ace71058dca0c4a\n"
    },
    {
      "commit": "f76a21a1854f56a28415e0fd87a8f43a2abcab94",
      "tree": "938b6959121d8d2224d3878f2a452c6ee613a50d",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 15:19:08 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 15:19:08 2016 -0800"
      },
      "message": "Fix iswlower/iswupper.\n\nThe previous conditions were just plain wrong.\n\nTest: bionic tests\nChange-Id: Ia6d98207b1ff98ea4c6f619912e4bcdb8a7fdd24\n"
    },
    {
      "commit": "0741d8d82da447dcc119fefbcd27a1e101047034",
      "tree": "244c45ce4dbb434009a4a997a7730b2b8bd2acb3",
      "parents": [
        "d5aa03600e796b894bec7662852f5715bed9e19e"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Tue Nov 15 16:42:53 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 15 16:53:37 2016 -0800"
      },
      "message": "Fix getrandom syscall checking\n\nTest: angler\nBug: 32838381\n(cherry-picked from commit 46289b4c0211fc48d8719b385a7e56d765510ebd)\n\nChange-Id: I102ffa26d7f39a8d3572b31f04b66ae31a9e752c\n"
    },
    {
      "commit": "f97b27a9c06a61206dd1edbbfc5e11b2a293b462",
      "tree": "e3a486ebb7ce76048260ccf3f5dc8a97ac83cd32",
      "parents": [
        "b3321c961452f69650e4a6bd2a7db317a80b3234",
        "98c6688d64f7eee601e0acc82adf01f64775e6ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 15 19:04:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 15 19:04:25 2016 +0000"
      },
      "message": "Merge \"Differentiate the wctype functions we need to improve.\""
    },
    {
      "commit": "98c6688d64f7eee601e0acc82adf01f64775e6ac",
      "tree": "2504086b9e2b9fcde64f3ffd6603ca257dde7724",
      "parents": [
        "84e269d5af7f6ae82afb066a6b69674180d44d2d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 14 12:55:59 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 14 12:55:59 2016 -0800"
      },
      "message": "Differentiate the wctype functions we need to improve.\n\nSome of these are genuinely fine as-is.\n\nTest: bionic tests still pass\nChange-Id: Iab6d86d818dcc5857e7932a9effa04001195386f\n"
    },
    {
      "commit": "cd9ce19e9ce34db6201bdb054c40c3b9e766d2d8",
      "tree": "29e8e89a658da5234a7b95bb454261040b1f037f",
      "parents": [
        "84e269d5af7f6ae82afb066a6b69674180d44d2d",
        "a170d9bfc5fd34097a184bb0ca4d2b459fd93bd1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 11 22:20:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 22:20:18 2016 +0000"
      },
      "message": "Merge changes I7f32dc9f,I9d88ddb1\n\n* changes:\n  Revert \"Revert \"Attempt to use arc4random where getauxval(AT_RANDOM) is used.\"\"\n  Revert \"Revert \"Update getentropy_linux.c from upstream.\"\"\n"
    },
    {
      "commit": "a170d9bfc5fd34097a184bb0ca4d2b459fd93bd1",
      "tree": "272823099dddc33188abc094c4902f8dd274e55d",
      "parents": [
        "98d655ce964a9c5ca8d80b54fd88f1fbb2dbb212"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 10 16:08:29 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 10 17:02:45 2016 -0800"
      },
      "message": "Revert \"Revert \"Attempt to use arc4random where getauxval(AT_RANDOM) is used.\"\"\n\nThis reverts commit 60d052dda600f26fdb6180ac1a2c53e97df5a58a.\n\nBug: http://b/27729263\nChange-Id: I7f32dc9f9a1f21fda3213f10da940821e1bdd63f\n"
    },
    {
      "commit": "98d655ce964a9c5ca8d80b54fd88f1fbb2dbb212",
      "tree": "a8f285eb142bac9a0a46d2c10b56701fdca2356f",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 10 16:08:20 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 10 17:02:37 2016 -0800"
      },
      "message": "Revert \"Revert \"Update getentropy_linux.c from upstream.\"\"\n\nThis reverts commit b3fbee449c314aee4bdc2f1720a931ea56c32f62.\n\nBug: http://b/27729263\nChange-Id: I9d88ddb11466d203514ae805f4681c92e4b63c24\n"
    },
    {
      "commit": "8bfaac0f8ad5f280d1f893fe682e007dd0820692",
      "tree": "7ef8d9c77682ba3abd7a1ee3c5c4857c5480fb42",
      "parents": [
        "bfc6ce6424488b199cf58cf478c405ac6308c346",
        "f6a21bfac5abf7c6fc121ca1caa78528690a25dd"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Nov 08 20:59:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 08 20:59:42 2016 +0000"
      },
      "message": "Merge \"Eliminate deadlock in forked child due to delayed resetting mutex lock\""
    },
    {
      "commit": "f6a21bfac5abf7c6fc121ca1caa78528690a25dd",
      "tree": "3fe32d243b3fede11b25398e85a10aff1a5599c3",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Mingwei Shi",
        "email": "mingwei.shi@intel.com",
        "time": "Thu Nov 03 14:53:45 2016 +0000"
      },
      "committer": {
        "name": "Mingwei Shi",
        "email": "mingwei.shi@intel.com",
        "time": "Mon Nov 07 03:32:57 2016 +0000"
      },
      "message": "Eliminate deadlock in forked child due to delayed resetting mutex lock\n\nFor some program implementation, the pattern like below, calling \npthread_atfork to register atfork interfaces.\n\n    pthread_atfork(\u0026atfork_prepare, \u0026atfork_parent, \u0026atfork_child);\n\nWhen the program is expected to reopen the shared library\u0027s handle \ninherited from parent in child process. Maybe, dlclose is called in \natfork_child to release the shared library handle before reopen it. \nThen, dlclose will indrectly call _cxa_finalize and finaly call \n__unregister_atfork when dso is not NULL.\n\n    atfork_child() -\u003e dlclose() -\u003e __on_dlclose() \n    \t-\u003e __cxa_finalize() -\u003e __unregister_atfork(dso)\n\nIn __unregister_atfork, firstly, it try to hold the g_atfork_list_mutex \nlock to operate the g_atfork_list. Due to the registered atfork_child is\nexecuted before resetting g_atfork_list_mutex lock in child, the child \nprocess will be blocked here because of deadlock.\n\nTest: bionic-unit-tests32 --gtest_filter\u003dpthread.pthread_atfork_child_with_dlclose \nwithout the fixing, the test will be timeout.\n\nChange-Id: I35d3001682c836e0955d6d681bc5f9297fad0c7b\nSigned-off-by: Mingwei Shi \u003cmingwei.shi@intel.com\u003e\nSigned-off-by: Qiming Shi \u003cqiming.shi@intel.com\u003e\nSigned-off-by: Chao Xie \u003cchao.xie@intel.com\u003e\n"
    },
    {
      "commit": "e462117087b5fa34ec6c1ca22c84b2a34b9ab95c",
      "tree": "96e177dcdd36a2cc1874481819da3abee2829200",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Thu Nov 03 15:00:53 2016 -0400"
      },
      "committer": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Fri Nov 04 16:57:20 2016 -0400"
      },
      "message": "Set __get_thread()-\u003etid as part of clone().\n\nThis was previously done only in fork() and pthread_create(), but this left raw\nclone() with an invalid cached tid. Since the tid is used for pthread routines,\nthis led to unstable behavior after clone().\n\nTest: ltp clone01 (see bug for more)\nTest: mmma bionic/tests\nTest: bionic-unit-tests-static --gtest_filter\u003d*fork*:*clone*\n\nBug: 32612735\nBug: 32305649\nChange-Id: I30eae5a8024b4c5da65476fcadfe14c6db35bb79\n"
    },
    {
      "commit": "8c22ff76e263db28afbfb08c2d59a46a76707d99",
      "tree": "4a49511083a75acc5ab05768a3e2c632da1282c0",
      "parents": [
        "9b908c8e36a6e644d5c42a7ed549ae7d4ab57667",
        "a4edf7a57cf818d19546c86b74146335468ea53f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 29 02:09:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Oct 29 02:09:56 2016 +0000"
      },
      "message": "Merge \"Fix gettid() after clone().\""
    },
    {
      "commit": "a4edf7a57cf818d19546c86b74146335468ea53f",
      "tree": "1199a22df4fe7e794399611016d0a6cf7561b497",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Tue Oct 25 10:29:02 2016 -0400"
      },
      "committer": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Fri Oct 28 12:14:23 2016 -0400"
      },
      "message": "Fix gettid() after clone().\n\nThe tid is cached in the pthread_internal_t and is properly re-set after fork()\nand pthread_create(). But after a plain clone() the value is stale from the\nparent.\n\nTest: mmma bionic/tests\nTest: bionic-unit-tests-static --gtest_filter\u003d*fork*:*clone*\nTest: m checkbuild tests\nTest: angler boots\n\nBug: 32305649\nChange-Id: I026d416d1537484cd3e05c8493a35e5ed2acc8ed\n"
    },
    {
      "commit": "53de874c3cd5b8aa243546bb1c206f5a709db1fd",
      "tree": "982316adf0c878fb85bf7c4579a04c4f631424dc",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "message": "The default locale \"\" should be a UTF-8 locale.\n\n\"ls -q\" (or \"adb shell -tt ls\") was mangling non-ASCII because mbrtowc\nwas returning multibyte characters as their individual bytes. This was\nbecause toybox asks for \"\" rather than \"C.UTF-8\", and for some reason\nwe were interpreting that as \"C\" rather than \"C.UTF-8\".\n\nTest: bionic tests, ls\nChange-Id: Ic60e3b90cd5fe689e5489fad0d5d91062b9594ed\n"
    },
    {
      "commit": "22950687eeec07bf5075f5edaac7774857b2147f",
      "tree": "75148134ef17e8728df3e43880ae9755653c92ba",
      "parents": [
        "49ef8c822f1bfa6559782efce0f0813f0967ea29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 14 12:15:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 14 14:35:26 2016 -0700"
      },
      "message": "Fix ifaddrs error handling.\n\nAn NLMSG_ERROR packet includes an errno value that we should use. Also report\nfailures to create a socket immediately, rather than falling through to the\nsend and reporting EBADF.\n\nBug: http://b/32145516\nBug: http://b/31038971\nTest: bionic ifaddr tests on ryu (with broken kernel) and flounder\nChange-Id: I84c480c5b75077eb90d40426a9d66d7bffbd3d51\n"
    },
    {
      "commit": "59bde2e8f4dacc059beb7269b86b276ec091ad57",
      "tree": "77ad07c47fe0b5d69b57babf1d034c1ae4ef3b57",
      "parents": [
        "1ba0e27462ff1b2e80457d6cb100b448afe6d10e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 07 13:21:03 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 07 13:21:03 2016 -0700"
      },
      "message": "Use STDERR_FILENO instead of opening /dev/stderr.\n\n/dev/stderr is a symlink to /proc/self/fd/2, so this only has different\nbehavior when we\u0027re out of file descriptors, or when STDERR_FILENO is in\na different state (it\u0027s not at the end, it\u0027s not writable, etc.).\n\nTest: mma\nChange-Id: Ie99688d810218eca8482ff060373e88c4e001824\n"
    },
    {
      "commit": "89e29ee485253ad39b8bfd514f1c3b5c3e52f98d",
      "tree": "e12e4cb724035f506308849fac970a11887db661",
      "parents": [
        "cc9e9933e1b85592f96d04962b20e5051dc8ec28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 29 17:21:43 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 29 17:26:13 2016 -0700"
      },
      "message": "Fix mbsnrtowcs where `dst` is null.\n\nPOSIX is its usual unintelligible self\n(http://pubs.opengroup.org/onlinepubs/9699919799/functions/mbsrtowcs.html),\nbut the ISO C11 standard (7.29.6.4.1 paragraph 2) is pretty clear: *src\nshould change if and only if dst is non-null.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d166381\nTest: bionic tests\nChange-Id: Ibc631cfa5b1bf4a6f56963feba9f0eea27b07984\n"
    },
    {
      "commit": "3103f6d39e4ae309a9374ee38f414400c889c558",
      "tree": "e67c7868d7bcc5b0f76fc060f8ac7724b6865677",
      "parents": [
        "904460f749b5a90ca25228a6a3fa0c9ef413a961"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:42:19 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 22 00:44:37 2016 -0700"
      },
      "message": "Add strtof_l and strtod_l.\n\nlibc++ needs these now. Add shims to match the others.\n\nTest: make checkbuild tests\nBug: http://b/31639993\nChange-Id: Ifec6c32099145d8d3d1a5639a4809e5e9f553c33\n"
    },
    {
      "commit": "cb728e6f63e90405223e2a72f119967368f78b7a",
      "tree": "2b43dfd6050c9858c98bc3428e4207b417274fc3",
      "parents": [
        "b36efa4343d79e3fb548d12d039193850246b892"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 13:56:37 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "Fix instances of \u0027#if __i386__\u0027.\n\nTriggers -Wundef, which is on in -Weverything.\n\nBug: http://b/31496165\nChange-Id: Ie2241b19abd6257bebf68baa3ecc4de8066c722e\n"
    },
    {
      "commit": "b36efa4343d79e3fb548d12d039193850246b892",
      "tree": "727ac48a5341d8d50d6a297fe67f6067005befd3",
      "parents": [
        "56228373014e5ee0a3ff32930df9cfa05fef7389"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 13:55:41 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "Fix instances of \u0027#if __LP64__\u0027.\n\nTriggers -Wundef, which is on in -Weverything.\n\nBug: http://b/31496165\nChange-Id: Ib06107073f7dd1d584c19c222d0430da9d35630b\n"
    },
    {
      "commit": "56228373014e5ee0a3ff32930df9cfa05fef7389",
      "tree": "a5149db6bd31fd5f5cee1ebd4f86a8ec33db563b",
      "parents": [
        "b32184eb847b7140771251aa9eb5e37cb12d1e7f",
        "4159e866ab7b2397e714d7a1b309c5e6719c4620"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 19:28:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 15 19:28:56 2016 +0000"
      },
      "message": "Merge \"Initialize main thread TLS before the global stack guard.\""
    },
    {
      "commit": "23f088cd74b3c1da7aed07e5984970d38c85cd03",
      "tree": "042cd074ec38ad4950ab734288728900f3081094",
      "parents": [
        "572791e027a0dd3fdcba720f5e0c390d5aaef21d"
      ],
      "author": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Fri Sep 09 02:01:01 2016 +0200"
      },
      "committer": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Fri Sep 09 12:24:04 2016 +0200"
      },
      "message": "[mips64] Fix ipc syscalls\n\nMips defines CONFIG_ARCH_WANT_IPC_PARSE_VERSION for both 32 and 64-bit.\nSee arch/mips/Kconfig. Other supported arches do it for 32-bit only.\nThis translates in having to pass IPC_64 flag for mips32 and mips64.\nWe use __mips__ to pass the flag, which is also defined for both 32 and\n64-bit.\n\nChange fixes bionic smoke tests (sys_msg, sys_sem, sys_shm) for mips64.\n\nTest: bionic-unit-tests --gtest_filter\u003d\"sys_*.smoke\"\nChange-Id: I918e4ffafd2002bb3e62ee252406746778100031\n"
    },
    {
      "commit": "7f0849fd113691e62af0400989936d3eff151e37",
      "tree": "166fa5afeed341e2685091c89d9d8418acb66e5d",
      "parents": [
        "a2b947e0a5ff4106e36f8110232131dab1356c25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:17:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 15:01:54 2016 -0700"
      },
      "message": "Fix sscanf/wcstod parsing of NaNs.\n\nThe parsefloat routines -- which let us pass NaNs and infinities on to\nstrto(f|d|ld) -- come from NetBSD.\n\nAlso fix LP64\u0027s strtold to return a NaN, and fix all the architectures\nto return quiet NaNs.\n\nAlso fix wcstof/wcstod/wcstold to use parsefloat so they support hex\nfloats.\n\nLots of new tests.\n\nBug: http://b/31101647\nChange-Id: Id7d46ac2d8acb8770b5e8c445e87cfabfde6f111\n"
    },
    {
      "commit": "4159e866ab7b2397e714d7a1b309c5e6719c4620",
      "tree": "82b27430fff08a08a81d94d9b5283fdc1d6d63fe",
      "parents": [
        "bfad958982a6b1c8c957c0eb951826d0c369eedd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 01 22:58:44 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Sep 06 12:12:19 2016 -0700"
      },
      "message": "Initialize main thread TLS before the global stack guard.\n\nThe GCE breakage caused by 78a52f19bb207d1c736f1d5362e01f338d78645 was\ndue to TLS_SLOT_SELF being uninitialized before the use of errno by\nsyscall. Separate stack guard initialization from TLS initialization so\nthat stack guard initialization can make syscalls.\n\nBug: http://b/29622562\nBug: http://b/31251721\nChange-Id: Id0e4379e0efb7194a2df7bd16211ff11c6598033\n"
    },
    {
      "commit": "b3fbee449c314aee4bdc2f1720a931ea56c32f62",
      "tree": "d4202c7d215136a804729c9c364d223611eb8b61",
      "parents": [
        "5faef47e438d20600655e2f5ef473c2d63cbf2c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 02 08:39:29 2016 +0000"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 02 08:39:29 2016 +0000"
      },
      "message": "Revert \"Update getentropy_linux.c from upstream.\"\n\nThis reverts commit 5faef47e438d20600655e2f5ef473c2d63cbf2c0.\n\nBug: http://b/31251721\nChange-Id: I20a091f385fb77ccc68b8d9fb1d2aee3dec0d0ff\n"
    },
    {
      "commit": "5faef47e438d20600655e2f5ef473c2d63cbf2c0",
      "tree": "2c4dc3b5b8835af4d02f477df021fbc4e9eb9edd",
      "parents": [
        "af071ed598e467c9fff37e60363d6351badfe3e0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 23 19:06:35 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Aug 31 18:00:47 2016 -0700"
      },
      "message": "Update getentropy_linux.c from upstream.\n\nBug: http://b/29622562\nChange-Id: Ia65c038effa6e806c325a8e93c1fe80c50a9f2c9\n"
    },
    {
      "commit": "864f3ec1865c1185acf5ac1652b7b790abea76b0",
      "tree": "d8fb1fee4b680409b0d896fbb52373655cce6adf",
      "parents": [
        "0b1a2826508ee5b191650d1d8b1f6b028e970f3b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 26 15:45:05 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 26 17:03:01 2016 -0700"
      },
      "message": "Initialize __abort_message_ptr in linker\u0027s copy of libc\n\nThe linker calls to __libc_fatal resulted in tombstones\nwith missing abort message. This commit fixes it by\ninitializing __abort_message_ptr for the linker\u0027s copy\nof libc.\n\nBug: http://b/31095185\nChange-Id: I883d654d7fd0ef309c80f8021202b6bfd5d5cea5\n"
    },
    {
      "commit": "63615066d9f0b0b1c653c91a9b305e6c292c835a",
      "tree": "698764ee1bd4a4051e31538d2fde7f8018bfaac5",
      "parents": [
        "e1d792b10c0c825e271cb1f729dcdafa35583722"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 17:40:27 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 17:40:27 2016 -0700"
      },
      "message": "Fix execvp/execvpe behavior with absolute paths and ENOEXEC.\n\nBug: http://b/31091962\nChange-Id: Id0b3d41868f5e3ed1ccf618bfefb46609367bc9a\n"
    }
  ],
  "next": "3c1159024c5ca3e85d4fd076f39712da4b27ed34"
}
