)]}'
{
  "log": [
    {
      "commit": "141b917018048c5fda567785740dfaaf38e66f1e",
      "tree": "144416c96d8e3d1406ed78d8221a72a174317d80",
      "parents": [
        "999d82e51d8b96c622ecb63c69b56e7e7753e47d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 09 17:13:09 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 12 10:01:20 2021 -0700"
      },
      "message": "Switch to libbase SilentDeathTest.\n\nBug: http://b/184955378\nTest: treehugger\nChange-Id: Ie0849224074da92203340a741a86a24a4a3702c2\n"
    },
    {
      "commit": "bbbe27ff6e0ca301fb50012705eee8c8e380f929",
      "tree": "c618596436dfc4510efd919d5c5263c9d2cb9c4e",
      "parents": [
        "1ef8d418be8e4630125c599b0af5c1ec96a512d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 08 14:07:01 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 08 14:07:01 2021 -0800"
      },
      "message": "Improve system() coverage.\n\nThere\u0027s a weird POSIX special case that we implement but don\u0027t test.\nFound from looking through the coverage data.\n\nTest: treehugger\nChange-Id: I74f5f57c4d8062034a3f6e986f9e57091bfc7f7c\n"
    },
    {
      "commit": "f9cfecf3d4d848e247dc8bdc486ed227bff7315f",
      "tree": "00f1b5a19b7acaa16783ea14361d156a38a98989",
      "parents": [
        "15ade069b10f7f5291e48c01db2da4852dae04b7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 16:58:13 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 17:01:55 2021 -0800"
      },
      "message": "Fix freopen() where the path is null.\n\nThis has been in the standard since C99, but we\u0027ve never supported it\nbefore. It\u0027s apparently used by SPIRV-Tools.\n\nI tried implementing this the other way (with fcntl(2)) first, but\neventually realized that that\u0027s more complicated and gives worse\nresults. This implementation assumes that /proc is mounted, but so much\nof libc relies on that at this point that I don\u0027t think there\u0027s any\nrealistic case where the fcntl(2) implementation would be preferable,\nand there are many where it\u0027s not.\n\nThe fact that no-one\u0027s mentioned this until now suggests that it\u0027s not a\nheavily used feature anyway.\n\nI\u0027ve also replaced AssertCloseOnExec() with a CloseOnExec()\nboolean-valued function instead, because it\u0027s really annoying getting\nassertion failures that don\u0027t point you at the test line in question,\nand instead point to some common helper code.\n\nTest: treehugger\nChange-Id: Ia2e53bf2664a4f782581042054ecd492830e2aed\n"
    },
    {
      "commit": "7cebf835f310650f67b254295a685918681656fc",
      "tree": "daf485447fccb691750149c465b2c629adf6e305",
      "parents": [
        "a4110def5cec22306313a34fff64b5810c9b1792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:25:41 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 15:52:14 2020 -0700"
      },
      "message": "Various coverage improvements.\n\nMostly from extra test cases, but also:\n\n* Move the fgets size \u003c 0 assertion into fgets.\n\n* Use ELF aliases for strtoq/strtouq rather than duplicating code.\n\n* Don\u0027t check uname() succeeded, since it can\u0027t fail.\n\nTest: treehugger\nChange-Id: I2e6b3b88b0a3eb16bd68be68b9bc9f40d8043291\n"
    },
    {
      "commit": "8fe1fcd804add7a79a4f7dca44a9b624d031b99b",
      "tree": "d2de101136cc01f7d683f8f41a803a5103d80b81",
      "parents": [
        "51aa2cfe798e062d0f563d039bb427b527bdef8d",
        "22fb267ad6f95ab083abb56e914f8081552108a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 23 20:34:15 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 23 20:34:15 2020 +0000"
      },
      "message": "Merge \"Reimplement realpath.\""
    },
    {
      "commit": "75064c177fc11b032b4d68b60e6265f2c6c52d9b",
      "tree": "7606da424e6caeae2ab13eecf3097a385324711b",
      "parents": [
        "73e9f242ed07631798433df4e35f5f73443cb9f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 22 20:46:12 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 23 08:28:48 2020 -0800"
      },
      "message": "Initialize __progname correctly.\n\nsetprogname() does a basename, but we were initializing __progname\ndirectly. Stop doing that, and add some tests.\n\nTest: treehugger\nChange-Id: I06f306ade4161b2f0c7e314a3b1b30c9420117b7\n"
    },
    {
      "commit": "22fb267ad6f95ab083abb56e914f8081552108a7",
      "tree": "6c29afacad5803924a83a0430ea509eaa76a0564",
      "parents": [
        "73e9f242ed07631798433df4e35f5f73443cb9f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 01 08:07:25 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 22 18:30:50 2020 -0800"
      },
      "message": "Reimplement realpath.\n\nUse O_PATH like musl to let the kernel do the hard work, rather than the\ntraditional BSD manual scheme.\n\nAlso add the most obvious missing tests from reading the man page, plus\na non-obvious test for deleted files.\n\nBug: http://b/131435126\nTest: treehugger\nChange-Id: Ie8a8986fea55f045952a81afee377ce8288a49d5\n"
    },
    {
      "commit": "a22f5d5175df5c42ec86d2c2db250edf1f64084c",
      "tree": "66d2980a1b04626c7e4fc1437e96194b958ea8f8",
      "parents": [
        "0771b752f1b955e7ded6ccbbf825b0ae93439eb5"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 01 16:40:59 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 01 23:56:23 2019 -0800"
      },
      "message": "Make aligned_alloc match the standard.\n\nJemalloc does not verify that the size parameter is a multiple of\nalignment. Fix this since it only went into P.\n\nFix the unit tests, and fix malloc debug/malloc hooks to handle this\nnew restrictive behavior.\n\nBug: 126944692\n\nTest: Ran bionic unit tests.\nTest: Ran bionic unit tests with malloc hooks enabled (no new tests fail).\nTest: Ran bionic unit tests with malloc debug enabled (no new tests fail).\nTest: Ran malloc debug unit tests.\nChange-Id: I4d50785928815679c781ca729f998454d76b9192\n"
    },
    {
      "commit": "18181e6a0a55bb8778e82b5fbc0f7090380ea87d",
      "tree": "756a68e1676145785fcd7e4be1643ba9a31c118c",
      "parents": [
        "ccc0922653904525147b670f0aa25aa85c0d2022"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 30 13:52:36 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 30 13:52:36 2019 -0800"
      },
      "message": "Updates for glibc 2.17.\n\nBug: http://b/111358231\nTest: builds\nChange-Id: I542b2a9acc74261ad12b78e4add0f3ae77c3656c\n"
    },
    {
      "commit": "72a54a41a7ef0b1bc5a27e923b6d5b993a5271e0",
      "tree": "0bfa4bf6c2fa17343cf9fe9d6d03dcbf933d19df",
      "parents": [
        "0c499a69e3d8b858f53a7410285416c0cb30f83b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 14:47:25 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 18 14:47:25 2018 -0800"
      },
      "message": "Make stdlib.getloadavg more resiliant.\n\nUsing rint(3) gave us a step where if one side was 1.4 and the other\nwas 1.5, that would be 1 and 2 respectively. So instead use a simple\ndifference. Also log more detail in case this doesn\u0027t fix the flakiness.\n\nBug: http://b/121156651\nTest: ran tests\nChange-Id: Ib5b2eb05d2b1eb8c4a10b182a8703510a3ef0cea\n"
    },
    {
      "commit": "68a3bcc249b04394b73991c5272aa0ae4bde7676",
      "tree": "1198b5a3d89086b82223d8ee7271d215643c03a3",
      "parents": [
        "c2d3e67a77fe284e8f8f1ae4dd4a67a669bfd644"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 13 07:35:21 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 13 10:57:28 2018 -0800"
      },
      "message": "bionic tests: switch to using android-base/file.h for TemporaryFile\n\nA matching definition of TemporaryFile exists in libbase now.\n\nTest: compile\nBug: 119313545\nChange-Id: I6f84dbf3af9a9c4b270a2532a36c9cb4c0f6bb8f\n"
    },
    {
      "commit": "acd6f4f9f5d248345231542df91947b44a309c26",
      "tree": "56ebc05a9af0de40af4c624e722ca2e489d0c7f1",
      "parents": [
        "96bd339c51194bf56781ccc738fde8babd618fc6"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 06 16:48:27 2018 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Nov 06 16:59:25 2018 -0800"
      },
      "message": "Disable a few bionic tests under HWASan.\n\n* HWASan report invalid use of the allocator api (like alignment not\nbeing power of two, or allocation size too large) in a way tests do not\nexpect.\n* Code in .preinit_array runs before HWASan shadow is initialized and\nneeds to be excluded from instrumentation.\n* It looks that mm system calls (mmap/mprotect/etc) will not allow\ntagged pointers. In fact, the use of mprotect on malloc()ed memory is\ndoubtful - one can imagine some kind of speculative load from such\nmemory, as compiler knows that it is addressable.\n\nBug: 114279110\nTest: bionic-unit-tests with hwasan\n\nChange-Id: I6ba4b46a0d554de77c923ad134cf156ce4ddba1b\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": "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": "cae21a9b53a10f0cba79bf6783c4a5af16228fed",
      "tree": "c60c6622d2b80f9ad4ae5a990b7fb3439f16444b",
      "parents": [
        "be6fbae74fc3048647caadd58a9eaad81245e934"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 05 18:14:55 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 07 06:57:14 2018 -0800"
      },
      "message": "Add aligned_alloc to libc.\n\nBug: 72969374\n\nTest: Bionic unit tests pass.\nTest: Malloc debug unit tests pass.\nChange-Id: I235985bbc638855d94249c97c98f14ab2924bda0\n(cherry picked from commit d69ee59594088c0d92ba9273188ef53ea5e6cd6a)\n"
    },
    {
      "commit": "cb239bda6569c48efd3925bb87682fc0efa077fd",
      "tree": "becb3004fc64eee97b8dd3af604787b8a8eaa161",
      "parents": [
        "2c5f914584704878d6d1e0225304bd48844329e3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 20 17:37:11 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 21 17:44:22 2017 -0800"
      },
      "message": "Simplify atoi*/strto* for signed integers.\n\nMake the cost of strto\u003csigned\u003e closer to the cost of strto\u003cunsigned\u003e\nby removing an `if` from the inner loop. Previously a signed conversion\ncost 10ns more than an unsigned one.\n\nAfter:\n\n  BM_inttypes_strtoimax         81 ns         81 ns    8603362\n  BM_inttypes_strtoumax         78 ns         78 ns    8967174\n  BM_stdlib_strtol              81 ns         81 ns    8685537\n  BM_stdlib_strtoll             81 ns         81 ns    8685481\n  BM_stdlib_strtoul             78 ns         78 ns    8962569\n  BM_stdlib_strtoull            78 ns         78 ns    8972023\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I72dd5499427b6a940bd94c4d6f727f7efe134d7e\n"
    },
    {
      "commit": "f61a06e5981c8359a42493d6e53b1eca453a1dbe",
      "tree": "0a7d2f095c100edf1788becfa91e32028fd6162a",
      "parents": [
        "9dc37b9439063df2b0db6d1b3a37b491bc3cd427"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 16:11:37 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 16:11:37 2017 -0800"
      },
      "message": "Use std::to_string instead of std::stringstream.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ifeb7cf9517bcc05459e7ce316eb7604042510935\n"
    },
    {
      "commit": "1921dce886c8ea17fb7958b59a18a71b6dc7ff96",
      "tree": "7e28abec7cf31f9e06ebe79472e35a8b12af5ed2",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 10:27:27 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 19 13:55:54 2017 -0800"
      },
      "message": "Refactor the ato* and strto* family.\n\nThere are no meaningful changes here, just a minimal conversion to two\nC++ templates to make further changes easier.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: I958fbf17a85f19dd8f17bfb4bbb9314d220daa3b\n"
    },
    {
      "commit": "a7f12944d4154a445ee774683e27447d609de540",
      "tree": "7e2683233d0a36b825f630b1fc0f069e306463e8",
      "parents": [
        "59a6ee963f96eedf01df7db1e57397ff71852b15"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 13:55:53 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 13:55:53 2017 -0800"
      },
      "message": "A few more trivial tests.\n\nBased on gaps in the list of functions not referenced by the test\nexecutable.\n\nBug: N/A\nTest: ran tests\nChange-Id: I73c238e7cf360f94670c7cd13eb954341c940b7b\n"
    },
    {
      "commit": "608b4514cb37170349bc3bf8936f18bdb0d35054",
      "tree": "2bf70158dc1f625b73332bbf569573119fad492c",
      "parents": [
        "c1f6219c32543cb1d6701b13eb53b82abe1e0a12"
      ],
      "author": {
        "name": "Aleksandra Tsvetkova",
        "email": "aleksandra.tsvetkova@intel.com",
        "time": "Fri Feb 27 15:01:59 2015 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 15:44:20 2017 -0800"
      },
      "message": "A few new bionic tests.\n\nTrivial tests for \u003calloca.h\u003e and \u003cbyteswap.h\u003e, plus slightly improved\ntest coverage for \u003cinttypes.h\u003e and \u003cstdlib.h\u003e.\n\nBug: N/A\nTest: ran tests\nChange-Id: Idac4141ffc760c4f7756332477ce5112950d61a5\nSigned-off-by: Aleksandra Tsvetkova \u003caleksandra.tsvetkova@intel.com\u003e\n"
    },
    {
      "commit": "728cde5be92f65a70f1b4c5afc4494ab169ee95d",
      "tree": "a37bc96aba94b0bf2da3b81e711f4547fd8e14b9",
      "parents": [
        "265b1ab966cd8ffba430c0ab65f35752757b78ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 08 21:53:50 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 08 21:53:50 2017 -0800"
      },
      "message": "Add trivial ttyname(3) test.\n\nBug: N/A\nTest: ran tests\nChange-Id: Id5bf51a9c50db0fdbc9df0225165e87e698d0c83\n"
    },
    {
      "commit": "00d8a8b77922da018d71984ff90fd8877eaafd09",
      "tree": "08b369b64dbb5f879c13c9cb881cef9d3111ca28",
      "parents": [
        "04503da174b5e51ba9035fb79521a6a2af17c111"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 07 16:42:13 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 07 17:01:37 2017 -0700"
      },
      "message": "Trivial tests for \u003cinttypes.h\u003e/\u003cstdlib.h\u003e *abs and *div functions.\n\nBecause I want something to copy \u0026 paste into the NDK support library test\nthat\u0027s slightly better than taking the address of the function...\n\nBug: https://github.com/android-ndk/ndk/issues/502\nTest: ran tests\nChange-Id: If43089d16691d6a4dcf5d972450b14ed85bbca81\n"
    },
    {
      "commit": "95bd4884b525ad7a898105863c086113556ada29",
      "tree": "81f2d25c6491285b2fa0aade7a8298aeb7b33d7a",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Aug 14 14:48:55 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Aug 14 14:48:55 2017 -0700"
      },
      "message": "libc fortify: error on realpath(NULL, foo)\n\nI\u0027ve half a mind to make this a warning instead, since this sort of\ncall isn\u0027t UB. That said:\n- if the user really wants this (I can\u0027t imagine why they would), they\n  can just put NULL in a non-const variable,\n- we\u0027re slowly moving to -Werror ~everywhere anyway, and\n- it\u0027s presumably easier to change this from an error to a warning than\n  the other way around\n\nBug: 12231437\nTest: m checkbuild on bullhead internal master. No new\nCtsBionicTestCases failures.\n\nChange-Id: Ie8bf5a3455f663686fda4a7450fb35d147fa745e\n"
    },
    {
      "commit": "f826a37b95a80ad5ec668f92f65e785f0fa24edd",
      "tree": "664169de1587e87efd308aa6449db87e661ce080",
      "parents": [
        "3537331942cdebab5ab53104b852c997a9bc0be5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 13 09:35:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 13 09:35:15 2017 -0700"
      },
      "message": "Apply recent strto* fix, add new tests.\n\nThe behavior with \"0xy\" was wrong: we\u0027d swallow the \u0027x\u0027.\n\nBug: N/A\nTest: ran tests\nChange-Id: I2464d22a2408e99880303876306f18a25c390ad9\n"
    },
    {
      "commit": "3a32d95e288457ad12c3e1ff2034ca0d546704e3",
      "tree": "04d8ea3325dbd6520cfd552a488a331cefca5614",
      "parents": [
        "a09953e1a8df604d4c2c5f5b3b4c86e5b97694bf"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jun 15 13:30:44 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jun 15 14:18:08 2017 -0700"
      },
      "message": "Update posix_memalign testing.\n\nMove all tests into stdlib_test.cpp since that\u0027s where the definition lives\nin bionic.\n\nAdd a sweep test and a various size test.\n\nTest: Run new unit tests on glibc and angler.\nChange-Id: Ief1301f402bea82ce90240500dd6a01636dbdbae\n"
    },
    {
      "commit": "f634655e6453e7d7ec453faa16cf4c97e4a5c630",
      "tree": "ef75cd449ddf401e084a49f90bdb28109b58c6c9",
      "parents": [
        "4511a59ab461745ec8f0d520645aa88ad8390aba"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Dec 02 12:02:03 2016 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Dec 02 13:03:30 2016 -0800"
      },
      "message": "Fix wcsto* where strings begin with whitespace.\n\nThe libc++ tests caught this.\n\nTest: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests\nBug: None\nChange-Id: I14864e006f6cf9de3f96acac6aa3eb235894f2b1\n"
    },
    {
      "commit": "7f0849fd113691e62af0400989936d3eff151e37",
      "tree": "166fa5afeed341e2685091c89d9d8418acb66e5d",
      "parents": [
        "a2b947e0a5ff4106e36f8110232131dab1356c25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:17:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 15:01:54 2016 -0700"
      },
      "message": "Fix sscanf/wcstod parsing of NaNs.\n\nThe parsefloat routines -- which let us pass NaNs and infinities on to\nstrto(f|d|ld) -- come from NetBSD.\n\nAlso fix LP64\u0027s strtold to return a NaN, and fix all the architectures\nto return quiet NaNs.\n\nAlso fix wcstof/wcstod/wcstold to use parsefloat so they support hex\nfloats.\n\nLots of new tests.\n\nBug: http://b/31101647\nChange-Id: Id7d46ac2d8acb8770b5e8c445e87cfabfde6f111\n"
    },
    {
      "commit": "6f6f9058fa7ba3cc9d53bd93e46c254ef8e8cd96",
      "tree": "572c806c787d2c3a1626a9d97b37de78072f3485",
      "parents": [
        "671e6b20eabd0a1ab973f77dff272a00a4096ee7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 28 14:54:52 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 28 16:41:29 2016 -0700"
      },
      "message": "Implement mblen(3).\n\nChange-Id: I65948ea5b9ecd63f966ba767ad6db4a2effc4700\n"
    },
    {
      "commit": "df143f8576afb0446794d4ccb1fb02aed196c82a",
      "tree": "098728b018b7869bd8952e3e39894df3280808bc",
      "parents": [
        "2678c90f7d98a962badfe4bb736a26fb21485c7e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 04 17:34:04 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 04 17:34:04 2016 -0700"
      },
      "message": "Add POSIX getsubopt(3).\n\nBug: http://b/27952303\nChange-Id: I8a816477545dadcbd5c055714e76263574446b6f\n"
    },
    {
      "commit": "33697a0c43c48e15c3bcf018138b9b837d0099cd",
      "tree": "5abb2ab07c7f1322defd9fd6313cd11e12978579",
      "parents": [
        "94bb0fab931102f1fcf393aa507a6b77b741844f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 13:04:57 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 13:13:52 2016 -0800"
      },
      "message": "Factor out the waiting for children in bionic tests.\n\nChange-Id: I4a1e51b6920b33dc892d447f5bd6d10f1cb2704a\n"
    },
    {
      "commit": "274afe8f0eab4139c94d5f8b1ee3d267f449ef42",
      "tree": "9424b40a8247c264e489358ce007b3ff4176d868",
      "parents": [
        "39ba30354a3890dd653ab55819d38eed3855edaa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 12:40:08 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 06 14:14:37 2014 -0800"
      },
      "message": "Add POSIX lcong48.\n\nChange-Id: I821046816661d77275cb02c8c99d526bb41afb9c\n"
    },
    {
      "commit": "9df70403d95f5cfe6824e38a9a6c35f9b9bbc76a",
      "tree": "5a2914b5db892fa3d2c17caf9e9a53f7fc0a5d93",
      "parents": [
        "2311383180aee9388d28b03901a1e4ef021bcfa7"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Nov 05 18:01:01 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Nov 06 11:09:03 2014 -0800"
      },
      "message": "make all bionic death tests not dumpable\n\nBug: 18067305\n\nChange-Id: Ia1ecacf47eddecc9bc58aaac779e0c218f463179\n"
    },
    {
      "commit": "89aaaffbf8f2d09b56c1cc1345cdaf28c331ab5e",
      "tree": "88117e80c7f4c4ca41512e73e2995fd29526a8f6",
      "parents": [
        "13dcb88b0f8ce238456059fdc0b6c946caed1e3a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 28 17:54:23 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 28 17:54:23 2014 -0700"
      },
      "message": "Extra strtod/strtof tests.\n\nCheck that libc doesn\u0027t suffer from a couple of bugs that affected\nJava in the past.\n\nBug: 2206701\nChange-Id: I9eb64d7ff2fa0b79e93079b897a5fb78bef866be\n"
    },
    {
      "commit": "31e072fc9bcf6517d763c7af6d872efd1784629e",
      "tree": "579255b857eac677bec2b2e74e1ecf827b04059b",
      "parents": [
        "1f7d5ac53854a09bbcace08b3a1d1b9cf3f2eed3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 30 16:15:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 30 16:40:41 2014 -0700"
      },
      "message": "Update our FreeBSD realpath(3) to upstream head.\n\nChange-Id: I8c89728184ecd2c1a28a05cefa84a5037d28b552\n"
    },
    {
      "commit": "31165edf5733dae8fbe79551b18cbc0e56c8d808",
      "tree": "e7ed184d94540342f16514a84e02c1f8d38882db",
      "parents": [
        "87b6906f6e0c17b2541535be8e054324cc2fef4a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 17:34:29 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 18:21:52 2014 -0700"
      },
      "message": "CLOEXEC support in fdopen, freopen, and mkostemp/mkostemps.\n\nChange-Id: I74ea88e0d4973d6ab3c57da7d8bb643c31592b14\n"
    },
    {
      "commit": "b05ec5ae933987e6b4a4f6a318cb13e035ad33e9",
      "tree": "64f418a870ba50ccec912a11f90605418f74c844",
      "parents": [
        "8642165344217877b8a70811d19e09b584a0e10a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 14:53:10 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 14:53:10 2014 -0700"
      },
      "message": "Pull in upstream fixes to reject invalid bases.\n\nAlso add tests to make sure the full set works correctly.\n\nChange-Id: I3e7f237f12c9c93e1185a97c9717803e7e55a73c\n"
    },
    {
      "commit": "4916706cfe590eb06c9b5bd4bd402ce056034d51",
      "tree": "75e0434f53123a7f34ffb405b84899bbacc80b38",
      "parents": [
        "50a9630cc26cbc1e38e3ddc589f04fa5cd91697b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 17:24:00 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 19:55:23 2014 -0700"
      },
      "message": "Fix linkage of grantpt(3).\n\nAlso clean up the implementation of all the pty functions, add tests,\nand fix the stub implementations of ttyname(3) and ttyname_r(3).\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d58888\nChange-Id: I0fb36438cd1abf8d4e87c29415f03db9ba13c3c2\n"
    },
    {
      "commit": "76c241b091b4d9d9a9237d40e814e52ce2917f47",
      "tree": "fb7139355285a3b9efcabd6009b8f2d36024a9fe",
      "parents": [
        "83ce99d8b7e2b15b2169e6e6e18e871ad35abb6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 11:57:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 12:02:22 2014 -0700"
      },
      "message": "Implement rand/srand in terms of random/srandom.\n\nCode developed for glibc or older versions of bionic might expect more\nrandomness than the BSD implementation provides.\n\nBug: 15829381\nChange-Id: Ia5a908a816e0a5f0639f514107a6384a51ec157e\n"
    },
    {
      "commit": "a0beeeabbc8735bc830544cbbb1d920122b8d958",
      "tree": "472a5720b949ff3f5a1e3b37cd273f981d286f28",
      "parents": [
        "d242aff47dc4eaa5081dc7af821308d353cd1090"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 12 11:48:04 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 12 14:37:31 2014 -0700"
      },
      "message": "Get the full set of PRNG functions in \u003cstdlib.h\u003e\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d58888\nChange-Id: I435250bdae302e8bd7e29977d0fde7b9afbfca5e\n"
    },
    {
      "commit": "063525c61d24776094d76971f33920e2a2079530",
      "tree": "de279e25b05c43dbb06bc3ceb49f23bed3874377",
      "parents": [
        "a26dd781fe675cf94c62183da27622eb83ff6fa7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "message": "Consistently use #if defined(__BIONIC__) in tests.\n\nI\u0027ve also switched some tests to be positive rather than negative,\nbecause !defined is slightly harder to reason about and there are\nonly two cases: bionic and glibc.\n\nChange-Id: I8d3ac40420ca5aead3e88c69cf293f267273c8ef\n"
    },
    {
      "commit": "b8425c549a0bfe08b01b5906b95603d8523c1b16",
      "tree": "2efb8b0f66e170dff1cb9ff3a90001cc49ff9291",
      "parents": [
        "85e780d0557643a81c4a33b3bc5d3806ef9d78e3"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 29 17:49:06 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 29 19:17:00 2014 -0700"
      },
      "message": "Adds quick_exit(3) and at_quick_exit(3) from freebsd\n\nChange-Id: I4fe88abd8f7b8aa45e58aeb2529d59a8d555d338\n"
    },
    {
      "commit": "9f525644df99cb2f7f81a23ca23840f0a8f82275",
      "tree": "edfe771f84024370aba4988e016534e5c535984e",
      "parents": [
        "ac70d2e1fe71f98232942237c2b463ea3adbf662"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 17:14:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 17:16:13 2014 -0700"
      },
      "message": "Implement _Exit(3).\n\nChange-Id: Ida6ac844cc87d38c9645b197dd8188bb73e27dbe\n"
    },
    {
      "commit": "f171b34cf045115b82ccb89b57feb56d3cad472b",
      "tree": "60d746b63387b151f00dfd3272773f2701e93929",
      "parents": [
        "f212bbf666b77777063a3a94a672bcae80b15253"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 17 16:40:26 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 17 16:40:26 2014 -0700"
      },
      "message": "Use the float/double assert macros.\n\nThe normal ASSERT_EQ macros don\u0027t work quite right for float/double values,\nand result in false failures. Use the correct macros instead.\n\nBug: 13511379\nChange-Id: Ic2feee7f3d3569f57b6453b8fa95222846c625cd\n"
    },
    {
      "commit": "5a8173860d65182af022be88fed0c5d8d5dcb69d",
      "tree": "907e7263b278203193247ef582a4e1a8b263e21e",
      "parents": [
        "56e1eebd39be4830f309603b38e4b1118c544fb3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 16:12:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 16:12:57 2014 -0700"
      },
      "message": "Ensure we always have symbols for atof, strtof, strtold.\n\nWe\u0027ll need a better implementation of strtold for LP64, but all our\nlong double functions are currently broken for LP64 anyway so this\nisn\u0027t a regression.\n\nChange-Id: I2bdebac11245d31521d5fa09a16331c03dc4339c\n"
    },
    {
      "commit": "40488560c17e41c0980b3a08ef54ec38bb572a41",
      "tree": "77542af209ac1c3061418a1f215ef43e5575b6e4",
      "parents": [
        "2282e16d76c6691968bd62a4c4bb3ecefabc98ca"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 13:50:38 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 13:50:38 2014 -0700"
      },
      "message": "Include what you use.\n\nDon\u0027t rely on transitive includes. (Even though that works fine in AOSP.)\n\nChange-Id: Ifc06575e4aea383cfff24d6c5c14fc0a7aabdf2b\n"
    },
    {
      "commit": "3cdf5739cd34757943a5fff9d26efeb8da04cb09",
      "tree": "fa1afe43a3097d8073b749b6d836431fd435fd1f",
      "parents": [
        "dd8c7863c613290acaa8bc4b90af34f020e0bee3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 12:54:44 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 12:54:44 2014 -0700"
      },
      "message": "Add a basic unit test for system(3).\n\nChange-Id: Ibc5ac21f3663685d89ce261b58d6ea386fc1ff88\n"
    },
    {
      "commit": "fe317a3775e16d466bb884a8e054fd77f7087bb3",
      "tree": "c26e2b737d6741add069324fc0dc8a2ad31cd731",
      "parents": [
        "da030de702b756077fec536ed139e7ea38b51022"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 21 15:11:03 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 24 20:19:19 2014 +0000"
      },
      "message": "Added mkstemp64\n\nBug: 13076637\nChange-Id: I41bf28ab3e6c7325470781e9323eeec023483df5\n"
    },
    {
      "commit": "877ec6d90418ff1d6597147d355a2229fdffae7e",
      "tree": "e475221a7fbff1564ad37548e920333c49cc5873",
      "parents": [
        "f246c589d66e5dc0e3cddc3c37261fb0e3fc67e9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 17:40:18 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 18 19:48:11 2013 -0800"
      },
      "message": "Fix pthread_join.\n\nLet the kernel keep pthread_internal_t::tid updated, including\nacross forks and for the main thread. This then lets us fix\npthread_join to only return after the thread has really exited.\n\nAlso fix the thread attributes of the main thread so we don\u0027t\nunmap the main thread\u0027s stack (which is really owned by the\ndynamic linker and contains things like environment variables),\nwhich fixes crashes when joining with an exited main thread\nand also fixes problems reported publicly with accessing environment\nvariables after the main thread exits (for which I\u0027ve added a new\nunit test).\n\nIn passing I also fixed a bug where if the clone(2) inside\npthread_create(3) fails, we\u0027d unmap the child\u0027s stack and TLS (which\ncontains the mutex) and then try to unlock the mutex. Boom! It wasn\u0027t\nuntil after I\u0027d uploaded the fix for this that I came across a new\npublic bug reporting this exact failure.\n\nBug: 8206355\nBug: 11693195\nBug: https://code.google.com/p/android/issues/detail?id\u003d57421\nBug: https://code.google.com/p/android/issues/detail?id\u003d62392\nChange-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b\n"
    },
    {
      "commit": "0b25f633a23e575c8a1f9547d1af5dc5b0157a1c",
      "tree": "9528feda9457254ba485c9576643f2ed1a18da70",
      "parents": [
        "ed36d95fac5881f78a601e2932f51edfd27c6ba6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 18:08:34 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 18:08:34 2013 -0700"
      },
      "message": "Switch to current FreeBSD qsort.\n\nChange-Id: Ic46cd0b663dc5fa78c99dd38db0bfe849a25e789\n"
    },
    {
      "commit": "f0777843c03deb26b1f78c8edd17c557041696e9",
      "tree": "c6daa38f29aa9a327b094eda31340251fdedef11",
      "parents": [
        "c5c6cb3f13642386e08acf687b4bc39f568bad0c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 01 16:59:46 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 01 17:11:39 2013 -0800"
      },
      "message": "Move realpath.c to upstream-freebsd.\n\nThis is actually a slightly newer upstream version than the one I\noriginally pulled. Hopefully now it\u0027s in upstream-freebsd it will\nbe easier to track upstream, though I still need to sit down and\nwrite the necessary scripts at some point.\n\nBug: 5110679\nChange-Id: I87e563f0f95aa8e68b45578e2a8f448bbf827a33\n"
    },
    {
      "commit": "b16b72248bd109b6073df6a45aeffaa69e38cfc6",
      "tree": "e30f6d4ea4a010c2888773e68861955b636a0230",
      "parents": [
        "a1821f015306e221e6a51e5acc27176ae2d72f6b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 04 13:18:00 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 04 13:18:00 2013 -0800"
      },
      "message": "Add basic tests for posix_memalign.\n\nChange-Id: Ie34fcc87aa9e8bfc715e25161752024b11e2032a\n"
    },
    {
      "commit": "774c7f54ff375d71106283d42779b0cc5f238f87",
      "tree": "3dc911f915d8d120089ca5afd60bb84b6d51e71e",
      "parents": [
        "5b6346f6d5dca4022fe0044dd2807c19ac596788"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 13:11:03 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 13:53:41 2012 -0700"
      },
      "message": "Upgrade to the current NetBSD rand implementation.\n\nAlso add basic unit tests.\n\nChange-Id: I7fc7ef61d47c1e8fdf8b8eff67a635220c3afd56\n"
    }
  ]
}
