)]}'
{
  "log": [
    {
      "commit": "d73a49e91e373cbcf4d044ec79ee7ed7b56dd7ca",
      "tree": "e488c86e6ded1b98a04479aab7123c770bc4f0fd",
      "parents": [
        "b87e85aac399414aeacdc372df4f6900760c7aee"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 19 16:03:44 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 13 10:32:33 2018 -0800"
      },
      "message": "Move to jemalloc5.\n\nBug: 62621531\n\nTest: Builds and boots. All unit tests pass.\nChange-Id: I09d106cc3b658885b9155d6838f8df61498d3f85\n"
    },
    {
      "commit": "5d427bcb08d74112701cc6c6bf46d7344ea07cc7",
      "tree": "9e9091c92ff108909d0ff2ff7091a01a075cbcf7",
      "parents": [
        "e9bd18ac0c1413473211bbd427c12275b92c9f0e"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Nov 07 14:48:29 2018 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Nov 12 13:42:28 2018 -0800"
      },
      "message": "bionic: Add shadow call stack guard region field to pthread_internal_t.\n\nLanding this change separately to the change that implements SCS\nbecause it needs to land at the same time as an internal change. This\nwill simplify the situation in case SCS needs to be reverted again.\n\nChange-Id: Ibe18750829665b6dcf6e36628a5e5bbdd1a0dd4f\nMerged-In: Ibe18750829665b6dcf6e36628a5e5bbdd1a0dd4f\n"
    },
    {
      "commit": "f90687c4ec2eba944fa697eff2ccaf9e3b8ee480",
      "tree": "c4ef71eeb0bce234bd0a4ad8dac35e8778de7b75",
      "parents": [
        "0c39bd468d3aa19b3e27937b36b101cc4aa65dab"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 06 14:47:27 2018 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 08 21:24:31 2018 +0000"
      },
      "message": "Increase the size of the signal stack on 64-bit.\n\nThe signal stack is sufficiently large for a single invocation of the\nsignal handler, but in cases where the signal handler needs to recurse,\n(e.g. if our address space is limited by RLIMIT_AS), it\u0027s too small for\nus to get to the part where we recognize that we\u0027ve recursed and bail\nout.\n\nBug: http://b/118772392\nTest: /data/nativetest64/debuggerd_test/debuggerd_test64 --gtest_filter\u003dCrasherTest.seccomp_crash_oom\nChange-Id: Ic7a2cf8b01b3f7ea7f4a2318a3ec22a0c3649da6\n"
    },
    {
      "commit": "6f3a56bb18628243b6dbe470222e56bb56ed10ae",
      "tree": "53a7886e2e1f2c7766986c5eafe3f631fe6027ce",
      "parents": [
        "5c7bece8ca071118cceb42306ca568df495d09c7",
        "7b13dd918e6e2c1638e6b137f27c80979a4ecd3f"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 01 01:32:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 01 01:32:00 2018 +0000"
      },
      "message": "Merge \"Revert \"bionic: Allocate a shadow call stack for each thread.\"\""
    },
    {
      "commit": "d6ac79300d2dc777b1df7345e68d5ad04e5e666c",
      "tree": "ead635dee8fef370464d8ca155e833e7c2402a58",
      "parents": [
        "6a5dcd678645df1c1d1987fc7389347765b28f53",
        "25c34e0feba2d0c49971016117a5af4fb8d32c1e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 30 23:31:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 23:31:15 2018 +0000"
      },
      "message": "Merge \"Reverse two pthread_internal_t fields\""
    },
    {
      "commit": "25c34e0feba2d0c49971016117a5af4fb8d32c1e",
      "tree": "46b26664f7fd968f0009981b5f25878239227d41",
      "parents": [
        "f284a475441f612a0b48067a8bc7a59c72c4b47a"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 29 16:31:51 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Oct 30 12:30:21 2018 -0700"
      },
      "message": "Reverse two pthread_internal_t fields\n\nThe golang runtime currently expects to find the pthread key data after\nthe tls slots.\n\nBug: http://b/78026329\nBug: http://b/118381796\nTest: run a golang-based app, bionic unit tests\nChange-Id: Idc777d809b803093e1c81d9a2ce4eafcc7d61f8d\nMerged-In: Idc777d809b803093e1c81d9a2ce4eafcc7d61f8d\n(cherry picked from commit a2c30723dac6b570247ac1bc7190850616f4db93)\n"
    },
    {
      "commit": "e898a17e8f2bf30506642be8106b1f8a6de61151",
      "tree": "d257168fc36fe3dec7549bdccb8570f1fade9b97",
      "parents": [
        "f284a475441f612a0b48067a8bc7a59c72c4b47a",
        "176a47594e118a02d7c003ef3eb955ccc6781539"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Oct 30 11:34:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 11:34:17 2018 +0000"
      },
      "message": "Merge \"Allow to re-initialize heapprofd.\""
    },
    {
      "commit": "7b13dd918e6e2c1638e6b137f27c80979a4ecd3f",
      "tree": "b7f8343a6fc3767bd968b68ba8b6be74466d027a",
      "parents": [
        "da1bc79f937225b1a048d9e5a03eca81680a17fd"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Oct 29 21:48:38 2018 +0000"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Oct 29 21:48:59 2018 +0000"
      },
      "message": "Revert \"bionic: Allocate a shadow call stack for each thread.\"\n\nThis reverts commit da1bc79f937225b1a048d9e5a03eca81680a17fd.\n\nReason for revert: Caused OOM in media process\n\nBug: 112907825\nBug: 118593766\nChange-Id: I545663871d75889b209b9fd2131cdaa97166478f\n"
    },
    {
      "commit": "f284a475441f612a0b48067a8bc7a59c72c4b47a",
      "tree": "47d3953dcd5c84de7b57e01fae11d3c0cab606dd",
      "parents": [
        "debcd02d184822df57e7dc69066933dd44092235",
        "da1bc79f937225b1a048d9e5a03eca81680a17fd"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Mon Oct 29 21:05:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 29 21:05:25 2018 +0000"
      },
      "message": "Merge \"bionic: Allocate a shadow call stack for each thread.\""
    },
    {
      "commit": "da1bc79f937225b1a048d9e5a03eca81680a17fd",
      "tree": "0334b394fff71fc1263d82515dde5c8c16a5dda8",
      "parents": [
        "c89a3971e94c30611c885e4c440eae2fd9937948"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Thu Sep 06 22:20:44 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 19:55:18 2018 +0000"
      },
      "message": "bionic: Allocate a shadow call stack for each thread.\n\nBug: 112907825\nChange-Id: I7c1479a0cd68696739bf6aa5e0700ba4f2a137ec\nMerged-In: I7c1479a0cd68696739bf6aa5e0700ba4f2a137ec\n"
    },
    {
      "commit": "176a47594e118a02d7c003ef3eb955ccc6781539",
      "tree": "6eed1c373fe16aaa14b078133f8089a5433cc1e2",
      "parents": [
        "d84f8b5eb24f0e55645fd6a35d39611d2ffa74ff"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Oct 23 11:48:34 2018 +0100"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon Oct 29 12:24:15 2018 +0000"
      },
      "message": "Allow to re-initialize heapprofd.\n\nWithout this change, any process can only be profiled by heapprofd\nonce.\n\nChange-Id: I2d0f50eebcc3b219750354ccdc4ea22a2e39c4b6\n"
    },
    {
      "commit": "2bfe37afc8a3efc28a2e59e94952c61740783b84",
      "tree": "48c955a9a899eb5ebf85475cf004dbade956dc4d",
      "parents": [
        "04164f6d055c1052325a665bc9aa4837a5d2c1ae",
        "29d6dbc906f51f127700fd9e2d1e1170456f2382"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 26 00:49:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 00:49:21 2018 +0000"
      },
      "message": "Merge \"Move Bionic slots to the end of pthread_internal_t\""
    },
    {
      "commit": "29d6dbc906f51f127700fd9e2d1e1170456f2382",
      "tree": "09bdf2be3f29c92de8ac17f8ee27691d26356640",
      "parents": [
        "a2af8bea8c6c4b6ce6883bf92cbce922e0d9f458"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Oct 19 20:35:23 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Oct 25 23:31:17 2018 +0000"
      },
      "message": "Move Bionic slots to the end of pthread_internal_t\n\nWith ELF TLS, the static linker assumes that an executable\u0027s TLS segment\nis at a known offset from the thread pointer (i.e. __get_tls()). The\nsegment can be located prior to the TP (variant 2, x86[_64], sparc) or\nafter it (variant 1, arm{32,64}, ppc, mips, ia64, riscv).\n\nWe can\u0027t make our pthread_internal_t exactly follow the ordinary arm64\nABI (at least) because TP[5] is used for clang\u0027s -fstack-protector on\nAndroid. Instead, reserve extra space after the TP (up to 16 words), which\nwill be followed by the executable\u0027s TLS segment.\n\nBug: http://b/78026329\nTest: boot device, bionic unit tests\nChange-Id: I0f3b270b793f9872ba0effeac03f4dec364438d6\nMerged-In: I0f3b270b793f9872ba0effeac03f4dec364438d6\n(cherry picked from commit f397317e96928ef24b980d5c73d08829c0e70cd4)\n"
    },
    {
      "commit": "5e62b34c0d6fa545b487b9b64fb4a04a0589bc13",
      "tree": "e08ee44067b3b636ace11b21ec8d63a08d4d2a19",
      "parents": [
        "c89a3971e94c30611c885e4c440eae2fd9937948"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 11:00:00 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 11:00:00 2018 -0700"
      },
      "message": "Clean up bionic_macros.h a bit.\n\nUse \u003candroid-base/macros.h\u003e instead where possible, and move the bionic\nmacros out of the way of the libbase ones. Yes, there are folks who manage\nto end up with both included at once (thanks OpenGL!), and cleaning that\nup doesn\u0027t seem nearly as practical as just making this change.\n\nBug: N/A\nTest: builds\nChange-Id: I23fc544f39d5addf81dc61471771a5438778895b\n"
    },
    {
      "commit": "2d0b28bc0da1ade2de2b72093dbdb740028fce7c",
      "tree": "75a1b66144e65f7141e3cf9ddaaae0049b07ca11",
      "parents": [
        "7562f1ab87e4b51042d185345248f1a54885489a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 11:23:00 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 23 11:23:00 2018 -0700"
      },
      "message": "Add getloadavg(3).\n\nLets us build ninja with bionic.\n\nBug: N/A\nTest: ran tests\nChange-Id: I97eef1247d794b58a2b9aee4851551632e5a4e48\n"
    },
    {
      "commit": "ac578f2587a3bd91b6357fe6cfbef25a627eecde",
      "tree": "f192df82f45783ee7d50f737ef6012fbdb4881e8",
      "parents": [
        "a8a716e42a8e6b8f28abf2b2f8f93b1e8579423d"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Oct 15 16:26:56 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 22 16:25:28 2018 -0700"
      },
      "message": "malloc: add M_PURGE mallopt flag\n\nAdd a new mallopt flag that purges any pending decaying pages.\n\nTest: boots and works\nbug 117795621\n\nChange-Id: Ib250ae2b705b6a368c1efb801d6a7be54e075acb\n(cherry pciekd from commit 5083e833a650ebe510ed52603ce5c8cd4374c48e)\n"
    },
    {
      "commit": "f7f71e3c7b70c0369cf04cedbd988f55f88918fb",
      "tree": "8872ac6e3608cd8d6feb74621a8c6ed3e8da0632",
      "parents": [
        "7ff7d03286dcf8abc6b4bd0455c428256493c96d"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Fri Aug 31 15:36:48 2018 -0700"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Thu Oct 18 21:38:06 2018 +0100"
      },
      "message": "Add RT signal to load heapprofd library.\n\nTests: Ran malloc_debug_unit_tests\nTests: Flashed to walleye, sent signal, observed\n  \"Unable to open shared library: heapprofd.so\".\n\nChange-Id: Ia8ce216837e29e3edbda8789ca28023d53fa1fda\n"
    },
    {
      "commit": "7ff7d03286dcf8abc6b4bd0455c428256493c96d",
      "tree": "54e9ee60ee1a9268eb490ae69eeb5c5467324556",
      "parents": [
        "89376008975d88e771c048db57ac749d9d4ace55",
        "ddf757e35eb36d684b16273f0ddfe2d387983e8e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 18 17:47:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 18 17:47:17 2018 +0000"
      },
      "message": "Merge \"Properly fail with ESRCH when pthread_killing an exited thread.\""
    },
    {
      "commit": "ddf757e35eb36d684b16273f0ddfe2d387983e8e",
      "tree": "411e728f73fa9e3b5c1fc8b065823d68cae94307",
      "parents": [
        "773c697f815d43182adf1eb430f4899255088d6b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 17 15:23:03 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 17 17:35:56 2018 -0700"
      },
      "message": "Properly fail with ESRCH when pthread_killing an exited thread.\n\nPreviously, we were callign tgkill(pid, 0, signal) instead, which would\nfail with EINVAL instead.\n\nTest: bionic-unit-tests\nChange-Id: I25b127dcf347e0223274502b0516a950b6c2093e\n"
    },
    {
      "commit": "ecf0c7515d4416ab4bf708b303ab7beab79a6f2b",
      "tree": "92b6dc61bdab2f239e88013207c63b15569ec29f",
      "parents": [
        "daf746b15507337bd451ccbbc092b56dc4780b72",
        "92a9116100f766f4df5c9e3efbb9ad2a402af06c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 15 23:56:22 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 15 23:56:22 2018 +0000"
      },
      "message": "Merge \"strerror: add missing ERFKILL and EHWPOISON.\""
    },
    {
      "commit": "92a9116100f766f4df5c9e3efbb9ad2a402af06c",
      "tree": "2684d5a475e4da56ebc63c726386f3e177adccb9",
      "parents": [
        "4e29cdec23762fd6e26b3ca4f87ce35213b0db1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 15 13:12:19 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 15 13:12:19 2018 -0700"
      },
      "message": "strerror: add missing ERFKILL and EHWPOISON.\n\nThere\u0027s little value to having strings for these, but we may as well\nfor consistency. There\u0027s no ELASTERRNO constant we can use to check\nwhether we\u0027ve fallen behind again, but these were added in 2009 and\n2011 respectively, so we\u0027re not likely to have to deal with any more\nnew errno values any time soon...\n\nBug: http://b/117755069\nTest: ran tests\nChange-Id: I5b7155c22cad92c2fe03a0b4c7cae415c37fa186\n"
    },
    {
      "commit": "cc953e08f4c48af050a92c4d9fb365ae81c5e59b",
      "tree": "4e3629a5c9e3a4ffdb3fba3620f2deda2308dc2c",
      "parents": [
        "a2af8bea8c6c4b6ce6883bf92cbce922e0d9f458"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Oct 12 15:04:26 2018 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Mon Oct 15 10:41:34 2018 -0700"
      },
      "message": "fdsan: reset va_list between varargs traversals\n\nWhen error_level !\u003d ANDROID_FDSAN_ERROR_LEVEL_FATAL, fdsan_error()\ntraverses the varargs twice.  Each traversal needs its own\nva_start()/va_end() pair.  Otherwise async_safe_format_buffer_va_list()\nwill start consuming arguments where async_safe_format_log_va_list()\nstopped, ironically causing the sanitizer runtime to perform bad memory\naccesses.\n\nTest: debuggerd_test32\nTest: debuggerd_test64\n\nChange-Id: Ic85ca94501e55e9a435410fab89edb273c381a5a\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "391af2cefea88abe7eccff8edd0ae06c653bef5e",
      "tree": "c2c1e6d8f45fc5c7e67efda4c6e7d809c90b1902",
      "parents": [
        "069d5aef90e1a322fb9e9ff7e922f8505fe81c8c",
        "8f639a40966c630c64166d2657da3ee641303194"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 11 01:04:57 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 11 01:04:57 2018 +0000"
      },
      "message": "Merge \"Allow invoking the linker on an executable.\""
    },
    {
      "commit": "8f639a40966c630c64166d2657da3ee641303194",
      "tree": "96e03d65a4efa6613941b748ed2c11b64a8dec1b",
      "parents": [
        "cb8ed207d2bb6113a80fc7f27cd0beb8897f5192"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Oct 01 23:10:05 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Oct 10 14:31:06 2018 -0700"
      },
      "message": "Allow invoking the linker on an executable.\n\nThe executable can be inside a zip file using the same syntax used for\nshared objects: path.zip!/libentry.so.\n\nThe linker currently requires an absolute path. This restriction could be\nloosened, but it didn\u0027t seem important? If it allowed non-absolute paths,\nwe\u0027d need to decide how to handle:\n - foo/bar      (relative to CWD?)\n - foo          (search PATH / LD_LIBRARY_PATH, or also relative to CWD?)\n - foo.zip!/bar (normalize_path() requires an absolute path)\n\nThe linker adjusts the argc/argv passed to main() and to constructor\nfunctions to hide the initial linker argument, but doesn\u0027t adjust the auxv\nvector or files like /proc/self/{exe,cmdline,auxv,stat}. Those files will\nreport that the kernel loaded the linker as an executable.\n\nI think the linker_logger.cpp change guarding against (g_argv \u003d\u003d NULL)\nisn\u0027t actually necessary, but it seemed like a good idea given that I\u0027m\ndelaying initialization of g_argv until after C++ constructors have run.\n\nBug: http://b/112050209\nTest: bionic unit tests\nChange-Id: I846faf98b16fd34218946f6167e8b451897debe5\n"
    },
    {
      "commit": "baf20fc9122740ff2baa34d28001e8bdfac9568c",
      "tree": "8e6f717de9cef90828010497ef80ab454c0eb4c6",
      "parents": [
        "773c697f815d43182adf1eb430f4899255088d6b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 08 17:28:07 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 09 16:27:22 2018 -0700"
      },
      "message": "Block TIMER_SIGNAL in sigprocmask(SIG_SETMASK, ...).\n\nPreviously, we were zeroing out the reserved signals, when we actually\nwanted to have TIMER_SIGNAL always be blocked, and the other signals\nalways be unblocked. This resulted in process termination when a\nSIGEV_THREAD timer callback calls sigprocmask(SIG_SETMASK, ...) with\nany signal mask value, and then subsequently fails to complete its\ncallback and reach the sigtimedwait in bionic before the next timer\niteration triggers.\n\nAdd a how argument to filter_reserved_signals to appropriately\nblock/unblock our reserved signals.\n\nBug: http://b/116783733\nTest: bionic-unit-tests32/64\nChange-Id: Ie5339682cdeb914711cd4089cd26ee395704d0df\n"
    },
    {
      "commit": "ddf92a1ba505a8bc01228438a200cf6a9994836e",
      "tree": "f7d797c69b46a4bceb57c61dd4a47cfbe38207ad",
      "parents": [
        "6b755755bc627311b351c6480a4cd9354e84c01b",
        "fa5f61c8d9a8f80734d4ffc0f9d8ec4ac3a062b9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 27 23:23:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 27 23:23:34 2018 +0000"
      },
      "message": "Merge \"Always return /vendor/bin/sh as shell for OEM ids in getpwnam() etc.\""
    },
    {
      "commit": "fa5f61c8d9a8f80734d4ffc0f9d8ec4ac3a062b9",
      "tree": "7727156aee5b2784c3699386edde5483213c90d5",
      "parents": [
        "8d11bea6c57cf62171f4157e0f2061ada4c19b10"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Sep 27 13:19:02 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 27 20:29:49 2018 +0000"
      },
      "message": "Always return /vendor/bin/sh as shell for OEM ids in getpwnam() etc.\n\nDuring the review of the script that generates /vendor/etc/passwd, it\nwas suggested that the shell be /vendor/bin/sh instead of the typical\n/system/bin/sh.  This has subsequently caused bionic unit tests to\nfail, since they always check that the shell is set to /system/bin/sh.\n\nIn the spirit of that review, libc is modified to return\n/vendor/bin/sh for the OEM AID ranges and the test is updated to\nexpect this.\n\nTest: bionic unit tests\nChange-Id: Ie7c1c48fde8a71b3df1aa0ef112d42ab7bd3baec\n"
    },
    {
      "commit": "b177085ce7219562eecf77f2e8de49f8f2605005",
      "tree": "573947a27714273f7d78e9c6f85c9fd30e63dba9",
      "parents": [
        "e4e3de819d05481422f8bb9925486118924bf4a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 18 12:52:42 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 14:24:18 2018 -0700"
      },
      "message": "Add reallocarray(3).\n\nOriginally a BSD extension, now in glibc too. We\u0027ve used it internally\nfor a while.\n\n(cherry-pick of e4b13f7e3ca68edfcc5faedc5e7d4e13c4e8edb9.)\n\nBug: http://b/112163459\nTest: ran tests\nChange-Id: I813c3a62b13ddb91ba41e32a5a853d09207ea6bc\nMerged-In: I813c3a62b13ddb91ba41e32a5a853d09207ea6bc\n"
    },
    {
      "commit": "8d11bea6c57cf62171f4157e0f2061ada4c19b10",
      "tree": "c1fe1c9403ae608daa5b855e2931f3f84cd14148",
      "parents": [
        "ce9d653b38868a73260d141acbf3ddd8c5d8e178",
        "13e8dcbdc9f0b3d95cac1a234730061c9b1ae6f4"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Sep 20 21:39:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 20 21:39:55 2018 +0000"
      },
      "message": "Merge \"[hwasan] Tweak process and thread initialization.\""
    },
    {
      "commit": "ce9d653b38868a73260d141acbf3ddd8c5d8e178",
      "tree": "1f1367d6c59031427eb9b7911439f1f1d7ea722b",
      "parents": [
        "a02d631163860c795cac7a0428ad8abb9ed3b747",
        "d747bb8f3f7061786db9ed77430a572361f263af"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 20 19:22:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 20 19:22:03 2018 +0000"
      },
      "message": "Merge changes from topics \"fdsan_ziparchive_type\", \"fdsan_java_socket\"\n\n* changes:\n  fdsan: improve documentation.\n  fdsan: add type for libziparchive\u0027s ZipArchive.\n  fdsan: add types for Java sockets.\n"
    },
    {
      "commit": "13e8dcbdc9f0b3d95cac1a234730061c9b1ae6f4",
      "tree": "0c17f125a779e03f9911ce092e16b0ada1aa2920",
      "parents": [
        "a02d631163860c795cac7a0428ad8abb9ed3b747"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Wed Sep 19 16:29:12 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Sep 20 12:20:12 2018 -0700"
      },
      "message": "[hwasan] Tweak process and thread initialization.\n\nMake sure that TLS_SLOT_TSAN is always available and correctly set up in\nHWASan-instrumented functions by setting up the tls register and running hwasan\ninitialization (__hwasan_init in the main thread and __hwasan_thread_enter in\nsecondary) early enough.\n\nThis is needed to accomodate a change in HWASan: https://reviews.llvm.org/D52249\n\nBug: 112438058\nTest: boot with SANITIZE_TARGET\u003dhwaddress, run bionic-tests\nChange-Id: Icd909a4ea0da6c6c1095522bcc28debef5f2c63d\n"
    },
    {
      "commit": "5fa9df8efc96667564cc5289b176592bd7882953",
      "tree": "8ab3d295b163dfc47d4214c059c7e40596a6ea1c",
      "parents": [
        "d527cf1f993f43d23c0cc171d46849c6e427c493"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 07 12:47:00 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Sep 18 13:23:31 2018 -0700"
      },
      "message": "fdsan: add type for libziparchive\u0027s ZipArchive.\n\nTest: debuggerd `pidof system_server` | grep \" fd \"\nChange-Id: I6a9a4306ecffe3899e4cc7285a0eb33efaa62616\n"
    },
    {
      "commit": "d527cf1f993f43d23c0cc171d46849c6e427c493",
      "tree": "f15e7e05ac4716845f56849b9ec4923421699f9e",
      "parents": [
        "431d2ff1418cf94c36437f35b1f55b81e2e1d976"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 07 12:46:02 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Sep 17 17:31:58 2018 -0700"
      },
      "message": "fdsan: add types for Java sockets.\n\nTest: art/tools/run-libcore-tests.sh\nChange-Id: If61211bc4ae225c3f89db989a167f9dc4fce375a\n"
    },
    {
      "commit": "fb4eaa019e9a6eeb576f63cb2eeffe14fb8749ea",
      "tree": "95b80beb47b8b4c11bd4b7556aa4725e1bc83456",
      "parents": [
        "431d2ff1418cf94c36437f35b1f55b81e2e1d976"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Sep 07 21:26:58 2018 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 07 10:29:18 2018 -0700"
      },
      "message": "Improve netd detection\n\nThe alleged improvement consists in making the detection actually work\nwhen netd is spawned by init, which of course uses the full path.\nI had tested the previous logic by running netd from the shell, which\nworked because argv[0] was just set to \"netd\". My bad -_-\n\nTest: flash, boot and grep logcat for \"Skipping libnetd_client init\"\nChange-Id: Ie5f11436dfa2a9347721147dc2b980144452404a\n"
    },
    {
      "commit": "431d2ff1418cf94c36437f35b1f55b81e2e1d976",
      "tree": "5bf4a6b36eb2642960c9ac8cb57dc8e9937346d5",
      "parents": [
        "dca7d3fae5ce4cd9d989990a67efc8e755ac26d9",
        "ce934e3d9be9700946ba51a39ba966faf3867a93"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 07 15:40:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 07 15:40:45 2018 +0000"
      },
      "message": "Merge \"Add android_get_device_api_level.\""
    },
    {
      "commit": "dc91d900ae83e95a1531e57c72841f037ce6f063",
      "tree": "17676ea62e4fdae738f63ba5f53c3b60226ef4e3",
      "parents": [
        "e15e93a247ce566b6ca3d6c65583676255fb0f8a",
        "6d93c6077893c44a7d958b154a3b6bcc75fd04d6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 07 01:32:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 07 01:32:14 2018 +0000"
      },
      "message": "Merge \"bionic: Add magic to abort message\""
    },
    {
      "commit": "6d93c6077893c44a7d958b154a3b6bcc75fd04d6",
      "tree": "416e05480e036ab80851775ce0e1713f027dfd4c",
      "parents": [
        "8f2298e73f4d930b58a8466fd7264e9a88c96d99"
      ],
      "author": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Wed Aug 22 07:39:26 2018 -0700"
      },
      "committer": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Thu Sep 06 15:18:21 2018 -0700"
      },
      "message": "bionic: Add magic to abort message\n\nThis change adds a 128-bit magic value just before the abort message\n(and its length). This allows Chrome OS crash collector (which cannot\nreliably correlate a crash with its corresponding tombstone) to extract\nthe abort message from the core dump.\n\nBug: 62387553\nTest: /data/nativetest{,64}/debuggerd_test/*\nTest: /data/nativetest{,64}/bionic-unit-tests{,-static}/*\n\nChange-Id: I69ff021d773b3a10081ab16ddf6f23233320fb02\n"
    },
    {
      "commit": "ce934e3d9be9700946ba51a39ba966faf3867a93",
      "tree": "0db870d9253699cf6084818dabbe8f0a46bec6fc",
      "parents": [
        "74934aaf10d629de477095f0b92c467849f89638"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 13:26:08 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 14:19:46 2018 -0700"
      },
      "message": "Add android_get_device_api_level.\n\nBug: http://b/113615412\nTest: ran tests\nChange-Id: I0a7ae336c96c9ed6543b6935cbc242d14d4a4a67\n"
    },
    {
      "commit": "74934aaf10d629de477095f0b92c467849f89638",
      "tree": "d1256648a11d0e70828cc6dad6654160bf593557",
      "parents": [
        "6c7c06712e453d617336972a2e2919e9ef001dc8",
        "654cd8331b3dafb2027a3062104c6e9934af1935"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 18:47:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 18:47:44 2018 +0000"
      },
      "message": "Merge \"Add the %m GNU extension to printf/wprintf.\""
    },
    {
      "commit": "198fb7b6dff1c0ee381f00ba7f125c4d3eba4127",
      "tree": "9663f508ff896ca0051b3af9a2ac96f04152d18f",
      "parents": [
        "04432c328f1f146efcdc7ab99571c2468400b21e",
        "1b2ecee5da5241832c0b6a053a5ef658e9c76f5c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 05 15:22:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 15:22:59 2018 +0000"
      },
      "message": "Merge \"Prevent netd from using the libnetd_client wrappers\""
    },
    {
      "commit": "1b2ecee5da5241832c0b6a053a5ef658e9c76f5c",
      "tree": "0701e68804f8038f7dc5a7c9da40e3e919a4bc9c",
      "parents": [
        "3e5a32ce2c24969932634d84e2755755094fa582"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Wed Sep 05 10:53:17 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Wed Sep 05 17:43:42 2018 +0900"
      },
      "message": "Prevent netd from using the libnetd_client wrappers\n\nNetd looping connections to itself via the libnetd_client connect()\nwrapper has always unintended, although it worked until now. Once we\nmove the resolver into netd, the frequency of connect() calls will\nincrease, which makes it less acceptable.\n\nThere are several ways to detect if the calling process is netd.\nChecking both uid \u003d\u003d 0 and the argv[0] \u003d\u003d netd makes it hard for\nnon-system components to spoof as netd.\n\nTest: flash a device and check that netd logs the \"Skipping...\" message\nTest: atest netd_integration_test\nChange-Id: I9506facb4aa3094b16a98a913a1e2394056ce91a\n"
    },
    {
      "commit": "f5693c688da161b147de961bc6db0ccc574b8666",
      "tree": "a186766ee17cb35fba1156e8c0710c26a66c5827",
      "parents": [
        "fc85c3c8476fe2490b027840994db4ff009631e0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 31 14:07:40 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 31 16:39:23 2018 -0700"
      },
      "message": "Generalize abort\u0027s inline_tgkill, use it in fdsan.\n\nConvert abort\u0027s inline_tgkill to do the equivalent of\npthread_sigqueue(pthread_self(), ...), so that we can use it in fdsan\nas well.\n\nTest: bionic-unit-tests\nTest: debuggerd_test32\nTest: debuggerd_test64\nChange-Id: I92a7b84e2f00ce021b4043ed8a3bd8683d77fe9c\n"
    },
    {
      "commit": "ab6a0802affb5c8050516c8dafc120906eca7e64",
      "tree": "8ef9fe80562b1b9f645f56419f92afdcac8dacd7",
      "parents": [
        "98b933a4b653f07d1e1f68d4f49aa98e6c60bb19"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 17:37:52 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 17:37:52 2018 -0700"
      },
      "message": "fdsan: add type for ART\u0027s FdFile.\n\nBug: http://b/113558485\nTest: none\nChange-Id: I9bc874d8689cc54563f2a5878d324b27ad85060e\n"
    },
    {
      "commit": "654cd8331b3dafb2027a3062104c6e9934af1935",
      "tree": "82562a68054fbcbe65259cd594290278ca94f8fc",
      "parents": [
        "003521af4760215c9c3b8ba80c88dd3b3c87ab67"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 16:00:42 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 16:00:42 2018 -0700"
      },
      "message": "Add the %m GNU extension to printf/wprintf.\n\nAnd remove the local hack from syslog(3).\n\nBug: http://b/112776560\nTest: ran tests\nChange-Id: I5807e729a978df26187ea0ee255bba4ca74220c8\n"
    },
    {
      "commit": "be66a06412205baf1077e806eacf0c926e1d87ac",
      "tree": "067e83f45d7068d5ab97e68c9799889f8de7ca8e",
      "parents": [
        "726b63f725ccfb270bf780c96bdf104a26e72dad"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:19:11 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:48:17 2018 -0700"
      },
      "message": "fdsan: provide abort message in warning tombstones.\n\nBug: http://b/112770187\nTest: debuggerd_test\nTest: bionic-unit-tests\nTest: crasher fdsan_file\nChange-Id: I55e18eafaee8b0c35bacd2795b7830bcb9d59291\n"
    },
    {
      "commit": "726b63f725ccfb270bf780c96bdf104a26e72dad",
      "tree": "0b6e0e688d10a1dfdd109f036f73198ec87414ac",
      "parents": [
        "f3aa3007e34eb14e114bd86492d8e6b2673e83c6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:00:58 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 27 16:48:17 2018 -0700"
      },
      "message": "Implement pthread_sigqueue.\n\nBug: http://b/112770187\nTest: bionic-unit-tests\nChange-Id: I03382cd5df2490b2e87265dba9007e2cb1b14cd2\n"
    },
    {
      "commit": "b6b3a1d4f9ae5a86176d23774ce0112eafef03f3",
      "tree": "e64e3bfe47d01b6a1241e79272e967288055ace4",
      "parents": [
        "27cc4bc4147da374e03d109d992895297be66722"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 14:04:11 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 23:10:52 2018 -0700"
      },
      "message": "fdsan: expose functions to get and interpret tags.\n\nMake it easier to write tests in users of fdsan by exposing functions\nto allow users to get and interpret the tags.\n\nTest: bionic_unit_tests\nChange-Id: Iafa9bcaeb5e4db230f3dfec6f483274f34602694\n"
    },
    {
      "commit": "27cc4bc4147da374e03d109d992895297be66722",
      "tree": "55525419847eacdc1e2450751ac979ae1b9310ab",
      "parents": [
        "f7f86a9669fb0d41b8400443a5cc719de8b8f65e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Aug 22 12:40:08 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 23 23:10:52 2018 -0700"
      },
      "message": "Add fdsan owner type for sqlite.\n\nTest: none\nChange-Id: Ib331d108e7e0431250eba3609f3557d8e4665aba\n"
    },
    {
      "commit": "99d54656bda40edb817e6bc6de9a85d88ef4e6b5",
      "tree": "1a176f12c89582f0d06a3376ef66c6281d8af01c",
      "parents": [
        "8f2298e73f4d930b58a8466fd7264e9a88c96d99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:36:23 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 10:36:23 2018 -0700"
      },
      "message": "Add PR_SET_VMA and PR_SET_VMA_ANON_NAME to \u003csys/prctl.h\u003e.\n\nWe\u0027ve copied \u0026 pasted these to too many places. And if we\u0027re going to\nhave another go at upstreaming these, that\u0027s probably yet another reason\nto have the *values* in just one place. (Even if upstream wants different\nnames, we\u0027ll likely keep the legacy names around for a while for source\ncompatibility.)\n\nBug: http://b/111903542\nTest: ran tests\nChange-Id: I8ccc557453d69530e5b74f865cbe0b458c84e3ba\n"
    },
    {
      "commit": "be551f596f763e147bb29ffc26bc360d910f90fb",
      "tree": "f0a7a9aa02e1b73e840f62262125d8064a9d4aae",
      "parents": [
        "3fd45bba4857fdbf320b6e89d2ae0569d9463bf5"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Mon Aug 13 16:46:15 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Aug 21 00:15:47 2018 +0000"
      },
      "message": "HWASan support in bionic.\n\n* Allow sanitization of libc (excluding existing global sanitizers)\n  and disallow sanitization of linker. The latter has not been\n  necessary before because HWASan is the first sanitizer to support\n  static binaries (with the exception of CFI, which is not used\n  globally).\n* Static binary startup: initialize HWASan shadow very early so that\n  almost entire libc can be sanitized. The rest of initialization is\n  done in a global constructor; until that is done sanitized code can\n  run but can\u0027t report errors (will simply crash with SIGTRAP).\n* Switch malloc_common from je_*  to __sanitizer_*.\n* Call hwasan functions when entering and leaving threads. We can not\n  intercept pthread_create when libc depends on libclang_rt.hwasan.\n  An alternative to this would be a callback interface like requested\n  here:\n    https://sourceware.org/glibc/wiki/ThreadPropertiesAPI\n\nAll of the above is behind a compile-time check\n__has_feature(hwaddress_sanitizer). This means that HWASan actually\nrequires libc to be instrumented, and would not work otherwise. It\u0027s\nan implementation choice that greatly reduces complexity of the tool.\nInstrumented libc also guarantees that hwasan is present and\ninitialized in every process, which allows piecemeal sanitization\n(i.e. library w/o main executable, or even individual static\nlibraries), unlike ASan.\n\nChange-Id: If44c46b79b15049d1745ba46ec910ae4f355d19c\n"
    },
    {
      "commit": "fa5410fdb7664e4561f5adcee406b1913f520d77",
      "tree": "4dc35e592835307b61e88534a7a054dc90cf0759",
      "parents": [
        "a7573441c1274bbdb3fc992d068ebf97b30a0208"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Aug 13 17:44:06 2018 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Aug 15 10:11:08 2018 -0700"
      },
      "message": "libc: enable -Wimplicit-fallthrough\n\nlibc had some -Wimplicit-fallthrough warnings. They all seem to be\nbenign. We\u0027re trying to enable this flag globally, so we need to\nannotate these breaks here.\n\nBug: 112564944\nTest: Builds\nChange-Id: I5afae694cc4cf26ad1a61e2c8ae91f00cda7c733\n"
    },
    {
      "commit": "e16082f717276fbbefb88418c82cd84dfba339c2",
      "tree": "c2be53510b5b50d4667da1e4e012a4f28cfe7f59",
      "parents": [
        "e6dab7b55fbcbb72b4b5b7edd3f46ca03da7bfe5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 18:48:52 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 18:48:52 2018 -0700"
      },
      "message": "fdsan: expose the address of the table to the platform.\n\nLet the debuggerd handler get the address of the fdsan table so that\ncrash_dump can parse it and print it out in tombstones.\n\nTest: debuggerd `pidof adbd`\nChange-Id: I2297200cae52d0ff24479dba55d1ab4938583501\n"
    },
    {
      "commit": "e6dab7b55fbcbb72b4b5b7edd3f46ca03da7bfe5",
      "tree": "33525cfdbbfe4deb1eed53155697fe086a3726b4",
      "parents": [
        "4b7c1cc13f313d5d53ab36de250ef3e1f93d0a54"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 18:47:29 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 18:47:29 2018 -0700"
      },
      "message": "fdsan: minor refactoring.\n\nMake it easier for other code to parse the fdsan table themselves by\nmaking it so that they can include the bionic_fdsan.h header to get a\nstruct definition with the layout without bringing in other\ndependencies.\n\nTest: treehugger\nChange-Id: I3583ef113991234aa83cd193a4eb139ad06737c7\n"
    },
    {
      "commit": "4b7c1cc13f313d5d53ab36de250ef3e1f93d0a54",
      "tree": "98bf6c2349ffcc2d4a2a4b36106e3ff2441752ec",
      "parents": [
        "5c14bf39322d0b37b83032a8e9250405842e02e7"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 14:57:30 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 06 15:11:08 2018 -0700"
      },
      "message": "fdsan: enable by default.\n\nTest: adb shell crasher fdsan_file\nChange-Id: I6be0f7372ddb9d622a0bd8d1eeb80a4f747c99e3\n"
    },
    {
      "commit": "08b7a4008fc97316bc913d72db60e3416e6c04da",
      "tree": "ad0f283b150a05540c4e4f1b55275c91db7076a2",
      "parents": [
        "35bb46188ce8dbbb8bde0702e6cc6bf1d0795980"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 03 14:31:37 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 03 15:03:41 2018 -0700"
      },
      "message": "fdsan: improve errors some more.\n\nAdd handling for all 4 cases of failure of exchange_owner_tag. Also,\nmask off and sign extend the type byte of the owner tag, and add a\ntest for that.\n\nTest: bionic_unit_tests\nChange-Id: Ic7c49f0ee5498623f05c49b5b4cd055db48a4b9f\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "3e98d88823d1874d66ded142d09856dc5794db13",
      "tree": "e55808004120ea786d83d327244090abbeebe52e",
      "parents": [
        "439bb1d048018c14e858156c1558effe3f626d7c",
        "fe380887c866e8c140df006c2a5481d13a6abe26"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 25 00:40:29 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 25 00:40:29 2018 +0000"
      },
      "message": "Merge \"fdsan: improve diagnostics.\""
    },
    {
      "commit": "0fe22033095dc0805c191c37075eb0c3e9d29334",
      "tree": "2820e096c3e9115b48830690a78c7755d1e2b850",
      "parents": [
        "ee213170db2b1bb63e8d86f033a137b1a93c4dc8"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jul 24 13:32:41 2018 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jul 24 13:34:34 2018 -0700"
      },
      "message": "Fixup an out of date comment.\n\nTest: n/a\nChange-Id: Ieb5d18d479becb8c92cbf71a8bb7cd67f7c27dba\n"
    },
    {
      "commit": "fe380887c866e8c140df006c2a5481d13a6abe26",
      "tree": "deac495730883c0e24c858b77b5eb9e462ccf0f8",
      "parents": [
        "94ab04c17a0e9f412b7de079f2ef35f39c7f06fc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jul 23 18:36:16 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jul 23 18:36:16 2018 -0700"
      },
      "message": "fdsan: improve diagnostics.\n\nGenerate a tombstone instead of just a log message when warning. Also,\ndon\u0027t use async_safe_fatal_va_list when we\u0027re not calling abort, as\nthis will permanently set the abort message.\n\nTest: bionic_unit_tests\nTest: setprop debug.fdsan warn; crasher fdsan_file\nChange-Id: I2fe271da9004c8fd1f50ad3d8280be254eeaf656\n"
    },
    {
      "commit": "f6e5b582604715729b09db3e36a7aeb8c24b36a4",
      "tree": "1d68c449355f88a0652d3c1e2d6679b54fce1b20",
      "parents": [
        "ad596bf4fc406c0940d0f76f6b7c4ff22ecee7ac"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 01 15:30:54 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 19 14:28:54 2018 -0700"
      },
      "message": "Introduce api to track fd ownership in libc.\n\nAdd two functions to allow objects that own a file descriptor to\nenforce that only they can close their file descriptor.\n\nUse them in FILE* and DIR*.\n\nBug: http://b/110100358\nTest: bionic_unit_tests\nTest: aosp/master boots without errors\nTest: treehugger\nChange-Id: Iecd6e8b26c62217271e0822dc3d2d7888b091a45\n"
    },
    {
      "commit": "f98d87b831958cc71ef7f6b6fa18a7a2a2d24737",
      "tree": "7f6aa1a75c0f51eb8b602c31d29a03ff71cdf7b1",
      "parents": [
        "3a5fd0014c0a415b88467bb692a9606c5221d5f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:21:05 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:21:05 2018 -0700"
      },
      "message": "Add C11 timespec_get.\n\nBug: https://github.com/android-ndk/ndk/issues/744\nTest: ran tests\nChange-Id: Iad9514946e06d55b6a3aa0f945d9a63bff900881\n"
    },
    {
      "commit": "468efc80da2504f4ae7de8b5e137426d44dda9d7",
      "tree": "464d20ef3a5ae493a9728ddc53629764b59f300d",
      "parents": [
        "f0296f35f67cf4c112b3ed407858999bdc2f33b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 10 14:39:49 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 11 12:15:26 2018 -0700"
      },
      "message": "Reimplement popen(3)/pclose(3).\n\npclose(3) is now an alias for fclose(3). We could add a FORTIFY check\nthat you use pclose(3) if and only if you used popen(3), but there seems\nlittle value to that when we can just do the right thing.\n\nThis patch also adds the missing locking to _fwalk --- we need to lock\nboth the global list of FILE*s and also each FILE* we touch. POSIX says\nthat \"The popen() function shall ensure that any streams from previous\npopen() calls that remain open in the parent process are closed in the\nnew child process\", which we implement via _fwalk(fclose) in the child,\nbut we might want to just make *all* popen(3) file descriptors O_CLOEXEC\nin all cases.\n\nIgnore fewer errors in popen(3) failure cases.\n\nImprove popen(3) test coverage.\n\nBug: http://b/72470344\nTest: ran tests\nChange-Id: Ic937594bf28ec88b375f7e5825b9c05f500af438\n"
    },
    {
      "commit": "402c762fc93239d86206a3bded8c17f19dabcd4c",
      "tree": "638213ab024e8feffc9ef9e171345e33f63fa0a3",
      "parents": [
        "50acae8f2ae017c49b1d616e93ce9f97f6b3d118"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 06 17:18:05 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 06 17:18:05 2018 -0700"
      },
      "message": "Fix some long-standing UTF-8 bugs.\n\nWe we incorrectly rejecting U+fffe and U+ffff, and incorrectly accepting\ncharacters above U+10ffff (see https://tools.ietf.org/html/rfc3629\nsection 12 for that restriction).\n\nBug: http://lists.landley.net/pipermail/toybox-landley.net/2017-September/009146.html\nTest: ran tests\nTest: also ran the exhaustive test from that email thread\nChange-Id: I8ae8e41cef01b02933bd4f653ee07791932b79a5\n"
    },
    {
      "commit": "2e1a40a2033088e7f2e78424a8b163d3fcf84b1b",
      "tree": "51ec5d1703f6225d6dc58ad5b01f9c728e4f2883",
      "parents": [
        "2583b0adb201233313bbe02f665f5c623f2c5a30"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 13 10:46:34 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 15 12:29:13 2018 -0700"
      },
      "message": "Change heap dump format slightly.\n\nBump the version from v1.1 to v1.2 and add a build fingerprint line.\n\nUpdate the heap dump documentation to match the new format and reflect\nwhat made it in P and what made it in Q.\n\nUpdate the unit tests for this change.\n\nAdd -O0 to unit test code to make it easier to debug.\n\nAdd an external function that can be used by the framework code\nso that there is only one way to dump the heap.\n\nBug: 110095681\n\nTest: Ran unit tests.\nTest: Did a dump of a real process and verified fingerprint.\nTest: Did a dump of a process without malloc debug enabled.\nChange-Id: I769a476cbeaf4c85c5d75bd6d6385f0e3add948c\nMerged-In: I769a476cbeaf4c85c5d75bd6d6385f0e3add948c\n(cherry picked from commit c84a2a2601a4112ca6e43a33defb989c1da8c2f4)\n"
    },
    {
      "commit": "95bca3f7d4f33bc7c38d33fb6f166eaf02454d92",
      "tree": "42c9b715fa2df0c2a4fe92ccbd890a22310ed30f",
      "parents": [
        "42596b7bf0652e44edff0370f75e1d5387c5cc7b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 14:16:50 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:29:36 2018 -0700"
      },
      "message": "Remove valgrind workarounds.\n\nBug: http://b/77856586\nTest: ran 32-bit x86 tests on host\nChange-Id: I98f6262bb1363ed5c8dd533b1f89b59b2b188525\n"
    },
    {
      "commit": "27475b5105e30332dd2145e0bfba098b756673d9",
      "tree": "02f72da22fcc8e2d2e8bf6db1e84d10f3365592c",
      "parents": [
        "cb5f4100060cd9894273863a973d622d6ebd2719"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu May 17 17:14:18 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed May 30 16:44:23 2018 -0700"
      },
      "message": "Initialize __libc_sysinfo early on.\n\n__libc_sysinfo is hidden, so accessing it doesn\u0027t require a relocated GOT.\nIt is important not to have a relocatable initializer on __libc_sysinfo,\nbecause if it did have one, and if we initialized it before relocating the\nlinker, then on 32-bit x86 (which uses REL rather than RELA), the\nrelocation step would calculate the wrong addend and overwrite\n__libc_sysinfo with garbage.\n\nAsides:\n\n * It\u0027d be simpler to keep the __libc_sysinfo initializer for static\n   executables, but the loader pulls in libc_init_static (even though it\n   uses almost none of the code in that file, like __libc_init).\n\n * The loader has called __libc_init_sysinfo three times by the time it\n   has relocated itself. A static executable calls it twice, while libc.so\n   calls it only once.\n\nBug: none\nTest: lunch aosp_x86-userdebug ; emulator\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static\nChange-Id: I5944f57847db7191608f4f83dde22b49e279e6cb\n"
    },
    {
      "commit": "cb5f4100060cd9894273863a973d622d6ebd2719",
      "tree": "efe63838403994f02a0a2fed61f6afcb930da29d",
      "parents": [
        "6631f9b03dd032519be4b1971c2399a6e5e59357"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu May 17 17:00:19 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed May 30 16:10:35 2018 -0700"
      },
      "message": "Inline __libc_init_global_stack_chk_guard.\n\nPrior to b6453c52ac55f85d7f88f04db6e320825cea9bf7, this function\nwas called from two C++ files.\n\nTest: boot hikey\nChange-Id: Ieeae6ea617c5b19e2cd76c1b37c9511a72d01597\n"
    },
    {
      "commit": "6631f9b03dd032519be4b1971c2399a6e5e59357",
      "tree": "5e08b395a93f4a1cf4ec0fc83b7a09b4e864e51d",
      "parents": [
        "aa922bbaf38d896ecb46ae08c675c2ef0df811db"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Apr 30 18:29:32 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed May 30 15:43:43 2018 -0700"
      },
      "message": "Clean up TLS_SLOT_BIONIC_PREINIT usage a bit\n\n - It is only needed for dynamic executables, so move the initialization\n   out of __libc_init_main_thread and just before the solib constructor\n   calls. For static executables, the slot was initialized, then never\n   used or cleared. Instead, leave it clear.\n\n - For static executables, __libc_init_main_thread already initialized the\n   stack guard, so remove the redundant __init_thread_stack_guard call.\n\n - Simplify the slot access/clearing a bit in __libc_preinit.\n\n - Remove the \"__libc_init_common() will change the TLS area so the old one\n   won\u0027t be accessible anyway.\" comment. AFAICT, it\u0027s incorrect -- the\n   main thread\u0027s TLS area in a dynamic executable is initialized to a\n   static pthread_internal_t object in the linker, then reused by libc.so.\n\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: adb shell /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static\nChange-Id: Ie2da6f5be3ad563fa65b38eaadf8ba6ecc6a64b6\n"
    },
    {
      "commit": "903e5702f411bbe291f297c5e63ca60e4ab8f028",
      "tree": "5b7b0f50c3e35f50aedbc2d1665cdbff4b0c7bd3",
      "parents": [
        "af2eb6f40adc6c293a634cd7733536dc41302d8a",
        "c2b9fec50b4bc33de60aef764798a2aca3c35873"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed May 16 16:19:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 16 16:19:28 2018 +0000"
      },
      "message": "Merge \"Require vendor users and groups to start with vendor_\""
    },
    {
      "commit": "c2b9fec50b4bc33de60aef764798a2aca3c35873",
      "tree": "a5b6f465740515613340cb6769d21737571c04d5",
      "parents": [
        "1d509bc8785ef00cc57426ee79076623008da105"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 10 13:33:06 2018 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue May 15 14:10:21 2018 -0700"
      },
      "message": "Require vendor users and groups to start with vendor_\n\nRequire that users and groups found in /vendor/etc/{passwd,group}\nstart with vendor_.  This is needed to compliance with Treble as\nwithout this prefix, it is possible for a new system image to create a\nuser/group name that a vendor has already used, causing a collision.\n\nBug: 79528966\nTest: new unit test\nChange-Id: I07500641e165f41526a8101592d83fa174e7a711\n"
    },
    {
      "commit": "e267f1a7aa26120770ed04853a3709d93d12ab98",
      "tree": "0cfc30907f5597e71b63553088a636d875b63746",
      "parents": [
        "182523798c6025d8d3dd08bf0cf10ae87e022215"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 10 13:34:54 2018 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 10 20:41:44 2018 +0000"
      },
      "message": "Fix typo in comment\n\nTest: n/a\nChange-Id: I2a869ad920a9867fda9864e11fdaa0d66611b181\n"
    },
    {
      "commit": "70a8f2272e4998aa37db89232ea9a4264432f0aa",
      "tree": "0adb6da4f1475b3b7afe513d84e31811c58da751",
      "parents": [
        "cf4b4706be4ba1eeb027a148453ebb86f9f840ef"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 07 16:44:13 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 15:20:07 2018 -0700"
      },
      "message": "Fix various ftw/nftw \"shall fail\"s from POSIX.\n\nPOSIX says ftw/nftw \"shall fail\" in various cases where BSD\u0027s fts_open\ndoesn\u0027t. Since our ftw/nftw are written in terms of fts_open, add a back\ndoor so we can hint to ourselves when we should have the POSIX semantics.\n\nAlso pull several O_CLOEXEC and don\u0027t-null-check-before-free cleanups\nfrom upstream, and add a couple of tests.\n\nBug: http://b/31152735\nTest: ran bionic tests and LTP \"nftw01\" test\nChange-Id: Ib05facacc1da4c8b2ab48e9ecce88f11a5406630\n"
    },
    {
      "commit": "d6f57306d2d2ecba460cf9ee3b51235346bd8e9a",
      "tree": "317375666dd180b869722b97f5c1d02e29f0f11c",
      "parents": [
        "67b5979930ba81477cf5f835b1fe23563ee9c761"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 25 22:13:14 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 25 22:13:14 2018 -0700"
      },
      "message": "Fix sysconf errno for unknown names.\n\nThe code (and comment) have been like this since the initial commit, but\nthere was never a test of this, and glibc seems to have been returning\nEINVAL (as POSIX says it should) since long before Android existed.\n\nBug: http://b/31154352\nTest: ran tests\nChange-Id: Ica1ea836a4a5699ef0d956fe9c0f322e567de34d\n"
    },
    {
      "commit": "47e41c8d24aba115d1f0bc21e47dd04f9616135c",
      "tree": "4e89f243a8a1109bd25bbcc704ff7a8ae41a96eb",
      "parents": [
        "97ef43553a2342aa8a9d6b3bd392ae426dcf33cd"
      ],
      "author": {
        "name": "Evgeny Eltsin",
        "email": "eaeltsin@google.com",
        "time": "Thu Apr 19 18:39:48 2018 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Sun Apr 22 17:55:50 2018 +0200"
      },
      "message": "Add __libc_add_main_thread and mark it weak\n\nThis complements __libc_init_main_thread in setting up main thread\nunder native bridge.\n\nTest: run_tests\nBug: 77877742\nChange-Id: I53efab66f285a1b9f0ab36d44386fa1e2621e4ba\n(cherry picked from commit 4c9504aa6cb4dad5142056d5e46bcb8409fd476d)\n"
    },
    {
      "commit": "af0ad77af5fc2a4f39fa29b4e6720898d92fb2b4",
      "tree": "5b4352c5e0ddacfac7785f290f08a7535b0631ad",
      "parents": [
        "9ee88bdbc792c510c71e313829263ba0ae0622f7",
        "00a6d5fe0ab034e4d5e87636456cd49ef0ca5b8d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 16 15:34:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 16 15:34:14 2018 +0000"
      },
      "message": "Merge \"Bionic: Always use fortified versions of FD_X macros\""
    },
    {
      "commit": "00a6d5fe0ab034e4d5e87636456cd49ef0ca5b8d",
      "tree": "f01406adcd3b0ae1e42b018e5dd67f5ed464e87a",
      "parents": [
        "48227e66026724f9a94d9ff9cdef0aacae75b3a9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 13 13:52:10 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 13 17:57:21 2018 -0700"
      },
      "message": "Bionic: Always use fortified versions of FD_X macros\n\nWhen compiling on/for at least Lollipop, always use the fortified\nversions of FD_X macros. This works around side-effect issues (which\nare explicitly called out in the specification) and generally\nincreases robustness of code.\n\nBug: 77986327\nTest: mmma bionic\nTest: m\nTest: bionic_unit_tests\nChange-Id: I9096c6872770e46ba5ab64e7375ff83fc0518e07\n"
    },
    {
      "commit": "37793a18926fa689a832e75c33bc766027b1bc3c",
      "tree": "9bd412233e89fbba0b4b78c39e5869d899415c4b",
      "parents": [
        "48227e66026724f9a94d9ff9cdef0aacae75b3a9"
      ],
      "author": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Fri Apr 13 15:21:18 2018 -0700"
      },
      "committer": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Fri Apr 13 16:07:21 2018 -0700"
      },
      "message": "Type of second __sched_cpucount should be \"const cpu_set_t*\".\n\nTest: none\n\nBug: 77341596\nChange-Id: Ib4f1a75d2cfe147855b4d5f0203f4a64c22c116a\n"
    },
    {
      "commit": "46a943c8333a9293d02c302d26d965de2b2c8ec7",
      "tree": "30b9f51323061d7a46577ac22995146c3e328340",
      "parents": [
        "4cdde64728e4d15f6abc2d713c40adaff7b0fc56"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 15:56:35 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 03 21:53:29 2018 -0700"
      },
      "message": "Support getting/setting API level in static binaries.\n\nBug: http://b/27917272\nTest: fixes static semaphore.sem_wait_no_EINTR_in_sdk_less_equal_than_23 test\nChange-Id: Ifeeff20772ff0308aab9417d48671b604a3e9665\n"
    },
    {
      "commit": "b83bf14a352269135d3e2fe783414c3b6e1d0ac5",
      "tree": "3e3b5604f28445915e5011af96bacf8e6021f1aa",
      "parents": [
        "1423bb849879f3f126cb1e6dcb279da5360ef5fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 11:01:25 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 13:59:02 2018 -0700"
      },
      "message": "Fortify ppoll64.\n\nI\u0027ve deliberately not bothered with the GCC implementation because we\u0027ll\nhave removed GCC from the NDK before anyone gets to use this.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: Icfc2a3b214739ab53aa41bacacc11b5c67498fb4\n"
    },
    {
      "commit": "1423bb849879f3f126cb1e6dcb279da5360ef5fc",
      "tree": "8246f6aab6d8f12eed4e24e96fd4f633e78c123e",
      "parents": [
        "861ff85a19c07f5434b966e50d7ff607c86b931d",
        "48a69742fef07075c112acf821040af06c969d98"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 21 17:01:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 21 17:01:41 2018 +0000"
      },
      "message": "Merge \"timer_create: use SIG_SETMASK restore the signal mask.\""
    },
    {
      "commit": "c6b5bcd182edef34f058827882b1908f890cc4cd",
      "tree": "63b9b787f9434c2424f0c2957eb8ce668cb9bd69",
      "parents": [
        "0bc4772ee5e9cbf772227732135fd13e125571a9"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Mar 05 14:14:44 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Mar 20 18:41:22 2018 -0700"
      },
      "message": "Add _monotonic_np versions of timed wait functions\n\nAs a follow up to Ibba98f5d88be1c306d14e9b9366302ecbef6d534, where we\nadded a work around to convert the CLOCK_REALTIME timeouts to\nCLOCK_MONOTONIC for pthread and semaphore timed wait functions, we\u0027re\nintroducing a set of _monotonic_np versions of each of these functions\nthat wait on CLOCK_MONOTONIC directly.\n\nThe primary motivation here is that while the above work around helps\nfor 3rd party code, it creates a dilemma when implementing new code\nthat would use these functions: either one implements code with these\nfunctions knowing there is a race condition possible or one avoids\nthese functions and reinvent their own waiting/signaling mechanisms.\nNeither are satisfactory, so we create a third option to use these\nAndroid specific _monotonic_np functions that completely remove the\nrace condition while keeping the rest of the interface.\n\nSpecifically this adds the below functions:\npthread_mutex_timedlock_monotonic_np()\npthread_cond_timedwait_monotonic_np()\npthread_rwlock_timedrdlock_monotonic_np()\npthread_rwlock_timedwrlock_monotonic_np()\nsem_timedwait_monotonic_np()\n\nNote that pthread_cond_timedwait_monotonic_np() previously existed and\nwas removed since it\u0027s possible to initialize a condition variable to\nuse CLOCK_MONOTONIC.  It is added back for a mix of reasons,\n1) Symmetry with the rest of the functions we\u0027re adding\n2) libc++ cannot easily take advantage of the new initializer, but\n   will be able to use this function in order to wait on\n   std::steady_clock\n3) Frankly, it\u0027s a better API to specify the clock in the waiter function\n   than to specify the clock when the condition variable is\n   initialized.\n\nBug: 73951740\nTest: new unit tests\nChange-Id: I23aa5c204e36a194237d41e064c5c8ccaa4204e3\n"
    },
    {
      "commit": "48a69742fef07075c112acf821040af06c969d98",
      "tree": "0713f4883c6d6d30295eafd69c35f11be7c58af9",
      "parents": [
        "9d641d518624f00e156bb9464ba271cc2034db1c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 20 17:58:11 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 20 17:58:11 2018 -0700"
      },
      "message": "timer_create: use SIG_SETMASK restore the signal mask.\n\nBug: http://b/73144101\nTest: ran tests\nChange-Id: I9adf3a512c120ef2280ad469ad11366222d61463\n"
    },
    {
      "commit": "9651fdf93ae2c33fa38a6c5c5005b8596e716789",
      "tree": "e0e9554bd1e79d1232aa1055562b48c1031841a7",
      "parents": [
        "35e620cf98d133ba6e40f7713c858c40bb825a4b"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 14 12:02:21 2018 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 15 10:44:30 2018 -0700"
      },
      "message": "Check using destroyed mutexes.\n\nFor apps built for Android \u003c P, return EBUSY.\nFor apps built for Android \u003e\u003d P, abort.\n\nThis is to keep old apps work, and help debugging\napps built for \u003e\u003d P.\n\nBug: http://b/74632097\nTest: run bionic-unit-tests.\nTest: run bionic-benchmark.\n\nChange-Id: I5271565a1a6ad12678f85d558a7f862a2b7aab4b\n"
    },
    {
      "commit": "435e669776829fb73ba4bc05a5aa6fcdc6675471",
      "tree": "aeb9fcd5283e73bd7473a1f1c875cac4ab9e7604",
      "parents": [
        "0a2060c090e8b33045236fa0f836903994210c2b",
        "71ba5899ae5857a6510f0fa05039dccee73bcc6a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:08:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 09 18:08:00 2018 +0000"
      },
      "message": "Merge \"Rewrite system(3) to use posix_spawn(3).\""
    },
    {
      "commit": "832f4907f0bd244aef90955d2b00aac53f1eed6e",
      "tree": "0d0ebe94545d165b8cb05ec8d4439bd36fbe3aa7",
      "parents": [
        "0a8d5f3eb8f4087b307f237943a19ae36b094ced",
        "f55dbc05169ebfb67a4380741a94360b794f5ad9"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Wed Mar 07 01:28:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 07 01:28:26 2018 +0000"
      },
      "message": "Merge \"Sign extend offset for pwritev/preadv.\""
    },
    {
      "commit": "f55dbc05169ebfb67a4380741a94360b794f5ad9",
      "tree": "9d914f407075dce81e2185d48f0399d9b632989a",
      "parents": [
        "af8d54a7d715bd16bee279a87f42f8604b6b0a46"
      ],
      "author": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Mar 06 15:27:07 2018 -0800"
      },
      "committer": {
        "name": "Jerry Zhang",
        "email": "zhangjerry@google.com",
        "time": "Tue Mar 06 15:39:44 2018 -0800"
      },
      "message": "Sign extend offset for pwritev/preadv.\n\nKernel expects a 64 bit offset, so if a\nuser\u0027s offset is 32 bit, the wrapper will\ndrop the sign. To fix, sign extend the\n32 bit value before doing the syscall.\n\nBug: 31225071\nTest: pwritev02 32 bit passes\nChange-Id: Ie272601662c2c35b0e8d8fc3823c9063c2f73e64\n"
    },
    {
      "commit": "71ba5899ae5857a6510f0fa05039dccee73bcc6a",
      "tree": "9d34769766ce10c95ecb32bc5ec25949007a0048",
      "parents": [
        "0a8d5f3eb8f4087b307f237943a19ae36b094ced"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 07 12:44:45 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 05 17:20:12 2018 -0800"
      },
      "message": "Rewrite system(3) to use posix_spawn(3).\n\nWe saw crashes from pthread_exit+debuggerd on LP32\n(https://issuetracker.google.com/72291624), and it seems like the\nequivalent problem should exist with system(3). I fixed posix_spawn(3)\nas part of that bug, so the easiest fix is probably to reuse that.\n\nBug: http://b/72470344\nTest: ran tests\nChange-Id: I05f838706f2b4a14ac3ee21292833e6c8579b0d4\n"
    },
    {
      "commit": "6fcba93b17d52c22bf00211b8bf1524ef61bbcab",
      "tree": "9492683d6366cd184c990f3790f53ec24ef3070c",
      "parents": [
        "a9050686c44c23a17d9e1c619d18991ede3e33f9"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Feb 09 13:38:32 2018 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Feb 27 14:12:30 2018 -0800"
      },
      "message": "Filter out reserved signals in functions that take sigset_t.\n\nPrevent processes from blocking libc-reserved signals by filtering them\nout.\n\nBug: http://b/73144101\nTest: 32/64-bit bionic-unit-tests-glibc\nTest: 32/64-bit bionic-unit-tests on taimen\nChange-Id: Ibadcaa7f668ed8be885cc61b67fb4b611fce8b17\n"
    },
    {
      "commit": "7ae39129e12b12bfc5cef54432c9598e7d4dfc7e",
      "tree": "cc8cbbb3ab4813748e868f02c025cc247b7d685d",
      "parents": [
        "9c85408d953ea543cc58ea2c1c48b2c65390e834"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 26 16:49:43 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 26 16:59:37 2018 -0800"
      },
      "message": "Move sigprocmask into its own file.\n\nOtherwise clang inlines it into pthread_sigmask(3), which breaks libsigchain.\n\nBug: http://b/73344857\nTest: ran tests, plus the app this broke\nChange-Id: Ie4a1dc8f9c6ba58d1a2fa69aeff961c70b74767d\n"
    },
    {
      "commit": "ee8e3dd67c910907115c7cef87be3d898d71a05d",
      "tree": "022d9c97d9bdc95c34dbf0052b8dcf9ce394bc46",
      "parents": [
        "44c7b6ad0ac277a8ed3ee2278f6c1ee23f130ab5"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 15:01:22 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 15:10:17 2018 -0800"
      },
      "message": "Remove non-trivial constructors/destructors from SystemProperties\n\nWith the goal of disallowing exit time destructors, SystemProperties\u0027s\nnon-trivial destructor needs to be removed.  This means replacing the\nunion hack with yet another hack as we don\u0027t want to allocate anything\ndespite relying on some polymorphism.\n\nBug: 73485611\nTest: boot bullhead\nChange-Id: I64223714c9b26c9724bfb8f3e2b0168e47b56bc8\n"
    },
    {
      "commit": "44c7b6ad0ac277a8ed3ee2278f6c1ee23f130ab5",
      "tree": "fb4a4f1583d3523d9344c3b630daafc01df05b5a",
      "parents": [
        "d27a3d7853bcbf537ccaf440228a469e154f72ad",
        "5fe73268f3813144ed7ae29d5b91c26ae8b2f0ca"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 04:41:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 21 04:41:21 2018 +0000"
      },
      "message": "Merge changes Ibcd45e9b,I1ff5c0fa\n\n* changes:\n  Do not munmap in MmapFile::~MmapFile\n  Build bionic/tests with cpp_std experimental.\n"
    },
    {
      "commit": "5fe73268f3813144ed7ae29d5b91c26ae8b2f0ca",
      "tree": "5b421af08544f44b179ae53585ec604b9fed88cf",
      "parents": [
        "60ddedff0b34f0058780b8cdbdeacef667526d08"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 20 15:40:59 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 20 16:02:13 2018 -0800"
      },
      "message": "Do not munmap in MmapFile::~MmapFile\n\nHaving any destructor with a global variable in bionic is causing\nsome issues. Since we don\u0027t actually need to munmap in this case, we\nremove the destructor to work around that issue.\n\nA small class is used to still munmap during tests.\n\nBug: 73485611\nTest: bionic unit tests\nChange-Id: Ibcd45e9b1ab22d187ecfc2738bb87244250d81ea\n"
    },
    {
      "commit": "cb4d42173e008217ecb75ef7669d1c41be6ae0c7",
      "tree": "89b605ab10eaecfeed80a39389a95b053c66ae87",
      "parents": [
        "d5172fced0f88114e21086db5defaee64371de32"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 20 15:50:04 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 20 15:50:04 2018 -0800"
      },
      "message": "Fix mmap leak in MmapFile\n\nIf the mmap\u0027ed file doesn\u0027t end in a new line, previously we\u0027d leak\nthe mmap\u0027ed region.  This change now munmap\u0027s the region.\n\nTest: unit tests\nChange-Id: If28d3d9a6b1b9c54123beecb3bbbe8ed984ca81d\n"
    },
    {
      "commit": "665ce210fab00911321829e6e190405ef18e5032",
      "tree": "69b8621dfae13859842cc9a2f64f409fe16040cd",
      "parents": [
        "38a78728c343f6398763ae8d7e3e8202b927a056",
        "3376c23daceddd603478347c00163f39e7c9e1ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 15 01:26:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 15 01:26:17 2018 +0000"
      },
      "message": "Merge \"Add remaining _l function stubs.\""
    },
    {
      "commit": "3376c23daceddd603478347c00163f39e7c9e1ee",
      "tree": "d8a6f5383a285783630af07f03e11a5a06677b10",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "message": "Add remaining _l function stubs.\n\nBug: http://b/65595804\nTest: ran tests\nChange-Id: I3bea3af20b354d1f0d3e05fd35421a9045f29020\n"
    },
    {
      "commit": "2d1e1011cfe01716573e79c66c03a7d9f6cb2c86",
      "tree": "638e26e848a26608d6b2344fe2fe4975bdf034a6",
      "parents": [
        "af8d54a7d715bd16bee279a87f42f8604b6b0a46",
        "cbc80ba9d839675a0c4891e2ab33f39ba51b04b2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 14 02:53:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 14 02:53:37 2018 +0000"
      },
      "message": "Merge \"Switch the rest of our internal headers to #pragma once.\""
    },
    {
      "commit": "cbc80ba9d839675a0c4891e2ab33f39ba51b04b2",
      "tree": "0b24e6123c94bd3e61d94fd6eca6a3b9cc9b074e",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:26:29 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:27:17 2018 -0800"
      },
      "message": "Switch the rest of our internal headers to #pragma once.\n\nWe\u0027ve been using #pragma once for new internal files, but let\u0027s be more bold.\n\nBug: N/A\nTest: builds\nChange-Id: I7e2ee2730043bd884f9571cdbd8b524043030c07\n"
    },
    {
      "commit": "db478a627482c73c52df9e3929fe7a39f03e4eeb",
      "tree": "15fcd3caeea9269e5e3eefb881ec25bade966bcb",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 07 18:42:14 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 13 13:37:30 2018 -0800"
      },
      "message": "Implement malloc hooks.\n\nUse the malloc debug framework to implement the malloc debug hooks\nsince it can introduce a performance issue.\n\nAlso, modify the bionic/tests/utils.h slightly to dump an error message\nwhen the exe failed.\n\nBug: 30561479\n\nTest: Ran malloc hook unit tests.\nTest: Ran malloc debug unit tests.\nTest: Enabled malloc hooks and ran bionic unit tests and verified no\nTest: unexpected failures.\nTest: Enabled malloc debug and malloc hooks and verified malloc debug wins.\nTest: Enabled malloc debug using env, property, and property with name\nTest: still works.\n\nChange-Id: Ib50046a0493c5c2050cf831befb812310bdcc249\n(cherry picked from commit d6a1dc23796696f73f483943534d4c5c4b312d39)\n"
    },
    {
      "commit": "ab8c86159738a774ca99a5b3311e5e3b81fc8ce9",
      "tree": "a35165b08fe9fcd81d936d5a3ae2eadee6e2dc48",
      "parents": [
        "4362da80760ef76af310280e70fddb6b6d3d043f",
        "6034ef85d86675d063d6b1920e85e4c471b95904"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Feb 12 16:27:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 12 16:27:20 2018 +0000"
      },
      "message": "Merge \"Add ability to read /etc/passwd and /etc/group\""
    },
    {
      "commit": "4362da80760ef76af310280e70fddb6b6d3d043f",
      "tree": "1c82e79065e631ec1739f588025154696469d253",
      "parents": [
        "6fa9bddbc7188aeb20d6faa4da2e62c12f5a5af2",
        "90242350053e6fd2c03640d3f9b37864d18c414d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Feb 10 02:30:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Feb 10 02:30:37 2018 +0000"
      },
      "message": "Merge \"Remove __overloadable/__RENAME_CLANG\""
    }
  ],
  "next": "6034ef85d86675d063d6b1920e85e4c471b95904"
}
