)]}'
{
  "log": [
    {
      "commit": "8c22ff76e263db28afbfb08c2d59a46a76707d99",
      "tree": "4a49511083a75acc5ab05768a3e2c632da1282c0",
      "parents": [
        "9b908c8e36a6e644d5c42a7ed549ae7d4ab57667",
        "a4edf7a57cf818d19546c86b74146335468ea53f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 29 02:09:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Oct 29 02:09:56 2016 +0000"
      },
      "message": "Merge \"Fix gettid() after clone().\""
    },
    {
      "commit": "a4edf7a57cf818d19546c86b74146335468ea53f",
      "tree": "1199a22df4fe7e794399611016d0a6cf7561b497",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Tue Oct 25 10:29:02 2016 -0400"
      },
      "committer": {
        "name": "Robert Sesek",
        "email": "rsesek@google.com",
        "time": "Fri Oct 28 12:14:23 2016 -0400"
      },
      "message": "Fix gettid() after clone().\n\nThe tid is cached in the pthread_internal_t and is properly re-set after fork()\nand pthread_create(). But after a plain clone() the value is stale from the\nparent.\n\nTest: mmma bionic/tests\nTest: bionic-unit-tests-static --gtest_filter\u003d*fork*:*clone*\nTest: m checkbuild tests\nTest: angler boots\n\nBug: 32305649\nChange-Id: I026d416d1537484cd3e05c8493a35e5ed2acc8ed\n"
    },
    {
      "commit": "53de874c3cd5b8aa243546bb1c206f5a709db1fd",
      "tree": "982316adf0c878fb85bf7c4579a04c4f631424dc",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "message": "The default locale \"\" should be a UTF-8 locale.\n\n\"ls -q\" (or \"adb shell -tt ls\") was mangling non-ASCII because mbrtowc\nwas returning multibyte characters as their individual bytes. This was\nbecause toybox asks for \"\" rather than \"C.UTF-8\", and for some reason\nwe were interpreting that as \"C\" rather than \"C.UTF-8\".\n\nTest: bionic tests, ls\nChange-Id: Ic60e3b90cd5fe689e5489fad0d5d91062b9594ed\n"
    },
    {
      "commit": "22950687eeec07bf5075f5edaac7774857b2147f",
      "tree": "75148134ef17e8728df3e43880ae9755653c92ba",
      "parents": [
        "49ef8c822f1bfa6559782efce0f0813f0967ea29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 14 12:15:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 14 14:35:26 2016 -0700"
      },
      "message": "Fix ifaddrs error handling.\n\nAn NLMSG_ERROR packet includes an errno value that we should use. Also report\nfailures to create a socket immediately, rather than falling through to the\nsend and reporting EBADF.\n\nBug: http://b/32145516\nBug: http://b/31038971\nTest: bionic ifaddr tests on ryu (with broken kernel) and flounder\nChange-Id: I84c480c5b75077eb90d40426a9d66d7bffbd3d51\n"
    },
    {
      "commit": "59bde2e8f4dacc059beb7269b86b276ec091ad57",
      "tree": "77ad07c47fe0b5d69b57babf1d034c1ae4ef3b57",
      "parents": [
        "1ba0e27462ff1b2e80457d6cb100b448afe6d10e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 07 13:21:03 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 07 13:21:03 2016 -0700"
      },
      "message": "Use STDERR_FILENO instead of opening /dev/stderr.\n\n/dev/stderr is a symlink to /proc/self/fd/2, so this only has different\nbehavior when we\u0027re out of file descriptors, or when STDERR_FILENO is in\na different state (it\u0027s not at the end, it\u0027s not writable, etc.).\n\nTest: mma\nChange-Id: Ie99688d810218eca8482ff060373e88c4e001824\n"
    },
    {
      "commit": "89e29ee485253ad39b8bfd514f1c3b5c3e52f98d",
      "tree": "e12e4cb724035f506308849fac970a11887db661",
      "parents": [
        "cc9e9933e1b85592f96d04962b20e5051dc8ec28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 29 17:21:43 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 29 17:26:13 2016 -0700"
      },
      "message": "Fix mbsnrtowcs where `dst` is null.\n\nPOSIX is its usual unintelligible self\n(http://pubs.opengroup.org/onlinepubs/9699919799/functions/mbsrtowcs.html),\nbut the ISO C11 standard (7.29.6.4.1 paragraph 2) is pretty clear: *src\nshould change if and only if dst is non-null.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d166381\nTest: bionic tests\nChange-Id: Ibc631cfa5b1bf4a6f56963feba9f0eea27b07984\n"
    },
    {
      "commit": "3103f6d39e4ae309a9374ee38f414400c889c558",
      "tree": "e67c7868d7bcc5b0f76fc060f8ac7724b6865677",
      "parents": [
        "904460f749b5a90ca25228a6a3fa0c9ef413a961"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Sep 21 01:42:19 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 22 00:44:37 2016 -0700"
      },
      "message": "Add strtof_l and strtod_l.\n\nlibc++ needs these now. Add shims to match the others.\n\nTest: make checkbuild tests\nBug: http://b/31639993\nChange-Id: Ifec6c32099145d8d3d1a5639a4809e5e9f553c33\n"
    },
    {
      "commit": "cb728e6f63e90405223e2a72f119967368f78b7a",
      "tree": "2b43dfd6050c9858c98bc3428e4207b417274fc3",
      "parents": [
        "b36efa4343d79e3fb548d12d039193850246b892"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 13:56:37 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "Fix instances of \u0027#if __i386__\u0027.\n\nTriggers -Wundef, which is on in -Weverything.\n\nBug: http://b/31496165\nChange-Id: Ie2241b19abd6257bebf68baa3ecc4de8066c722e\n"
    },
    {
      "commit": "b36efa4343d79e3fb548d12d039193850246b892",
      "tree": "727ac48a5341d8d50d6a297fe67f6067005befd3",
      "parents": [
        "56228373014e5ee0a3ff32930df9cfa05fef7389"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 13:55:41 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "Fix instances of \u0027#if __LP64__\u0027.\n\nTriggers -Wundef, which is on in -Weverything.\n\nBug: http://b/31496165\nChange-Id: Ib06107073f7dd1d584c19c222d0430da9d35630b\n"
    },
    {
      "commit": "56228373014e5ee0a3ff32930df9cfa05fef7389",
      "tree": "a5149db6bd31fd5f5cee1ebd4f86a8ec33db563b",
      "parents": [
        "b32184eb847b7140771251aa9eb5e37cb12d1e7f",
        "4159e866ab7b2397e714d7a1b309c5e6719c4620"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 19:28:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 15 19:28:56 2016 +0000"
      },
      "message": "Merge \"Initialize main thread TLS before the global stack guard.\""
    },
    {
      "commit": "23f088cd74b3c1da7aed07e5984970d38c85cd03",
      "tree": "042cd074ec38ad4950ab734288728900f3081094",
      "parents": [
        "572791e027a0dd3fdcba720f5e0c390d5aaef21d"
      ],
      "author": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Fri Sep 09 02:01:01 2016 +0200"
      },
      "committer": {
        "name": "Nikola Veljkovic",
        "email": "Nikola.Veljkovic@imgtec.com",
        "time": "Fri Sep 09 12:24:04 2016 +0200"
      },
      "message": "[mips64] Fix ipc syscalls\n\nMips defines CONFIG_ARCH_WANT_IPC_PARSE_VERSION for both 32 and 64-bit.\nSee arch/mips/Kconfig. Other supported arches do it for 32-bit only.\nThis translates in having to pass IPC_64 flag for mips32 and mips64.\nWe use __mips__ to pass the flag, which is also defined for both 32 and\n64-bit.\n\nChange fixes bionic smoke tests (sys_msg, sys_sem, sys_shm) for mips64.\n\nTest: bionic-unit-tests --gtest_filter\u003d\"sys_*.smoke\"\nChange-Id: I918e4ffafd2002bb3e62ee252406746778100031\n"
    },
    {
      "commit": "7f0849fd113691e62af0400989936d3eff151e37",
      "tree": "166fa5afeed341e2685091c89d9d8418acb66e5d",
      "parents": [
        "a2b947e0a5ff4106e36f8110232131dab1356c25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:17:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 15:01:54 2016 -0700"
      },
      "message": "Fix sscanf/wcstod parsing of NaNs.\n\nThe parsefloat routines -- which let us pass NaNs and infinities on to\nstrto(f|d|ld) -- come from NetBSD.\n\nAlso fix LP64\u0027s strtold to return a NaN, and fix all the architectures\nto return quiet NaNs.\n\nAlso fix wcstof/wcstod/wcstold to use parsefloat so they support hex\nfloats.\n\nLots of new tests.\n\nBug: http://b/31101647\nChange-Id: Id7d46ac2d8acb8770b5e8c445e87cfabfde6f111\n"
    },
    {
      "commit": "4159e866ab7b2397e714d7a1b309c5e6719c4620",
      "tree": "82b27430fff08a08a81d94d9b5283fdc1d6d63fe",
      "parents": [
        "bfad958982a6b1c8c957c0eb951826d0c369eedd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 01 22:58:44 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Sep 06 12:12:19 2016 -0700"
      },
      "message": "Initialize main thread TLS before the global stack guard.\n\nThe GCE breakage caused by 78a52f19bb207d1c736f1d5362e01f338d78645 was\ndue to TLS_SLOT_SELF being uninitialized before the use of errno by\nsyscall. Separate stack guard initialization from TLS initialization so\nthat stack guard initialization can make syscalls.\n\nBug: http://b/29622562\nBug: http://b/31251721\nChange-Id: Id0e4379e0efb7194a2df7bd16211ff11c6598033\n"
    },
    {
      "commit": "b3fbee449c314aee4bdc2f1720a931ea56c32f62",
      "tree": "d4202c7d215136a804729c9c364d223611eb8b61",
      "parents": [
        "5faef47e438d20600655e2f5ef473c2d63cbf2c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 02 08:39:29 2016 +0000"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Sep 02 08:39:29 2016 +0000"
      },
      "message": "Revert \"Update getentropy_linux.c from upstream.\"\n\nThis reverts commit 5faef47e438d20600655e2f5ef473c2d63cbf2c0.\n\nBug: http://b/31251721\nChange-Id: I20a091f385fb77ccc68b8d9fb1d2aee3dec0d0ff\n"
    },
    {
      "commit": "5faef47e438d20600655e2f5ef473c2d63cbf2c0",
      "tree": "2c4dc3b5b8835af4d02f477df021fbc4e9eb9edd",
      "parents": [
        "af071ed598e467c9fff37e60363d6351badfe3e0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 23 19:06:35 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Aug 31 18:00:47 2016 -0700"
      },
      "message": "Update getentropy_linux.c from upstream.\n\nBug: http://b/29622562\nChange-Id: Ia65c038effa6e806c325a8e93c1fe80c50a9f2c9\n"
    },
    {
      "commit": "864f3ec1865c1185acf5ac1652b7b790abea76b0",
      "tree": "d8fb1fee4b680409b0d896fbb52373655cce6adf",
      "parents": [
        "0b1a2826508ee5b191650d1d8b1f6b028e970f3b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 26 15:45:05 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 26 17:03:01 2016 -0700"
      },
      "message": "Initialize __abort_message_ptr in linker\u0027s copy of libc\n\nThe linker calls to __libc_fatal resulted in tombstones\nwith missing abort message. This commit fixes it by\ninitializing __abort_message_ptr for the linker\u0027s copy\nof libc.\n\nBug: http://b/31095185\nChange-Id: I883d654d7fd0ef309c80f8021202b6bfd5d5cea5\n"
    },
    {
      "commit": "63615066d9f0b0b1c653c91a9b305e6c292c835a",
      "tree": "698764ee1bd4a4051e31538d2fde7f8018bfaac5",
      "parents": [
        "e1d792b10c0c825e271cb1f729dcdafa35583722"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 17:40:27 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 17:40:27 2016 -0700"
      },
      "message": "Fix execvp/execvpe behavior with absolute paths and ENOEXEC.\n\nBug: http://b/31091962\nChange-Id: Id0b3d41868f5e3ed1ccf618bfefb46609367bc9a\n"
    },
    {
      "commit": "3c1159024c5ca3e85d4fd076f39712da4b27ed34",
      "tree": "bb306b8d3fea15b742ea4a1e633c7e08870b0b00",
      "parents": [
        "fac56897f8e665d966496c4cdf6737610caf3156"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 19:27:04 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 22:56:52 2016 -0700"
      },
      "message": "Fix execvpe ENOEXEC behavior.\n\nThe special case for absolute paths wasn\u0027t handling ENOEXEC.\n\nAlso add more extensive tests for execvpe.\n\nAlso switch to manually doing the fork in ExecTestHelper::Run because\nASSERT_EXIT doesn\u0027t actually return, meaning we were only running the\nfirst part of each test.\n\nBug: http://b/31073104\nChange-Id: I7a4640afc6d290c51ba2e66fc1b9bb6b0fc174f7\n"
    },
    {
      "commit": "fac56897f8e665d966496c4cdf6737610caf3156",
      "tree": "29debb25d7c13ad346e0107d66053f93c91ce4c3",
      "parents": [
        "e8cce1aa09abe588fce1dc51392474afb0f462e8",
        "1b40aafe3f192f0fdccc04e75cc48b0ed74bc23e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 21:21:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 21:21:43 2016 +0000"
      },
      "message": "Merge \"Rewrite the exec family.\""
    },
    {
      "commit": "1b40aafe3f192f0fdccc04e75cc48b0ed74bc23e",
      "tree": "808ecabf314edc507022c559090ae7c7ce411bd7",
      "parents": [
        "fc9958ce7658d9cc46d9b101fca5720503d51cae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 10:11:36 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 13:03:04 2016 -0700"
      },
      "message": "Rewrite the exec family.\n\n* Removes duplication.\n* Removes fixed PATH_MAX limit.\n* Adds basic tests.\n\nBug: http://b/30032507\nChange-Id: I4087a9de3e53884ac3297ebafbec4e6f8a9871b6\n"
    },
    {
      "commit": "1878ea08de92f68cd89da76b5368fe81b535a029",
      "tree": "698f5c5557a72f440d7e448679662887fdf08377",
      "parents": [
        "7d4e28a486dc1f2bf4cf755e5e19202c54173905"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 18:25:07 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 18:25:07 2016 -0700"
      },
      "message": "Fix mips build.\n\nTests still pass on arm/aarch64/x86/x86-64.\n\nChange-Id: I6a17b5bca356dbc7273b5427c68d538c0dd6deed\n"
    },
    {
      "commit": "7c59f3f6f3b6dbfcfb261b07062590d2dad2da62",
      "tree": "79e7bb9bd94e4c39cc85acb534df52245d458050",
      "parents": [
        "fe4ab7dc30154f83a45769150392d6b47885c164"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 18:14:26 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 15:23:38 2016 -0700"
      },
      "message": "Flesh out \u003csys/msg.h\u003e, \u003csys/sem.h\u003e, \u003csys/shm.h\u003e.\n\nAlso fix \u003csys/ipc.h\u003e.\n\nNot useful except to systems/bringup folks for testing. Trivial tests\nadded, and double-checked under strace to see that things look right.\n\nx86 -- which works differently to everything else -- tested on the host.\n\nBug: http://b/27952303\nChange-Id: I328534e994ae9e90755f545478fba03038c0bb94\n"
    },
    {
      "commit": "cae33ade6c1300587db418f8d505b219b37503d6",
      "tree": "ca57675256c69d915bdaf19fd4733a3edc16ab73",
      "parents": [
        "228e747b6c40da2945310cda214b829f7de8cb60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 15 14:14:40 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 12:28:58 2016 -0700"
      },
      "message": "Fix memmem behavior with empty needles.\n\nChange-Id: I8b893d80c27b548652d843af9520d7adc8ba8902\n"
    },
    {
      "commit": "51b3b4458522ecb7340eb7b8cef08ed60346cb39",
      "tree": "359c9a36ba502544a100570b6b75061b3bd8a3da",
      "parents": [
        "4a77fa3dcd9a6da622c77e25a3537f3a6a594863",
        "38dba2e7e16028cdede8f48c58d18e79491f8ed9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 19:53:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 19:53:46 2016 +0000"
      },
      "message": "Merge \"Fix sysconf(_SC_ARG_MAX).\""
    },
    {
      "commit": "4a77fa3dcd9a6da622c77e25a3537f3a6a594863",
      "tree": "4b2e9a7c1080c660f1086b7ea5b90ce283bff14b",
      "parents": [
        "f8f2949744f6d4e047e85135e0bf5a944c4d5ee8",
        "8197aca7f2110fa764c1aecd005d878d8ddd3a3c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 19:48:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 19:48:38 2016 +0000"
      },
      "message": "Merge \"Fix recvfrom prototype.\""
    },
    {
      "commit": "f8f2949744f6d4e047e85135e0bf5a944c4d5ee8",
      "tree": "9017056d415ad6a4bc8de086130efc92457bd8c2",
      "parents": [
        "a1858a7f59758d6ed8a1f48eca9be9c0d3a061db",
        "02ac028bf7899f293a39e991f346fd35e2910949"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 19:13:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 19:13:37 2016 +0000"
      },
      "message": "Merge \"Fix pthread_barrierattr_getpshared prototype.\""
    },
    {
      "commit": "a1858a7f59758d6ed8a1f48eca9be9c0d3a061db",
      "tree": "320763d46dd9e61c7c78643da1817bea49083575",
      "parents": [
        "5b45d2fec8178cb376edfbf431f083f8435a0f0d",
        "e43778880e622bd4a8ed6fa5a21a35f84d43db09"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 18:52:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 18:52:58 2016 +0000"
      },
      "message": "Merge \"POSIX says IPPORT_RESERVED is in \u003cnetdb.h\u003e.\""
    },
    {
      "commit": "e43778880e622bd4a8ed6fa5a21a35f84d43db09",
      "tree": "40b98e92bfad370be69155107473c98c13bd1f32",
      "parents": [
        "166f875eabdd2b7c508fc4ed1789a0d37fb1bdce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 10:38:35 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 10:38:35 2016 -0700"
      },
      "message": "POSIX says IPPORT_RESERVED is in \u003cnetdb.h\u003e.\n\nIn \u003cnetdb.h\u003e:\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netdb.h.html\n\nNot in \u003cnetinet/in.h\u003e:\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html\n\nChange-Id: Ie34cdb80eeb1443cf292944f3c68d8383aee2295\n"
    },
    {
      "commit": "b17d845d9bdd5164aaa8160fa160d3f5cdbae25f",
      "tree": "a55d980d4827040f1ec936e0d7afa24466506dfb",
      "parents": [
        "166f875eabdd2b7c508fc4ed1789a0d37fb1bdce",
        "c508de0e416049d55ac951cf3971c7b8cf40c4b1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 17:07:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 17:07:41 2016 +0000"
      },
      "message": "Merge \"Use sysinfo(2) to implement more of \u003csys/sysinfo.h\u003e.\""
    },
    {
      "commit": "8197aca7f2110fa764c1aecd005d878d8ddd3a3c",
      "tree": "574da9846618e33411c5ba2a03ca31c0add87155",
      "parents": [
        "166f875eabdd2b7c508fc4ed1789a0d37fb1bdce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 09:20:07 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 09:20:07 2016 -0700"
      },
      "message": "Fix recvfrom prototype.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html\n\nChange-Id: Iba203c74045c88e53e28c2e0c8bc1f9ac63ce23e\n"
    },
    {
      "commit": "02ac028bf7899f293a39e991f346fd35e2910949",
      "tree": "37ceef29e63f7a0a86110afbf543cdea4acd84e4",
      "parents": [
        "166f875eabdd2b7c508fc4ed1789a0d37fb1bdce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 23:18:13 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 23:18:13 2016 -0700"
      },
      "message": "Fix pthread_barrierattr_getpshared prototype.\n\nAs http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_barrierattr_getpshared.html\nis my witness, there\u0027s a missing `const` here.\n\nChange-Id: Ifd68188fb952460b64d144bdc21a53bc40ed82a7\n"
    },
    {
      "commit": "c508de0e416049d55ac951cf3971c7b8cf40c4b1",
      "tree": "97919d07c28c22e16dde8588914234f75d9c1fc4",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 14:51:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 14:51:31 2016 -0700"
      },
      "message": "Use sysinfo(2) to implement more of \u003csys/sysinfo.h\u003e.\n\nWe already had implementations of some of the functions, and I didn\u0027t\nbother rewriting them when we added sysinfo(2). Ross Anderson said in\nhttps://www.lightbluetouchpaper.org/2016/07/29/yet-another-android-side-channel/\nthat we should \"simply disable access to all procfs files\", which made\nme curious how many places we use /proc in bionic. This is the one that\u0027s\nobviously unnecessary. The others I\u0027m not aware of alternative APIs for.\n\nChange-Id: Ia64f36b76f29a7a1dd67845270a5472e121aae10\n"
    },
    {
      "commit": "299e501419100de0c80280327d285f52a0aed60b",
      "tree": "d3580818d3cd75ddb6b3db6690ebd0f26cada0f8",
      "parents": [
        "18af5bfa5d54676289ba9889a213bb842d6cf3b2",
        "5ffed9b8560636e1a00b4383ec1d18489e44821c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 10 23:59:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 10 23:59:19 2016 +0000"
      },
      "message": "Merge \"Move brillo closer to Android.\""
    },
    {
      "commit": "38dba2e7e16028cdede8f48c58d18e79491f8ed9",
      "tree": "1d1f5128740bd3319b70815eb388dc6554a587c7",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 15:51:06 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 15:51:06 2016 -0700"
      },
      "message": "Fix sysconf(_SC_ARG_MAX).\n\nARG_MAX hasn\u0027t been a constant since Linux 2.6.23.\n\nBug: http://lists.landley.net/pipermail/toybox-landley.net/2016-August/008592.html\nChange-Id: I1eddb562751604c75b89fa610d79be0655c53693\nTest: ran the bionic tests on device and against glibc\n"
    },
    {
      "commit": "5ffed9b8560636e1a00b4383ec1d18489e44821c",
      "tree": "c2960041e43cb0596051ec44dd0027ee892d108c",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 14:06:14 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 14:08:31 2016 -0700"
      },
      "message": "Move brillo closer to Android.\n\nHiding our legacy cruft seemed like a good idea, but in practice it will only\nmean worse interoperability.\n\nPlus we got it wrong, as the recent `putw` example showed.\n\nChange-Id: I167c7168eff133889028089c22a7a0dfb8d6d0cf\n"
    },
    {
      "commit": "fb3873d4db3012ac2d1ba87d688138798787c6e0",
      "tree": "1e392110ebe5ca3b0f3f466e493c1085b403b864",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 11:07:54 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 11:50:12 2016 -0700"
      },
      "message": "Fortify vsnprintf in more cases.\n\nBug: http://b/30445072\nChange-Id: I1893890f0e3b56533eef053eda1bd96a0b9a5119\n"
    },
    {
      "commit": "53cf348c829cb36328755bbdbe46668ecbc55348",
      "tree": "261d3370757fb0ae1f8f63b344802e62ed9aefe8",
      "parents": [
        "6ba5f07e3f6dbc487eb2cd341a9a4e804afafd51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 13:06:41 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 16:27:23 2016 -0700"
      },
      "message": "Remove more stdio copy/paste.\n\nChange-Id: Ia92629b75d2c153ecf1cec711e2f9575eef604ab\n"
    },
    {
      "commit": "0a610d00fee344f804d3338c880d73d2de5db143",
      "tree": "9f7c63a66f0fdf057b5b78d4c250ab80152e0659",
      "parents": [
        "4bc6eea83e127a50d4763f067486ec79ed4e61a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "message": "Upgrade to tzcode-2016f.\n\nNo significant changes other than a default implementation of strftime_l.\n\nChange-Id: I6edd2c03e5e7559f012c0c87d43f7109d641d3ca\n"
    },
    {
      "commit": "4f62c5b3115f98a15595018698ec71baf1746ca4",
      "tree": "7df69a54647bc3682ef7000d465e937c43edf00a",
      "parents": [
        "237366867a4fbd8c2fed74512ca26d2ce3b39b82",
        "b6453c52ac55f85d7f88f04db6e320825cea9bf7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 22 19:20:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 22 19:20:58 2016 +0000"
      },
      "message": "Merge changes I7718b1ba,I648adc35\n\n* changes:\n  Only initialize the global stack protector once.\n  Make getpid work before TLS has been initialized.\n"
    },
    {
      "commit": "d13e9a603fa7e490853e6065240cdbfe532ada7a",
      "tree": "638cb927828a152ff13531c5795f74c0edb356ab",
      "parents": [
        "d941f72e75c744a2493bbdbf759e96c32f764e68"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jul 15 16:31:42 2016 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Jul 19 18:18:22 2016 -0700"
      },
      "message": "Align-up and randomize shared libraries.\n\nThis change implements the following property:\n  Any 2**N aligned memory region on size 2**N contains no more than one DSO.\n\nThe value N can be configured, with 16 or 18 looking like a good choice.\nAdditionally, DSOs are loaded at random page-aligned address inside these large\nregions.\n\nThis change has dual purpose:\n1. Larger values of N allow a lot more compact CFI shadow implementation.\n   See change I14dfea630de468eb5620e7f55f92b1397ba06217.\n   For example, CFI shadow for the system_server process has the following size (RSS, KB):\n   152 for N \u003d 12, 32 for N \u003d 16, 16 for N \u003d 18.\n2. Extra randomization is good for security.\n\nThis change does not result in extra RAM usage, because everything is still page-aligned.\nIt does result in a bit more VM fragmentation because of the gaps between shared libraries.\nAs it turns out, this fragmentation is barely noticeable because the kernel creates new mapping\nat the highest possible address, and we do enough small mappings to almost completely fill the\ngaps (ex. in the Zygote the gaps are filled with .ttf file mappings and thread stacks).\n\nI\u0027ve measured VM fragmentation as the sum of all VM gaps (unmapped regions) that are larger\nthan 1MB according to /proc/$PID/maps. On aosp_angler-userdebug, the numbers are (in GB):\n\n                |   N \u003d 12  |  N \u003d 18\nsystem_server   |   521.9   |  521.1\nzygote64        |   522.1   |  521.3\nzygote32        |   2.55    |  2.55\nmediaserver     |   4.00    |  4.00\n\nChange-Id: Ia6df840dd409c82837efd1f263be420d9723c84a\n"
    },
    {
      "commit": "a24a2476d036989fabe229802448e42196c881ed",
      "tree": "2db38f989cd13686055085a6f12588cc09f86751",
      "parents": [
        "1e4a945f27e1ed51d25a6703a0017d28a9d0ce18",
        "fe4a4d8f67cf84b0b10d6c689f356229e057603b"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jul 15 01:29:28 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 15 01:29:28 2016 +0000"
      },
      "message": "Merge \"Force pthread_cond_timedwait_relative_np using CLOCK_MONOTONIC.\""
    },
    {
      "commit": "fe4a4d8f67cf84b0b10d6c689f356229e057603b",
      "tree": "c68f6e42176bed86291d0ccc5e02a5b8ed386a96",
      "parents": [
        "cc55bd831318d485dcf04149d423d91756379153"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jul 13 15:53:25 2016 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jul 13 16:08:48 2016 -0700"
      },
      "message": "Force pthread_cond_timedwait_relative_np using CLOCK_MONOTONIC.\n\nPrevious patch changed pthread_cond_timedwait_relative_np to use\nCLOCK_REALTIME, which causes app compatibility problem. So change\nit back to CLOCK_MONOTONIC.\n\nBug: 30106240\nChange-Id: I8e04058e92ede098f4f9f8d133f094001921441e\n"
    },
    {
      "commit": "4ce902c30e087f45c6d6ede2012519e2eea44194",
      "tree": "b4ffde5e3437db3f222fb08a9a8e971edde70b36",
      "parents": [
        "7fd1e75e2482e7f28eff15d9b6c8614132680ce6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 12 13:55:51 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 12 13:55:51 2016 -0700"
      },
      "message": "Support 32-bit ARM vdso.\n\nLinux 4.1 added this.\n\nBug: http://b/19198045\nChange-Id: I28be802ff403a61dd6733a001411b3ff05fef5a5\n"
    },
    {
      "commit": "b6453c52ac55f85d7f88f04db6e320825cea9bf7",
      "tree": "b1ecbacb334303b5e0e0c2773700977eeb97b574",
      "parents": [
        "1089afb744de588d841ffdeed158dbcd113a8e02"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 29 16:47:53 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 30 12:58:32 2016 -0700"
      },
      "message": "Only initialize the global stack protector once.\n\nBefore, dynamic executables would initialize the global stack protector\ntwice, once for the linker, and once for the executable. This worked\nbecause the result was the same for both initializations, because it\nused getauxval(AT_RANDOM), which won\u0027t be the case once arc4random gets\nused for it.\n\nBug: http://b/29622562\nChange-Id: I7718b1ba8ee8fac7127ab2360cb1088e510fef5c\nTest: ran the stack protector tests on angler (32/64bit, static/dynamic)\n"
    },
    {
      "commit": "1089afb744de588d841ffdeed158dbcd113a8e02",
      "tree": "7ce78b2a4780ccf8be0841a900354e2613149929",
      "parents": [
        "1159c196db79993b153114bcc4363f7e0f831773"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 29 16:19:25 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 30 12:58:32 2016 -0700"
      },
      "message": "Make getpid work before TLS has been initialized.\n\nBug: http://b/29622562\nChange-Id: I648adc35c04604a7e8bc649c425f07a723e96d3a\nTest: code dependent on this change no longer crashes\n"
    },
    {
      "commit": "c80ffece02310ecdc8aefce26dd2b5f24cc6d4a9",
      "tree": "052d8f1b3a8d02f84e2471078e39eff1dfac3769",
      "parents": [
        "3e4590143904057bdc62b7bd7f38bd7429fff8e6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 24 16:18:21 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 28 15:52:59 2016 -0700"
      },
      "message": "Defer registration of the arc4random fork-detect handler.\n\nPreviously, arc4random would register a fork-detecting pthread_atfork\nhandler to not have to call getpid() after a fork. pthread_atfork uses\npthread_mutex_lock, which requires the current thread to be initialized,\npreventing the use of arc4random for initializing the global stack guard,\nwhich needs to happen before the main thread has been initialized.\n\nExtract the arc4random fork-detection flag and use the existing\narc4random fork handler to set it.\n\nBug: http://b/29622562\nChange-Id: I98c9329fa0e489c3f78cad52747eaaf2f5226b80\n"
    },
    {
      "commit": "3e4590143904057bdc62b7bd7f38bd7429fff8e6",
      "tree": "09422d3505631f04ee6ebac8e1f79d213e04db2e",
      "parents": [
        "250667aaf69bcb701fea099caef6204ad84b1d32"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 24 16:13:33 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 28 15:52:59 2016 -0700"
      },
      "message": "Make getpid work before the main thread is initialized.\n\nBug: http://b/29622562\nTest: code dependent on this change no longer crashes\nChange-Id: I40936f7b35d9e58182aeb2e34e52f54088700825\n"
    },
    {
      "commit": "250667aaf69bcb701fea099caef6204ad84b1d32",
      "tree": "fe3891a4c1811da6e88975684704581cea05d2dc",
      "parents": [
        "36ad0207d67ef395b003dbf75d2c0193d3b8e093"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 24 13:04:09 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 28 15:52:59 2016 -0700"
      },
      "message": "Take the arc4random lock before forking.\n\nBug: http://b/24675038\nTest: stepped through a fork call in gdb\nChange-Id: I09d20ff1d103d0c005f2a0cdd9b0a8710ab2392c\n"
    },
    {
      "commit": "213584bb9d4f9cd4af19735054240dc7ea5ccb55",
      "tree": "1b5ffb7bc0badea8c1dc4b1fbe07f4f36959161a",
      "parents": [
        "93bae32c27f41e55e1cf9a6f5f8a05fbc1feaf1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 10 12:49:04 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 10 12:49:04 2016 -0700"
      },
      "message": "Remove obsolete GCC workaround.\n\nbionic is no longer built with GCC.\n\nChange-Id: If01c53d8f6ec7e801bfcdc61775cc24356eb8434\n"
    },
    {
      "commit": "449eff02d2a44a2089ed3b6e3082cc416e5dd49e",
      "tree": "54e9501a59c2191692a6c441087743878e2b08ec",
      "parents": [
        "cf4c3649ade6cf2eb750c8ea50638a13d282013a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 08 19:51:20 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 08 19:51:20 2016 -0700"
      },
      "message": "Add futimes, futimesat, and lutimes.\n\nSpotted these while cleaning up \u003csys/cdefs.h\u003e --- if we remove __USE_XOPEN2K8,\nlibchrome decides you \"must\" have futimes. Adding the missing functions (all\njust alternative interfaces to utimensat(2) system call) lets us clean up\nwithout breaking anything.\n\nChange-Id: If44fab08ee3de0e31066d650d128a3c96323529b\n"
    },
    {
      "commit": "e20730ca0be39c52f22d6155043cbb69abd7eb36",
      "tree": "29c1765943979be2df6a616417cd27702885b8b9",
      "parents": [
        "8a48d9d63bae31bf2e639a88ae9caa6c00f1a90a",
        "6e9c1f61d8ea04d35d18709e373da355ca32e523"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 02 02:25:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 02 02:25:59 2016 +0000"
      },
      "message": "Merge \"Remove declaration for __brk.\""
    },
    {
      "commit": "6e9c1f61d8ea04d35d18709e373da355ca32e523",
      "tree": "53246aadce25707fa94f0df83e07be4dc30810a8",
      "parents": [
        "5a9d5691a44a128fc6a170380f0683b734dabada"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:46:19 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 01 18:21:06 2016 -0700"
      },
      "message": "Remove declaration for __brk.\n\nBug: http://b/28178111\nChange-Id: I972789cd5da552000c32fd107b9df98330323d89\n"
    },
    {
      "commit": "676f6e3c7f29d4b77de8400f3b9a0113d6bb8a3b",
      "tree": "a8fab306440b4b07105b34ca67c3d343e6c98a82",
      "parents": [
        "2f82dc50edd86fbc5e28e3695c5615f8325b2cd6",
        "f44b232d85e9d8be6242251d570742d49a7066db"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 27 23:36:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 27 23:36:18 2016 +0000"
      },
      "message": "Merge \"Remove libstdc++ include files.\""
    },
    {
      "commit": "f44b232d85e9d8be6242251d570742d49a7066db",
      "tree": "1815588b5a604e10ecffeef11c6299efb830c863",
      "parents": [
        "a3c2df93789bb7536bd96a01bbf952b6fcee269b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 26 17:35:00 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 27 15:49:31 2016 -0700"
      },
      "message": "Remove libstdc++ include files.\n\nWe still need \u003cnew\u003e for bionic, and to build libstdc++.\n\nChange-Id: Ic7b26340576a5355007a06db9c1bec395be49ae1\n"
    },
    {
      "commit": "bdd8f896ddf027491b1e4aa7013a429c8e5702b2",
      "tree": "a9a630f79a7645fa5e6fc3410028a7bdcfc03171",
      "parents": [
        "a3c2df93789bb7536bd96a01bbf952b6fcee269b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 26 16:38:34 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 26 16:38:34 2016 -0700"
      },
      "message": "Improve diagnostics from the assembler __strcpy_chk routines.\n\nChange-Id: Ib95b598f7f8338cc1a618c00232a4259dc4a6319\n"
    },
    {
      "commit": "c75da09f4fb4ee24f14d40de6f47f03ee29b1ba1",
      "tree": "304e2932b31d1c27ebb852622964d9f4d30f37c7",
      "parents": [
        "e85de5b103388f047cc307a362ee8cdc6ef010ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 25 17:01:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 26 14:55:00 2016 -0700"
      },
      "message": "Improve diagnostics from the assembler __strcat_chk routines.\n\nChange-Id: I44cbe5389c66de6618e581a6e302eea22c39d6fb\n"
    },
    {
      "commit": "8963dd337e0b43087d5a79dc6d50f2aa29e07b9f",
      "tree": "c4d6cb556f8d5655f74f1951982ca95c7c3d5d05",
      "parents": [
        "51ee871e19601e1edbac948f961fc557b537870a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 23 11:11:12 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 23 11:20:19 2016 -0700"
      },
      "message": "Make all rt_sigtimedwait signatures match.\n\nThere\u0027s no change to the generated stubs, because the script only cares\nthat this is a pointer type, not what it\u0027s a pointer to.\n\nChange-Id: I766720965f0f3d201fc90677a076b26870485377\n"
    },
    {
      "commit": "f6324d540a54aac8b757fea4d925bc6537d6790c",
      "tree": "37b39d8a9b5e025c8a81c814bbeb2edcedb61b88",
      "parents": [
        "56469e8de225bdd16e6f0fa887ce65294bfb9ed1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 12 13:11:28 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 13 11:00:22 2016 -0700"
      },
      "message": "Fix our *ether* headers mess.\n\nMove everything to where it should be.\n\nAlong the way, we lose \u003cnet/ethertypes.h\u003e. glibc only has a handful of these\ntypes, and they\u0027re all in \u003cnet/ethernet.h\u003e, not \u003cnet/ethertypes.h\u003e. I\u0027ve taken\nthe liberty of not including the AppleTalk ones, since it is 2016.\n\nAlso, \u003cnet/if_ether.h\u003e should be \u003cnetinet/if_ether.h\u003e (though with different\ncontents).\n\nBug: http://b/28519060\nChange-Id: Ia41c3fc136fd3e6b008c8d08018e0629134ea6fc\n"
    },
    {
      "commit": "e104a2edf3c459b2e79e86d4de388fb7a1efe198",
      "tree": "4f50d2627e6f47f6908561114d95b32a168691bc",
      "parents": [
        "5ac45a2add41fd7c1640815accf09a29bd14aac6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 06 15:55:36 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 06 16:37:00 2016 -0700"
      },
      "message": "Generalize the clone function slightly.\n\n* Allow clone where both the child function and stack are null. It\u0027s\nobviously wrong to ask to call a function without a stack, but it\u0027s not\nnecessarily wrong to supply no stack if you\u0027re also not supplying a\nfunction.\n\n* Reimplement fork in terms of the clone function, rather than using the\nclone system call directly.\n\nThis is intended as a step towards enabling use of pid namespaces.\n\nChange-Id: I03c89bd1dc540d8b4ed1c8fdf6644290744b9e91\n"
    },
    {
      "commit": "baa2a973bd776a51bb05a8590ab05d86eea7b321",
      "tree": "ec24271fcc30be277ea654ef8425f4a109732f17",
      "parents": [
        "7ee8e299ba5dc7bb68c88931b04b10a69cf0f21f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 13 16:58:50 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 05 17:11:54 2016 -0700"
      },
      "message": "Use clang\u0027s nullability instead of nonnull.\n\nhttp://clang.llvm.org/docs/AttributeReference.html#nonnull\n\n_Nonnull is similar to the nonnull attribute in that it will instruct\ncompilers to warn the user if it can prove that a null argument is\nbeing passed. Unlike the nonnull attribute, this annotation indicated\nthat a value *should not* be null, not that it *cannot* be null, or\neven that the behavior is undefined. The important distinction is that\nthe optimizer will perform surprising optimizations like the\nfollowing:\n\n    void foo(void*) __attribute__(nonnull, 1);\n\n    int bar(int* p) {\n      foo(p);\n\n      // The following null check will be elided because nonnull\n      // attribute means that, since we call foo with p, p can be\n      // assumed to not be null. Thus this will crash if we are called\n      // with a null pointer.\n      if (src !\u003d NULL) {\n        return *p;\n      }\n      return 0;\n    }\n\n    int main() {\n      return bar(NULL);\n    }\n\nNote that by doing this we are no longer attaching any sort of\nattribute for GCC (GCC doesn\u0027t support attaching nonnull directly to a\nparameter, only to the function and naming the arguments\npositionally). This means we won\u0027t be getting a warning for this case\nfrom GCC any more. People that listen to warnings tend to use clang\nanyway, and we\u0027re quickly moving toward that as the default, so this\nseems to be an acceptable tradeoff.\n\nChange-Id: Ie05fe7cec2f19a082c1defb303f82bcf9241b88d\n"
    },
    {
      "commit": "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4",
      "tree": "b37425943e0cd7284b319d6cad98bd71dcfdc8bb",
      "parents": [
        "9ee905f12fa0aeb4ae0df708e15d2ffcfaf58000"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8\n"
    },
    {
      "commit": "b0da5760dcd827f2c211ad405cd64cfbd1b296ae",
      "tree": "5191b5757ba602b069f1fcba089f002142c53713",
      "parents": [
        "ec4671928c39b14f7f22c12ffef0e0bcdd58edfe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 02 12:44:41 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 02 12:44:41 2016 -0700"
      },
      "message": "Move the IEEE fp header out of the public headers.\n\nBug: http://b/28519060\nChange-Id: I9f1a1a9ac1f22462bf86991b57c51824cb42eefd\n"
    },
    {
      "commit": "7ba106c784e0566f4e246c1d814f32eb31467f86",
      "tree": "f4cef7e2b13dce81973908c96e2836d643a1f258",
      "parents": [
        "bd8773d19d96cd8794f944ce5f93f4feb43e386b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 28 18:22:06 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 28 18:22:06 2016 -0700"
      },
      "message": "Fix \u003cwctype.h\u003e.\n\n* Fix the return type of towlower_l/towupper_l.\n* Implement wctrans/wctrans_l/towctrans/towctrans_l.\n* Move declarations that POSIX says are available from both \u003cwchar.h\u003e and\n  \u003cwctype.h\u003e to \u003cbits/wctype.h\u003e and include from both POSIX headers.\n* Write the missing tests.\n\nChange-Id: I3221da5f3d7e8a2fb0a7619dc724de45f7b55398\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": "722ab05b255070e6c8add450c94eeb790618c98e",
      "tree": "23156dbf2afd440a10973ecf3b93aa9635132b92",
      "parents": [
        "130bec7103561fc3657e8a431ca55026430b843e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 06 10:35:48 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 22 10:44:19 2016 -0700"
      },
      "message": "bionic: Implement getpwent and getgrent\n\nNot efficient to iterate through given the large number of Android\nids (AID). Compile warning will result if you use these functions,\ntelling you as much. Not for general consumption, however for\nexample, some filesystem tests would like to see these to perform\nall corners.\n\nAbout 1/4 second for getpwent, and 1/8 second for getgrent to iterate\nthrough all reserved Android aids.\n\nBug: 27999086\nChange-Id: I7784273b7875c38e4954ae21d314f35e4bf8c2fc\n"
    },
    {
      "commit": "13d79abebe472d63288481b419ff36489345000f",
      "tree": "27d16910595a83f0d8b0495d4deaa7641d4b62c0",
      "parents": [
        "668fddb3ba36b52a16381513b1a0a42d9dd910e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 15 17:40:33 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 18 12:05:18 2016 -0700"
      },
      "message": "Fix ftw/nftw to only report unreadable directories once.\n\nAlso remove all the copy \u0026 paste.\n\nBug: http://b/28197840\nChange-Id: Ia43e9ffd838dabb511a6e54403d6f62066383e4d\n"
    },
    {
      "commit": "26bc9c64d5b0cad921e3070a4f94fa04e1077d90",
      "tree": "ee8d932accecefc50d5b7daeefd564a94ac20659",
      "parents": [
        "0e3b719bfa84cfe35188513cf6fcbf5b44ea1c43"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:08:43 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 13 17:45:39 2016 -0700"
      },
      "message": "Move \u003csys/_sigdefs.h\u003e and \u003csys/_errdefs.h\u003e to private.\n\nBug: http://b/28067717\nChange-Id: I02f78ad7293a15ff45e35e9c20f60d3d023931eb\n"
    },
    {
      "commit": "08794d43adedb30aef58f0c77646ed5eaf9395e3",
      "tree": "becf7d9587df2402345a1f200f6d4762be0c59b3",
      "parents": [
        "322d6cfb33c817f46ea853de51f0a006cb874bef",
        "8c8ef5965d6bc684d78299ff88062e6e87df5b48"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 08 17:59:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 08 17:59:24 2016 +0000"
      },
      "message": "Merge changes Ife4692e4,I7304cc1d,If19653d0,I769ca792,I93625d19, ...\n\n* changes:\n  Move \u003csys/sysconf.h\u003e to \u003cbits/sysconf.h\u003e.\n  Remove mbstowcs from \u003cwchar.h\u003e.\n  Extract getopt and friends to \u003cbits/getopt.h\u003e\n  Remove declaration of unlinkat from \u003cfcntl.h\u003e.\n  Extract ioctl to \u003cbits/ioctl.h\u003e.\n  Extract fcntl to \u003cbits/fcntl.h\u003e.\n  Extract strcasecmp and friends to \u003cbits/strcasecmp.h\u003e.\n  Make \u003cbits/lockf.h\u003e compile standalone.\n  Make \u003candroid/dlext.h\u003e compile standalone.\n  Make the network headers compile standalone.\n  Remove duplicate declaration of mlock, munlock.\n"
    },
    {
      "commit": "8c8ef5965d6bc684d78299ff88062e6e87df5b48",
      "tree": "38e073c425c88f08ed7c46219bc7698cc3caf158",
      "parents": [
        "752a82c9ed4339994755f71b52c825f600dc4aa5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 07 16:33:30 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 07 18:02:00 2016 -0700"
      },
      "message": "Move \u003csys/sysconf.h\u003e to \u003cbits/sysconf.h\u003e.\n\nAlso remove unneeded declaration of sysconf in \u003cunistd.h\u003e.\n\nBug: http://b/28067717\nChange-Id: Ife4692e48ca97480e422db0686c61133e1d619aa\n"
    },
    {
      "commit": "6cfb84b97eb5a60c0cea06145677fec6ae754b49",
      "tree": "cd330b6524d7e09e875a5270d6dae2e97a42441c",
      "parents": [
        "5e843fb7c4da3e45c099abd1cb72462dbd775078"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 06 17:14:45 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 06 17:22:44 2016 -0700"
      },
      "message": "Add trivial no-op \u003cnl_types.h\u003e.\n\nNeeded to build OpenMP.\n\nBug: http://b/27617302\nChange-Id: Iac15c84ead6f5d5274cfdb2d6d4a4ec0072244bb\n"
    },
    {
      "commit": "8d387ee1ecbcde6d7435a909476e50afc9bed464",
      "tree": "8638b1be5d0c1fb6523fdf76340c19ccc9272340",
      "parents": [
        "9deb01c5a6b98e1b5d33a8f44168884f01bf96d5"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 05 09:24:59 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 06 21:18:49 2016 +0000"
      },
      "message": "fix oem_XXXX ids to incorporate both ranges\n\nThe XXXX now lines up to the underlying uid and has no offset.\nWork with AID_OEM_RESERVED uids.\n\nTest uses hard coded values to catch changes in the API expectations\nthat may occur in private/android_filesystem_config.h.\n\nSideEffects: names change, some product dependencies.\n\nBug: 27999086\nChange-Id: Ic2b4c36de74ae009a44e14711c75834293828207\n"
    },
    {
      "commit": "e4510a2779cba5fff5d09b17fcc288d7ae04660b",
      "tree": "07599e275b023bee775c54dc15bace67a06860ab",
      "parents": [
        "af11ec2e9283c7bc2f28953841573ea7ac31bba4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 06 08:34:58 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 06 08:34:58 2016 -0700"
      },
      "message": "Break up the rest of stubs.cpp.\n\nBug: http://b/27999086\nChange-Id: Ibcc2c5171d43ebd26b486642052738473f3b7714\n"
    },
    {
      "commit": "b38347ad8bee0e35ab45f1658c780e25033c28b1",
      "tree": "81f36add48738611c1cb54469e33489c0c022e59",
      "parents": [
        "d9bba70c3d55a48eb75f3e41c2e0b92982bc7a59"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 05 09:09:46 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 06 07:26:01 2016 -0700"
      },
      "message": "bionic: split out getpwnam and friends\n\n- added grp_pwd.cpp containing POSIX passwd and group functions,\n  colocated because they share with the Android ID (AID) roots.\n- stubs.cpp contains all the truly empty functions (network and\n  protocol accessors)\n\nBug: 27999086\nChange-Id: I036f9e2dd246f48302cb7c97d23176fa24d19c33\n"
    },
    {
      "commit": "7f72ad4d6c6f4c99726fff423bdbbdca1032fdc2",
      "tree": "157fe5d3c01930627c72ba75c39aa50497de0cf2",
      "parents": [
        "95ddb26256db734be7f7efc8cba3362bcececea9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 11:56:03 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 12:17:22 2016 -0700"
      },
      "message": "Add sync_file_range to \u003cfcntl.h\u003e.\n\nBug: http://b/27952303\nChange-Id: Idadfacd657ed415abc11684b9471e4e24c2fbf05\n"
    },
    {
      "commit": "7897405439630d59b8f2c9fc51239c44bac4fe9e",
      "tree": "361c96043f628af4836a1e0f9bd95ad6f6eb3943",
      "parents": [
        "14fc307518d231933fde018992f1f063ff53d505",
        "5375bf639856cbeb1b4872553a56b95e641f1404"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 17:01:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 05 17:01:23 2016 +0000"
      },
      "message": "Merge \"Add SysV signal handling\""
    },
    {
      "commit": "5b528c08320937ac3685955693c55fb71cb82223",
      "tree": "dca536621dccc20a3299de5a407e504d3e8e92d8",
      "parents": [
        "9a30714c87aa1a3dfc632e367ae60b24ee897ce6",
        "5db4b6e5de626eb473e3d9c70eba99749eee20cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 00:36:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 05 00:36:08 2016 +0000"
      },
      "message": "Merge \"Make it harder to use a broken legacy function by accident.\""
    },
    {
      "commit": "9a30714c87aa1a3dfc632e367ae60b24ee897ce6",
      "tree": "d473df596644d8170a85f5326324e28e5516584e",
      "parents": [
        "2678c90f7d98a962badfe4bb736a26fb21485c7e",
        "ff624c2c174b3f19e8c6e0c8f782cdd0caa26f74"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Apr 05 00:08:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 05 00:08:05 2016 +0000"
      },
      "message": "Merge \"Format code to calculate thread stack and signal stack.\""
    },
    {
      "commit": "5375bf639856cbeb1b4872553a56b95e641f1404",
      "tree": "b81f0552d30d52629acb95510bd80bcc77c4ab1f",
      "parents": [
        "2678c90f7d98a962badfe4bb736a26fb21485c7e"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Mon Feb 29 12:35:33 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 04 16:33:29 2016 -0700"
      },
      "message": "Add SysV signal handling\n\nImplement the legacy SysV signal handling functions sighold(),\nsigignore(), sigpause(), sigrelse(), and sigset() in terms of the newer\nPOSIX signal APIs.  As of POSIX 2013 the SysV signal APIs are deprecated\nbut still required.\n\nChange-Id: I4ca40e3d706605a7d1a30dc76c78b2b24586387d\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "ff624c2c174b3f19e8c6e0c8f782cdd0caa26f74",
      "tree": "38fa4a1037feb3a24fcdbbd968018ef10416cba8",
      "parents": [
        "eaf50be332f015bd90e45d4f9d111b24cd230f00"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 30 17:48:50 2016 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Apr 04 16:19:39 2016 -0700"
      },
      "message": "Format code to calculate thread stack and signal stack.\n\nThe code to calculate thread stack and signal stack looks weird:\nthe thread stack size and signal stack size are related with\neach other on 32-bit mode, but not on 64-bit mode. So change the\ncode to make the logic more resonable. This doesn\u0027t change anything\nas we have defined SIGSTKSZ to 16K on arm64.\n\nBug: 28005110\n\nChange-Id: I04d2488cfb96ee7e2d894d062c66cef950fec418\n"
    },
    {
      "commit": "5db4b6e5de626eb473e3d9c70eba99749eee20cf",
      "tree": "50599f0f7bd86ca17b22b8626e3e12eb91867f68",
      "parents": [
        "2678c90f7d98a962badfe4bb736a26fb21485c7e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 04 16:15:37 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 04 16:15:37 2016 -0700"
      },
      "message": "Make it harder to use a broken legacy function by accident.\n\nThis function only exists for backwards compatibility, so leave it as it was.\n\nBug: http://b/26944282\nChange-Id: I31973d1402660933103ee2d815649ab9569e4dfc\n"
    },
    {
      "commit": "af39abdef53062c9bbc246371ac49ef5412eeb80",
      "tree": "0b27b0b4122aaaf9e97d95e4aafc380cf3d6c674",
      "parents": [
        "538bdf96231d05ff36f67cad4f3daba1087523e1",
        "36733fc4c10854766cca3b617aae61149895e4b2"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Apr 01 17:56:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 01 17:56:33 2016 +0000"
      },
      "message": "Merge \"Check current pid at libc initialization for 32-bit build.\""
    },
    {
      "commit": "36733fc4c10854766cca3b617aae61149895e4b2",
      "tree": "f4a67d81f76b31a9bc117a8f3f041aafc7c29300",
      "parents": [
        "6212e5dfada2ce1cd8b4915389452cba09e75b69"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 29 12:25:12 2016 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 30 16:45:08 2016 -0700"
      },
      "message": "Check current pid at libc initialization for 32-bit build.\n\nAlthough there is a test pthread.pthread_mutex_owner_tid_limit\nto check pid_max, but bionic-unit-tests hangs before reaching\nthat test. So abort at libc initialization if not able to reach\nthe test when running bionic-unit-tests32. It is more friendly\nfor debugging.\n\nBug: 24016357\nChange-Id: Ia70c2e36fd8a3a040d41ea5722c7b48a6134e102\n"
    },
    {
      "commit": "d15dfb2ff5835a04c66d328f27939fc4e0362c0f",
      "tree": "12ac9dd1a1c64741d649aaa0ce21a7c929cbb147",
      "parents": [
        "7c59c70200a86387d3c97e9d7f34e2b8dbed88b3"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Sat Mar 26 11:37:55 2016 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Mon Mar 28 10:29:16 2016 -0700"
      },
      "message": "clock_nanosleep: add CLOCK_THREAD_CPUTIME_ID special case\n\nPOSIX makes \"the CPU-time clock of the calling thread\" (i.e.,\nCLOCK_THREAD_CPUTIME_ID) a special case which returns EINVAL instead of\nENOTSUP.\n\nHowever, the clock_nanosleep syscall treats this clock just like any\nother, and returns -EOPNOTSUPP to indicate an unimplemented nanosleep\nhandler.  So we need to handle this ourselves in userspace.\n\nThis change fixes the LTP clock_nanosleep01 testcase.\n\nChange-Id: If3bed940d276834bcd114d8c17f96197e9384711\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "d132099e0597276dea1faa30d674256309c99736",
      "tree": "f82b8feb200ed52bac2ea64d1411169c3c190a72",
      "parents": [
        "d81143df7196509596ede621d635f90421ad152b",
        "3679ade5333bf0727c374431cd4e4fa81ca241af"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Mar 25 22:43:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 25 22:43:01 2016 +0000"
      },
      "message": "Merge \"Add hasmntopt(3)\""
    },
    {
      "commit": "d81143df7196509596ede621d635f90421ad152b",
      "tree": "0e16bb9ea59f262fa880289e8d65bda600809017",
      "parents": [
        "76640d5555a7c79d8025f5f0934afbf9f539e6a7",
        "be910529322b461148debefd50b9e0d67ae84f8e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 25 22:20:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 25 22:20:42 2016 +0000"
      },
      "message": "Merge \"libc: implement kernel vdso syscalls for i386\""
    },
    {
      "commit": "76640d5555a7c79d8025f5f0934afbf9f539e6a7",
      "tree": "87c33dd4be618f2f58aadebd2e8561718c82a926",
      "parents": [
        "2846ae70fb967269e8fcd2d854d04c9aeb5d01d3",
        "e2faf07d659b1c824002e50b9cdfa9caae62a31b"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Mar 25 22:02:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 25 22:02:07 2016 +0000"
      },
      "message": "Merge \"Add {get,set}domainname(2)\""
    },
    {
      "commit": "3679ade5333bf0727c374431cd4e4fa81ca241af",
      "tree": "ba9477163e0218483eefbd935a2bc68eac25d908",
      "parents": [
        "e2faf07d659b1c824002e50b9cdfa9caae62a31b"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Mar 04 10:07:35 2016 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Mar 25 14:16:58 2016 -0700"
      },
      "message": "Add hasmntopt(3)\n\nbionic has the Linux-specific mntent.h but is missing hasmntopt().\n\nChange-Id: I0ab7b83626c969704add4e64b37a6fc715d4a723\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "e2faf07d659b1c824002e50b9cdfa9caae62a31b",
      "tree": "72752c132d778ad698ef51cf7fca23224fcd6361",
      "parents": [
        "e725dc164015d873b64639f0fee9ba5c30175f4c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 03 08:37:53 2016 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Mar 25 14:16:58 2016 -0700"
      },
      "message": "Add {get,set}domainname(2)\n\n{get,set}domainname aren\u0027t in POSIX but are widely-implemented\nextensions.\n\nThe Linux kernel provides a setdomainname syscall but not a symmetric\ngetdomainname syscall, since it expects userspace to get the domain name\nfrom uname(2).\n\nChange-Id: I96726c242f4bb646c130b361688328b0b97269a0\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "be910529322b461148debefd50b9e0d67ae84f8e",
      "tree": "67d5538b8f6af5fbc2ce29f1a18886321e6fe4a1",
      "parents": [
        "2846ae70fb967269e8fcd2d854d04c9aeb5d01d3"
      ],
      "author": {
        "name": "Mingwei Shi",
        "email": "mingwei.shi@intel.com",
        "time": "Thu Nov 12 07:02:14 2015 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 25 14:10:05 2016 -0700"
      },
      "message": "libc: implement kernel vdso syscalls for i386\n\nThis patch uses __kernel_vsyscall instead of \"int 0x80\"\nas the syscall entry point. AT_SYSINFO points to\nan adapter to mask the arch specific difference and gives a\nperformance boost on i386 architecture.\n\nChange-ID: Ib340c604d02c6c25714a95793737e3cfdc3fc5d7\nSigned-off-by: Mingwei Shi \u003cmingwei.shi@intel.com\u003e\n"
    },
    {
      "commit": "a03c62b469d04c4b38aaa4a02f6ec23254b0feeb",
      "tree": "c1cf4ee3d7436a9cf2917cc49609aa9491529ffd",
      "parents": [
        "fb23fa30465e14b5dbf0e9de2a34c1cbe113e971"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 24 13:41:17 2016 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 24 16:37:20 2016 -0700"
      },
      "message": "epoll_create: reject size \u003c\u003d 0\n\nEven though the size parameter to epoll_create(2) is (otherwise) unused,\npassing in size \u003c\u003d 0 is explicitly documented as an error.\n\nThis change fixes the LTP epoll01 testcase.\n\nChange-Id: I044a38be823c2fa956b57e77cc66571dfae8a4bb\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "fb23fa30465e14b5dbf0e9de2a34c1cbe113e971",
      "tree": "9b0d9883c85ff042a3a685a20f217debcfeaf089",
      "parents": [
        "e725dc164015d873b64639f0fee9ba5c30175f4c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Mar 23 17:15:02 2016 -0700"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 24 16:37:20 2016 -0700"
      },
      "message": "clone: check for NULL child stack\n\nThe clone syscall accepts NULL child stacks, interpreting this to mean\nthe child gets a copy of the parent\u0027s stack with copy-on-write\nsemantics.  However clone(2) is explicitly documented to treat this an\nan error.\n\n\"Fortunately\" every architecture\u0027s __bionic_clone implementation pushes\nsomething onto the child stack before making the clone syscall.  So we\nknow fixing this won\u0027t break legacy apps, because any app that tried\nusing a NULL child stack would have died with SIGSEGV.\n\nThis change fixes the LTP clone04 testcase.\n\nChange-Id: I663b34f34bc8dad2aa405c46e4eed4418cccca0d\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "725b2a96a70c6570a1fb84562fe46348414752cd",
      "tree": "c6e4772eff6ea9ebb881ca579f14e6c4f87fc05d",
      "parents": [
        "68a2f12304e960f2045f3819c48311e7bf4d3126"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 23 11:20:47 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 23 17:40:25 2016 -0700"
      },
      "message": "Add pthread_getname_np.\n\nAlso guard both these GNU extensions with _GNU_SOURCE.\n\nAlso improve the tests to test each case on both the current thread and\nanother thread, since the code paths are totally different.\n\nBug: http://b/27810459\nChange-Id: I72b05bca5c5b6ca8ba4585b8edfb716a1c252f92\n"
    },
    {
      "commit": "545afa16bb6e44227f531a3508e21f3184b2fd5d",
      "tree": "39b7042e585a4a9a673417d5e057b4abdc56f9f2",
      "parents": [
        "bca25411b882abc6ab0bf07d25266ba9f8e4d398"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 15 17:11:56 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 15 17:23:12 2016 -0700"
      },
      "message": "Fix PTHREAD_THREADS_MAX.\n\nWe don\u0027t have a compile-time limit on the number of threads,\nand we don\u0027t have a definite run-time limit either.\n\nBug: http://b/27617302\nChange-Id: I6a6fe083e7b655d24eb9e7ef7f3e0280d483080b\n"
    },
    {
      "commit": "20f2c1ebd5b5860e69772b228ccda756eafc1398",
      "tree": "ac20170eeb693619808794ca272eef3f2fc621f9",
      "parents": [
        "ffd19ee64d89d5a9ba3757e8ecb1017e0ec5f135"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 11 12:27:02 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 11 12:27:02 2016 -0800"
      },
      "message": "Init functions after debug malloc succeeds.\n\nDo not initialize all of the global function pointers associated with\ndebug malloc until the initialization has completed correctly.\n\nBug: 27600760\nChange-Id: I0621b54bc2d9fab63805d7992d384e550d6fed2a\n"
    },
    {
      "commit": "ffd19ee64d89d5a9ba3757e8ecb1017e0ec5f135",
      "tree": "a797ab082cc182f1cce8579e691f3a53d2839f18",
      "parents": [
        "79c9ff28f95b718db3ff5528b49e60e225fc56fd",
        "fc69a8ad5f0d9b63de48e3858fb4811ede7ac64e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 10 16:12:26 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 10 16:12:27 2016 +0000"
      },
      "message": "Merge \"Improve and fix the stack-protector tests.\""
    },
    {
      "commit": "fc69a8ad5f0d9b63de48e3858fb4811ede7ac64e",
      "tree": "6af471e8ad582190fcdccb40eea622802820dc74",
      "parents": [
        "728e0e9b97d7a43b4348062e4040d478c2ab8f51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 04 11:53:09 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 09 14:50:03 2016 -0800"
      },
      "message": "Improve and fix the stack-protector tests.\n\nBug: http://b/26888853\nChange-Id: I505dbf7d5934f7247fb639f55dd6a9341df3947b\n"
    },
    {
      "commit": "2bf5332f233b1f718f297c0424bf441fa44d720d",
      "tree": "4ba7925da978da28691a2dd05e77b6220384e5d1",
      "parents": [
        "ba2232d0132274433a269eeccbbbd3be7f8f4384"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 07 11:54:02 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 07 11:54:02 2016 -0800"
      },
      "message": "Minor clock_getcpuclockid optimization.\n\nDon\u0027t ask the kernel to copy data to userspace if we don\u0027t need it.\n(Noticed while cleaning up sysconf to not call clock_getres.)\n\nChange-Id: Icc0f7559775b8a2dcefe638ce831d06b75d67122\n"
    },
    {
      "commit": "ba2232d0132274433a269eeccbbbd3be7f8f4384",
      "tree": "36c64f017cf9b1d80bfff9ebe4bc92fbade9e466",
      "parents": [
        "a703498f0c416f58fdfdf3cdb208fffee60c9bb8",
        "6d7c1ee9ffefa98358b7043a8984366098c21b61"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Sat Mar 05 03:04:36 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 05 03:04:37 2016 +0000"
      },
      "message": "Merge \"forkpty: set the output fd to -1 on the slave side.\""
    },
    {
      "commit": "d2b8de2cd16ecd86c830d98c58bcf392475bd0b3",
      "tree": "ebd7f6cc626c63e3db8fbdb9dc3a6a8858922655",
      "parents": [
        "c4d2bede1592dd82dce9bfc6ebecdc414a79490b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 04 18:25:57 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 04 18:28:53 2016 -0800"
      },
      "message": "Don\u0027t call clock_getres in sysconf.\n\nThere are a hundred other reasons why we can\u0027t run on kernels old enough\nto not have all the clocks covered by sysconf.\n\nThis was causing trouble for jemalloc 4.1.0 in a seccomp-constrained process\nbecause jemalloc 4.1.0 introduced a call to sysconf that caused us to make\nclock_getres syscalls for the first time, leading to SIGSYS.\n\nBug: http://b/27408522\nChange-Id: I2eb6986d871bc03cbef278e5617734409c39e057\n"
    },
    {
      "commit": "6d7c1ee9ffefa98358b7043a8984366098c21b61",
      "tree": "d804189d541dc3dab73b0e1bf54d8e4fa8f421f3",
      "parents": [
        "5e57039c24d8aa777480e33255d627ca28af7dfe"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Mar 04 18:04:41 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Mar 04 18:04:41 2016 -0800"
      },
      "message": "forkpty: set the output fd to -1 on the slave side.\n\nglibc, FreeBSD, OpenBSD, and Darwin all just leave the fd unchanged and\npossibly uninitialized. Setting it to -1 seems friendlier, though.\n\nBug: http://b/27506278\nChange-Id: I7acdc8eecbea4404d5fb4ba0b4d572245a323886\n"
    }
  ],
  "next": "29d4b714264497da0f9ae3ee512fbfde5ccce26b"
}
