)]}'
{
  "log": [
    {
      "commit": "f5605374da9605686352300de3e1bf342e72032d",
      "tree": "3476fdc8ee5845bd276cb6b834392e4532feb16d",
      "parents": [
        "dcdd0e37603215320d4fd175792aeef279a80606"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jul 17 14:05:44 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jul 17 14:05:44 2017 -0700"
      },
      "message": "Add __RENAME_IF_FILE_OFFSET64.\n\nConvenience macro for __RENAME if __USE_FILE_OFFSET64 mode. Lets us\navoid duplicating all the doxygen comments in frameworks headers.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/459\nChange-Id: Ica44f22b2f1596e484694006c0926d94d16187b5\n"
    },
    {
      "commit": "6aaa227f74031ee461c7ce5b7a2a262397e866b2",
      "tree": "6f08e2d4c0270c6d47601d7cc9fb6421cdf20edc",
      "parents": [
        "c2828b87ec1066dfceb873532ef6cae7b64c2901",
        "00fedf5879176d580aa7e9c4fdc820a6f9655033"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 10 20:20:53 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 10 20:20:53 2017 +0000"
      },
      "message": "Merge \"Undo recent _FILE_OFFSET_BITS\u003d64 changes.\""
    },
    {
      "commit": "00fedf5879176d580aa7e9c4fdc820a6f9655033",
      "tree": "4924ca943550aff0904589800ab34b8ae9993b55",
      "parents": [
        "f45bc14d5497c30bd43e22d025e3b88812b2baa4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 05 15:23:50 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 10 19:52:18 2017 +0000"
      },
      "message": "Undo recent _FILE_OFFSET_BITS\u003d64 changes.\n\nWe had several bugs filed saying \"if I set _FILE_OFFSET_BITS\u003d64 when\ntargeting an API \u003c L, various functions are missing\". Instead of\nsaying \"yes, they are\", we quietly just modified the header files to\nexpose the non-64-bit variants. This makes no sense. We can\u0027t just say\n\"oh, yeah, we don\u0027t have a version of this function that agrees with\nyour calling code about how large off_t is, but here\u0027s a version that\ndoesn\u0027t: I\u0027m sure it\u0027ll be fine\".\n\n_FILE_OFFSET_BITS\u003d64 on Android LP32 has always been a game of chance,\nbut that game should be \"are all the functions my code needs available\nat compile time?\", not \"will my code actually work at run time?\".\n\nBug: https://github.com/android-ndk/ndk/issues/449\nBug: https://github.com/android-ndk/ndk/issues/442\nBug: https://github.com/android-ndk/ndk/issues/333\nBug: https://github.com/android-ndk/ndk/issues/332\nBug: https://github.com/android-ndk/ndk/issues/324\nTest: builds\nChange-Id: Ib095251d3e21e77ed50cc3575388107fecec4ecd\n"
    },
    {
      "commit": "6c716a155df1c25ddc8e48f8bf29163b9a58441c",
      "tree": "28cd6d7e0fd27079ea6d9c91c22e22a1304dc0c6",
      "parents": [
        "1de6d0bb8a003f8d3b30948029a264a28d59fe9d",
        "8d307c9a302c5a8fb985d1ed29862bec77aaf7c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 06 22:33:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 06 22:33:42 2017 +0000"
      },
      "message": "Merge \"Support building binutils out of the box for x86/x86-64.\""
    },
    {
      "commit": "8d307c9a302c5a8fb985d1ed29862bec77aaf7c8",
      "tree": "90740cabd732429477830313decd9e3b9c5d7058",
      "parents": [
        "f45bc14d5497c30bd43e22d025e3b88812b2baa4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 06 11:04:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 06 11:10:01 2017 -0700"
      },
      "message": "Support building binutils out of the box for x86/x86-64.\n\nx86 needs the \u003csys/user.h\u003e additions, x86-64 the \u003csys/procfs.h\u003e ones.\n\nBug: N/A\nTest: ndkports x86 and x86_64 binutils-2.28\nChange-Id: I2e4738d3f8343d12db0536ca77045e2a0ccc6596\n"
    },
    {
      "commit": "02fdd0570e6246381adc2d8ff9c9a990f5b79506",
      "tree": "6e3ec64e7a3b24062f097f7d9e456e2f070de2a8",
      "parents": [
        "f45bc14d5497c30bd43e22d025e3b88812b2baa4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 06 10:33:15 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 06 10:33:15 2017 -0700"
      },
      "message": "Make \u003csys/ttydefaults.h\u003e more usable.\n\n* TTYDEF_OFLAG referred to the BSD OXTABS constant instead of the Linux XTABS,\n  so references to it wouldn\u0027t compile.\n\n* CEOL was incorrect (compared to `stty -a`).\n\n* ttydefchars wouldn\u0027t compile (removed rather than attempt to fix something\n  of unclear utility).\n\nBug: http://b/63145226\nTest: new test\nChange-Id: I823e5eaab789cafd2eeea03f77ea553346822f74\n"
    },
    {
      "commit": "42edca036e5c9ed24017de5fba41d5d1feda61d0",
      "tree": "840e9b6643e13ec18532a92702e041b960af5dce",
      "parents": [
        "fed32937eb0688f2d55ef9885f99e4c35508ec59",
        "a4e774c2bb9b4bddc1dfedf4d6a4db6797f3478f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 16 22:51:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 16 22:52:01 2017 +0000"
      },
      "message": "Merge \"Add sys/stat.h compatibility macros for old NDKs.\""
    },
    {
      "commit": "8ad40936597c94901b6acb0b21bfe0e2a0689224",
      "tree": "d228db0e344a21109b07276e5282c841daa88269",
      "parents": [
        "0bd23e47067126677537a2b5bedd22dce54d92e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 15 15:12:29 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 15 15:12:29 2017 -0700"
      },
      "message": "Add #defines for some key enums.\n\nBuilding ruby actually trips over both of these:\n\n* if the RTLD_ constants aren\u0027t #defined, it uses its own incorrect values.\n\n* if the REG_ constants aren\u0027t #defined, it confuses x86 with x86-64.\n\nIn all other places where we have enums in our headers, we already match\nexisting glibc practice.\n\nBug: http://b/62531921\nTest: builds\nChange-Id: I5b3aab25a1a24611bdc58f2eda4104a78e9f841c\n"
    },
    {
      "commit": "112581a5e0b72845feb6cc9851f28a64d13183ac",
      "tree": "111ab7801cbe768549f22f317f0e358c63dc0c51",
      "parents": [
        "67f03e06876c817fa34375ee18111538d8a6b2ec",
        "6fa8df9d3c1d7093778594f4af11faa9b37803e8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 15 15:06:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 15 15:06:36 2017 +0000"
      },
      "message": "Merge \"Don\u0027t use the overloadable attribute if we\u0027re not fortified.\""
    },
    {
      "commit": "af0c781cf4c2051d81c1edb772679ebd207f7464",
      "tree": "ef369402141cd368d63bae8aa09a3ec8372fa7a4",
      "parents": [
        "7f6bcc478083e25627838cb5de7e8efbc9468a55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 14 17:16:05 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 14 17:16:05 2017 -0700"
      },
      "message": "Add \u003csys/mtio.h\u003e.\n\nIn a similar style to some of our other \"not really, but enough\" headers\nlike \u003csys/vt.h\u003e.\n\nBug: N/A\nTest: build GNU dd or BSD dd with a standalone toolchain\nChange-Id: I8fbd1aac1d97e24b05e7aae8a55666300b5bf1ed\n"
    },
    {
      "commit": "6fa8df9d3c1d7093778594f4af11faa9b37803e8",
      "tree": "1f0ed41bf69d08ccc9618b939c62ddc3e9f666ed",
      "parents": [
        "7f6bcc478083e25627838cb5de7e8efbc9468a55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 14 16:54:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 14 16:54:32 2017 -0700"
      },
      "message": "Don\u0027t use the overloadable attribute if we\u0027re not fortified.\n\nSee code comment.\n\nBug: N/A\nTest: building bash and binutils with a standalone toolchain\nChange-Id: I73b5d55716072ca1b03b1b0157d65cb1ceb22841\n"
    },
    {
      "commit": "a4e774c2bb9b4bddc1dfedf4d6a4db6797f3478f",
      "tree": "f519d8feea9edfb35e46816d35b69ff36c0fbe40",
      "parents": [
        "8c67f1e617357cad075874598702bf9a9c8e8200"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 12 14:59:38 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 14 14:03:14 2017 -0700"
      },
      "message": "Add sys/stat.h compatibility macros for old NDKs.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/417\nChange-Id: I04fdb2f31131e87907adab9f3264b783917de542\n"
    },
    {
      "commit": "2eab77e5034444fee63a302c89502c970dd2b0b6",
      "tree": "7d8db3d5a0fffeb638d73e2702b2d30bf2b46e1f",
      "parents": [
        "15eaaddef9fffda1209e9cc576b47b0f6e0cb379"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 01 14:08:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 01 14:08:58 2017 -0700"
      },
      "message": "Fix boost build with unified headers.\n\nboost (1.64.0 at least) assumes that if you have POSIX_MADV_NORMAL, you have\nposix_madvise. With unified headers, this isn\u0027t true. Rather than make life\nharder for projects that don\u0027t use configure, just make it so. We already\napplied similar workarounds for epoll_create1 and inotify_init1.\n\nBug: https://github.com/android-ndk/ndk/issues/395\nTest: built boost (long story!)\nChange-Id: I5d2d8de7b30921dde913251d35dcd249a2876f94\n"
    },
    {
      "commit": "f58179cda5a905f405efac4f116f5205e3b01611",
      "tree": "d4986fc5db89ae3fdbd0a657fff911717db87bbc",
      "parents": [
        "1143a629772c85b779b0f8249e1e223e27ff7481",
        "8543f923fe46b958e5061dab6d0440c9e2cd7603"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 25 01:43:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 25 01:43:07 2017 +0000"
      },
      "message": "Merge \"Stop including \u003csys/sysmacros.h\u003e from \u003csys/types.h\u003e.\""
    },
    {
      "commit": "8543f923fe46b958e5061dab6d0440c9e2cd7603",
      "tree": "1584013cdea9884316239b3f4a5606066b5b613c",
      "parents": [
        "4767bc4a6cebc2ad4c61cccdf92290e17227a792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 15:53:36 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 23 15:53:36 2017 -0700"
      },
      "message": "Stop including \u003csys/sysmacros.h\u003e from \u003csys/types.h\u003e.\n\n\u003csys/types.h\u003e unconditionally includes \u003csys/sysmacros.h\u003e.\n\n\u003csys/sysmacros.h\u003e defines major, minor, and makedev. In the deprecated NDK\nheaders, these were inline functions. In the unified headers, they are\nfunction-like macros.\n\nThe inline functions would only collide with another function called major,\nminor, or makedev but the macros will replace anything with a function-like\nform such as definitions of class methods called major, minor, or makedev.\nThis causes code which has such definitions to fail to compile when moving\nfrom the deprecated headers to the unified headers.\n\nResolve this by removing the transitive dependency. Folks who want\n\u003csys/sysmacros.h\u003e can ask for it explicitly (it\u0027s been in both bionic and\nglibc for years, though I don\u0027t think macOS has it [as usual]).\n\nBug: https://github.com/android-ndk/ndk/issues/398\nTest: builds\nChange-Id: If2921c7b5d979c3066f199f22c64d4d2f7bf6632\n"
    },
    {
      "commit": "7bbe7cb619c6e3afa557d0665d8082f2a1490064",
      "tree": "40b0d2cc9da2e7113e06c184b8c1894f451bc211",
      "parents": [
        "6e7f14d9f707c295765e119800acfa0621a347cb",
        "5a215d7817baf190a8af76674303b0d50ce67c07"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 23 00:48:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 23 00:48:01 2017 +0000"
      },
      "message": "Merge changes Iefdc1662,I8ee9ce62\n\n* changes:\n  Don\u0027t define IN_CLOEXEC/IN_NONBLOCK for pre-L.\n  Undef EPOLL_CLOEXEC for pre-L.\n"
    },
    {
      "commit": "5a215d7817baf190a8af76674303b0d50ce67c07",
      "tree": "212b863307cf627ce54a8b89cf9f30d76af7da93",
      "parents": [
        "cdfface662306d20cfaa4abe046eb85794201d6c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 22 12:58:18 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 22 12:58:18 2017 -0700"
      },
      "message": "Don\u0027t define IN_CLOEXEC/IN_NONBLOCK for pre-L.\n\nSome third-party code uses the existence of IN_CLOEXEC/IN_NONBLOCK to\ndetect the availability of inotify_init1. This is not correct, since\n`syscall(__NR_inotify_init1, IN_CLOEXEC)` is still valid even if the C\nlibrary doesn\u0027t have that function, but for the time being we don\u0027t\nwant to harm adoption to the unified headers. We\u0027ll avoid defining\nIN_CLOEXEC and IN_NONBLOCK if we don\u0027t have inotify_init1 for the time\nbeing, and maybe revisit this later.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/394\nChange-Id: Iefdc1662b21045de886c7ad1cbeba6241163d943\n"
    },
    {
      "commit": "cdfface662306d20cfaa4abe046eb85794201d6c",
      "tree": "572aa51504a38f486cddde87d54bf2013e894b98",
      "parents": [
        "f06535035ef6e48aeacc37819ea7182416275216"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 22 12:52:00 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 22 12:52:00 2017 -0700"
      },
      "message": "Undef EPOLL_CLOEXEC for pre-L.\n\nSome third-party code uses the existence of EPOLL_CLOEXEC to detect\nthe availability of epoll_create1. This is not correct, since having\nup-to-date UAPI headers says nothing about the C library, but for the\ntime being we don\u0027t want to harm adoption to the unified headers.\nWe\u0027ll undef EPOLL_CLOEXEC if we don\u0027t have epoll_create1 for the time\nbeing, and maybe revisit this later.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/302\nBug: https://github.com/android-ndk/ndk/issues/394\nChange-Id: I8ee9ce62768fb174070ec51d114f477389befc4a\n"
    },
    {
      "commit": "497ad30d7d76721adab8830a76e72bcc9a840ba5",
      "tree": "62ec1976efb39168023cc66892c47a1e20b5acf4",
      "parents": [
        "7ff7ed1c7de40059f1f21f59eed338603bec08e0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 18 15:05:26 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 18 15:05:26 2017 -0700"
      },
      "message": "Make `union semun` usable.\n\nThis is a bit bogus because it\u0027s been removed from glibc (though not\nthoroughly) and is never useful on Android (because the system calls\nin question are compiled out of Android kernels, and SELinux would\ndisallow them even if you weren\u0027t running an Android kernel). This\nalso means that on glibc you need to include \u003clinux/sem.h\u003e for this\nand on bionic you need \u003csys/sem.h\u003e (and for either if you #include\nthe other file, you won\u0027t get this union).\n\nBug: https://github.com/android-ndk/ndk/issues/400\nTest: added new test\nChange-Id: I47f721da77515531f616d6ad8479bfbc9b60ee47\n"
    },
    {
      "commit": "2e8e5e60b6ecbcfe2110242e41b9ec5340b11cf5",
      "tree": "8810a00e508e0dd698d23f513432fff2e513e87e",
      "parents": [
        "ee1c45f88f5fcd1b1d43c325e0de366cc3d0ce36"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 12:58:31 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 16:57:25 2017 -0700"
      },
      "message": "DO NOT MERGE: The future is now.\n\n__INTRODUCED_IN_FUTURE -\u003e __INTRODUCED_IN(26)\n\nBug: http://b/37437368\nTest: treehugger\nChange-Id: I601a23da83b65a0cd582cc840ed3856a9031b673\n(cherry picked from commit cb302f932a3532f1484e1e70894e9b1199384283)\n"
    },
    {
      "commit": "0446c8c095044d47217a59a9fd707fc8ed23b6fc",
      "tree": "0a18640e14b7a0aab407cb6e0bc60d83ec8cf045",
      "parents": [
        "791989d250a507e3fc5634eccbf1341d980f2916"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 19 10:20:25 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 19 10:52:35 2017 -0700"
      },
      "message": "Add missing arch-specific AT_ cruft.\n\nAP_FPUCW is referenced by valgrind.\n\nBug: https://bugs.kde.org/show_bug.cgi?id\u003d339945\nTest: valgrind builds with one less hack\nChange-Id: I7146f3709286662108cc82ba3c55ce935375a1f1\n"
    },
    {
      "commit": "57e7a0d853812ceaa2337a4fc6a0de1eef93977b",
      "tree": "9d3d5052e2d2a973b06e57ad9236967b7cbc1209",
      "parents": [
        "661a2ed9df173f6eb14530a8e4a51753a7df3890",
        "438e01940b90a2b6061a9b9809e08466e1e9faac"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 17 23:45:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 17 23:45:57 2017 +0000"
      },
      "message": "Merge \"Un-deprecated __system_property_find_nth.\""
    },
    {
      "commit": "438e01940b90a2b6061a9b9809e08466e1e9faac",
      "tree": "4889c190b65be3636ee5d638db7822624abcd412",
      "parents": [
        "e4e69a174a0b4980eaff49c55c39b476cbe9b73e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 14:53:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 14:53:07 2017 -0700"
      },
      "message": "Un-deprecated __system_property_find_nth.\n\nNetflix was using this, and looking the header file, although\n__system_property_find_nth has been available since the beginning of time,\n__system_property_foreach only appeared in 16. So anyone who wants to run\non pre-JellyBean devices would want to use __system_property_find_nth.\n\nIt\u0027s pretty much a one-liner in terms of __system_property_foreach anyway,\nso it doesn\u0027t cost us anything to keep it.\n\nAlso restore slightly better tests than we originally removed.\n\nBug: http://b/36566667\nTest: ran tests\nChange-Id: Id268c2c2e848da17bb0a5a5420af234d9dcb829a\n"
    },
    {
      "commit": "ef2b2fe99eb0d348d71a53702bb4981b17d8682e",
      "tree": "4d6ca9b8c53b94fb4bba1e78285f9c40b6167c76",
      "parents": [
        "e4e69a174a0b4980eaff49c55c39b476cbe9b73e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Apr 16 08:50:58 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Apr 16 08:50:58 2017 -0700"
      },
      "message": "Link to the public post about clang FORTIFY.\n\nBug: N/A\nTest: builds\nChange-Id: I1c2040fdd3c3bbe61a8adfc1f414fce50087a1b8\n"
    },
    {
      "commit": "bd3d2088d99f45babb8a73192b53b6fd91930af3",
      "tree": "0533adb1ea5e0af98272e39ff9dc8e7fd3bdbf83",
      "parents": [
        "07807a10a2dfa85a952ee8c06188d0bc9597c184"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Apr 04 17:34:02 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Apr 05 13:17:07 2017 -0700"
      },
      "message": "libc: add const-correct string.h overloads\n\nlibcxx provides const-correct overloads for a few string.h functions.\nThese overloads use clang\u0027s enable_if attribute, so they\u0027re preferred\nover our FORTIFY\u0027ed equivalents.\n\nThis weakens _FORTIFY_SOURCE\u003d2 when used with some of these functions,\nsince clang needs to see __pass_object_size in order to pass an accurate\nresult for __builtin_object_size(s, 1) at a callsite. Since those\nfunctions don\u0027t have __pass_object_size on their params, clang can\u0027t do\nthat. This makes LLVM lower the __builtin_object_size calls, which means\nwe get the same result as __builtin_object_size(s, 0).\n\nWe have to provide all of the overloads in Bionic, since enable_if is\nonly used to disambiguate overloads with (otherwise) the same type. In\nother words:\n\n// overload 1\nchar *strchr(const char *, int s) __attribute__((enable_if(1, \"\")));\n// overload 2\nchar *strchr(char *, int s);\n\nvoid foo() {\n  char cs[1] \u003d {};\n  strchr(static_cast\u003cconst char *\u003e(cs), \u0027\\0\u0027); // calls overload #1.\n  strchr(cs, \u0027\\0\u0027); // calls overload #2.\n}\n\nBug: 34747525\nTest: m checkbuild on bullhead internal master + AOSP. vts -m\nBionicUnitTests passes on both. Surprisingly, the only code that this\nseems to break is contained in Bionic.\n\nChange-Id: Ie406f42fb3d1c5bf940dc857889876fc39b57c90\n"
    },
    {
      "commit": "e36fb9ed9e3a5ad6152f66f9b473221b166f3b5b",
      "tree": "4daef986eb8195a8552d822429ea2dfe5977c027",
      "parents": [
        "8bd97b007ecf6363d8df9e6ed96bed8408c9f87a",
        "785b249df02434764db052507e956a2655fed0bb"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 20 21:53:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 20 21:53:41 2017 +0000"
      },
      "message": "Merge \"Only rename mmap to mmap64 if we\u0027re L or newer.\""
    },
    {
      "commit": "785b249df02434764db052507e956a2655fed0bb",
      "tree": "2eed4698abee108ebc71a25c82778a3beb220a96",
      "parents": [
        "616b2d87eabee34559b12a3ddd3e057a1ad49879"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Mar 17 11:47:09 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 20 12:57:13 2017 -0700"
      },
      "message": "Only rename mmap to mmap64 if we\u0027re L or newer.\n\nWithout this, setting `__USE_FILE_OFFSET64` and targeting pre-L made\nmmap entirely unavailable.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/332\nChange-Id: I9f61c44f8d9ab5c7cae845c9f89a7d889c6df365\n"
    },
    {
      "commit": "3645e71a43f57ceac914851998ad27a4ac33c208",
      "tree": "1dfb08f3626c0356e0df0e1562c243607c778a5b",
      "parents": [
        "9cb82a2c6b9001f7c50cbb3465f4aabc5d7cd055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 17 18:50:12 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 17 18:50:12 2017 -0700"
      },
      "message": "Only rename sendfile to sendfile64 if we\u0027re L or newer.\n\nWithout this, setting __FILE_OFFSET_BITS to 64 and targeting pre-L\nmade sendfile entirely unavailable.\n\nBug: https://github.com/android-ndk/ndk/issues/333\nTest: builds\nChange-Id: I82d326ff244473dd5443632ff6c19d726d5e29ee\n"
    },
    {
      "commit": "5927b04ce7d9d4727a4a644f8af4040b8dab5d0a",
      "tree": "5ec387d3cee1308a0813ac4a1ef4f07a81f63dcb",
      "parents": [
        "5d0c1fcc8b50c040f8828db4b3bb9ba11f8f9447",
        "41a3a6f3cf36d626bb8ae474291bda58fc10aba2"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Feb 24 19:11:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 24 19:11:13 2017 +0000"
      },
      "message": "Merge \"Hide internal __system_property_* functions\""
    },
    {
      "commit": "893fd97cdcfbb040c938acac42658c885da879ee",
      "tree": "0895bc2463681e35c48805993bbcc95c01b581e9",
      "parents": [
        "c84e8a507cd0384f9124d06ec6cc70807b4c293b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 22 23:22:51 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 23 17:26:24 2017 -0800"
      },
      "message": "Use \u003clinux/eventpoll.h\u003e to implement \u003csys/epoll.h\u003e.\n\nBug: https://github.com/android-ndk/ndk/issues/302\nTest: builds\nChange-Id: Ia3074326a128c38f2488e342c028cc030801cfd9\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": "40c885a4d18dd1e4480615ddd00c9f035dc08567",
      "tree": "58adbfd0852a7bb1d51122339b6a00e27bb6bcaf",
      "parents": [
        "40854235256c3f51f9ea866f5f8ef03240c00123"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 16 17:13:04 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 21 14:36:24 2017 -0800"
      },
      "message": "Add timeout support to __system_property_wait.\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: I3a78813bf3cd50d1b308ecb3c742f923606c0cc4\n"
    },
    {
      "commit": "4c78ca7e3cf3f7fd4bc17001ae7576b6c6722036",
      "tree": "2ebf500f1c18dfcf5d36037fa5394df441a18159",
      "parents": [
        "fec0e015ce0369b3ad710547f3d6af343b2cd5e1"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Feb 17 11:08:53 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Feb 17 11:08:53 2017 -0800"
      },
      "message": "Cleanup now that we don\u0027t need __NDK_FPABI__.\n\nTest: tools/update_headers.sh \u0026\u0026 make checkbuild\nBug: None\nChange-Id: I1b9986c4d7d5da349a8ad394e8fcf64b87c89fdf\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": "ade3be476fa918ea4e412f584e1e941260a7205c",
      "tree": "7042787c47c8ed0c40361e33b3b5f8ddf9a2542b",
      "parents": [
        "9fc52deab1c6bec6a37860242eafe1ae4c205e44",
        "a0d374d587ec18d437d0dd15ba1332aceaa188af"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 03:48:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 03:48:26 2017 +0000"
      },
      "message": "Merge \"Add __system_property_wait and return the serial in __system_property_read_callback.\""
    },
    {
      "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": "156d5a8ae93c6515919dd6706481991c7c0dc600",
      "tree": "babd491737f6965d7c6910869b435e5e47cf7cdc",
      "parents": [
        "e86a8d605b3df0c396e23ee02933c76d7040a73b"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Feb 10 13:56:22 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Feb 10 18:14:43 2017 -0800"
      },
      "message": "Match __bos0 to __pass_object_size0 in FORTIFY\n\npass_object_size(N) forwards the result of __builtin_object_size(param,\nN) to a function. So, a function that looks like:\n\n  size_t foo(void *const p __pass_object_size) { return __bos0(p); }\n  int bar \u003d foo(baz);\n\nwould effectively be turned into\n\n  size_t foo(void *const p, size_t sz) { return sz; }\n  int bar \u003d foo(baz, __bos(baz)); // note that this is not __bos0\n\nThis is bad, since if we\u0027re using __bos0, we want more relaxed\nobjectsize checks.\n\n__bos0 should be more permissive than __bos in all cases, so this\nchange Should Be Fine™.\n\nThis change also makes GCC and clang share another function\u0027s\nimplementation (recv). I just realized we need to add special\ndiagnostic-related overloads bits for clang to it, but I can do that in\nanother patch.\n\nBug: None\nTest: Bullhead builds and boots; CtsBionicTestCases passes.\nChange-Id: I6818d0041328ab5fd0946a1e57321a977c1e1250\n"
    },
    {
      "commit": "7cc779f15c524e1622f7d5b1c7e82e6ffc6677fd",
      "tree": "0f995c0878649447ef160e727505ae81495dcdde",
      "parents": [
        "2bfb8c9180603bac97dca2d8e359f71bb11f7126"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Feb 09 00:00:31 2017 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Feb 09 15:49:32 2017 -0800"
      },
      "message": "libc: add clang FORTIFY support\n\nThis patch adds clang-style FORTIFY to Bionic. For more information on\nFORTIFY, please see https://goo.gl/8HS2dW . This implementation works\nfor versions of clang that don\u0027t support diagnose_if, so please see the\n\"without diagnose_if\" sections. We plan to swap to a diagnose_if-based\nFORTIFY later this year (since it doesn\u0027t really add any features; it\njust simplifies the implementation a lot, and it gives us much prettier\ndiagnostics)\n\nBug: 32073964\nTest: Builds on angler, bullhead, marlin, sailfish. Bionic CTS tests\npass on Angler and Bullhead.\n\nChange-Id: I607aecbeee81529709b1eee7bef5b0836151eb2b\n"
    },
    {
      "commit": "5dc75c6c4de42a3a05faed6e39e13e71d258897f",
      "tree": "0daa51584f72beb67cbe072f34ca67898212f381",
      "parents": [
        "93e272d00a4155600227ce485f028c1fa8580f2c",
        "a29821bb455e6c23b2c9fe13bf1436610c4eb412"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 30 23:01:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 23:01:01 2017 +0000"
      },
      "message": "Merge \"glibc ipc64_perm __key compatibility.\""
    },
    {
      "commit": "a29821bb455e6c23b2c9fe13bf1436610c4eb412",
      "tree": "f6b62cb38c967bd8dc9cfdb43e0d727d6f0092f8",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 19:12:32 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 19:12:32 2017 -0800"
      },
      "message": "glibc ipc64_perm __key compatibility.\n\nglibc gives the `struct ipc64_perm` fields `key` and `seq` double-underscore\nnames. strace refers to the fields by those names, and there\u0027s no obvious\nreason not to go along with this.\n\nBug: N/A\nTest: built strace 4.15 with a hacked NDK\nChange-Id: I8b2b0f75363349d99edaecda50fe897ee0fa0c65\n"
    },
    {
      "commit": "f8562c5f8f0a8df88bd864b8c64eeb9b8905b97d",
      "tree": "b5f9e89d8683da813350e680a1e19882473e8485",
      "parents": [
        "6a9e0c8f15dee1b1b7c5cd7f8e058c2b18683bbc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 26 16:48:57 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 27 16:19:59 2017 -0800"
      },
      "message": "Remove backwards compatibility for old system properties.\n\nNo-one is directly upgrading from pre-K to O...\n\nAlso move more implementation details out of the header file.\n\nBug: http://b/33926793\nTest: boots\nChange-Id: I7a0936acbb1cea8a3b2cd6797ec53ba7e4a050f3\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": "dc94cf5cd8fb943cb5bcbaccc54c401de7418de4",
      "tree": "5f93bc09a26bf00d820df2cdbf248313990cc399",
      "parents": [
        "2f238b32cd973f0838d7590ed869d5a43abacacc"
      ],
      "author": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Tue Jan 17 14:44:31 2017 +0900"
      },
      "committer": {
        "name": "Jaekyun Seok",
        "email": "jaekyun@google.com",
        "time": "Fri Jan 20 09:59:26 2017 +0900"
      },
      "message": "Add props files for each partition\n\nThe following files will be added.\n- /vendor/default.prop for default prop overrides from vendor\n partition.\n- /odm/default.prop for default prop overrides from odm partition.\n- /odm/build.prop for build prop overrides from odm partition.\n\nTest: tested default/build prop files with enabling early mount, but\ndidn\u0027t test files of odm partition because odm partition doesn\u0027t\nexist now.\nBug: 34116668\nChange-Id: Ia99895a0afcdc522463d95b2f3e2841dcf2e3516\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": "bc94bb362da64dc15994b4a17ab54377670e26e7",
      "tree": "e02962445a33738abcde9e4046196aa06d9799a4",
      "parents": [
        "cb0134d96ee67fc78082732835bcd7e5a4f5d63d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 12:43:30 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 12:43:30 2016 -0800"
      },
      "message": "Fix an obsolete comment.\n\n280236537e06c7accaffabf8fb407f93dd1c834f factored the pthread types out\nso that they could be in both \u003csys/types.h\u003e and \u003cpthread.h\u003e.\n\nBug: N/A\nTest: builds\nChange-Id: Ie649c938ec8be1c59a0e4ef777f425550f8d4539\n"
    },
    {
      "commit": "8d7687143843c4fe8c8e79ea8abbc2d6b9c889f2",
      "tree": "bd70977eb4df7035a737812f95323e4b184051e1",
      "parents": [
        "e54c49050368cda50aa98af653e80f660467e246"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 15:29:58 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 15:29:58 2016 -0800"
      },
      "message": "Update socket constants.\n\nThis corresponds to Linux 4.10.\n\nBug: N/A\nTest: builds\nChange-Id: Ia7135c9fec181613b79726d1b16867133cdefd04\n"
    },
    {
      "commit": "cf922ff804a00fab3bc81b418053eb5f595f1c58",
      "tree": "0fa724ee1eab2905f9228681febb7074b2eeb5bb",
      "parents": [
        "68ddf5cad39de9d43b9f3b0f14e85153ce07fe52",
        "9af74907d1eaa4e970770715b1aa424b25242260"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 03:08:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 03:08:44 2016 +0000"
      },
      "message": "Merge \"Clean up \u003csys/limits.h\u003e a bit.\""
    },
    {
      "commit": "04a3b24d7e11cf330e3bb637641966ce951cb387",
      "tree": "817ddd754c348bb7f15a3863d2f415a234156194",
      "parents": [
        "fa1a85d0031c1846f7c2a6137c614f6a12dd2279",
        "753361a981b473886b0df4558f3c8c9f2f8ef4cc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 30 19:26:05 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 19:26:06 2016 +0000"
      },
      "message": "Merge \"Correct the return types of readv and writev.\""
    },
    {
      "commit": "9af74907d1eaa4e970770715b1aa424b25242260",
      "tree": "f1fe75fc71843b7123bf80ede7e55b57440bcc47",
      "parents": [
        "609880c12f009bba9bca696df1d6796eb4aba5ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 18:06:34 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 09:06:53 2016 -0800"
      },
      "message": "Clean up \u003csys/limits.h\u003e a bit.\n\n\u003csys/limits.h\u003e shouldn\u0027t even exist, but leave it in for backwards\ncompatibility.\n\nEverything that seems legit moves to \u003climits.h\u003e, though it still seems\nlike a lot of that ought to come from the compiler instead (there\u0027s even\nan angry rant in the clang header to that effect).\n\nUnfortunately, we\u0027ve long exposed [a copy and paste of] the contents\nof \u003cfloat.h\u003e from \u003climits.h\u003e and \u003csys/limits.h\u003e. This patch preserves\nthat for backwards compatibility, but at least switches us over to\nusing the real \u003cfloat.h\u003e instead.\n\nBug: http://b/32776472\nTest: builds\nChange-Id: I2d5b3b5237b3a0442195e99bb967c076ce484f35\n"
    },
    {
      "commit": "8f0e42fda6e5c19c3f06d8ba022501f6f480313b",
      "tree": "66b46d97df20982bf1c86dbbea9bab952aba3170",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 15:10:29 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 15:14:11 2016 -0800"
      },
      "message": "Fix getpriority/setpriority types.\n\nBug: N/A\nTest: builds\nChange-Id: Ica099bae04a0260871783452811a54672094ba4a\n"
    },
    {
      "commit": "753361a981b473886b0df4558f3c8c9f2f8ef4cc",
      "tree": "a3b5de27e8a7005a02bd30c452ed98158da2d884",
      "parents": [
        "11b362d284b49e070813cd459584ea3dabb20b1e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 29 14:26:15 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 29 14:26:15 2016 -0800"
      },
      "message": "Correct the return types of readv and writev.\n\nreadv and writev should return ssize_t, not int.\n\nBug: none\nTest: `m checkbuild` on bullhead\nChange-Id: I934c2e8cb7bf76384b63cedfeab88e2f6b65971a\n"
    },
    {
      "commit": "5bc78c8bcd0c1e634c04029309ede3ec05f2d424",
      "tree": "ba41f009cdf5fb27c766b4efe05c4cbb566d2a85",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 11:35:43 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 16 16:55:42 2016 -0800"
      },
      "message": "Add and use constants for the Android API levels.\n\nTest: bionic tests still pass\nChange-Id: If1b619cfc9db1d3f5d91f14f2ace71058dca0c4a\n"
    },
    {
      "commit": "b3321c961452f69650e4a6bd2a7db317a80b3234",
      "tree": "9471f536d800a1ca4bb71a638edd11eb1a2496bd",
      "parents": [
        "cd9ce19e9ce34db6201bdb054c40c3b9e766d2d8",
        "78b8a1430debfb9361e425e52e8366409b9e5cd2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 15 00:54:08 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 15 00:54:09 2016 +0000"
      },
      "message": "Merge changes I72d37b7c,I7d254a10,I2e967acf\n\n* changes:\n  versioner: use a virtual filesystem for input files.\n  versioner: cache -cc1 flags generated by the clang Driver.\n  versioner: refactor to use CompilerInstance directly.\n"
    },
    {
      "commit": "16016df79f846d6d21266c3b1dce1e7c24dc4be1",
      "tree": "848d465210b468dbcdb9b94a2519b40a256bf323",
      "parents": [
        "42eb0b255507ca4d3b4e94b7756c15ab742261c0"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Nov 07 18:27:16 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 09 13:50:07 2016 -0800"
      },
      "message": "versioner: refactor to use CompilerInstance directly.\n\nThis will make it easier to switch over to a virtual filesystem,\nwhich should drastically improve performance.\n\nThis also fixes an issue with warning/error reporting.\n\nBug: http://b/32748936\nTest: python run_tests.py\nChange-Id: I2e967acf75db29c95f3a03f4f94cccd22c367ad5\n"
    },
    {
      "commit": "ff5f17bc8acfd0c1382fa0fb4a1fe53102a32d49",
      "tree": "29c689cf8a18177689bb4e169d024434cf4cb9a0",
      "parents": [
        "2560a2703d1ab6df6d5f25ca9ff0c907de984885"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 14:03:00 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 14:03:00 2016 -0800"
      },
      "message": "Remove bogus OPEN_MAX and CHILD_MAX constants.\n\nThese are BSD-isms that don\u0027t make sense on Linux but do lead people astray.\n\nBug: http://b/32678775\nTest: builds \u0026 boots\nChange-Id: If6d3636f5f8d1b392b08c997dba2afde61b31fb6\n"
    },
    {
      "commit": "e749abe9ab6dfaf9be17097f97080ee9c2f67c5d",
      "tree": "f2ee3a35af85b6cefd39a8cc8955789422ef2be3",
      "parents": [
        "a3ce418ca6ad440d19c98e15132a76a877eb0bdc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 20:12:03 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 31 20:20:25 2016 -0700"
      },
      "message": "Add legacy inline for wait4.\n\nThis wasn\u0027t added to Android until android-18. Note that the reason\nI\u0027m adding an inline here even though I just reverted a bunch of\ninlines in the previous commit is because this was an inline in the\nlegacy NDK headers. If it was in the old headers, it needs to be in\nthe unified headers. If it wasn\u0027t, it needs to be in\nlibandroid_support.\n\nTest: ./tools/update_headers.py \u0026\u0026 make ndk \u0026\u0026 make native\n      # Copied into working directory for unified headers NDK work.\n      ndk/checkbuild.py\n      ndk/run_tests.py --force-unified-headers\nBug: None\n\nChange-Id: I751520a1df34b3edb5c59b4bd47170c4634a1883\n"
    },
    {
      "commit": "95fa061678400315ee757758bf5f9146176d47a0",
      "tree": "0b3428e9d7d274e79809471c1d7ae3896a10ff03",
      "parents": [
        "1d20532f5c5f8c1638735eb04586be82a7d0379c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 12:29:52 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 12:36:38 2016 -0700"
      },
      "message": "Rename __pure, __pure2, and __purefunc.\n\nThese names were pretty misleading (aka \"backwards\"), so switch to the\nsame obvious names glibc uses.\n\nTest: build.\nChange-Id: Ia98c9dbbccd0820386116562347654e84669034a\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": "11f0e10c4911e39733145194ee78bb65d684fff4",
      "tree": "71bfdcc267ac751fdb1455dc5e36f59cf4b92039",
      "parents": [
        "299040420652498575ddfc7516a16ac5f835c132"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 08 16:12:09 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 08 16:13:28 2016 -0700"
      },
      "message": "Provide an inline __cmsg_nxthdr.\n\nThis was defined as an inline in the legacy NDK headers. Keep that\nhere until we can get it into libandroid_support.\n\nTest: make checkbuild\nBug: http://b/30465923\nChange-Id: I62393b58e4fba3bc7337cc5ecf4ae1590b0e9917\n"
    },
    {
      "commit": "299040420652498575ddfc7516a16ac5f835c132",
      "tree": "84b2d66ec71a34ff44d0f6e848c7c379424a9d50",
      "parents": [
        "e5dd632e43dd81f293afdb93a6556d40d7007765"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 08 16:11:23 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 08 16:13:27 2016 -0700"
      },
      "message": "Correct more fortify availability guards.\n\nTest: make checkbuild\nBug: http://b/30465923\nChange-Id: I90ac222483ecd39f1e7cc358babfb64e305cffcb\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": "fe4ab7dc30154f83a45769150392d6b47885c164",
      "tree": "e767a1c82383c35ba51cdee23392044a5293a75d",
      "parents": [
        "c8476bb7ad101725828cf4e40db42dead875de4a",
        "9288761a26bc7f581c84155b009b59587c7a7ad3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 16 21:59:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 16 21:59:16 2016 +0000"
      },
      "message": "Merge \"Add missing \u003csys/stat.h\u003e macros.\""
    },
    {
      "commit": "c8476bb7ad101725828cf4e40db42dead875de4a",
      "tree": "21c6120db4442a6492bc47168cfef298ff7aa34b",
      "parents": [
        "1df81cd1776e7b55cfda1bf864175be3278bffc8",
        "2b9605fec499b24bcbe9ff408b934455b4d85e57"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 16 21:57:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 16 21:57:31 2016 +0000"
      },
      "message": "Merge \"Fix various \u003csys/socket.h\u003e prototypes.\""
    },
    {
      "commit": "2b9605fec499b24bcbe9ff408b934455b4d85e57",
      "tree": "5c28dce3dcf1a0d0a2ec699821c8448e8192505a",
      "parents": [
        "228e747b6c40da2945310cda214b829f7de8cb60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 13:37:24 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 13:37:24 2016 -0700"
      },
      "message": "Fix various \u003csys/socket.h\u003e prototypes.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html\n\nInterestingly, recvmmsg/sendmmsg do actually return int, unlike their\nrecv/recvmsg/sendv/sendvmsg siblings.\n\nThe generated assembler stubs don\u0027t actually change.\n\nChange-Id: If71cd02431903774de9bbce77fbedf6b03f90c0f\n"
    },
    {
      "commit": "9288761a26bc7f581c84155b009b59587c7a7ad3",
      "tree": "a1d18cf92aa9c36c9f4eb5303b820115c8500dc3",
      "parents": [
        "228e747b6c40da2945310cda214b829f7de8cb60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 13:26:35 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 13:26:35 2016 -0700"
      },
      "message": "Add missing \u003csys/stat.h\u003e macros.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_stat.h.html\n\nChange-Id: I8c31f3a6fae2c4955c5fba3d880a416d03dfafb7\n"
    },
    {
      "commit": "9dff0d05b5763894b75c8b0a5785060b515239b2",
      "tree": "e8422a116113229cffbdf03fbb5e0b0c4425ad99",
      "parents": [
        "228e747b6c40da2945310cda214b829f7de8cb60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 12:51:45 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 16 13:25:13 2016 -0700"
      },
      "message": "mprotect and msync take void*, not const void*.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/functions/mprotect.html\nhttp://pubs.opengroup.org/onlinepubs/9699919799/functions/msync.html\n\nChange-Id: Ie26195e2e382c1387037c7ee5cd90b3963220328\n"
    },
    {
      "commit": "9519fc08b730ca5857ac70debd799c5f590d01cd",
      "tree": "704c2548047f12b07e2a05e4c72fb0265a141194",
      "parents": [
        "6f89d02f55418ba55a2b25e6234680367f32dd0e",
        "f8592a3ff3d452b7d784d34814e5d04c20348343"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 23:14:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 23:14:19 2016 +0000"
      },
      "message": "Merge changes I9b662ca9,Iad7f3fc9,I1b16a4b5,I47b07755,I6496a8c4, ...\n\n* changes:\n  versioner: add support for preprocessing headers.\n  versioner: fix makefiles.\n  versioner: purge iostreams.\n  versioner: assorted fixes.\n  versioner: replace availability attributes with annotate.\n  versioner: improve the test script.\n"
    },
    {
      "commit": "280236537e06c7accaffabf8fb407f93dd1c834f",
      "tree": "a00be2fd73851a7a7e09b56e52c173662297641e",
      "parents": [
        "cea5c8a6099cff4f3ceccb3309a522bb1cf377b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 13:18:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 13:18:32 2016 -0700"
      },
      "message": "POSIX says \u003csys/types.h\u003e should make all the pthread_* types available.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html\n\nChange-Id: I606194e15ceaa3129f266a9a460c358eaa8bf686\n"
    },
    {
      "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": "d1dd7c58b42ebc101ee004f1102a478f8f1dd24b",
      "tree": "6ca68f8e26e3b2b3e6fbf350c4834f5dec3c3fb8",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 14:18:01 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 14:18:01 2016 -0700"
      },
      "message": "Remove __static_cast macro from \u003csys/cdefs.h\u003e.\n\nWe don\u0027t use it, and we added the more general __BIONIC_CAST anyway.\n\nChange-Id: I2cb8a108b58bb2cb24ed2b1890d9efed671196dc\n"
    },
    {
      "commit": "bfb6bae9fb5ef42e4f9ae2847f30f41938c04900",
      "tree": "e75bc213342719cd3f803db5d27f4f21d9601fe0",
      "parents": [
        "681f6b59d26c7c9470bc681b0ca0b43c3d0835db"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 15 17:25:21 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 08 16:39:07 2016 -0700"
      },
      "message": "versioner: replace availability attributes with annotate.\n\nMajor refactor to use __attribute__((annotate)) to be able to keep\ntrack of the semantic differences between __INTRODUCED_IN(x) and\n__INTRODUCED_IN_X86(x), for use in the upcoming preprocessor.\n\nBug: http://b/30170081\nChange-Id: I6496a8c40ba7f4553de9a2be0bbddcf37c813937\n"
    },
    {
      "commit": "dfa6bbb54bd9ab2a71df4c066427ea804608e20b",
      "tree": "41b5baebfa354e4530ca190031789362c31de785",
      "parents": [
        "ed9e6a41c92c9552be84ecc126e29b4604eee246"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Aug 02 15:08:32 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Aug 05 16:33:32 2016 -0700"
      },
      "message": "Guard fortify inlines with __ANDROID_API__.\n\nTest: make checkbuild with libc ndk_library patches applied\nChange-Id: Ic5e248994c4f2702b0f4d6dfeda787187ea86017\n"
    },
    {
      "commit": "b6a4a4c0cc76004459f87cecb260d202b5ba5512",
      "tree": "7b8e17a2ed737c178caa4c418917ab57f2afb8f9",
      "parents": [
        "f9128bc7d4fff2f50705d92c4fd06e998b63f442"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jul 26 16:34:40 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Aug 02 14:32:42 2016 -0700"
      },
      "message": "Add version information for legacy inlines.\n\nBug: http://b/30170081\nChange-Id: Ib5962ea3037dd692a98b6691d263871549aac8af\n"
    },
    {
      "commit": "61bd7cb6e975c48450350ba5c49862310c2f4762",
      "tree": "345303c278aba1507637975f90bb50a1a99b0e7e",
      "parents": [
        "9f326a2d6002dfb7fc26f151db55052e101ffa42",
        "3e6929dad5938f57e5734cf3cff638f17a1a2b25"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 27 00:30:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 27 00:30:30 2016 +0000"
      },
      "message": "Merge changes I0262eed9,Iba9ee03a\n\n* changes:\n  Add a temporary hack to work around __NDK_FPABI__.\n  Remove _GNU_SOURCE guard on tmpnam.\n"
    },
    {
      "commit": "3e6929dad5938f57e5734cf3cff638f17a1a2b25",
      "tree": "9745a50c1a4d4b549af494fbc75b25b34d9e72a7",
      "parents": [
        "c1020754c26b3d9f89a61491d515acead2c6c52a"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 26 16:27:31 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 26 16:28:30 2016 -0700"
      },
      "message": "Add a temporary hack to work around __NDK_FPABI__.\n\nTest: make checkbuild\nBug: http://b/27533932\nChange-Id: I0262eed91b10b0dd5fe27a61fb8f35b3c062280e\n"
    },
    {
      "commit": "f6495c78a84b4a797a6faf77f8bd56998c739509",
      "tree": "963ffcb86fadb817451ca92d7a2d99a08e71ba93",
      "parents": [
        "557b3a1194e03339b025b2d2282a0cc34aded7bb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 25 09:20:57 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 25 11:13:47 2016 -0700"
      },
      "message": "Stop #define\u0027ing __func__ and __restrict.\n\n__STDC_VERSION__ isn\u0027t defined for __cplusplus, so we\u0027ve been removing\nsuch checks. Some got missed.\n\nStop defining __func__ and just use the __PRETTY_FUNCTION__ GCC extension\nin \u003cassert.h\u003e. Also fix the #if there so that C++ gets __assert2 rather\nthan __assert, and rewrite the cast to work with -I rather than -isystem.\n\nAlso remove __restrict and just always use the __restrict GCC extension.\n\nAdd a trivial test for \u003cassert.h\u003e.\n\nBug: http://b/30353757\nChange-Id: Ie49bb417976293d3a9692b516e28fe3c0ae0a6d9\nTest: ran bionic unit tests.\n"
    },
    {
      "commit": "3b2096a9d6edd74622b94cacc76b77100f919b84",
      "tree": "1e5db3202e110172e7db1ced6d87cf8ceca7ed0b",
      "parents": [
        "7101c48f20f2f19dd1d314d23251fb52995a0870"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 18:57:12 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 18:57:12 2016 -0700"
      },
      "message": "Remove unnecessary \u0027extern\u0027s.\n\nChange-Id: Iba2b3fb6ff88e504f1657b915120ae43d58a1e03\n"
    },
    {
      "commit": "203e13d97de840e01eded6a267fef9f245cf3a15",
      "tree": "83517885755d8c28f7f6934bff67f7ad36addf39",
      "parents": [
        "767e8147d7f38bd9a23100ec9fa07b6a14a8b680"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 14:56:18 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 17:01:54 2016 -0700"
      },
      "message": "Always include \u003csys/cdefs.h\u003e.\n\nI made a mistake caught by code review earlier, so let\u0027s try to be\nsafer by default.\n\nThis patch also moves all our \"forwarding\" headers to the guardless\njust-include-the-other-thing style that we usually use. (Where we\nhave a comment explaining where the header comes from, I\u0027ve kept\nthat.)\n\nChange-Id: I37342cf5e2563c6a269b2ba61a697069b1c7913b\n"
    },
    {
      "commit": "8778d64d5c78a42d5389767adcf232bfe323e0f8",
      "tree": "15a50d1c7c9f60256f6ad2df007fc74999063b47",
      "parents": [
        "12ba7e51d9c4f6d8c1fa5627f638b291520a7025"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 22 15:26:36 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jul 22 15:52:55 2016 -0700"
      },
      "message": "Remove __BIONIC_LEGACY_INLINE.\n\nDon\u0027t use the same declaration to declare both static and non-static\nfunctions, to make life easier for versioner.\n\n(Also, remove __BIONIC_LEGACY_INLINE from two functions in termios.h\nthat weren\u0027t actually legacy inlines.)\n\nBug: http://b/30170081\nChange-Id: Ibb73377d77a2b4cee016289b7c46a01452e45fae\n"
    },
    {
      "commit": "5470c183611737af5ec954984e4bdb5da8c99b73",
      "tree": "945f64e45be1c14ea0a6c75f6611555ef2b706ae",
      "parents": [
        "237366867a4fbd8c2fed74512ca26d2ce3b39b82"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 11:36:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 13:12:53 2016 -0700"
      },
      "message": "Make it possible to build bionic with -I instead of -isystem.\n\nVarious things:\n\n* work around -Wnullability-completeness.\n* use C++ casts in C++ and C casts in C.\n* stop using attributes clang doesn\u0027t support (such as `warning`).\n* remove duplicate definitions of XATTR_CREATE and XATTR_REPLACE.\n\nChange-Id: I07649e46275b28a23ca477deea119fe843999533\n"
    },
    {
      "commit": "508d292f8deb2933914b0ceef56908cdd4ee589f",
      "tree": "e740e08d5709b42c3198d9345771dfc2f9903fd5",
      "parents": [
        "91f33cd5ae3f09b7d2e614f5d0809037c1708db1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 21 16:38:43 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 21 16:38:43 2016 -0700"
      },
      "message": "Only define sa_family_t once.\n\nChange-Id: Icf700910c836d22c8a27ad026ec8af11697edd5a\n"
    },
    {
      "commit": "f47514dd997d33deafaba85e34e2c95fd514d056",
      "tree": "65f43a89ecf3e69866313efad1ba1716db706386",
      "parents": [
        "20de9ef5bdeb4d338206c0203560e5d4aa6334c5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 19 13:56:46 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 19 13:56:46 2016 -0700"
      },
      "message": "Remove __LIBC_ABI_PUBLIC__.\n\nWe have much better control over visibility now, so we don\u0027t need to\npollute the headers with cruft.\n\nBug: http://b/24767418\nChange-Id: I349f4c3bc30102477375ad9f80926e560c7c1d8b\n"
    },
    {
      "commit": "9eb3ae122fd9759251063ee351cb23cc769dbe61",
      "tree": "dd50df23c807052fda07385118e2d2e3946213d4",
      "parents": [
        "1159c196db79993b153114bcc4363f7e0f831773"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 30 09:12:40 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 30 10:37:03 2016 -0700"
      },
      "message": "Remove __nonnull (in favor of _Nonnull).\n\nIt\u0027s a dangerous pain in the ass, and we\u0027re only using it in one place, and\nthat\u0027s a mistake too.\n\nChange-Id: Ida1d1286aaa1343bdee95fa092fcb45ff3258f77\n"
    },
    {
      "commit": "9c8d711aa5ee3108a8e1e8959be9d0355ca0fa6a",
      "tree": "d860929c4008c8b28d5516c16e9b404bfd94fa5a",
      "parents": [
        "c713adeca1b840ea8f2fd94717e77316cb0a39c4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 13 13:23:42 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 13 14:14:43 2016 -0700"
      },
      "message": "Don\u0027t expose all BSD extensions.\n\nJust expose the ones that bionic historically leaked.\n\nAlso, many of the M_* constants in \u003cmath.h\u003e are actually POSIX.\n\nChange-Id: I6275df84c5866b872b71f1c8ed14e2aada12b793\n"
    },
    {
      "commit": "95fa26e5901e548d2c3650953bd2d5f92c9e9d2d",
      "tree": "80747b308aa2ab57bc55298b5d4615ff4bafd6bb",
      "parents": [
        "2ed5852759a3326752e975fab57b1c96e1be74b5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 10 16:33:05 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 10 17:50:14 2016 -0700"
      },
      "message": "Update symbol versions.\n\nBug: http://b/28178111\nChange-Id: I8e9fb919d96693dd320962775e991caf5aeb0107\n"
    },
    {
      "commit": "3ba55f8022f3d5c5ca94a3df46fa658eda791987",
      "tree": "9e500c17531ea742e86de6848cc10ebca7ef28cb",
      "parents": [
        "93bae32c27f41e55e1cf9a6f5f8a05fbc1feaf1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 08 18:11:23 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 17:40:19 2016 -0700"
      },
      "message": "Rationalize visibility.\n\nIf it\u0027s C or POSIX, it\u0027s in. If it\u0027s BSD or GNU, it\u0027s guarded by __USE_BSD\nor __USE_GNU.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d194631\nChange-Id: Ife51a21c2b37b060db56780d29c929805b199cb6\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": "f4840507b57db927c3359914649380d53e5bf7bf",
      "tree": "69ea704de3a8e1dcf49c097b1d34007fbc1f76a6",
      "parents": [
        "901cc14822e431185fbe5075ef4f06aa4fba58cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 06 17:35:53 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 06 17:35:53 2016 -0700"
      },
      "message": "Preliminary cleanup of \u003csys/cdefs.h\u003e.\n\nWe don\u0027t support anything other than Clang and GCC, and we don\u0027t support\nGCC earlier than 4.9.\n\nMove the various synonyms for __attribute__(__whatever__) together.\n\nFix a __STDC__VERSION__ (for __STDC_VERSION__) typo.\n\nDrop support for BSD _ANSI_SOURCE and _C99_SOURCE; there\u0027s enough confusing\nnonsense here already, and plenty of other ways to ask for obsolete standards.\n\nThere are plenty more problems here -- what I really want to do is rationalize\nour treatment of __STDC_VERSION__ -- but let\u0027s get some of this easy stuff\nout of the way first.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d194631\nChange-Id: I7526b9770fdc01f8a4667781b65e2fb08287b20b\n"
    },
    {
      "commit": "99a84c83169a4443d844836bf5d892ec55130448",
      "tree": "4c631b848cf5dd00a1bff6e915da2119b27ee83e",
      "parents": [
        "f21ca653b7407f22b679ebf2877b7d8c5b719167"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 16:04:20 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 15:01:18 2016 -0700"
      },
      "message": "Remove __cachectl.\n\nbionic doesn\u0027t have an implementation for this function, but neither\ndoes the kernel. cachectl has existed in the kernel as a stub that\nreturns ENOSYS for over a decade.\n\nBug: http://b/28178111\nChange-Id: Id35f85fd143c5ea0d45d04b1021893cf5c0c749d\n"
    },
    {
      "commit": "8ba4424a4160d56c520342e946988ab60d31f95a",
      "tree": "083403fb994cb81b0f16338d566f5be5810c16e1",
      "parents": [
        "a24cc2639f85d0b0978b18493f4f3bceebbc8ed3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Apr 25 14:53:13 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 03 10:36:37 2016 -0700"
      },
      "message": "Fix __errordecl on clang.\n\n__attribute__((__error__)) doesn\u0027t exist on clang.\n\nBug: http://b/28381737\nChange-Id: I75f39308ecfd60164811958fa40c9b96c92fd329\n"
    },
    {
      "commit": "46b44160e9e4c466be0faf1bb8d6ec70ecc83273",
      "tree": "80036c736b6315189745423724f1d69cb3b74682",
      "parents": [
        "6e9c1f61d8ea04d35d18709e373da355ca32e523"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:14:16 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 13:40:35 2016 -0700"
      },
      "message": "Update header versions for NDK platform fixes.\n\nBug: http://b/28178111\nChange-Id: Icd638673b409aa43a91490f77c6b4d79c9ea20d9\n"
    },
    {
      "commit": "bb129214ad8d6aec5b83093b611b60329417cda8",
      "tree": "9e1773a97cd41275b1c61aa2a90382637d91896c",
      "parents": [
        "d1c96e21593fe5ff4c2989b9902036c65532b4fd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 25 15:18:14 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed May 25 15:25:13 2016 -0700"
      },
      "message": "Don\u0027t use __u64/__u32 in \u003csys/user.h\u003e.\n\nThe typedefs for __u64 and __u32 aren\u0027t in scope in this file, so\nswitch fields declared with these to use the matching underlying type.\n\nBug: http://b/28178111\nChange-Id: Id4eec1f7dc81d77e78043227c15e621debe3a48a\n"
    },
    {
      "commit": "12f35419ce0607989f170cb08cd6cd44387fc35c",
      "tree": "be43b148d407b2f80c30b64558cc37cc35bd0c09",
      "parents": [
        "366164da10a0883ffbb5267cf619bcecbf92315d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 10 17:32:48 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 10 17:32:48 2016 -0700"
      },
      "message": "Remove various bits of header cruft.\n\nMostly BSD _KERNEL stuff.\n\nChange-Id: Ic0a6914437d0c831a83588a435079d0c719fcbdf\n"
    },
    {
      "commit": "98ac6f415f4cd68be6691c1d04f59a76af802485",
      "tree": "b8ddf998f9beaf92bd19c6a0c6ffe56c4850faf2",
      "parents": [
        "5e2342f9708bf4daadae5ec7b7c86dbee1c6857d",
        "baa2a973bd776a51bb05a8590ab05d86eea7b321"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 06 02:27:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 06 02:27:18 2016 +0000"
      },
      "message": "Merge \"Use clang\u0027s nullability instead of nonnull.\""
    },
    {
      "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": "ed507636c09a442b4da4e27314e1574e21e7db77",
      "tree": "11c5d69e760329a54885e93db680f624c166639b",
      "parents": [
        "3338ee52576632fd96bc131c6e943fa6f9a62139"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 02 16:03:10 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 02 16:04:57 2016 -0700"
      },
      "message": "Remove \u003csys/atomics.h\u003e.\n\nIt\u0027s no longer used in the platform (including vendor code), and everyone\nshould be using \u003cstdatomic.h\u003e anyway.\n\nChange-Id: Ic1ad743625ffb15b4837ff6ccb91dcd840d19ec2\n"
    }
  ],
  "next": "3338ee52576632fd96bc131c6e943fa6f9a62139"
}
