)]}'
{
  "log": [
    {
      "commit": "9491c54619e254823730c56abeb5ea21e295c624",
      "tree": "8478b6d1f7bf1f8bfd0495e09b32be6852555c3d",
      "parents": [
        "bf925b0580b63f0746303eb234d2684aadc29dc0"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Nov 09 15:18:05 2018 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Nov 09 15:24:16 2018 -0800"
      },
      "message": "Publish the current draft of my ELF TLS doc\n\nI have a script that converts the internal Google Doc to this markdown\nfile.\n\nBug: http://b/78026329\nTest: review document\nChange-Id: I16cfa60f1e480f859eb79cb0e5f0c519f5622cfd\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": "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": "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": "d747bb8f3f7061786db9ed77430a572361f263af",
      "tree": "cf4254af7d55bdb17da4cd1d7c58c9fc1fec7c29",
      "parents": [
        "5fa9df8efc96667564cc5289b176592bd7882953"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Sep 18 13:38:31 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Sep 18 13:42:08 2018 -0700"
      },
      "message": "fdsan: improve documentation.\n\nFix a race condition in the example, and add a linearized version to\nmake it more clear what\u0027s going on.\n\nTest: none\nChange-Id: Id9158e4fd407b676ef364e7076985de3ad477457\n"
    },
    {
      "commit": "670ea7aca905c5a93828b7c401ef320d65b8999f",
      "tree": "3e061b8d126557bf12baaafa6ed8062885b98d4a",
      "parents": [
        "4d9814909677805d04d113b7af24b3edf655a712"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 14 17:05:01 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 14 17:05:01 2018 -0700"
      },
      "message": "Explicitly say `pthread_cancel` in the docs.\n\nBug: http://b/33943372\nTest: N/A\nChange-Id: If71691f7ff20c9b8c14de15692543bbd858c9aab\n"
    },
    {
      "commit": "01416ba1120c8ab7697fbe64eb1aa90f4faf10bd",
      "tree": "b7c56d3242bdda64db4802f431d0317d9428658e",
      "parents": [
        "0326f063b5b275bf0721b942b06a04b7ec719e16"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 06 16:23:14 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 06 16:23:38 2018 -0700"
      },
      "message": "Fix mistake in fdsan documentation.\n\nFile descriptors are POSIX, not C.\n\nTest: none\nChange-Id: Idc3c32c60f9c61e8e68aabbc4589a6c68e156e4b\n"
    },
    {
      "commit": "b64196a9bbf7578c1328faa88b6020b0384f6d1c",
      "tree": "4ec18897221f00a68deff9bc3df016e1ae2957ea",
      "parents": [
        "e57399d4a132df84ac62a6539eebdcf10553b170"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 31 00:32:46 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 06 14:55:12 2018 -0700"
      },
      "message": "fdsan: add documentation.\n\nTest: none\nChange-Id: I7dabd8f5420c757b6504254a6414da8e877d475e\n"
    },
    {
      "commit": "86bce192e90c827ffcae2c82d199d7ff27aedb86",
      "tree": "aaac107ea9b57b3bac2bdc819df879a958d844c6",
      "parents": [
        "74934aaf10d629de477095f0b92c467849f89638"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 12:00:55 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 12:01:15 2018 -0700"
      },
      "message": "Document various post-P bionic changes.\n\nHistorically we haven\u0027t documented many behavioral changes, but it\u0027s\nprobably useful to record that information before it\u0027s lost (even if,\nlong term, it might be more useful in the man pages or the doc comments).\n\nBug: N/A\nTest: N/A\nChange-Id: Iaa4f651fd6576298d848894b61285ef95879deb9\n"
    },
    {
      "commit": "3876ade8420b9e6815d8afbe66618ccc92d04411",
      "tree": "01167c8d08da7d9ed4e10d6b5fb7debcf22723f0",
      "parents": [
        "003521af4760215c9c3b8ba80c88dd3b3c87ab67"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 14:25:32 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 14:25:32 2018 -0700"
      },
      "message": "Fill out historical \"what was added when\" information.\n\nBug: N/A\nTest: N/A\nChange-Id: Ifa1807c6bb61dea2a4831785492b13118c66490d\n"
    },
    {
      "commit": "a473be239570817b065dc7acbc6968c3ad402133",
      "tree": "e341a54d393bff19fa792d3a3b6eab0a185a2a78",
      "parents": [
        "782cd01b098f86bef787955d5264e694d0e7e807"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Aug 06 12:18:32 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Aug 06 12:18:32 2018 -0700"
      },
      "message": "Fix libc assembler documentation.\n\nTest: NA\nChange-Id: I71485a3a44a56f2ff7ed590aec171464b57f56f6\n"
    },
    {
      "commit": "782cd01b098f86bef787955d5264e694d0e7e807",
      "tree": "dd054bb651836caedcc20f20d405b3f309217eb7",
      "parents": [
        "ea6aff66fa61f973e5cae0c8ebeed218ab316e19",
        "74866e160dd3b0d31e31befb36f334d4acc6e567"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 06 17:27:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 06 17:27:31 2018 +0000"
      },
      "message": "Merge \"Revert \"Move android-changes-for-ndk-developers.md into docs/.\"\""
    },
    {
      "commit": "74866e160dd3b0d31e31befb36f334d4acc6e567",
      "tree": "d91763e382ec8242dcf293f1ac3f9eb441743666",
      "parents": [
        "1975196c871f20928c20b4ab23e4f3ee6b33390a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 06 15:40:04 2018 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 06 15:40:04 2018 +0000"
      },
      "message": "Revert \"Move android-changes-for-ndk-developers.md into docs/.\"\n\nThis reverts commit 1975196c871f20928c20b4ab23e4f3ee6b33390a.\n\nReason for revert: https://android.googlesource.com/ doesn\u0027t follow symlinks :-(\n\nChange-Id: I58038a03388ab5257d301debb494ce354013acfe\n"
    },
    {
      "commit": "65f82092a17518080178ff7004cc6db362ebfbcd",
      "tree": "33f3d115d6bbec22c89dd3b27b82a9df8149392a",
      "parents": [
        "7fe9001364ede6aece4119059ef8199d39c74159",
        "af455ac83d82cdca5f8a89205735e9e7b4ef15e0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 02 19:27:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 02 19:27:05 2018 +0000"
      },
      "message": "Merge \"Add doc about verifying libc assembler routines.\""
    },
    {
      "commit": "af455ac83d82cdca5f8a89205735e9e7b4ef15e0",
      "tree": "30fade4a0579e03aba43c427cd5532ab63d31dab",
      "parents": [
        "78b4a82d7d62f548b707f92f5dc5f339bb1fadc4"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 01 15:21:16 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 01 20:17:28 2018 -0700"
      },
      "message": "Add doc about verifying libc assembler routines.\n\nTest: NA\nChange-Id: Ic3576f9c063a11d5c3f5fdb093b4d9dd2a1f5dd7\n"
    },
    {
      "commit": "1975196c871f20928c20b4ab23e4f3ee6b33390a",
      "tree": "f1959149eb7f9d0b8a120b4cadbd465802b49cd3",
      "parents": [
        "b0c8a01de1dafc1e47f74895d00ca82429f851b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 01 13:07:17 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 01 13:07:17 2018 -0700"
      },
      "message": "Move android-changes-for-ndk-developers.md into docs/.\n\n(But keep a symbolic link so we don\u0027t break the web.)\n\nBug: N/A\nTest: N/A\nChange-Id: Ib0c8ef80cb4b6836a465d897ffe6d78e11f09f46\n"
    },
    {
      "commit": "a7119af33ef71ae24d809b5ea52c1ba913f97a6c",
      "tree": "085450dbe59e2b07a6d86d7bfe062f93a4d6de9c",
      "parents": [
        "f98d87b831958cc71ef7f6b6fa18a7a2a2d24737"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:26:14 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 17 13:26:14 2018 -0700"
      },
      "message": "Update libc status documentation.\n\nBug: N/A\nTest: N/A\nChange-Id: Ied9659f0388a4affa65f0948b3e4a58d0dca5605\n"
    },
    {
      "commit": "07f62385b65856552ad8f1019e4261df3badc5cb",
      "tree": "b0b16aa12e470f2e1edcc0f59fd48ec37118551a",
      "parents": [
        "67b5979930ba81477cf5f835b1fe23563ee9c761"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 01 13:13:47 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 01 13:13:47 2018 -0700"
      },
      "message": "Document FORTIFY.\n\nHilariously, our blog post didn\u0027t actually say how to turn it on :-)\n\nBug: N/A\nTest: N/A\nChange-Id: I6e773e88c32a70b0f8b8b6d105fce74d68ebf5cd\n"
    },
    {
      "commit": "61c169e5dba2104c622ae6f253cbd8c6a6278bee",
      "tree": "c5de3b18ecb4e2207530a79105e6fa85e4c92072",
      "parents": [
        "48b688b1b12dce5dab78220ca28a3f5fd94276ef"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 15:43:37 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 15:44:42 2018 -0800"
      },
      "message": "Separate the new P functions from the new P behavior in the docs.\n\nBug: N/A\nTest: N/A\nChange-Id: If3810a1e4d3ab2a5bd5f83a1ab6bbcc1a729f685\n"
    },
    {
      "commit": "48b688b1b12dce5dab78220ca28a3f5fd94276ef",
      "tree": "ccc7ab5522e8b02939aaa32e05c39f44d3650fab",
      "parents": [
        "e09c90dec1a152c6714f7e23c993d29a6bcf8597"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 15:10:19 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 01 15:10:19 2018 -0800"
      },
      "message": "Document the strptime %s change.\n\nBug: https://issuetracker.google.com/37128336\nTest: N/A\nChange-Id: I9b35c14d84b9f4ec85b9d54af47314d0442ebde2\n"
    },
    {
      "commit": "3e235911c9cf5062adbb73efb53fe5ed712d7c53",
      "tree": "cdd84807bba4a7d0b0fd947555b2edaa2618df95",
      "parents": [
        "b44bd827abf2b870ebf4a0f6b126098a46bf42ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:21:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:45:15 2018 -0800"
      },
      "message": "Add `struct sigaction64` and `sigaction64`.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I47b0560a30aa33a9b1f1978dfb7f84d2e3d389b8\n"
    },
    {
      "commit": "5905d6f8797056ca4178d42bf1220b6692e557a5",
      "tree": "222848ae0ced32fcf2028a2c6502b4a763c83830",
      "parents": [
        "d435d256da57fdf4278b3198720d881f3edcf452"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 15:09:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 18:47:16 2018 -0800"
      },
      "message": "Add `sigset64_t` and accompanying functions.\n\nThis doesn\u0027t address `struct sigaction` and `sigaction`. That will\ncome later.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I4134346757ce3a4dac6feae413361cec16223386\n"
    },
    {
      "commit": "13550b8c57c927b0738b8e69785c7e3e1cbb499b",
      "tree": "b54424a34d04bf4da86d4c767958a026a3cf9098",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 25 22:50:09 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 25 22:50:09 2018 -0800"
      },
      "message": "Update our status in light of recent additions.\n\nBug: N/A\nTest: N/A\nChange-Id: Ib0af6ba6bb270b03b3837c7e0fa2f9c02508c924\n"
    },
    {
      "commit": "2237b6b8ecd2ec45648b3dae07b98baa9ae27601",
      "tree": "e44cd92af6ae312b099f6493718e7283accdb2e0",
      "parents": [
        "3ba327198a42eecd2fbc2556d7d0fa41f8d6b17b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 13 15:18:15 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 13 15:25:55 2017 -0800"
      },
      "message": "Mention the POSIX header tests in docs/status.md.\n\nAlso add a couple of comments in the tests for ease of understanding\nwhen grepping for `__BIONIC__`.\n\nBug: N/A\nTest: N/A\nChange-Id: I7833a3ffbcc3badf9cec95f268d11a6d8a5ff9aa\n"
    },
    {
      "commit": "3d98adf9d029fffad2ce49b4bb2191f11244ebd0",
      "tree": "cdefcdc5a7a7bc71db695cdb3f9187acf5dfa3a9",
      "parents": [
        "8b9037a05ec63b4139bb9424086faa397472ee44"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 20:01:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 29 16:30:37 2017 -0800"
      },
      "message": "Address review comments from the previous change to this file.\n\nBug: N/A\nTest: N/A\nChange-Id: If79f622956c69a6881de237214ca05086dfe8b60\n"
    },
    {
      "commit": "a34817457feee026e8702a1d2dffe9e92b51d7d1",
      "tree": "a1ff7c6193a54bd11121fc34f0fe25a7b00b9ace",
      "parents": [
        "7d5777ef15136e4e12a27c85d7b06d6806b98e70"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 14:47:17 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 15:47:01 2017 -0800"
      },
      "message": "Improve the _FILE_OFFSET_BITS docs and link to them.\n\nWe\u0027re still seeing lots of confusion. People do seem to look as far as\nthe headers, but stop there. So let\u0027s try a bit harder to point them in\nthe right direction.\n\nAlso explicitly state that removing _FILE_OFFSET_BITS\u003d64 is the\nbehavior-preserving fix for compilation problems when upgrading to NDK\nr15 or later.\n\nBug: N/A\nTest: N/A\nChange-Id: I2d5c65b2fb5cccb9977901e51fea1ad2ccc0fd95\n"
    },
    {
      "commit": "6347acec09eb08cfe48d3eea541f69f408ae1f32",
      "tree": "ed6bd518fd08b260b52a9ab3f0948897b57bc989",
      "parents": [
        "de5f9a1c54eebd1b66a5dfeaffbe3e703e76c86e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 27 17:00:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 27 18:12:04 2017 -0800"
      },
      "message": "Document bionic\u0027s targetSdkVersion-specific behavior.\n\nBug: N/A\nTest: N/A\nChange-Id: I367edc592203e585a1d84a10ff3437ea3f2edd91\n"
    },
    {
      "commit": "37ad9597839c70a7ec79578e5072df9c189fc830",
      "tree": "f1f70a143c99b072b040f5592f1b42da464b35f8",
      "parents": [
        "e379a202504911d228ae07d9ba32c5a02274fe1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 17:47:12 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 31 13:23:41 2017 -0700"
      },
      "message": "More missing _unlocked \u003cstdio.h\u003e functions.\n\nAlso simplify trivial one-liners like perror/puts/fputs, and clean up\nfread/fwrite slightly.\n\nFix perror to match POSIX.\n\nAdd basic perror and *_unlocked tests.\n\nBug: N/A\nTest: ran tests\nChange-Id: I63f83c8e0c15c3c4096509d17421ac331b6fc23d\n"
    },
    {
      "commit": "c8a2612ffc13a31aaedec26a45cdceb6fa8199cb",
      "tree": "8c12929cde798f3a49dfe0d9a59085d8b205f0b6",
      "parents": [
        "048e18045d6e7bcaf0870d8bb7cb671214c9ad50",
        "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "message": "Merge \"Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\""
    },
    {
      "commit": "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87",
      "tree": "fd3d9743a0e282dcbb2a8b2b51906f7da3a84468",
      "parents": [
        "435e6384de8f9e35b8878b1ccda5bb5686c15207"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 15:34:41 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 25 14:28:42 2017 -0700"
      },
      "message": "Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\n\nHistorically, Android defaulted to EXPLICIT but with a special case\nbecause SCHED_NORMAL/priority 0 was awkward. Because the code couldn\u0027t\nactually tell whether SCHED_NORMAL/priority 0 was a genuine attempt to\nexplicitly set those attributes (because the parent thread is SCHED_FIFO,\nsay) or just because the pthread_attr_t was left at its defaults.\n\nNow we support INHERIT, we could call sched_getscheduler to see whether\nwe actually need to call sched_setscheduler, but since the major cost\nis the fixed syscall overhead, we may as well just conservatively\ncall sched_setscheduler and let the kernel decide whether it\u0027s a\nno-op. (Especially because we\u0027d then have to add both sched_getscheduler\nand sched_setscheduler to any seccomp filter.)\n\nPlatform code (or app code that only needs to support \u003e\u003d P) can actually\nadd a call to pthread_attr_setinheritsched to say that they just want\nto inherit (if they know that none of their threads actually mess with\nscheduler attributes at all), which will save them a sched_setscheduler\ncall except in the doubly-special case of SCHED_RESET_ON_FORK (which we\ndo handle).\n\nAn alternative would be \"make pthread_attr_setschedparams and\npthread_attr_setschedprio set EXPLICIT and change the platform default\nto INHERIT\", but even though I can only think of weird pathological\nexamples where anyone would notice that change, that behavior -- of\npthread_attr_setschedparams/pthread_attr_setschedprio overriding an\nearlier call to pthread_attr_setinheritsched -- isn\u0027t allowed by POSIX\n(whereas defaulting to EXPLICIT is).\n\nIf we have a lot of trouble with this change in the app compatibility\ntesting phase, though, we\u0027ll want to reconsider this decision!\n\n -*-\n\nThis change also removes a comment about setting the scheduler attributes\nin main_thread because we\u0027d have to actually keep them up to date,\nand it\u0027s not clear that doing so would be worth the trouble.\n\nAlso make async_safe_format_log preserve errno so we don\u0027t have to be\nso careful around it.\n\nBug: http://b/67471710\nTest: ran tests\nChange-Id: Idd026c4ce78a536656adcb57aa2e7b2c616eeddf\n"
    },
    {
      "commit": "1d01fe8980d332a85f730bf2d2fef9dcf707c041",
      "tree": "41814512a8be716ba9ee7129beed7b1e85a9a23f",
      "parents": [
        "2e998d37ce5be9833c595bc97549793a81459ed4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 23 10:07:55 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 23 10:07:55 2017 -0700"
      },
      "message": "Fix LP32 large pid detection.\n\nBug: http://b/68046352\nTest: ran tests\nChange-Id: I89cb99173ca77e9457e677187430b61cedb55c04\n"
    },
    {
      "commit": "8c73809bf5fea7902c553eb78f9e2bb98b255177",
      "tree": "eed4d5c63a19008f7016ee0f1f6567dee99dd4dc",
      "parents": [
        "9f69fc714aa5dfbe0f711cb41dc7006b8ebbe43e",
        "61c9c8027537b48395dd995ce33f7a92d6f31b92"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 20 12:34:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 20 12:34:58 2017 +0000"
      },
      "message": "Merge \"Ignore sockatmark.\""
    },
    {
      "commit": "38bd71bab7fbd96f13e2d6daf3761a1c5658a809",
      "tree": "0f37fdd4f0ae2193d49950f3b8dbd933ddd08216",
      "parents": [
        "ac29d9f3b9636818773d60df18eb17e79783f774",
        "bdb1e89104f0e0f9e4f265b97f514acc30967286"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 23:07:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 23:07:36 2017 +0000"
      },
      "message": "Merge \"Update docs/status.md now fexecve is implemented.\""
    },
    {
      "commit": "61c9c8027537b48395dd995ce33f7a92d6f31b92",
      "tree": "e17fccbd528acc6b9e2ce5b33c95e8c4f76c37e9",
      "parents": [
        "ac29d9f3b9636818773d60df18eb17e79783f774"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 14:54:05 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 15:37:54 2017 -0700"
      },
      "message": "Ignore sockatmark.\n\nI was unable to find a single use of this anywhere, and the networking\nfolks point out https://tools.ietf.org/html/rfc6093:\n\n    \"\"\"\n    5.  Advice to New Applications Employing TCP\n\n      As a result of the issues discussed in Section 3.2 and Section 3.4,\n      new applications SHOULD NOT employ the TCP urgent mechanism.\n    \"\"\"\n\nApplications that think they want to do these tricksy things should be\nreferred to section 3.4, wherein it\u0027s noted that these semantics are\neffectively dead and it\u0027s middleboxes what killed \u0027em:\n\n    \"\"\"\n    3.4.  Interaction of Middleboxes with TCP Urgent Indications\n\n      As a result of the publication of Network Intrusion Detection System\n      (NIDS) evasion techniques based on TCP urgent indications [phrack],\n      some middleboxes clear the urgent indications by clearing the URG\n      flag and setting the Urgent Pointer to zero.  This causes the \"urgent\n      data\" to become \"in line\" (that is, accessible by the read(2) call or\n      the recv(2) call without the MSG_OOB flag) in the case of those TCP\n      implementations that interpret the TCP urgent mechanism as a facility\n      for delivering \"out-of-band\" data (as described in Section 3.1).  An\n      example of such a middlebox is the Cisco PIX firewall [Cisco-PIX].\n      This should discourage applications from depending on urgent\n      indications for their correct operation, as urgent indications may\n      not be reliable in the current Internet.\n    \"\"\"\n\nBug: N/A\nTest: N/A\nChange-Id: I73280db1d803bb7bd93954c13c653fa0cd3daff9\n"
    },
    {
      "commit": "ac29d9f3b9636818773d60df18eb17e79783f774",
      "tree": "b21bb54cdb9432056d9f83ffc8c80aea317ccdcd",
      "parents": [
        "1b6de8788918f806efd812b743dcc0bbdd232392",
        "fa386e0d1eb52478f11b7232d280919245c1616c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "message": "Merge \"Add POSIX swab.\""
    },
    {
      "commit": "bdb1e89104f0e0f9e4f265b97f514acc30967286",
      "tree": "6634407fca03b5dfd257c7d343fe10a2647fd9c8",
      "parents": [
        "1b6de8788918f806efd812b743dcc0bbdd232392"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 14:35:18 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 14:35:18 2017 -0700"
      },
      "message": "Update docs/status.md now fexecve is implemented.\n\nBug: N/A\nTest: N/A\nChange-Id: Id0b9179a073f56e6264774db198b9e89d5e2ff95\n"
    },
    {
      "commit": "01a57d1eb6440f143bb72fb042148bf084d7668e",
      "tree": "beebf06a62cf6fa7b183cc359295819d02633a08",
      "parents": [
        "a1c30b98e99bd4ecd351c0bb0c4a52b39776242e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 14:00:13 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 19 15:45:04 2017 +0000"
      },
      "message": "Call fmtmsg/getdate/getdate_err useless.\n\nThey\u0027re POSIX, and they\u0027re implemented in iOS and glibc, but they\u0027re\nnot actually used in any codebase I have access to. They\u0027re *defined*\nin several places, and some of those places have a handful of tests,\nbut I couldn\u0027t find a single genuine caller.\n\nBug: N/A\nTest: N/A\nChange-Id: Id3e2c36183fcff323aa5a2e3a3dabaa8378fae56\n"
    },
    {
      "commit": "fa386e0d1eb52478f11b7232d280919245c1616c",
      "tree": "fcfb7d65c39ec91e1b1ec5bedeefe806861d21c4",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "message": "Add POSIX swab.\n\nSurprisingly to me, there are actual uses of `swab` in the codebases\nI have available to search, including one with a #ifndef __ANDROID__\naround it.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ic91b78ae22bb65c346cb46dd38916f48d979abe0\n"
    },
    {
      "commit": "dff08ced5685a0d1adb0ef875a15caca99556e1e",
      "tree": "9b84626d5a3f8dec14c36ad7a42221b0e11a6f5a",
      "parents": [
        "bf886f621b7c5fb4f690fe182f42640410a32d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 16 09:58:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 09:14:05 2017 -0700"
      },
      "message": "Add pthread_setschedprio.\n\nBug: http://b/26204555\nTest: ran tests\nChange-Id: Ic34062b9b6036a1ce2642a069514bab48a893338\n"
    },
    {
      "commit": "5033918092f27179b0c2bbe3babceaed509d4935",
      "tree": "77f5a0f1eb5fec80dc7bc6a297eed66af83713b9",
      "parents": [
        "a27bfd4131441a24fcfe6b5b3cf1cf9469be6719"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 13 17:52:01 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 15 10:37:51 2017 -0700"
      },
      "message": "Complete \u003cnetdb.h\u003e.\n\nAdd all the missing \u003cnetdb.h\u003e functions.\n\nAlso fix getservbyport to handle a null protocol correctly.\n\nAlso fix getservbyname/getservbyport to not interfere with getservent.\n\nAlso fix endservent to reset getservent iteration.\n\nAlso reduce unnecessary differences from upstream NetBSD sethostent.c.\n\nThe servent implementation is still horrific, and we should\nprobably support protoent too so that debugging tools can use\ngetprotobyname/getprotobynumber.\n\nBug: N/A\nTest: ran tests\nChange-Id: I639108c46df0a768af297cf3bbce857cb1bef9d9\n"
    },
    {
      "commit": "62446279f324d0b68aa786ad0caf06663282f1ee",
      "tree": "fad7a8dd42088dabea4bee46c80e9b25b8147b96",
      "parents": [
        "1a5a9b7bbcafbf7b3eab8b769ede3106ecf89d1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 13 10:21:37 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 13 10:21:37 2017 -0700"
      },
      "message": "Ignore pthread_getconcurrency/pthread_setconcurrency.\n\nThey\u0027re marked obsolescent in POSIX, don\u0027t clearly mean anything, aren\u0027t\nportable because the values don\u0027t mean anything, and are no-ops in other\nC libraries that do \"implement\" them.\n\nBug: N/A\nTest: N/A\nChange-Id: I07342a0a6a5f6616a8432bfea24ed944c7971d27\n"
    },
    {
      "commit": "d036a8dd176ee212dc04d140975d84f941265288",
      "tree": "f6c58d6ebe9bfe0a7d53fa47efe503037b380dea",
      "parents": [
        "ddd6436df2adef2e195cf45634750a31c3e03bd1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 20:32:22 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 20:32:22 2017 -0700"
      },
      "message": "Ignore endutxent.\n\nWe have no utmp, and we\u0027re ignoring getutxent/setutxent, and endutxent\nbelongs in the same group.\n\nBug: N/A\nTest: N/A\nChange-Id: Ide032960a0f95750f3bb8f2e62a25e5e7d25c7b6\n"
    },
    {
      "commit": "14e3ff9f09fdd52db43628ccd6f39a6d3fb41740",
      "tree": "8ed0ba1d0744ac95265e2ea634b6e1ff8d72d88c",
      "parents": [
        "e387c2f08841ac0f6578e903ab21b54d01f3266e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 06 16:58:36 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 11 14:57:49 2017 -0700"
      },
      "message": "Implement \u003cspawn.h\u003e.\n\nAs described here:\n\n  http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html\n\nAnd here:\n\n  http://man7.org/linux/man-pages/man3/posix_spawn.3.html\n\nBug: N/A (but mentioned in my inbox since 2013)\nTest: ran tests\nChange-Id: I0b27b2919b660779e3bd8a25fb429527c16dc621\n"
    },
    {
      "commit": "0bfcbaf4d069e005d6e959d97f8d11c77722b70d",
      "tree": "c1c11870e6184884cf8f2dc6cf9cdf250cf5abde",
      "parents": [
        "8468a1be012f485c4f6579204704b52f5409cdc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 28 09:18:34 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 29 11:07:36 2017 -0700"
      },
      "message": "Add new status document, based on internal wiki.\n\nAlso start breaking up the monolithic top level README.md, pulling the\n32-bit ABI stuff out into its own file, and moving the remaining benchmark\ndocumentation in with the rest of the benchmark documentation.\n\nBug: N/A\nTest: N/A\nChange-Id: Ic1b9995e27b5044199ed34883cc0b8faa894df0e\n"
    }
  ]
}
