)]}'
{
  "log": [
    {
      "commit": "b83bf14a352269135d3e2fe783414c3b6e1d0ac5",
      "tree": "3e3b5604f28445915e5011af96bacf8e6021f1aa",
      "parents": [
        "1423bb849879f3f126cb1e6dcb279da5360ef5fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 11:01:25 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 13:59:02 2018 -0700"
      },
      "message": "Fortify ppoll64.\n\nI\u0027ve deliberately not bothered with the GCC implementation because we\u0027ll\nhave removed GCC from the NDK before anyone gets to use this.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: Icfc2a3b214739ab53aa41bacacc11b5c67498fb4\n"
    },
    {
      "commit": "c6b5bcd182edef34f058827882b1908f890cc4cd",
      "tree": "63b9b787f9434c2424f0c2957eb8ce668cb9bd69",
      "parents": [
        "0bc4772ee5e9cbf772227732135fd13e125571a9"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Mar 05 14:14:44 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Mar 20 18:41:22 2018 -0700"
      },
      "message": "Add _monotonic_np versions of timed wait functions\n\nAs a follow up to Ibba98f5d88be1c306d14e9b9366302ecbef6d534, where we\nadded a work around to convert the CLOCK_REALTIME timeouts to\nCLOCK_MONOTONIC for pthread and semaphore timed wait functions, we\u0027re\nintroducing a set of _monotonic_np versions of each of these functions\nthat wait on CLOCK_MONOTONIC directly.\n\nThe primary motivation here is that while the above work around helps\nfor 3rd party code, it creates a dilemma when implementing new code\nthat would use these functions: either one implements code with these\nfunctions knowing there is a race condition possible or one avoids\nthese functions and reinvent their own waiting/signaling mechanisms.\nNeither are satisfactory, so we create a third option to use these\nAndroid specific _monotonic_np functions that completely remove the\nrace condition while keeping the rest of the interface.\n\nSpecifically this adds the below functions:\npthread_mutex_timedlock_monotonic_np()\npthread_cond_timedwait_monotonic_np()\npthread_rwlock_timedrdlock_monotonic_np()\npthread_rwlock_timedwrlock_monotonic_np()\nsem_timedwait_monotonic_np()\n\nNote that pthread_cond_timedwait_monotonic_np() previously existed and\nwas removed since it\u0027s possible to initialize a condition variable to\nuse CLOCK_MONOTONIC.  It is added back for a mix of reasons,\n1) Symmetry with the rest of the functions we\u0027re adding\n2) libc++ cannot easily take advantage of the new initializer, but\n   will be able to use this function in order to wait on\n   std::steady_clock\n3) Frankly, it\u0027s a better API to specify the clock in the waiter function\n   than to specify the clock when the condition variable is\n   initialized.\n\nBug: 73951740\nTest: new unit tests\nChange-Id: I23aa5c204e36a194237d41e064c5c8ccaa4204e3\n"
    },
    {
      "commit": "d5172fced0f88114e21086db5defaee64371de32",
      "tree": "30bd20a165f5ba825d82e488a6f6f561c0f7de8b",
      "parents": [
        "665ce210fab00911321829e6e190405ef18e5032",
        "457852666cb870a844df016962fac487cb5e7559"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 02:36:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 15 02:36:38 2018 +0000"
      },
      "message": "Merge \"Add __fseterr.\""
    },
    {
      "commit": "665ce210fab00911321829e6e190405ef18e5032",
      "tree": "69b8621dfae13859842cc9a2f64f409fe16040cd",
      "parents": [
        "38a78728c343f6398763ae8d7e3e8202b927a056",
        "3376c23daceddd603478347c00163f39e7c9e1ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 15 01:26:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 15 01:26:17 2018 +0000"
      },
      "message": "Merge \"Add remaining _l function stubs.\""
    },
    {
      "commit": "457852666cb870a844df016962fac487cb5e7559",
      "tree": "b6d5ea190fca3841b956dc1cbe714fdef8982655",
      "parents": [
        "38a78728c343f6398763ae8d7e3e8202b927a056"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 14 15:21:45 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 14 15:25:21 2018 -0800"
      },
      "message": "Add __fseterr.\n\nTrivial, obvious counterpart to the standard ferror(3) and clearerr(3),\nand lets us build bison out of the box.\n\nBug: http://b/64273806\nTest: ran tests\nChange-Id: I20affabddb71210051165c41e86adfe5ae04f77f\n"
    },
    {
      "commit": "3376c23daceddd603478347c00163f39e7c9e1ee",
      "tree": "d8a6f5383a285783630af07f03e11a5a06677b10",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "message": "Add remaining _l function stubs.\n\nBug: http://b/65595804\nTest: ran tests\nChange-Id: I3bea3af20b354d1f0d3e05fd35421a9045f29020\n"
    },
    {
      "commit": "db478a627482c73c52df9e3929fe7a39f03e4eeb",
      "tree": "15fcd3caeea9269e5e3eefb881ec25bade966bcb",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 07 18:42:14 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 13 13:37:30 2018 -0800"
      },
      "message": "Implement malloc hooks.\n\nUse the malloc debug framework to implement the malloc debug hooks\nsince it can introduce a performance issue.\n\nAlso, modify the bionic/tests/utils.h slightly to dump an error message\nwhen the exe failed.\n\nBug: 30561479\n\nTest: Ran malloc hook unit tests.\nTest: Ran malloc debug unit tests.\nTest: Enabled malloc hooks and ran bionic unit tests and verified no\nTest: unexpected failures.\nTest: Enabled malloc debug and malloc hooks and verified malloc debug wins.\nTest: Enabled malloc debug using env, property, and property with name\nTest: still works.\n\nChange-Id: Ib50046a0493c5c2050cf831befb812310bdcc249\n(cherry picked from commit d6a1dc23796696f73f483943534d4c5c4b312d39)\n"
    },
    {
      "commit": "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": "3e235911c9cf5062adbb73efb53fe5ed712d7c53",
      "tree": "cdd84807bba4a7d0b0fd947555b2edaa2618df95",
      "parents": [
        "b44bd827abf2b870ebf4a0f6b126098a46bf42ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:21:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:45:15 2018 -0800"
      },
      "message": "Add `struct sigaction64` and `sigaction64`.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I47b0560a30aa33a9b1f1978dfb7f84d2e3d389b8\n"
    },
    {
      "commit": "5905d6f8797056ca4178d42bf1220b6692e557a5",
      "tree": "222848ae0ced32fcf2028a2c6502b4a763c83830",
      "parents": [
        "d435d256da57fdf4278b3198720d881f3edcf452"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 15:09:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 30 18:47:16 2018 -0800"
      },
      "message": "Add `sigset64_t` and accompanying functions.\n\nThis doesn\u0027t address `struct sigaction` and `sigaction`. That will\ncome later.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I4134346757ce3a4dac6feae413361cec16223386\n"
    },
    {
      "commit": "6b9c85b36d2e69b45d780e6a0b27d64909311a7e",
      "tree": "eff21cc7000bc125f5c91f0d90819fd778be371f",
      "parents": [
        "73871ad09be8a8259171d606c4e3e3cf08d4733c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 23 12:56:18 2018 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jan 24 16:11:07 2018 -0800"
      },
      "message": "Support priority inheritance mutex in 64bit programs.\n\nBug: http://b/29177606\nTest: run bionic-unit-tests on walleye.\nTest: run bionic-unit-tests-glibc on host.\nChange-Id: Iac349284aa73515f384e7509445f87434757f59e\n"
    },
    {
      "commit": "37ad9597839c70a7ec79578e5072df9c189fc830",
      "tree": "f1f70a143c99b072b040f5592f1b42da464b35f8",
      "parents": [
        "e379a202504911d228ae07d9ba32c5a02274fe1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 17:47:12 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 31 13:23:41 2017 -0700"
      },
      "message": "More missing _unlocked \u003cstdio.h\u003e functions.\n\nAlso simplify trivial one-liners like perror/puts/fputs, and clean up\nfread/fwrite slightly.\n\nFix perror to match POSIX.\n\nAdd basic perror and *_unlocked tests.\n\nBug: N/A\nTest: ran tests\nChange-Id: I63f83c8e0c15c3c4096509d17421ac331b6fc23d\n"
    },
    {
      "commit": "c8a2612ffc13a31aaedec26a45cdceb6fa8199cb",
      "tree": "8c12929cde798f3a49dfe0d9a59085d8b205f0b6",
      "parents": [
        "048e18045d6e7bcaf0870d8bb7cb671214c9ad50",
        "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 26 16:12:04 2017 +0000"
      },
      "message": "Merge \"Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\""
    },
    {
      "commit": "8aecba7aa6b7f7b92f69c0d3febef59fdb135f87",
      "tree": "fd3d9743a0e282dcbb2a8b2b51906f7da3a84468",
      "parents": [
        "435e6384de8f9e35b8878b1ccda5bb5686c15207"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 15:34:41 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 25 14:28:42 2017 -0700"
      },
      "message": "Implement pthread_attr_getinheritsched/pthread_attr_setinheritsched.\n\nHistorically, Android defaulted to EXPLICIT but with a special case\nbecause SCHED_NORMAL/priority 0 was awkward. Because the code couldn\u0027t\nactually tell whether SCHED_NORMAL/priority 0 was a genuine attempt to\nexplicitly set those attributes (because the parent thread is SCHED_FIFO,\nsay) or just because the pthread_attr_t was left at its defaults.\n\nNow we support INHERIT, we could call sched_getscheduler to see whether\nwe actually need to call sched_setscheduler, but since the major cost\nis the fixed syscall overhead, we may as well just conservatively\ncall sched_setscheduler and let the kernel decide whether it\u0027s a\nno-op. (Especially because we\u0027d then have to add both sched_getscheduler\nand sched_setscheduler to any seccomp filter.)\n\nPlatform code (or app code that only needs to support \u003e\u003d P) can actually\nadd a call to pthread_attr_setinheritsched to say that they just want\nto inherit (if they know that none of their threads actually mess with\nscheduler attributes at all), which will save them a sched_setscheduler\ncall except in the doubly-special case of SCHED_RESET_ON_FORK (which we\ndo handle).\n\nAn alternative would be \"make pthread_attr_setschedparams and\npthread_attr_setschedprio set EXPLICIT and change the platform default\nto INHERIT\", but even though I can only think of weird pathological\nexamples where anyone would notice that change, that behavior -- of\npthread_attr_setschedparams/pthread_attr_setschedprio overriding an\nearlier call to pthread_attr_setinheritsched -- isn\u0027t allowed by POSIX\n(whereas defaulting to EXPLICIT is).\n\nIf we have a lot of trouble with this change in the app compatibility\ntesting phase, though, we\u0027ll want to reconsider this decision!\n\n -*-\n\nThis change also removes a comment about setting the scheduler attributes\nin main_thread because we\u0027d have to actually keep them up to date,\nand it\u0027s not clear that doing so would be worth the trouble.\n\nAlso make async_safe_format_log preserve errno so we don\u0027t have to be\nso careful around it.\n\nBug: http://b/67471710\nTest: ran tests\nChange-Id: Idd026c4ce78a536656adcb57aa2e7b2c616eeddf\n"
    },
    {
      "commit": "ac29d9f3b9636818773d60df18eb17e79783f774",
      "tree": "b21bb54cdb9432056d9f83ffc8c80aea317ccdcd",
      "parents": [
        "1b6de8788918f806efd812b743dcc0bbdd232392",
        "fa386e0d1eb52478f11b7232d280919245c1616c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 21:49:29 2017 +0000"
      },
      "message": "Merge \"Add POSIX swab.\""
    },
    {
      "commit": "4d215aad85cd9cba3e815eafb8c56eb5218eafb1",
      "tree": "9f987f65dfaa1dd321541189ea63c23b70c70cbc",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 15:54:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 16:26:17 2017 -0700"
      },
      "message": "Add POSIX fexecve.\n\nI\u0027m skeptical about the usefulness of this, but it\u0027s in POSIX, it\u0027s\nin glibc (but not iOS), and it is used in some internal source (test\nrunners and container code).\n\nBug: N/A\nTest: ran tests\nChange-Id: I92c5398f2a679b21a33fba92bc8e67e3ae2eb76f\n"
    },
    {
      "commit": "fa386e0d1eb52478f11b7232d280919245c1616c",
      "tree": "fcfb7d65c39ec91e1b1ec5bedeefe806861d21c4",
      "parents": [
        "ab9dc08bdd60d3709e1bce555625d923b32812be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:34:32 2017 -0700"
      },
      "message": "Add POSIX swab.\n\nSurprisingly to me, there are actual uses of `swab` in the codebases\nI have available to search, including one with a #ifndef __ANDROID__\naround it.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ic91b78ae22bb65c346cb46dd38916f48d979abe0\n"
    },
    {
      "commit": "dff08ced5685a0d1adb0ef875a15caca99556e1e",
      "tree": "9b84626d5a3f8dec14c36ad7a42221b0e11a6f5a",
      "parents": [
        "bf886f621b7c5fb4f690fe182f42640410a32d5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 16 09:58:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 17 09:14:05 2017 -0700"
      },
      "message": "Add pthread_setschedprio.\n\nBug: http://b/26204555\nTest: ran tests\nChange-Id: Ic34062b9b6036a1ce2642a069514bab48a893338\n"
    },
    {
      "commit": "5033918092f27179b0c2bbe3babceaed509d4935",
      "tree": "77f5a0f1eb5fec80dc7bc6a297eed66af83713b9",
      "parents": [
        "a27bfd4131441a24fcfe6b5b3cf1cf9469be6719"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 13 17:52:01 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 15 10:37:51 2017 -0700"
      },
      "message": "Complete \u003cnetdb.h\u003e.\n\nAdd all the missing \u003cnetdb.h\u003e functions.\n\nAlso fix getservbyport to handle a null protocol correctly.\n\nAlso fix getservbyname/getservbyport to not interfere with getservent.\n\nAlso fix endservent to reset getservent iteration.\n\nAlso reduce unnecessary differences from upstream NetBSD sethostent.c.\n\nThe servent implementation is still horrific, and we should\nprobably support protoent too so that debugging tools can use\ngetprotobyname/getprotobynumber.\n\nBug: N/A\nTest: ran tests\nChange-Id: I639108c46df0a768af297cf3bbce857cb1bef9d9\n"
    },
    {
      "commit": "14e3ff9f09fdd52db43628ccd6f39a6d3fb41740",
      "tree": "8ed0ba1d0744ac95265e2ea634b6e1ff8d72d88c",
      "parents": [
        "e387c2f08841ac0f6578e903ab21b54d01f3266e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 06 16:58:36 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 11 14:57:49 2017 -0700"
      },
      "message": "Implement \u003cspawn.h\u003e.\n\nAs described here:\n\n  http://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html\n\nAnd here:\n\n  http://man7.org/linux/man-pages/man3/posix_spawn.3.html\n\nBug: N/A (but mentioned in my inbox since 2013)\nTest: ran tests\nChange-Id: I0b27b2919b660779e3bd8a25fb429527c16dc621\n"
    },
    {
      "commit": "a5c316fe0c1b9d254421e22d8f2c6586ef3c64ec",
      "tree": "e439ddbe00bb5c9665c60542011546f6ad2f528b",
      "parents": [
        "8af55bdf93f074d621a44365fea4960d431aa1b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 02 10:10:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 02 10:10:15 2017 -0700"
      },
      "message": "Don\u0027t repeat ourselves unnecessarily in the maps.\n\nWe can mark a whole version \"introduced\u003d\" rather than doing every line\nseparately.\n\nBug: N/A\nTest: builds\nChange-Id: I3219edc755a42ce5ff6258efb744fb5e05967a3a\n"
    },
    {
      "commit": "b3639adf9ce41f520f7a64a5016e6ffc41ccd009",
      "tree": "c44e7963fa15992bcc5603c9608ec1359c672c87",
      "parents": [
        "bd2754177fc26b255b64af0b50c32f984a274cf9",
        "8465e968a8a92c77d57360837a9e725972a745e6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 29 15:39:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 29 15:39:29 2017 +0000"
      },
      "message": "Merge changes I76dde1e3,I54fec461\n\n* changes:\n  Add \u003csys/random.h\u003e.\n  Run other maintenance scripts as part of the preupload hooks.\n"
    },
    {
      "commit": "8465e968a8a92c77d57360837a9e725972a745e6",
      "tree": "f8bd05e55680224a407ac55afaef58b668868b05",
      "parents": [
        "96510935697c2934427f0c14d0b153244e8cfb2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 27 16:33:35 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 29 05:31:35 2017 +0000"
      },
      "message": "Add \u003csys/random.h\u003e.\n\niOS 10 has \u003csys/random.h\u003e with getentropy, glibc \u003e\u003d 2.25 has\n\u003csys/random.h\u003e with getentropy and getrandom. (glibc also pollutes\n\u003cunistd.h\u003e, but that seems like a bad idea.)\n\nAlso, all supported devices now have kernels with the getrandom system\ncall.\n\nWe\u0027ve had these available internally for a while, but it seems like the\ntime is ripe to expose them.\n\nBug: http://b/67014255\nTest: ran tests\nChange-Id: I76dde1e3a2d0bc82777eea437ac193f96964f138\n"
    },
    {
      "commit": "f1c568d1eac6d2baba62af35e5b9856fb7e98319",
      "tree": "a7840d0a41465e4bc73e766bfc212bee12c6eaa0",
      "parents": [
        "2e01f39c31e042482fbe10df79d8b2837ae79239"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 17:09:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 18:46:09 2017 -0700"
      },
      "message": "Add \u003cglob.h\u003e.\n\nThis is the FreeBSD implementation, plus some tests. The FreeBSD\nimplementation includes the GNU extensions and seems to be what\niOS is using too, which should provide bug compatibility for app\ndevelopers.\n\nThe code unfortunately uses a lot of stack, and uses FreeBSD locale\nimplementation that we don\u0027t have, but it does seem better maintained\nthan the other BSDs.\n\nBug: http://b/29251134\nTest: ran tests\nChange-Id: Ie477b45e42a6df1319b25712098519d2b33adf67\n"
    },
    {
      "commit": "5702c6ff454a8a9695fae64597d7692b06fc27b5",
      "tree": "198c64982038daff5603e6c6813089751f62328f",
      "parents": [
        "7f9f1b6f918bec90354f70f2eb3dcf87d85df918"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 31 17:27:05 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 31 17:38:51 2017 -0700"
      },
      "message": "Finish \u003csearch.h\u003e.\n\nI\u0027m unable to find a bug, but we\u0027ve had requests for this internally\nonce or twice (though I pointed those folks at the STL), and there\u0027s\ncode we build for the host or in our bootloaders that would use this,\nand there\u0027s reasonable-looking FreeBSD implementation ready and waiting.\n\nBug: N/A\nTest: ran tests\nChange-Id: I6ddee4b71bea4c22ed015debd31d3eaac4fcdd35\n"
    },
    {
      "commit": "f11aa95ee7f3c7c3a8538deefd084cdab351c01a",
      "tree": "e19fa29f07c507e04a8484ffb60a60401b2d1111",
      "parents": [
        "d615a06068f9d0dd01df840122221d183ba1098e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 15:18:33 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 15:18:33 2017 -0700"
      },
      "message": "Pretend the \u003cfts.h\u003e functions didn\u0027t appear until 21.\n\nBecause there was an accidental ABI breakage in 21, and we can\u0027t fix\nthe past. It seems more useful to refuse to build code that won\u0027t work\non any current or future device.\n\nBug: https://issuetracker.google.com/37051826\nTest: builds\nChange-Id: I4b5c30f899e2c7307642e2fb20e43a3ca14ae7fe\n"
    },
    {
      "commit": "a648733cb7398810df9a35528cc6e874edc57b06",
      "tree": "90ff33e6b479b5ccb20b1a8bb0007dacde75bc8d",
      "parents": [
        "571c88823636e3c6f894e806ea7c4dc8131a1ae4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 15 23:16:48 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:47:41 2017 -0700"
      },
      "message": "Implement \u003ciconv.h\u003e.\n\nBug: http://b/32978596\nTest: ran tests\nChange-Id: I56b6ae3d9c5a3a56d2b4afba33fb8f9e964bf7b9\n"
    },
    {
      "commit": "44d8f7be1f82ef8db5d2cae9c820b532467466d5",
      "tree": "3f4b7d6786325a77267ee35d8813039c54fef345",
      "parents": [
        "fa3d3291e1107aeb84c0a9ff1687b0d24fd7176a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:42:48 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 25 08:42:48 2017 -0700"
      },
      "message": "Fix ndk build.\n\nThe NDK gen_stub_libs.py doesn\u0027t support introduced\u003dP yet:\n\n  Traceback (most recent call last):\n    File \"build/soong/cc/gen_stub_libs.py\", line 439, in \u003cmodule\u003e\n      main()\n    File \"build/soong/cc/gen_stub_libs.py\", line 429, in main\n      versions \u003d SymbolFileParser(symbol_file, api_map).parse()\n    File \"build/soong/cc/gen_stub_libs.py\", line 234, in parse\n      versions.append(self.parse_version())\n    File \"build/soong/cc/gen_stub_libs.py\", line 269, in parse_version\n      symbols.append(self.parse_symbol())\n    File \"build/soong/cc/gen_stub_libs.py\", line 286, in parse_symbol\n      tags \u003d decode_api_level_tags(tags, self.api_map)\n    File \"build/soong/cc/gen_stub_libs.py\", line 76, in decode_api_level_tags\n      raise ParseError(\u0027Unknown version name in tag: {}\u0027.format(tag))\n  __main__.ParseError: Unknown version name in tag: introduced\u003dP\n\nBug: N/A\nTest: builds\nChange-Id: Ifd91e525b30f3aa9ad8c889c9564cd769a3a603a\n"
    },
    {
      "commit": "896362eb0e82bcde71c137c925eae9e0882acb91",
      "tree": "3c4b2fb6e1626a2b377c93bd925f4f0fb4e02a9c",
      "parents": [
        "96c577c48284c376ec065f2b3a2d2987a7eeff5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:31:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 24 16:31:49 2017 -0700"
      },
      "message": "Add syncfs(2).\n\nGMM calls this system call directly at the moment. That\u0027s silly.\n\nBug: http://b/36405699\nTest: ran tests\nChange-Id: I1e14c0e5ce0bc2aa888d884845ac30dc20f13cd5\n"
    },
    {
      "commit": "5ba2c21159f0bb4c0f7f1fbdbd4671f381b75816",
      "tree": "6e4626b224d4105a66be2dfc265b982badf7ca3f",
      "parents": [
        "1bac61f09f46ac3c0a73387613dfd20023e39772"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 15:16:36 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 01 15:27:27 2017 -0700"
      },
      "message": "Finish \u003cstdio_ext.h\u003e.\n\nImplement __freading and __fwriting, and clarify the documentation that was\nthe cause of these not being implemented for years.\n\nBug: http://b/17157253\nTest: ran tests\nChange-Id: I89542c8131b13889e2585417a024050ecf2abcb7\n"
    },
    {
      "commit": "4dd33f92d82b9fb77152bfc68f312d2fa5710a28",
      "tree": "1d7415dc639db60e1160966a752cab0cbb1f5e86",
      "parents": [
        "f94ddd7a0eab6d4959227875e10aa9a949a289bc",
        "5f7135eddd40d290d2bc4d0e819a6276bc4b8a24"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 31 15:57:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 31 15:57:00 2017 +0000"
      },
      "message": "Merge \"Allow calling v?dprintf for any target API level.\""
    },
    {
      "commit": "06bd5862b18e0b750a709f7f8a1d277f1f6d0c99",
      "tree": "f6d0db8de8f67383aa97056e6c73fb2c7be1b402",
      "parents": [
        "bafa1985eccaac231ade6f15d340759f44928524"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 16:27:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 28 16:34:38 2017 -0700"
      },
      "message": "POSIX getlogin_r/LOGIN_NAME_MAX/TTY_NAME_MAX.\n\nBug: N/A\nTest: ran tests\nChange-Id: I97c8ecc82fb09c3fa4bb5e6f000d46f04f3d1702\n"
    },
    {
      "commit": "5f7135eddd40d290d2bc4d0e819a6276bc4b8a24",
      "tree": "a082dbb4c6fe86b4f10f67f4f01a1b407fbe50bf",
      "parents": [
        "93068895091ee516c55a7873a4056145a7da3644"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 26 14:09:45 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jul 27 16:32:01 2017 -0700"
      },
      "message": "Allow calling v?dprintf for any target API level.\n\nOld versions of Android called these fdprintf and vfdprintf out of\nfears that the glibc names would collide with user debug printfs.\n\nAllow users to just use dprintf and vfdprintf on any version by\nrenaming those calls to their legacy equivalents if needed.\n\nTest: built trivial NDK module targeting android-14 and using dprintf\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/72\nChange-Id: I90de149278f931380418536abaef47c5cee5c195\n"
    },
    {
      "commit": "488eb8b7d2fb7a51c90664ae0baea75b7280cddd",
      "tree": "4620330e37f8d498aa6aae20613815e40abe59b9",
      "parents": [
        "8f6f70db457e6f6d09a5f3b8be91adcea16b1067"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 31 11:00:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 31 11:00:18 2017 -0700"
      },
      "message": "Move mallopt to correct section.\n\nBug: 62202823\n\nTest: Built and built unit tests.\nChange-Id: Icefc152eb756fd60ce8f51d694f22923a41a9cd1\n"
    },
    {
      "commit": "dd878fe129bb128fb28577c6ccc3fbf04addf898",
      "tree": "e789ad10dc04cdcee2c35f1891473812cce22f1b",
      "parents": [
        "4767bc4a6cebc2ad4c61cccdf92290e17227a792"
      ],
      "author": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Mon May 22 10:19:25 2017 -0400"
      },
      "committer": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Mon May 22 10:19:25 2017 -0400"
      },
      "message": "Add a netcontext variant of gethostbyname\n\nBug: 34953048\nTest: Integration tests pass\nChange-Id: I670427d67fde09d8e76ea6a920c90a1969230c4f\n"
    },
    {
      "commit": "4767bc4a6cebc2ad4c61cccdf92290e17227a792",
      "tree": "84bb499ed7588af5a80496f6118aacd30dd9504a",
      "parents": [
        "761bb2be4d2e1c1d564f6ef2c24971d2528ce2f1",
        "50178056f7930a33cb1d0a45c76b3dfbe17c5506"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon May 22 10:06:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 22 10:06:31 2017 +0000"
      },
      "message": "Merge \"Add a netcontext variant of gethostbyaddr\""
    },
    {
      "commit": "50178056f7930a33cb1d0a45c76b3dfbe17c5506",
      "tree": "d8aec1bf9bd6c76b781b4d5c7d7e1ad8439ef1d5",
      "parents": [
        "5deddda68e780aaa26e4777378fee10d543eb719"
      ],
      "author": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Mon Apr 24 17:57:11 2017 -0400"
      },
      "committer": {
        "name": "Ben Schwartz",
        "email": "bemasc@google.com",
        "time": "Thu May 18 14:32:21 2017 -0400"
      },
      "message": "Add a netcontext variant of gethostbyaddr\n\nBug: 34953048\nTest: Integration tests pass\nChange-Id: Id04830345be56cd7a077981c6e2acfb5568e7a88\n"
    },
    {
      "commit": "a1c0d2fd4ce96e123c4ae6506c9d637d747e1fe2",
      "tree": "b1f89edbd67d6b09b9cbdfb1bf03b65b2dac9ad4",
      "parents": [
        "ac58d33d343eba6a3370f541467f09802c48b24b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 15 15:50:19 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 15 16:59:16 2017 -0700"
      },
      "message": "Add support for modifying decay timer.\n\nAdd the mallopt function, and only a single option so far.\n\nBug: 36401135\n\nTest: Built and booted bullhead.\nTest: Ran jemalloc unit tests.\nTest: Ran bionic unit tests.\nTest: Ran a test that allocated and free\u0027d a large piece of memory,\nTest: and verified that after changing the parameter, the PSS\nTest: sticks around (decay timer set to 1), the PSS is purged (decay\nTest: timer set to 0).\nChange-Id: I6927929b0c539c1023d34772d9e26bb6a8a45877\n"
    },
    {
      "commit": "a57476b6610d77c116d80542b4bafe9fb8639d63",
      "tree": "ec1f98a42881d43e7e3e0d9bd722fa6b348f6831",
      "parents": [
        "0e986b8d5ddd1d41db18d8e6af1eb5c58fb3dbe8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 11 15:14:41 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 11 15:14:41 2017 -0700"
      },
      "message": "Run bionic/libc/tools/genversion-scripts.py\n\nWhen 2e8e5e60b6ecbcfe2110242e41b9ec5340b11cf5 was cherrypicked, we\ndidn\u0027t regenerate the generated files.\n\nBug: N/A\nTest: builds\nChange-Id: I87730e834520aea742738708237d11a798bf3220\n"
    },
    {
      "commit": "b63ed1d2b94ccce7a346ed382e3675ed76bce0d7",
      "tree": "88ca1b23211be8a22386a0be9ab0373a97d0dc58",
      "parents": [
        "f568ccd34afddc2b4223b309109d533349d73749"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 12 18:05:56 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Apr 13 11:18:53 2017 -0700"
      },
      "message": "Restore __system_property_find_nth version\n\nMoving this to LIBC_DEPRECATED caused compatibility\nproblems for some apps.\n\nBug: http://b/36566667\nTest: launch app and check that it does not crash\nChange-Id: I470f916ef818ff62ff5391b3a0c86dd44c1e8cd0\n(cherry picked from commit 2167e74f168a192ca9c63abee1c03197326b83d7)\n"
    },
    {
      "commit": "b876babd04fb8f59a83cac1ab8183f11e9fa9070",
      "tree": "ae8e26689ff992d3e5094644ca1a97a6dc19623e",
      "parents": [
        "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 15:36:17 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 16:11:14 2017 -0800"
      },
      "message": "Move __system_property_*_serial back to LIBC\n\nBug: http://b/35764972\nBug: http://b/34114501\nTest: make\nChange-Id: Ibbda0107d07c432110a0633de03259e39480fde4\n"
    },
    {
      "commit": "41a3a6f3cf36d626bb8ae474291bda58fc10aba2",
      "tree": "d13f02dfa3b359e36980ae015cb190a695c7306c",
      "parents": [
        "7f24a4f5565f5392ade4edbd5583ee0a0b43570e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 16 15:34:21 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 14:20:13 2017 -0800"
      },
      "message": "Hide internal __system_property_* functions\n\nBug: http://b/34114501\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I1fc57b4ced6aaf841aad64e12e7696d25c2e027b\n"
    },
    {
      "commit": "c54937b9726b7d7ca797f47bef249a31e306f267",
      "tree": "55bae87a1a408a8a63217cf8a01ede792b54475d",
      "parents": [
        "7b5245408499ef48afc8def662fcfab09683e1c4",
        "95b59c520b24aabcdc63b93a3f1eaf73e57a3afe"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 15 18:26:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 18:26:50 2017 +0000"
      },
      "message": "Merge \"add fortified implementations of send/sendto\""
    },
    {
      "commit": "95b59c520b24aabcdc63b93a3f1eaf73e57a3afe",
      "tree": "76e43d9ec4f387c5774508c9e6c9d728a21c8052",
      "parents": [
        "9fc52deab1c6bec6a37860242eafe1ae4c205e44"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Mon Feb 13 17:27:59 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 14 15:50:28 2017 -0800"
      },
      "message": "add fortified implementations of send/sendto\n\nBug: None\nTest: Bullhead builds+boots; CtsBionicTestCases passes.\nChange-Id: I2f137a100f679f7f2145d84b2f29ddd3e96a36ae\n"
    },
    {
      "commit": "a0d374d587ec18d437d0dd15ba1332aceaa188af",
      "tree": "a9466c8841140cf70290c54d50354f245ea3a9db",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:13:46 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 13:30:10 2017 -0800"
      },
      "message": "Add __system_property_wait and return the serial in __system_property_read_callback.\n\nIn order to implement android::base::WaitForProperty well, we need a way to\nwait not for *any* property to change (__system_property_wait_any), but to\nspecifically wait for the property represented by a given `prop_info` to\nchange.\n\nThe android::base::WaitForProperty implementation, like attempts to cache\nsystem properties in the past, also needs a way to keep serials and values\nin sync, but the existing functions don\u0027t provide a cheap way to get a\nconsistent snapshot. Change the __system_property_read_callback callback\u0027s\ntype to include the serial corresponding to the given value.\n\nAdd a test, slightly clean up some of the existing tests (and name them to\ninclude the names of the functions they\u0027re testing, in our usual style).\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: Ibc8ebe2e88eef1e333a1bd3dd7f68135f1ba7fb5\n"
    },
    {
      "commit": "16b2a4de143a026b8d467b7d242126adcf67242b",
      "tree": "56e0d6455248408f5c485c8a5403bb970441f7a8",
      "parents": [
        "40250bb6837da0eb0f0882efd07bdaefb3f304b1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 20:43:29 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 12:58:18 2017 -0800"
      },
      "message": "Revert \"Revert \"Remove limit of system property name length\"\"\n\nThis reverts commit 489f58b5eaedd5a80635bb3a7b39e97037c585f6.\nBug: http://b/33926793\nBug: http://b/34670529\nTest: Run bionic-unit-tests --gtest_filter\u003dprop*\n\nChange-Id: Id4e94652dc2310a21f5b7bd3af098bf79df3f380\n"
    },
    {
      "commit": "489f58b5eaedd5a80635bb3a7b39e97037c585f6",
      "tree": "af22a101af7a53336af2669978e9a507f589fbd5",
      "parents": [
        "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "message": "Revert \"Remove limit of system property name length\"\n\nThis reverts commit 5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c.\nBug: http://b/33926793\nBug: http://b/34670529\n\nChange-Id: I0dc4a8ae55576c69b34b2958d8e664f7066b9c54\n"
    },
    {
      "commit": "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c",
      "tree": "0652006476a923c95c16837640a52f9298322a35",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 03 11:26:38 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 23 11:21:18 2017 -0800"
      },
      "message": "Remove limit of system property name length\n\nThis change introduces new __system_property_read_callback\nmethod to use in place of deprecated __system_property_read\n__system_property_set() and get() should just work but now\ndo not have limit on system property names.\n\nBug: http://b/33926793\nTest: boot device, run adb shell propget\nTest: boot device with old version of init (protocol v1)\nTest: run bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I619fb5a7e27a272aac30011579665f6160888bc7\n"
    },
    {
      "commit": "581b9f661bc7d32691ac5e5ee8eac38a8807aa09",
      "tree": "2100650f26ccb76348855e2747f86c77926dba3a",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 09 11:05:52 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 10 13:41:27 2017 -0800"
      },
      "message": "Hide __system_property_add/update, deprecate find_nth\n\nThese functions are supposed to be used only by the\nproperty service.\n\n__system_property_find_nth is deprecated and no longer part\nof NDK. Call to this function will result in abort for apps\ntargeting Android O.\n\nBug: http://b/34114501\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I9846965bf248e2ddf45cd7b293618245bbd87145\n"
    },
    {
      "commit": "fc8e688c322a28803b62eb5bff3c842a440bb2b5",
      "tree": "afd7c15b513b9ed246f7b1cbb34de3004c5e53e0",
      "parents": [
        "a5c16983a65e2169174a0e77a54c0ce650f87b48"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 18 16:27:29 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Nov 19 11:46:54 2016 -0800"
      },
      "message": "Implement \u003clanginfo.h\u003e.\n\nPOSIX locale only, as usual.\n\nThe GNU YESSTR and NOSTR extensions return the empty string in the C locale,\nso I haven\u0027t bothered supporting them.\n\nBug: http://b/1401872\nTest: bionic tests\nChange-Id: I6846839e4f9f1812344ed5dce0b93f83c0c20eb3\n"
    },
    {
      "commit": "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": "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": "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": "c8a95a3b15c752bcba84516589a9f2bd63f22ca6",
      "tree": "0cc41faee0e71370481305866cc24d8561103cab",
      "parents": [
        "1bcaf53d20ffbfe0c18d8fefa3daed324590b2d3"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 04 15:39:05 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 04 15:39:21 2016 -0700"
      },
      "message": "Run genversion-scripts.py.\n\nChange-Id: I01c4d9a85d3397b02b00b4d33fafe6d9ae692ed7\n"
    },
    {
      "commit": "37ba9052b0a20499bd88e4ad4f3b834300637912",
      "tree": "67dfe3c65256d7d0dfdaff14dfe9f99b33aaf574",
      "parents": [
        "ea701b37905c4e3c8eda9932224e013d97b4ccea"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 02 15:20:36 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 02 15:33:53 2016 -0700"
      },
      "message": "Run genversion-scripts.py.\n\nChange-Id: Iecc1b127c67a96aecc4e86582c1cc3291a4acf00\n"
    },
    {
      "commit": "20788aec002ab3f6dea4e01665a439933161d11c",
      "tree": "cb77d4d956f2377e762476a96cfe92b4dcaf6a94",
      "parents": [
        "70d99a1053542b8c062e6cb7eca2bcfb16c25d55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 15:16:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 15:16:32 2016 -0700"
      },
      "message": "Add ctermid.\n\nChange-Id: I7c7c815c2725df222932db923632c8b6419741ab\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": "71e783d8a42b185d1d98aa2c7ec71112397c6671",
      "tree": "0cb34d82bbfc79fb59cbd773795574823cd285ef",
      "parents": [
        "a24cc2639f85d0b0978b18493f4f3bceebbc8ed3"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jun 03 08:33:51 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jun 03 08:33:51 2016 -0700"
      },
      "message": "Remove __brk\n\nThe symbol is unused and deprecated\n\nBug: http://b/29005114\nChange-Id: I5e99c8b029514e8b2405a1eec23ac8941374a8a4\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": "54548d8cf91ba2e891b2dd0d25ae5956c62ad3ef",
      "tree": "571890de1fe62806e25cb16c5858bfc48acfc6df",
      "parents": [
        "e1be20f648abffd115bb699d3b14bd07c7c1430b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 27 18:16:16 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Apr 27 18:16:16 2016 -0700"
      },
      "message": "Make malloc debug symbols platform-private\n\nBug: http://b/28432442\nChange-Id: I96b9cb8b57726b4e8d53069e72666cf107cdeba2\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": "97c9d73a8787e3d8e0a4a4b3445fc5d71f0eb222",
      "tree": "f7cbbc05cb74a82d714116ac921b9aa37a41282e",
      "parents": [
        "fff356786f8a3a98c5c29f12bb7e59e6d98076a9"
      ],
      "author": {
        "name": "Pierre Imai",
        "email": "imaipi@google.com",
        "time": "Mon Apr 18 12:00:12 2016 +0900"
      },
      "committer": {
        "name": "Pierre Imai",
        "email": "imaipi@google.com",
        "time": "Thu Apr 21 10:07:26 2016 +0900"
      },
      "message": "Add new info functions to resolver for use by Netd.\n\nandroid_net_res_stats_get_info_for_net returns the current name servers, search\ndomains, parameters and stats for the given network ID.\n\nandroid_net_res_stats_aggregate provides statistics such as errors counts from\nthe raw stats data reported by android_net_res_stats_get_info_for_net.\n\nandroid_net_res_stats_get_usable_servers uses the data returned by\nandroid_net_res_stats_aggregate to determine which of the servers are\nconsidered valid or broken by the resolver.\n\nBUG: 25731675\n\nChange-Id: I6059b68e5e8b809027a4d3135f6081588bee8a7d\n"
    },
    {
      "commit": "ab6c7defc1643a0ce8c3ccdb44b51c83fdfdd450",
      "tree": "9a8cd42619ecc3f05d9dab92ee0946bea3b40eab",
      "parents": [
        "668fddb3ba36b52a16381513b1a0a42d9dd910e1",
        "9f39326a740860a0cfd472115b929bf0ab83799b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Apr 16 01:30:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 16 01:30:44 2016 +0000"
      },
      "message": "Merge \"Revert \"Temporary move __udivdi3 back to LIBC for x86\"\""
    },
    {
      "commit": "9f39326a740860a0cfd472115b929bf0ab83799b",
      "tree": "63b2ca216452e9fe593fd4ea436c8815a2fb0391",
      "parents": [
        "bc02fb964a59983521c5f6cf80b1189434952780"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Apr 16 00:58:12 2016 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Sat Apr 16 00:58:12 2016 +0000"
      },
      "message": "Revert \"Temporary move __udivdi3 back to LIBC for x86\"\n\nThis reverts commit bc02fb964a59983521c5f6cf80b1189434952780.\n\nBug: http://b/26406724\nBug: http://b/26423217\nChange-Id: I8e3186fc76502d6818753e5d76a7c145207ed9a3\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": "eafad49bd6a0e6ca63ae0a5577d3ef7a45713107",
      "tree": "495cbef3d47cb818b28a2768a3e9e43ac004dea2",
      "parents": [
        "66606ff84c079e95c03a61cc8bcfb08261a5a173"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 23:01:42 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 06 11:06:09 2016 -0700"
      },
      "message": "Add \u003csys/quota.h\u003e.\n\nIt turns out that at least the Nexus 9 kernel is built without CONFIG_QUOTA.\nIf we decide we\u0027re going to mandate quota functionality, I\u0027m happy for us to\nbe a part of CTS that ensures that happens, but I don\u0027t want to be first, so\nthere\u0027s not much to test here other than \"will it compile?\". The strace\noutput looks right though.\n\nBug: http://b/27948821\nBug: http://b/27952303\nChange-Id: If667195eee849ed17c8fa9110f6b02907fc8fc04\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": "c9291e1bb51a9bf9fb64e382a094dc205de4287d",
      "tree": "c819ca953fefe55ea960033bb8cfde8caece9271",
      "parents": [
        "7897405439630d59b8f2c9fc51239c44bac4fe9e",
        "df143f8576afb0446794d4ccb1fb02aed196c82a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 05 18:03:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 05 18:03:56 2016 +0000"
      },
      "message": "Merge \"Add POSIX getsubopt(3).\""
    },
    {
      "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": "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": "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": "63322aa555d06bc961bfe419ba69471cdab2927b",
      "tree": "5d508f18515b4745ddf3854bb71fdc0926280182",
      "parents": [
        "3c410c855c902f3fe99b4bf24ea8af1b289f120f",
        "725b2a96a70c6570a1fb84562fe46348414752cd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 24 02:47:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 24 02:47:10 2016 +0000"
      },
      "message": "Merge \"Add pthread_getname_np.\""
    },
    {
      "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": "e5c872ffb73ba798a3e2e2a95c1e2caba8c53284",
      "tree": "1adc8dd6b755bef3c176be7b26e0de30647d79a3",
      "parents": [
        "506456c5d1ba281cb01c224679fc86d7a4c99ade"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Mar 03 13:10:23 2016 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Mar 23 16:25:42 2016 -0700"
      },
      "message": "genversion-scripts: fix script name in autogenerated comment\n\nChange-Id: I2a304818cfc54d08a08d2e621e4cf74e7ce465dd\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "2d4721c0c57fe2f7c1e1b40df4763a561b3cf856",
      "tree": "256b5519e32df5b56b6bc6a343f5ff50d16ddea0",
      "parents": [
        "869691c6f7691dd5bf343617aa185c32e0d3d160"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 02 11:57:54 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:16 2016 -0800"
      },
      "message": "Export malloc_backtrace\n\nChange-Id: Ic1adb4dfd86b9ca698443a36263a3df2c91edda3\n"
    },
    {
      "commit": "869691c6f7691dd5bf343617aa185c32e0d3d160",
      "tree": "aa0cb5619aa90a899a31ca0ba250cb180c5d1302",
      "parents": [
        "aca201358b910e5a4b925c639902387fbdfd9016"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 29 12:48:18 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 15:05:38 2016 -0800"
      },
      "message": "Export malloc_iterate and friends\n\nExport malloc_iterate, malloc_enable, and malloc_disable to be used by\nlibmemunreachable.\n\nChange-Id: I08a50349af82a95d096b6b4cbac37ababe4b9b06\n"
    },
    {
      "commit": "0c485dae707fac45f5d8baff7da1a469e25c2261",
      "tree": "a7d6b4ba2311bd0f42c3dd487667f5bf4baadca3",
      "parents": [
        "5da33dd67350fcb7c12a57027b1af5f4e72a9c21"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 14:13:52 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 14:13:52 2016 -0800"
      },
      "message": "Add in6addr_any and in6addr_loopback symbols.\n\nChange-Id: I3a90fa448b6bd43321672ba74b84a4e9e8a67738\n"
    },
    {
      "commit": "5f26c6bc91f653b61c01e2ff6e7eac4847e315a5",
      "tree": "ce87a77e7a33435dfdecf8d3b8517d6b261c1dac",
      "parents": [
        "36ff6995707112e66dd0dec78be7f8ee9b95d321"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 13:19:10 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 13:19:10 2016 -0800"
      },
      "message": "Really add adjtimex(2), and add clock_adjtime(2) too.\n\nChange-Id: I81fde2ec9fdf787bb19a784ad13df92d33a4f852\n"
    },
    {
      "commit": "f226ee59e0effedeabed09e2d65be7fa7499cc25",
      "tree": "60b192388b5575a5315d7e9ea2b5b4ffa29ed59f",
      "parents": [
        "a279324094d748b97201412b2457d2f6e26287dd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 11:24:28 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 11:24:28 2016 -0800"
      },
      "message": "Add fopen64/freopen64/tmpfile64 aliases.\n\nOur fopen/freopen/tmpfile are already always O_LARGEFILE, but let\u0027s add\nthe aliases for _LARGEFILE_SOURCE compatibility.\n\nBug: http://b/24807045\nChange-Id: I5d99b3ef3c9f27ce70f13313f6a92e96c7f21f80\n"
    },
    {
      "commit": "e4fa6e9cc7f894a5a85ca50249b1f6e9efd49d3a",
      "tree": "9e3f941adea3e014a39fcd89c6955f57cc9e5d3d",
      "parents": [
        "3e75110bcb1d7b941ab0633e7e5c36c604512ded"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 02 22:39:15 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 02 22:39:15 2016 -0800"
      },
      "message": "Expose ftello64.\n\nAlso add the missing test that would have caught this.\n\nBug: http://b/24807045\nChange-Id: I756a4d825595b52396b15898e3f717156fd1ba2f\n"
    },
    {
      "commit": "ffaa2169d759a3a85ac0b67ae6be80f9dfe073b6",
      "tree": "17be285dd7194bea40f9352d59b4daf00bd4c0f7",
      "parents": [
        "aa2fd0fece33853e87439c6b4279291ce5d7dcd1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 27 15:12:19 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 27 15:12:19 2016 -0800"
      },
      "message": "Hide \u0027__moddi3\u0027 symbol for x86 and mips\n\nBug: http://b/26805673\nChange-Id: I7dc213e9f25510a2a74a30e8c43fd7a64cb3dbdb\n"
    },
    {
      "commit": "aa2fd0fece33853e87439c6b4279291ce5d7dcd1",
      "tree": "285cf44ad8932329b43dd7b754013f27596759a1",
      "parents": [
        "172420e6a2c5af527984a3a3a51f60a48b06ae9a"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 27 14:54:36 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 27 14:54:36 2016 -0800"
      },
      "message": "Hide \u0027__isthreaded\u0027 for lp64 libc.so\n\nBug: http://b/26805673\nChange-Id: I2928d68287894be9f9ae7ed1858af512d8c80a3b\n"
    },
    {
      "commit": "896224aa7f307b6c53d8c4dfa0b0e3556b3b9fda",
      "tree": "e409e5c4286b5f1940a0d9ec33e88fd07c62920c",
      "parents": [
        "a449fafc894c47305b49087d995e821e878e59c1",
        "03e65eb03bf0bfaafa797daf91e80e8308968db3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 23:26:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 26 23:26:43 2016 +0000"
      },
      "message": "Merge \"Implement funopen64.\""
    },
    {
      "commit": "3a33b5298101e959c83ea60003618d3052d0adfe",
      "tree": "4542fa41ed35183990cabcaf578329d55ee24416",
      "parents": [
        "ced73ee45e04a991ce1295a38364568a17884eed",
        "97cb4fbed2e978bde0d761106294a7920faf9db0"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 26 22:47:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 26 22:47:56 2016 +0000"
      },
      "message": "Merge \"Move android_ network functions to LIBC_PRIVATE\""
    },
    {
      "commit": "03e65eb03bf0bfaafa797daf91e80e8308968db3",
      "tree": "9f3158666a6a63833a0ae6beb23f3e0979de1fd8",
      "parents": [
        "ced73ee45e04a991ce1295a38364568a17884eed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:13:04 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:45:13 2016 -0800"
      },
      "message": "Implement funopen64.\n\nBug: http://b/24807045\nChange-Id: I161920978161389be34b707cc6ce8e05f760d552\n"
    },
    {
      "commit": "97cb4fbed2e978bde0d761106294a7920faf9db0",
      "tree": "37f8afd5c5ff014818a7d69b2c69c999e272f745",
      "parents": [
        "a42483baad9a37297e6bbbe02d433ecbde890386"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 26 14:07:32 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 26 14:44:00 2016 -0800"
      },
      "message": "Move android_ network functions to LIBC_PRIVATE\n\nMake following functions platform-private:\n android_getaddrinfofornet\n android_getaddrinfofornetcontext\n android_gethostbyaddrfornet\n android_gethostbynamefornet\n\nBug: http://b/26794226\nChange-Id: I0855b0b82721e4d24e918508931b4d5587fcae7d\n"
    },
    {
      "commit": "94bb0fab931102f1fcf393aa507a6b77b741844f",
      "tree": "9f4b08c289379da922d2499169f39481914f0f40",
      "parents": [
        "d9bb70857577808c197030e7f5422ee1f976f3ac",
        "9677fab88c25fd2e6f3149ad00fb8870963f0675"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 20:51:59 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 26 20:51:59 2016 +0000"
      },
      "message": "Merge \"Support _FILE_OFFSET_BITS\u003d64 for most of \u003cstdio.h\u003e.\""
    },
    {
      "commit": "5704c423c81790195161c1757ae79da188590c51",
      "tree": "66ebd378fb496400d35ad38a8c4eb25931ad30f2",
      "parents": [
        "ac67b4eb7c70ea668abb32298b0cb16920a32a66"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 18:06:24 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 11:09:44 2016 -0800"
      },
      "message": "Implement POSIX lockf.\n\nThis has been requested a few times over the years. This is basically\na very late rebase of https://android-review.googlesource.com/45470\nwhich was abandoned years ago. One addition is that this version has\n_FILE_OFFSET_BITS\u003d64 support.\n\nPOSIX puts this in \u003cunistd.h\u003e. glibc also has it in \u003cfcntl.h\u003e.\n\nBug: http://b/13077650\nChange-Id: I5862b1dc326e326c01ad92438ecc1578d19ba739\n"
    },
    {
      "commit": "9677fab88c25fd2e6f3149ad00fb8870963f0675",
      "tree": "365bc8bb9137d504717b88444cdc1262a6c58df3",
      "parents": [
        "ac67b4eb7c70ea668abb32298b0cb16920a32a66"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 15:50:59 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 09:14:41 2016 -0800"
      },
      "message": "Support _FILE_OFFSET_BITS\u003d64 for most of \u003cstdio.h\u003e.\n\nThis doesn\u0027t address funopen, but does add fgetpos/fsetpos/fseeko/ftello.\n\nBug: http://b/24807045\nChange-Id: Ibff6f00df5fb699c8e8f13b91a75caf024540b73\n"
    },
    {
      "commit": "bba395492a0bb6ee72d0ad8e4d468e852392220e",
      "tree": "bf0baaf8f36e64b3b64045ab8b2401625ca83ac0",
      "parents": [
        "05c2f6b3d39ee92eae248e902a5a54fdcc6c696f"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 21 22:25:32 2016 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jan 22 01:43:04 2016 +0000"
      },
      "message": "Revert \"Temporary apply LIBC version to __pthread_gettid\"\n\nThis reverts commit 0ef1d121b5e4845f4ef3b59ae9a1f99ceb531186.\n\nBug: http://b/26392296\nBug: http://b/26391427\nChange-Id: I7bbb555de3a43813e7623ff6ad4e17874d283eca\n"
    },
    {
      "commit": "05c2f6b3d39ee92eae248e902a5a54fdcc6c696f",
      "tree": "fdf634fa45040a1d98fa5cb64cf5730bcf39c603",
      "parents": [
        "40316a37484ee755bf38bcf3897923cb43856baf",
        "1a8732c2325397bca61e98b18c9c5e458b13394b"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jan 22 01:41:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 01:41:27 2016 +0000"
      },
      "message": "Merge \"libc: hide __signalfd4 symbol\""
    },
    {
      "commit": "90d2daec5129fa1157886d972559475d6ab3a3c2",
      "tree": "3498dee055cfd7c50321c962a052aa8c7c61e717",
      "parents": [
        "8d6e19408cfdbd73ba7e5c9e5b8716d9dad8dcf9"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 21 16:05:23 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 21 16:05:23 2016 -0800"
      },
      "message": "libc: hide fake_gmtime_r and fake_localtime_r\n\nBug: http://b/26274444\nChange-Id: Icf96a00142a287d8d3466d2545e213e605601b42\n"
    },
    {
      "commit": "1a8732c2325397bca61e98b18c9c5e458b13394b",
      "tree": "a079fb314cb756771e81a4cf58886a55bd1e32e9",
      "parents": [
        "8d6e19408cfdbd73ba7e5c9e5b8716d9dad8dcf9"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 21 15:19:52 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Jan 21 15:19:52 2016 -0800"
      },
      "message": "libc: hide __signalfd4 symbol\n\nBug: http://b/26274444\nChange-Id: Iaa2df640cac07e2e407ca11b9701ee9e11729146\n"
    },
    {
      "commit": "ed57b98758176f0cccdec16cbed524e444039fe7",
      "tree": "75089e67cfcbff961a859ac13409b1f19137cfc6",
      "parents": [
        "68d0150221eb505a576f6ad5ca1f367b4ce547a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 15 21:02:56 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 18 12:07:38 2016 -0800"
      },
      "message": "Implement if_nameindex(3)/if_freenameindex(3).\n\nThis is just a subset of the recently-implemented getifaddrs(3), though if\nwe want to handle interfaces (such as \"rmnet_*\") that don\u0027t have an address,\nwe need to either expose ifaddrs_storage and keep track of which interfaces\nwe\u0027ve already seen (which is pretty messy), or refactor the netlink code so\nwe can reuse it and just extract the information we need for if_nameindex(3).\nThis patch goes the latter route.\n\nAlso clean up if_nametoindex(3) and if_indextoname(3).\n\nChange-Id: I5ffc5df0bab62286cdda2e7af06f032c767119a8\n"
    },
    {
      "commit": "126d5ab779d8d4b34e7450a36db4641629f15d29",
      "tree": "c4763fee989daa68e455f37296b8ba7a62f17714",
      "parents": [
        "2487f3e15f19cd370f2e45b466c577cbb4db23f8",
        "e1078a939afe4b29ddb0f6ef13419395e1f0b03c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 13 20:35:25 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 13 20:35:25 2016 +0000"
      },
      "message": "Merge \"Revert \"Move __system_property* to LIBC_PRIVATE for lp64 libc\"\""
    },
    {
      "commit": "e1078a939afe4b29ddb0f6ef13419395e1f0b03c",
      "tree": "8c9b5592d0d066ae0c4843219376097e3c4de6c9",
      "parents": [
        "ff14fb5a1f809d87125fa0d14f08d486b6bf1ea1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 13 20:32:12 2016 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 13 20:32:12 2016 +0000"
      },
      "message": "Revert \"Move __system_property* to LIBC_PRIVATE for lp64 libc\"\n\nThis reverts commit ff14fb5a1f809d87125fa0d14f08d486b6bf1ea1.\n\nBug: http://b/26497521\nChange-Id: Id7131b37a31e936db0e72ef9969e1f13d2dd578f\n"
    },
    {
      "commit": "1464f6d8d9d560ed57bd878b822b2611c821b8bd",
      "tree": "3a82945b8b291fbd21223101fbdc7608bdb0b89e",
      "parents": [
        "4664c14fa44746ddf41524999ad96d221409c32c",
        "76dfa6e351952e60893e236022df54a23a558b65"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 19:02:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 06 19:02:19 2016 +0000"
      },
      "message": "Merge \"Remove mktime_tz.\""
    },
    {
      "commit": "bc02fb964a59983521c5f6cf80b1189434952780",
      "tree": "2ed2324d076d99b58769ee61c2638d6ac199f9ca",
      "parents": [
        "74d7aa1c341055474e03d2cc9af0aea01bfb5758"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 05 11:18:42 2016 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed Jan 06 18:36:40 2016 +0000"
      },
      "message": "Temporary move __udivdi3 back to LIBC for x86\n\nBug: http://b/26289334\nBug: http://b/26413821\nChange-Id: Ifb0eb6f16aca54cb4a9184a6394992ee57dd3408\n"
    }
  ],
  "next": "76dfa6e351952e60893e236022df54a23a558b65"
}
