)]}'
{
  "log": [
    {
      "commit": "03581d7aa9848e66775bb2eb0fa3be576dc2a030",
      "tree": "eebfc3779b511bfb80bd0bdcba535747a73d1b8f",
      "parents": [
        "e31b510f92adc21fcfbb19674ff58716dd4fdb3c",
        "0816c9050f465d85e4a6b3c0bc7ab84b6c852a2e"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Apr 10 23:04:55 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 23:04:55 2020 +0000"
      },
      "message": "Merge changes I6c9c2bf5,I23991692\n\n* changes:\n  Tighten pwd/grp iteration tests.\n  Cleanup some trivial TODOs.\n"
    },
    {
      "commit": "6f2e810198b4529ae179d3e662d3cf7ce76ae829",
      "tree": "72a2c601ca27d0b6a7405b414f53cff435bd9192",
      "parents": [
        "753994ab5aa5488966888eee3086be1535055c18"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Apr 10 10:50:09 2020 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Apr 10 11:46:03 2020 -0700"
      },
      "message": "Cleanup some trivial TODOs.\n\n1) \"fix the system properties design\" is written for the old protocol,\n   so we\u0027ve already changed the design.  There are no other further\n   planned changes.\n2) \"don\u0027t drag in all the macros, just the types.\" is not likely to\n   happen or be particularly impactful.\n3) \"Find a location suitable for these functions ...\" is refering to\n   legacy code.  More likely that this code will be removed before we\n   find a serious reason to fix this TODO.\n4) \"(73062966) We still don\u0027t have a good way ...\" is stale; we fixed\n   this bug and added the appropriate mechanism.\n\nTest: n/a\nChange-Id: I23991692cdeb81ad00844a6a1680900ff384208b\n"
    },
    {
      "commit": "bb9fcb46361ddb55aac7faf639de5088a09b9b8e",
      "tree": "45734393965f7d49de434fc20dd4e578f715f190",
      "parents": [
        "a924442816161dd4699f1fbc401ae3e4c3eea738"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 06 11:38:04 2020 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 10 10:53:48 2020 -0700"
      },
      "message": "Update to v5.6 kernel headers.\n\nKernel headers coming from:\n\nGit: https://android.googlesource.com/kernel/common/\nBranch: android-mainline\nTag: android-mainline-5.6\n\nAdd a new method for removing structures. This is to deal with the kernel\nheaders changing some definitions of timeval to __kernel_old_timeval\nand itimerval to __kernel_old_itimerval. Remove the __kernel_old_XX\nstrutures and change the other structures to the previous definitions.\n\nThis only works so long as these structures stay the same, if they\ndiverge, then a different strategy will need to be implemented.\n\nTest: Booted cuttlefish/walleye.\nTest: Ran bionic-unit-tests on cuttlefish/walleye.\nChange-Id: I0a61f4fa6e4155c602e0414d9b38c2e1637829af\n"
    },
    {
      "commit": "fa658eb094d915a9640a4d0642adee7667f439e7",
      "tree": "fed628e69093bc895bfb779c13cdf350c0f4540d",
      "parents": [
        "93517d1a27db3414e6f3b0b3fc91144903837329"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Mar 04 11:14:42 2020 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Mar 04 13:22:05 2020 -0800"
      },
      "message": "Fix bugprone-macro-parentheses warnings\n\nBug: 150783705\nTest: WITH_TIDY\u003d1 make\nChange-Id: If47b7adaa5f3ba3c518fb0be48f0ffdc81d204b2\n"
    },
    {
      "commit": "33318f51972de2a7973efb7d9d2f00de567d2e3c",
      "tree": "73449053c31e0966e79426588380bc351edd4f19",
      "parents": [
        "521dab3b365cd87284fdb0e3534069902b31d875",
        "733cedd1c4696ea74dab34d629ef7ac28ecc2200"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 25 16:37:09 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 16:37:09 2020 +0000"
      },
      "message": "Merge \"Add a libc wrapper for statx(2).\""
    },
    {
      "commit": "c5d9036f80d0361a5ad711ab9047ba5747145c02",
      "tree": "a045be6afb94bee06d36e28ecceb5c1c9331f38e",
      "parents": [
        "fcbdba22ab1c84825bd1e4cd18f8298c87991a5b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 09:52:14 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 09:52:14 2020 -0800"
      },
      "message": "Make the HWCAP/HWCAP2 constants available from \u003csys/auxv.h\u003e.\n\nNoticed by ARM when adding BTI support to the linker.\n\nTest: treehugger\nChange-Id: If3b87d0bd4682ff478b7805251fc9a88a7f439f9\n"
    },
    {
      "commit": "733cedd1c4696ea74dab34d629ef7ac28ecc2200",
      "tree": "6f24227b01f5bfea254d364bd90ee5a1067d4408",
      "parents": [
        "fcbdba22ab1c84825bd1e4cd18f8298c87991a5b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 21 23:21:28 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Feb 23 11:36:53 2020 -0800"
      },
      "message": "Add a libc wrapper for statx(2).\n\nBug: http://b/127675384\nBug: http://b/146676114\nTest: treehugger\nChange-Id: I844edc12f62717e579870a040cf03dfe60dc280b\n"
    },
    {
      "commit": "db5c45b457377bd37b5bbada9a5adeb3259077e0",
      "tree": "bfa9c9e0c5e2823e909369e07dc1c7ff901aa378",
      "parents": [
        "679d8e19cf5c0f073f72f2cd906d2981c3fa8e69",
        "d02e7b131efc0600572b00d796aede9db8675a33"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Feb 19 18:12:31 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 19 18:12:31 2020 +0000"
      },
      "message": "Merge \"fortify: simplify strlen for LLVM\u0027s new optimization\""
    },
    {
      "commit": "36359f47a29e8ba4f1c7653983b5db522c9deec8",
      "tree": "ec82c118f639b15b2665cf9aed36a0a06ef374aa",
      "parents": [
        "3d74451cf1aff71626b666a16ae6a1ceec82a055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 13:25:22 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 13:25:22 2020 -0800"
      },
      "message": "Remove unused declarations.\n\nTest: treehugger\nChange-Id: Ia96dc01df0d26e2e3023bebab23de82ca8e389f7\n"
    },
    {
      "commit": "5ac438e5daf497526e7321b456ba87a758a95ea2",
      "tree": "b285ddd203793a6d11744afa37da0cd5f5bb017c",
      "parents": [
        "7482e240cf60fff52ec08cf9340edb231aae7079"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 13 15:56:31 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 13 18:00:16 2020 -0800"
      },
      "message": "Clean up mips references in the headers.\n\nTest: treehugger\nChange-Id: I1997af980b9e46c7c530f9e6cb1aa407b2d63d76\n"
    },
    {
      "commit": "d02e7b131efc0600572b00d796aede9db8675a33",
      "tree": "01f646dfb0d781b48fc7448868e97d1a24f0d9cd",
      "parents": [
        "97d053283f4c100baed8677f7a7af98a976a2e2f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Feb 13 11:44:20 2020 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Feb 13 11:44:20 2020 -0800"
      },
      "message": "fortify: simplify strlen for LLVM\u0027s new optimization\n\nLLVM now knows how to fold __strlen_chk, so we can make this function a\none-liner.\n\nAlso fix strlcat to not double-return while I\u0027m in the area.\n\nBug: 148189733\nTest: TreeHugger\nChange-Id: I71ee308defbefe96f3fe6e357a2127309d2f0942\n"
    },
    {
      "commit": "44c01c77d39efc0f524ce62664c43054872d6874",
      "tree": "4507a57c91ef4598511ab43167c8771f84b0fd87",
      "parents": [
        "20b45958c39d836cce95d88c09b869d1e0ba921c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 08:46:29 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 08:46:29 2020 -0800"
      },
      "message": "Clean up the math headers.\n\nI had hoped that this would then let us remove more of the \"introduced\nin\" annotations, but it looks like that\u0027s not really going to happen\nuntil the NDK\u0027s minimum supported API is 21.\n\nAlso remove a .c file that wasn\u0027t referenced anywhere.\n\nTest: treehugger\nChange-Id: I8b4a61c082293f8445195a4fa5ee30595d70444e\n"
    },
    {
      "commit": "fd2eb42006fd1b51beb98e5c4e3e3ae2e676173e",
      "tree": "abf91d7d5b6fde955cf21b6da8f3e9d57b166348",
      "parents": [
        "3f41e145f24e28e03b9ab581ba7b50f4ca8f99a9",
        "026d3a8fa5f2ae8e7ce288369791581fd7cf5f19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 05 19:37:18 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 05 19:37:18 2020 +0000"
      },
      "message": "Merge \"\u003cctype.h\u003e: inline the ASCII functions.\""
    },
    {
      "commit": "026d3a8fa5f2ae8e7ce288369791581fd7cf5f19",
      "tree": "5ea4ff1d2489df502414fbfa0c311b813728f72f",
      "parents": [
        "2968695188152dbdc7529e56d6acbe4f77cbd2b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 05 08:07:10 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 05 08:18:51 2020 -0800"
      },
      "message": "\u003cctype.h\u003e: inline the ASCII functions.\n\nWe\u0027ve optimized the ctype functions to the point where they\u0027re pretty\nmuch all down to one instruction. This change takes the obvious next\nstep of just inlining them.\n\nOn Android these function have only ever been for ASCII. You need the\n\u003cwctype.h\u003e functions for non-ASCII.\n\nlibc++ currently has its own inlines for the _l variants, so if we want\nto just inline them in bionic directly, we\u0027ll need to coordinate that.\n\nBug: http://b/144165498\nTest: treehugger plus benchmarks\nChange-Id: I4cc8aa96f7994ae710a562cfc9d4f220ab7babd6\n"
    },
    {
      "commit": "2f7876596e700c85a1c7ad7ad21f3e6accb4a0bc",
      "tree": "b89a9f8617a1b54c761364a8bb9c9361803c2a67",
      "parents": [
        "4fe5b783a46fced8fa355a5a9a187528eecde3cc"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 04 21:40:40 2020 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Feb 04 21:52:36 2020 -0800"
      },
      "message": "fortify: remove \u0027optimizations\u0027 for functions that LLVM knows about\n\nOver the last year, LLVM apparently learned how to optimize many\nFORTIFY\u0027ed functions. I went through the list of functions it optimizes,\nand simplified their implementations here.\n\nThis is more than a code health thing; __bos_trivially_ge expands to a\nbranch that\u0027s not eliminated until after inlining, so it can actually\ncause some functions (like one of std::string\u0027s ctors) to become\nuninlineable.\n\nBug: 148189733\nTest: hand-checked the IR we get for each of the changed functions. Many\n      get optimized to their non-_chk variant when appropriate. Others\n      will get optimized to non-_chk versions when bos \u003d\u003d -1. Bug repro\n      also now shows all \u0027inline\u0027s.\n\nChange-Id: Ic360818ad9daaeda3958e1282af41087f85122a3\n"
    },
    {
      "commit": "09e77f35ab8d291bf88302bb9673aaa518c6bcb0",
      "tree": "8cd94a94db1ab872266022a3ad2b746d0b215e36",
      "parents": [
        "945001da54637082fb30ea2a8bc50beb24442ffa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 29 19:20:45 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 29 19:36:14 2020 -0800"
      },
      "message": "_FILE_OFFSET_BITS\u003d64 support for fcntl.\n\nOn Android, fcntl is always implemented by fcntl64(2). This means that\nan LP32 binary can `fcntl(F_SETLK, struct flock)` (because fcntl64(2)\npasses through to the 32-bit fcntl(2) to handle F_SETLK), and it can\nalso `fcntl(F_SETLK64, struct flock64)`. What it can\u0027t do before this\npatch is set _FILE_OFFSET_BITS\u003d64 and then `fcntl(F_SETLK, struct\nflock)` where that `struct flock` is actually implicitly `struct\nflock64`.\n\nMove the kernel uapi structs out of the way, define them ourselves based\non __LP64__ and _FILE_OFFSET_BITS, and fix up the relevant F_ constants.\n\n(Also add a .clang-format to turn off clang-format in libc/include/.)\n\nBug: N/A\nTest: treehugger (and strace!)\nChange-Id: Iccd6c83d9133e1efcf93a7b49a6ae0f1bbd3d58b\n"
    },
    {
      "commit": "d98dac41df84e3f99d9a2e2bf158dc29ca7edf53",
      "tree": "0964a13ed92b2093f96bdf9ceeda954e9fb9aaa1",
      "parents": [
        "aaffa3c6d4bf620e211257b505223fab370ba3a1"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Nov 20 09:52:06 2019 -0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Mon Dec 23 07:14:05 2019 -0800"
      },
      "message": "versioner: Fix fortified sendto\n\nThis commit fixes an error in fortified `sendto` function.  Since\n`__sendto_chk` is only introduced in API 26, the usage should be guarded\nwith `__ANDROID__API__ \u003e\u003d 26` instead of\n`__ANDROID_API__ \u003e\u003d __ANDROID_API_N_MR1__` (25).\n\nBug: 118991081\nTest: source development/vndk/tools/header-checker/android/envsetup.sh \u0026\u0026 \\\n      source build/envsetup.sh \u0026\u0026 \\\n      lunch aosp_arm64-userdebug \u0026\u0026 \\\n      m versioner \u0026\u0026 \\\n      ./bionic/tools/versioner/run_tests.py\nChange-Id: Ibc08244645c3fe76a72d0107138f67ffd56f5caa\n"
    },
    {
      "commit": "95c6cd753f028b1afc0c6a800a3dd6bd85a5a6a0",
      "tree": "3d785e53e88c0b5864a8129c7b13e31f5d0e9caf",
      "parents": [
        "508d270886e90fac23ce51f81864d009307f13ae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 13:26:14 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 13:26:14 2019 -0800"
      },
      "message": "Stop using the __ANDROID_API_x__ constants.\n\nHistorically we\u0027ve made a few mistakes where they haven\u0027t matched the\nright number. And most non-Googlers are much more familiar with the\nnumbers, so it seems to make sense to rely more on them. Especially in\nheader files, which we actually expect real people to have to read from\ntime to time.\n\nTest: treehugger\nChange-Id: I0d4a97454ee108de1d32f21df285315c5488d886\n"
    },
    {
      "commit": "8a0cdb15a1f6bbce41dcb185237f8723e6b101fd",
      "tree": "7db1fcdfcc891d33d32c8add93efdb6d6131420b",
      "parents": [
        "2a8bca749533dcefabff497d4f7346a35601a702"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 21 13:27:57 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Nov 19 14:20:26 2019 -0800"
      },
      "message": "fortify: allow diagnostics without run-time checks (attempt #2)\n\nIn configs like ASAN, we can\u0027t use _chk functions. This CL builds off of\nprevious work to allow us to still emit diagnostics in conditions like\nthese.\n\nWasn\u0027t 100% sure what a good test story would look like here. Opinions\nappreciated.\n\nBug: 141267932\nTest: checkbuild on internal-master. TreeHugger for x86_64.\nChange-Id: I65da9ecc9903d51a09f740e38ab413b9beaeed88\n"
    },
    {
      "commit": "f38e8ca149b54e17632c61b7ed5b729f16abb9f9",
      "tree": "c6770932ea6f7350c57d082bfe471e346965368c",
      "parents": [
        "31600e84249769cc51dda49c78400887fab64f7e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 08 13:51:12 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 08 13:51:12 2019 -0800"
      },
      "message": "Stop using `__out` as a name.\n\nlibc++ poisons `__out` because it\u0027s #defined on Windows. Rather than\nhack libc++, let\u0027s just avoid that name. \"src\" and \"dst\" are far more\nwidely used than \"in\" and \"out\" for this purpose anyway.\n\nTest: treehugger\nChange-Id: I0db9997fd5f06f626dbf0ee967b52145395466b4\n"
    },
    {
      "commit": "f359548bf1cf41e1f5390276e84e259cbbf30667",
      "tree": "a840aea69c0f9c489dcfbccd7cc8d09988684d2a",
      "parents": [
        "d7e11b88531665de59de466bbc9ee6c480b00a4f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Nov 07 07:07:38 2019 +0000"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Nov 07 07:07:38 2019 +0000"
      },
      "message": "Revert \"fortify: allow diagnostics without run-time checks\"\n\nThis reverts commit d7e11b88531665de59de466bbc9ee6c480b00a4f.\n\nReason for revert: Breaks aosp_x86_64-eng. Will look into it and\nunbreak when it\u0027s not almost midnight. :)\n\nChange-Id: I21f76efe4d19c70d0b14630e441376d359a45b49\n"
    },
    {
      "commit": "d7e11b88531665de59de466bbc9ee6c480b00a4f",
      "tree": "a116d542b1ed00e4b12d72a30814d0c0df95e529",
      "parents": [
        "c430451205f78579c4f795b4339a81692a97f4d8"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 21 13:27:57 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Nov 01 16:25:55 2019 -0700"
      },
      "message": "fortify: allow diagnostics without run-time checks\n\nIn configs like ASAN, we can\u0027t use _chk functions. This CL builds off of\nprevious work to allow us to still emit diagnostics in conditions like\nthese.\n\nWasn\u0027t 100% sure what a good test story would look like here. Opinions\nappreciated.\n\nBug: 141267932\nTest: checkbuild on internal-master\nChange-Id: I8d4f77d7b086a8128a18a0a0389243d7fa05b00f\n"
    },
    {
      "commit": "3aedee98286f2551742ec7b1ecb550ae334ebe50",
      "tree": "2ca994f5635dddaabc24468e7f0108c009664c48",
      "parents": [
        "fd1ff4b2c851fe3cb0f945273bdae751555c3875"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Sep 24 11:46:22 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 07 16:18:44 2019 -0700"
      },
      "message": "fortify: remove last uses of __bos_trivially_not*\n\nSince we\u0027re using the gt/ge ones a lot now, having `not` versions\nprobably just adds to confusion. Swap out their remaining uses and\ndelete them.\n\nBug: 141267932\nTest: m checkbuild on internal-master\nChange-Id: I2107ae65007a4995e4fa23371fefe4db7547f43b\n"
    },
    {
      "commit": "fd1ff4b2c851fe3cb0f945273bdae751555c3875",
      "tree": "becdc39f95be350faefdd7ebb1d0f3215c3d3e0a",
      "parents": [
        "9349b9e51b41d12fd054b925802b626ca2db0afb"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 17:29:55 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 07 16:18:44 2019 -0700"
      },
      "message": "fortify(string): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: I7dc10b56b667f8f2f2cd360b008d834af92a72e4\n"
    },
    {
      "commit": "9349b9e51b41d12fd054b925802b626ca2db0afb",
      "tree": "66ac269fe590d42d8ade9332328a5d5d9ed5f45e",
      "parents": [
        "67ff8b5f9cb1af1a633e96a771e386d3305c6799"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 17:16:01 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Oct 07 16:18:41 2019 -0700"
      },
      "message": "fortify(fcntl): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: I2037548cc2061e46c379931588194c21dfe234b4\n"
    },
    {
      "commit": "3e565bd7eebeab285cb2edfb6cc5fd3a32cf78a5",
      "tree": "05064de9afb956dcbe8907b0ec7137bf95c62f9a",
      "parents": [
        "cfa2e8a66770d60f83badb6e7dd01d92fd1fbf1b",
        "da8d30f357d7afa449db00758254f2b858897e30"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 04 06:36:54 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 04 06:36:54 2019 +0000"
      },
      "message": "Merge \"fortify(unistd): emit diagnostics regardless of API level\""
    },
    {
      "commit": "0e14c5a869bfaf4fd03dde4aca041fc7aef36b9c",
      "tree": "2f275042163fba74d9103948e415c1b06b75164d",
      "parents": [
        "3398552aa68b79c026eeeeaac4b10119bccf7d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 03 20:35:38 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 03 20:35:38 2019 -0700"
      },
      "message": "\u003cunistd.h\u003e __INTRODUCED_IN cleaup.\n\nThe NDK doesn\u0027t support anything older than API level 16, so remove some\nmore clutter.\n\nTest: builds\nChange-Id: If257a27841396af001b089b7ae0fbd8c3e0128e4\n"
    },
    {
      "commit": "da8d30f357d7afa449db00758254f2b858897e30",
      "tree": "46dd52f8a66076a341511565c16f57415cdf5b5f",
      "parents": [
        "3398552aa68b79c026eeeeaac4b10119bccf7d9b"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 17:09:43 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Oct 03 20:30:02 2019 -0700"
      },
      "message": "fortify(unistd): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: I17ad1283cbedaec2ab070134320e1c5401d3e6a4\n"
    },
    {
      "commit": "b8a95e21865efd16bf821333d34e005b8f0a8d3a",
      "tree": "d6a9a56d4499b2e01ebea72bf920f828a6c740c1",
      "parents": [
        "b29454794c48faed61987df172993855201343e6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 02 18:29:20 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 03 10:59:32 2019 -0700"
      },
      "message": "Update to kernel headers v5.3.2.\n\nTest: Builds and run unit tests on taimen/cuttlefish.\nChange-Id: I6ebd8f179d159ac974555e8edca588083e8081b3\n"
    },
    {
      "commit": "113d6fa14e6daf1ba291e90f8402e8b71771b2d7",
      "tree": "b289300f41c89c3fb38fd1be195b6c956e3484eb",
      "parents": [
        "db876075248bccb84ce3c036107ba5fbb32c197d"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 17:06:14 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Sep 30 13:00:36 2019 -0700"
      },
      "message": "fortify(stdio): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: I875a072c74f578d4404576c5bb42fd8ea30ff68d\n"
    },
    {
      "commit": "db876075248bccb84ce3c036107ba5fbb32c197d",
      "tree": "e8848886aa4932570e67ff9ed050271257d5ff6d",
      "parents": [
        "bc37c5a8ce8e4131d98e4afb9800a98c1f929a60"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 17:03:22 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Sep 30 13:00:36 2019 -0700"
      },
      "message": "fortify(poll): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: I5e147d28ec606c104b5905fd3d0c3fc197f0e4b8\n"
    },
    {
      "commit": "bc37c5a8ce8e4131d98e4afb9800a98c1f929a60",
      "tree": "b94fe730ae94339db1ee570c51d3a671f8e0197c",
      "parents": [
        "d0a0f72852d45db213886db606692e7b204207bc"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 17:01:31 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Sep 30 13:00:35 2019 -0700"
      },
      "message": "fortify(strings): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: Ief185320f93ec31f4d0a8035c450a7ab7b4e02b4\n"
    },
    {
      "commit": "d0a0f72852d45db213886db606692e7b204207bc",
      "tree": "ff5c8932db010e582788a7d78d47f3d1df8be618",
      "parents": [
        "82ee3a08e213d9b4ef98189a7d869048c7b48817"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Sep 18 16:53:57 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Sep 30 13:00:35 2019 -0700"
      },
      "message": "fortify(socket/stat): emit diagnostics regardless of API level\n\nBug: 141267932\nTest: m checkbuild on internal-master\n\nChange-Id: I7fe29184290e19ec080b204aa98d513ce59bc66b\n"
    },
    {
      "commit": "36926f4ca8183375e96c81db879a6f185ef92dff",
      "tree": "2b22fd43d22e35b49298fbea3216e63c0aeaf371",
      "parents": [
        "1ffee0cfc1e3a7fddf4cbe633694be91e72265a1"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Sep 15 16:57:00 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Sep 16 12:48:04 2019 -0700"
      },
      "message": "fortify: account for new clang diagnostics\n\nClang recently grew its own diagnostics for memcpy and such. These are\ngenerally higher-quality than what we can do with diagnose_if, since\nclang is happy to include e.g., sizes of things per-callsite. Move to\nthose instead where applicable.\n\nBug: 131861088, 123644155\nTest: blueline internal-master checkbuild; treehugger\nChange-Id: I701f5a8b247ba2948ca47fdc60ff5198b564c03e\n"
    },
    {
      "commit": "2fb9a03b9cfcb6dffdf0c4728bb8947509e083c6",
      "tree": "9df3d4fd03272e9ce62d8f9eea64128d3a34e70c",
      "parents": [
        "37ff081e886f29c10a5f549094a53c8d547c6565",
        "b33952c777dc3068dbcdafcc14a58ed91064bd2d"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Sep 03 23:12:43 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 03 23:12:43 2019 +0000"
      },
      "message": "Merge \"versioner: Fix bzero/bcopy fortify\""
    },
    {
      "commit": "37ff081e886f29c10a5f549094a53c8d547c6565",
      "tree": "97e870e34ec701d1fe38d5eceed3c887db9c5285",
      "parents": [
        "add3a4ae70e712d8b47d40ff127038a3d2e9fc2f",
        "261bd745eeee4accb56084401b48947c98c8107c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 03 22:28:36 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 03 22:28:36 2019 +0000"
      },
      "message": "Merge \"Support statvfs on API levels before 19.\""
    },
    {
      "commit": "b33952c777dc3068dbcdafcc14a58ed91064bd2d",
      "tree": "7e4752b7a80e548e1d7b161f6477ba5fb622e53b",
      "parents": [
        "235aad1981cf06525b35c9a3bbcbc9fbca6a8e60"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 20:50:24 2019 -0700"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Fri Aug 30 10:17:36 2019 -0700"
      },
      "message": "versioner: Fix bzero/bcopy fortify\n\nThis commit replaces `bzero` with `__bionic_bzero` and `bcopy` with\n`__bionic_bcopy` because `bzero` and `bcopy` are partially defined in\n`libc.map.txt`.  Bionic versioner raises errors because versioner treats\nstatic inline functions as exported function definitions then it\ncompares the availability with the information specified in\n`libc.map.txt`.\n\nThis commit fixes the problem by replacing static inline functions into\n`__bionic_{bzero,bcopy}` and defining aliases for source-level\ncompatibility.\n\nTest: PATH\u003d$(pwd)/prebuilts/clang-tools/linux-x86/bin:$PATH \\\n      bionic/tools/versioner/run_tests.py\nBug: 140110040\n\nChange-Id: I97f2f0dc0abccd0a9fcfe5bb02f4e918362d35cc\n"
    },
    {
      "commit": "261bd745eeee4accb56084401b48947c98c8107c",
      "tree": "6e68559b52d875c551a524d18041cf274bde9c35",
      "parents": [
        "9e544d3077fc392ce40e87a34a622bd327f09c7d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 29 20:45:14 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 29 21:57:58 2019 -0700"
      },
      "message": "Support statvfs on API levels before 19.\n\nSplit statfs and statvfs. The former has been available forever, and the\nlatter is implemented in terms of the former. The implementation has\nbeen moved into headers so that it can be used at low API levels.\n\nThere\u0027s no reason for any Android or Linux code to use statvfs rather\nthan statfs, but code that needs to build on Darwin too will want to use\nstatvfs because Darwin\u0027s statfs is very spartan.\n\nBug: https://github.com/android-ndk/ndk/issues/609\nTest: treehugger\nChange-Id: Icf3d5723a260099fddb2d9f902e3047b0f041647\n"
    },
    {
      "commit": "235aad1981cf06525b35c9a3bbcbc9fbca6a8e60",
      "tree": "b0d166a016d04fed32872bc1358190fe07a73a66",
      "parents": [
        "2acd0c34a929614b047ed4b9edf516e83f24f200"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Aug 27 20:29:29 2019 -0700"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Aug 29 16:40:34 2019 -0700"
      },
      "message": "versioner: Fix C11 threads.h\n\nThis commit annotates C11 Thread APIs so that bionic versioner won\u0027t\nreport errors.\n\nThis commit also adds a guard before `mtx_timedlock` because\n`pthread_mutex_timedlock` was introduced in Android L.\n\nTest: PATH\u003d$(pwd)/prebuilts/clang-tools/linux-x86/bin:$PATH \\\n      bionic/tools/versioner/run_tests.py\nBug: 140110040\n\nChange-Id: I3c6ce0831f613ffd3a7bf1c1972fd3548195cc56\n"
    },
    {
      "commit": "a960142fe3bbfe2777c9175ccc398994f9ced8fa",
      "tree": "c593a3bef9d0d6bffafbc247d47bb69020c6fbb6",
      "parents": [
        "c6c17ac1e8c7072d6744a6476f4cedb95be8d2ea"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Aug 12 13:34:03 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Aug 12 13:34:03 2019 -0700"
      },
      "message": "Fix timespec.h documentation\n\nThere are 1,000,000,000 nanoseconds in a second.\n\nTest: n/a\nChange-Id: I8ce622ce3c60d7d5b06a056cfd0e6bea976b5aab\n"
    },
    {
      "commit": "6d601458de0b6485743bc23732f200d91b999537",
      "tree": "20780394ee652a73c1e793a267b115af00cdf554",
      "parents": [
        "c16468b66178fd1e2ea9469298db05f5bf43b20b"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 30 16:30:46 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 30 16:30:46 2019 -0700"
      },
      "message": "Renumber arm64 TLS to match GNU values\n\nThe AArch64 ELF specification originally specified these relocations:\n\n  R_AARCH64_TLS_DTPREL64          1028\n  R_AARCH64_TLS_DTPMOD64          1029\n\nHowever, the GNU toolchain implemented them as:\n\n  R_AARCH64_TLS_DTPMOD64          1028\n  R_AARCH64_TLS_DTPREL64          1029\n\nThe AArch64 ELF specification has been updated to replace the relocations\nwith R_AARCH64_TLS_IMPDEF1 and with R_AARCH64_TLS_IMPDEF2, where each\nimplementation can choose which interpretation it implements, but with a\nsuggestion to follow the GNU behavior.\n\nAlso: remove the 64 suffixes from the TLS relocations. The newest version\nof the AArch64 ELF specification (version f) also omits the suffixes, as\ndo the glibc headers.\n\nBug: http://b/123385182\nBug: https://bugs.llvm.org/show_bug.cgi?id\u003d40507\nTest: build device, it boots\nChange-Id: Ie98b7624752982973f0ac969d646454a86784cab\n"
    },
    {
      "commit": "76e2b15ad42bba62b8f9ac98885e5465f866de11",
      "tree": "2dc22703a65099f5a48a18e2d342cda5b89f1f74",
      "parents": [
        "9cf76012aa5edc11050920ab1b65817c1be1a112"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 18 13:15:47 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Jul 18 13:57:39 2019 -0700"
      },
      "message": "Change stdatomic.h check from defined(_USING_LIBCXX) to __has_include(\u003catomic\u003e)\n\nThe previous check was causing some problems with platform builds\nusing the NDK.  The new check is more accurate.\n\nMove the C definitions from stdatomic.h to bits/stdatomic.h since\nwith the new check, we no longer can use the #undef trick to test\nthem.\n\nTest: build platform NDK with stdatomic.h in pthread.h header\nTest: stdatomic bionic-unit-tests\nChange-Id: Ia0bc3cc8344f2ba4e6e55a52248fb6efee799d1d\n"
    },
    {
      "commit": "aeddbcfb2cbd118b5f97c0e586bcf19862ad5247",
      "tree": "3d6892bde9527578ed8cd3a6eabb539ffed7dd4b",
      "parents": [
        "7b85fb0d393c3119501779176b532b37182b0584"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jul 08 12:45:46 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jul 08 13:54:11 2019 -0700"
      },
      "message": "Update to kernel headers v5.2.\n\nTest: Booted a taimen, ran unit bionic unit tests.\nChange-Id: I3522c59793bbcef98ea515996a481d92f14b8816\n"
    },
    {
      "commit": "261b7f4867f623f3f31609e7574411df43c409e2",
      "tree": "8eeaa7fbbcf467c6bf7f5ce4e595faeb54946beb",
      "parents": [
        "849c0b9f51b65da9f3ac7a3222da9ae00893acfd"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jun 10 16:32:07 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 20 13:05:23 2019 -0700"
      },
      "message": "fortify: replace bzero/bcmp defines\n\n__builtin_*_chk will emit warnings when things are trivially broken.\nEmitting errors instead is probably better (and we can be a bit smarter\nabout how we emit code for trivially safe cases.)\n\nBug: 131861088\nTest: checkbuild + bionic-unit-tests on blueline\nChange-Id: I33957ad419922d0760304758ecb9bc8ad33e0b64\n"
    },
    {
      "commit": "849c0b9f51b65da9f3ac7a3222da9ae00893acfd",
      "tree": "1b118a1406ebeddc7786d35a4f06ebfa5b38b42e",
      "parents": [
        "74519e7aa58a19c0ed352b660f2e732148ae2f8a"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Jun 10 16:22:09 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:29:37 2019 -0700"
      },
      "message": "fortify: add __mempcpy_chk\n\nBug: 131861088\nTest: mma + bionic-unit-tests on blueline\nChange-Id: I02f8f87d5db0ba5fecec410da32f6ffa2c98ef57\n"
    },
    {
      "commit": "74519e7aa58a19c0ed352b660f2e732148ae2f8a",
      "tree": "453ed154af17c6a52f33c86f4835c02cbc8bc437",
      "parents": [
        "26d25a22e27fff4c23669d0dd66e3a09d869857d"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 06 17:54:00 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:26:02 2019 -0700"
      },
      "message": "fortify: fix overflow checks in unistd\n\nWe should only be calling _real versions of the functions that use this\nif the input size is verifiably \u003c\u003d SSIZE_MAX. Otherwise, just fall\nthrough to _chk and let that handle it.\n\nBug: 131861088\nTest: mma \u0026\u0026 bionic-unit-tests\nChange-Id: Iba04e486ef91ea1b3539ab6df6260429264e66b4\n"
    },
    {
      "commit": "26d25a22e27fff4c23669d0dd66e3a09d869857d",
      "tree": "011652aa9deaa56d906ec40c46046af980443883",
      "parents": [
        "8c0ec114c58a76efcc1c195a03a36675b0967e39"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 06 17:45:05 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:26:02 2019 -0700"
      },
      "message": "fortify: add even more warnings\n\nBug: 131861088\nTest: mma\nChange-Id: I557309b3e25b54321ee1fe0207f18b6e840bf76e\n"
    },
    {
      "commit": "8c0ec114c58a76efcc1c195a03a36675b0967e39",
      "tree": "4af082b223bc257266533c0bee0a6ceb4a68b2cf",
      "parents": [
        "2356c93d391c1948b3abb7602da3d97bd8b289f2"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 06 17:23:32 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:26:02 2019 -0700"
      },
      "message": "fortify: fix up a few diagnostics; add __wur to realpath\n\nAs it says on the box.\n\nSince realpath isn\u0027t a function definition, any attributes it provides\nhere just add to the \"regular\" realpath.\n\n__wur is being added to realpath because it returns NULL on failure, and\nthe contents of the input buffer are undefined in that case. A blueline\ncheckbuild showed 0 complaints about this new __wur, so it seems\nharmless to add.\n\nBug: 131861088\nTest: mma\nChange-Id: If5f47e0e290d86df69c0888711e29775c390fca4\n"
    },
    {
      "commit": "2356c93d391c1948b3abb7602da3d97bd8b289f2",
      "tree": "a490fc205ecbbd2f21b93f0102a806ccc1a075de",
      "parents": [
        "77f99aaf58b944b23f2cfb38fce08a98feabe93f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 06 17:18:13 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:26:02 2019 -0700"
      },
      "message": "fortify: add bit checking for open(at)?64 functions\n\nThis also adds _2-variants for these functions, for extra glorious\nchecking\n\nBug: 131861088\nTest: mma\nChange-Id: I80475ff4bb220c0c47894e9532426f53412f176f\n"
    },
    {
      "commit": "77f99aaf58b944b23f2cfb38fce08a98feabe93f",
      "tree": "ddcadad346c394fa7d1d7b15d488e988e5feaaf0",
      "parents": [
        "1eb5976d7505f299754040e19792a0de94abccbc"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 06 14:14:52 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 13 23:26:02 2019 -0700"
      },
      "message": "fortify: add diagnostics for str* functions\n\nThis CL allows us to diagnose string functions that get an explicit size\npassed into them, and string functions that are trivially misused.\n\nBug: 131861088\nTest: mma\nChange-Id: I894aec99420a75c6474cfd7d5010f0cf2f10ab21\n"
    },
    {
      "commit": "cfede4fdd1f98549a933c48622d6866c0afeaae6",
      "tree": "b1267525c6c1cc922af54b16053ec52d04e67603",
      "parents": [
        "497d7169d47f47a62e01f2bc85755a364645117d",
        "c03d5964d00e381c654f79713a7a0ccff262f9ce"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 24 06:48:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 24 06:48:27 2019 +0000"
      },
      "message": "Merge changes Ic2d48c93,I981ac9bd\n\n* changes:\n  fortify: s/([gl])eq/\\1e/g\n  fortify: more use of __builtin_constant_p\n"
    },
    {
      "commit": "30d4c6fb06b343d591e85a16345bf6b927420ea1",
      "tree": "90927d1bbd57bd720a5f0191bd6443324a26a1c1",
      "parents": [
        "c2e2ebda5a799595d4139a3ef1780cceccb042f7",
        "a1a09b211ec2f931d119937ca574d4befe2e303f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 24 02:29:06 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 24 02:29:06 2019 +0000"
      },
      "message": "Merge \"fortify: use __builtin_constant_p for more short-circuits\""
    },
    {
      "commit": "a743f31981d3f5b8fa3025c52896586d7cb91817",
      "tree": "2be90de10dd3acfee17503b3615a7142bb696b06",
      "parents": [
        "32e8d4fa718d748aa6bea82ad00a57ba99b54f30",
        "5da5dd5215b1dc2e12e0908a1c74fe0b7672835d"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri May 24 00:43:26 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 24 00:43:26 2019 +0000"
      },
      "message": "Merge \"fortify: Migrate trivial cases to dynamic check macros\""
    },
    {
      "commit": "c03d5964d00e381c654f79713a7a0ccff262f9ce",
      "tree": "cfc2581b8946d24c1d3dcfe89e3247f8151424df",
      "parents": [
        "d9865e7734d1d3465795aaf4529c96f4237e856f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 15:22:01 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 15:22:01 2019 -0700"
      },
      "message": "fortify: s/([gl])eq/\\1e/g\n\nFollow-up from review comments in\nhttps://android-review.googlesource.com/c/platform/bionic/+/961600\n\nBug: 131861088\nTest: mma\nChange-Id: Ic2d48c935ced3c7e875923810f4e9970e7439e51\n"
    },
    {
      "commit": "d9865e7734d1d3465795aaf4529c96f4237e856f",
      "tree": "a448e41d2a75381be89a9688d5212351a4b66b4c",
      "parents": [
        "a1a09b211ec2f931d119937ca574d4befe2e303f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon May 13 17:20:04 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 15:01:55 2019 -0700"
      },
      "message": "fortify: more use of __builtin_constant_p\n\nThis converts all of stdio to short-circuit _chk functions in trivially\nsafe cases.\n\nBug: 131861088\nTest: checkbuild on internal master. blueline bionic tests pass + it\n      boots.\nChange-Id: I981ac9bd19112492d5a47dc5277526426b9af710\n"
    },
    {
      "commit": "a1a09b211ec2f931d119937ca574d4befe2e303f",
      "tree": "3f88fa5b1ec886051e1fbeee5616782b224e985e",
      "parents": [
        "5da5dd5215b1dc2e12e0908a1c74fe0b7672835d"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon May 13 17:16:20 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 15:01:54 2019 -0700"
      },
      "message": "fortify: use __builtin_constant_p for more short-circuits\n\nThis also lets us retire our |__enable_if| version of |strlen|, which\nshould catch strictly fewer cases where we can fold the string\u0027s length\nto a constant than |__builtin_constant_p| inside of |strlen|.\n\nBug: 131861088\nTest: checkbuild on internal master. blueline bionic tests pass + it\n      boots.\nChange-Id: I21b750a24f7d1825591a88d12a385be03a0a7ca3\n"
    },
    {
      "commit": "32e8d4fa718d748aa6bea82ad00a57ba99b54f30",
      "tree": "54eeddd80dd1eb6f30e7ee36bd2b1cc4cac55794",
      "parents": [
        "b07c1973d1dbf20a24685e9ff9e1598b371b8159",
        "ff7179350a1023bdef62ee34ae061804f5fc0353"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 23 21:17:31 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 23 21:17:31 2019 +0000"
      },
      "message": "Merge \"fortify: inline #defined strings\""
    },
    {
      "commit": "b07c1973d1dbf20a24685e9ff9e1598b371b8159",
      "tree": "5c1f3bb836ac27f91ba22816a1f371429d4fed61",
      "parents": [
        "0c0afe17e9260be4c8093d18a2ab5c79635bad6f",
        "5273dc588a39579b7b48baa38323994d9b12c49a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 23 21:17:22 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 23 21:17:22 2019 +0000"
      },
      "message": "Merge \"fortify: use a macro in diagnose_if\""
    },
    {
      "commit": "5da5dd5215b1dc2e12e0908a1c74fe0b7672835d",
      "tree": "2ae61ffd9c9baf2d89c28bcc544e13a83394e07c",
      "parents": [
        "ff7179350a1023bdef62ee34ae061804f5fc0353"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 09 14:32:43 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 13:39:04 2019 -0700"
      },
      "message": "fortify: Migrate trivial cases to dynamic check macros\n\n|__builtin_constant_p| has become more flexible in clang. In particular,\nit\u0027s no longer forcibly lowered before inlining, so we can actually use\nit on function parameters (or |__bos(param)|).\n\nThis CL tweaks things so that trivially safe calls to FORTIFY\u0027ed\nfunctions compile into direct calls to those functions, rather than to\ntheir _chk counterparts. This will be the most impactful with things\nlike |memset|, |memcpy|, etc., since clang has way more flexibility\nabout how to lower those than it does with |__memset_chk|,\n|__memcpy_chk|, ...\n\nAs noted in the comments, the spelling of the new macros is meant to\nmatch closely with the spelling of our |__bos_static| macros used in\n|diagnose_if|.\n\nThis isn\u0027t a full cleanup of all of the cases in which we can do this.\nJust a start on the super simple cases.\n\nBug: 131861088\nTest: m checkbuild; blueline boots.\n\nChange-Id: I696f42ce4a65231e0c4a78a4c5133a6be1cb7708\n"
    },
    {
      "commit": "ff7179350a1023bdef62ee34ae061804f5fc0353",
      "tree": "3cc3d597326c8f73216c78e2946d6aa54601123f",
      "parents": [
        "5273dc588a39579b7b48baa38323994d9b12c49a"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 09 13:54:22 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 13:38:09 2019 -0700"
      },
      "message": "fortify: inline #defined strings\n\nThese were originally #defined so we could share them between our\nGCC and clang FORTIFY implementations. Since we no longer have a GCC\nFORTIFY, #defining them is sort of pointless.\n\nBug: 131861088\nTest: mma\nChange-Id: I2ae4e0bdebbed16c946f5df7cc38c471881b481e\n"
    },
    {
      "commit": "5273dc588a39579b7b48baa38323994d9b12c49a",
      "tree": "b1df0b2c9616d944b03359c99f5f5d8eb46f8e30",
      "parents": [
        "f8813d14aa5eb70fa0cf95b36b5f68a4f631c123"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 09 13:46:57 2019 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu May 23 13:38:09 2019 -0700"
      },
      "message": "fortify: use a macro in diagnose_if\n\nOur diagnose_if conditions are repetitive. It\u0027s potentially convenient\nto hide that behind a macro. There\u0027s an upcoming refactor to our\nrun-time checks; having static checks look super similar is convenient,\nand makes correctness (hopefully) slightly more obvious.\n\nBug: 131861088\nTest: checkbuild on internal master.\nChange-Id: Ic39a3b6bf020734c1bef6be144f61ef81466aafe\n"
    },
    {
      "commit": "24f97eb27bc131801ed9d0d2b367d4164424ac77",
      "tree": "d29644f8a9f2f26955130172c416f58e91b87fa5",
      "parents": [
        "72aafad9506d65c8c0f957cae4b664402cc0e8ab"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 20 12:58:13 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 20 12:58:13 2019 -0700"
      },
      "message": "Update to kernel headers to v5.1.3.\n\nTest: Builds and boots taimen.\nTest: Ran bionic unit tests.\nChange-Id: Ieaca8709d568f075df8cac60c9da2c0ed1916963\n"
    },
    {
      "commit": "31c7309dc6d4385f120ec30dae3c0adcb5a7db1d",
      "tree": "aa78473ec4f6af2e1c5cb34848806a11ec98e8dc",
      "parents": [
        "78e42d81ec89d3cd73ed4e8613947c8bdf8341fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 07 10:03:02 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 07 10:03:02 2019 -0700"
      },
      "message": "Add SEEK_DATA and SEEK_HOLE constants.\n\nWithout pulling in \u003clinux/fs.h\u003e, the UAPI source of these constants,\nbecause it\u0027s full of pollution, in particular a macro called BLOCK_SIZE\nthat breaks a lot of stuff.\n\nTest: treehugger\nChange-Id: I7258ec57e91c67645c2b4d0ce44850d757c4bb12\n"
    },
    {
      "commit": "420671135237cdf40c98d2336fb8712b7f0a2861",
      "tree": "c4d85a256eb46c8aa1a00a1675ac31f60498e313",
      "parents": [
        "30bcaae2b6bcdeadd42066fe5b6f5a49bd5b9b07"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 18 14:27:24 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 24 09:12:29 2019 -0700"
      },
      "message": "threads.h: Add C11 thread support.\n\nFreeBSD, glibc, and musl have all implemented C11 threads at this\npoint. POSIX is looking at how to align with it. Probably time to jump\non the bandwagon ourselves...\n\nImplemented in the same style as \u003ctermios.h\u003e so we can provide this\nfunctionality even on older API levels. This does mean that this is\nstrictly more expensive than calling pthread functions directly.\n\nAlthough this isn\u0027t in POSIX yet, assume that it\u0027s going to be basically\nthe same as C11 and add the header test anyway. We should revisit this\nwhen POSIX actually adds \u003cthreads.h\u003e.\n\nTest: new tests\nChange-Id: I8602d67ce71ca7f8ed1529daa0a8ea1feb083dd6\n"
    },
    {
      "commit": "c4c2e24d5f1e32fbc6c3a7662264d2a2332a9e33",
      "tree": "a2fcf672f8f80b75b81b973588caadb9c21428dd",
      "parents": [
        "d1ff49c24afb1bb09925cda295d2bb52d514f879"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 14:09:30 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 14:19:17 2019 -0700"
      },
      "message": "\u003cbits/glibc-syscalls.h\u003e: only regenerate when we have new uapi headers.\n\nTest: update_all.py\nChange-Id: Iaa92dce263197f5a0e7d2dce5e00a31372dcb3e9\n"
    },
    {
      "commit": "73d1fb95793709f06566c93347d1714a3b97bb4f",
      "tree": "b2918a9937a8089beb312fc6faff3060ad249276",
      "parents": [
        "3f68efc9b11d2e300a5a7ce987e904703c33c97a"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Mar 20 21:44:21 2019 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Mar 20 22:49:38 2019 +0800"
      },
      "message": "Fix get_device_api_level_inlines.h in versioner\n\nThis commit fixes an inline and non-inline mismatch error caused by\n`get_device_api_level_inlines.h`.\n\nVersioner includes both `android/api-level.h` and\n`bits/get_device_api_level_inlines.h` in the test.  When __ANDROID_API__\nis greater than or equal to __ANDROID_API_Q__, `android/api-level.h`\ndeclares a non-inline `android_get_device_api_level()`.  On the\ncontrary, `bits/get_device_api_level_inlines.h` defines a static inline\n`android_get_device_api_level()` function.  These conflicting\ndeclarations result in compilation error.\n\nThis commit fixes the problem by guarding full\n`get_device_api_level_inline.h` with\n`#if defined(__BIONIC_GET_DEVICE_API_LEVEL_INLINE)` so that\n`get_device_api_level_inline.h` can be no-op when it is not properly\nincluded.\n\nNote: This is not revealed until recently because API level 29 is added\nin Mar 14 and the prebuilt binary for versioner hasn\u0027t been updated.\n\nTest: ./bionic/tools/versioner/run_tests.py\nChange-Id: Ia7d5fbdcaf3d98787e60780f6cff2a24016324f5\n"
    },
    {
      "commit": "c0f46564528c7bec8d490e62633e962f2007b8f4",
      "tree": "4dabb94963f869576828c5d169e74956f527031a",
      "parents": [
        "83590680649dc04ce8a98cd85b6356e1d6066564"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 09 15:38:52 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 15 11:07:30 2018 -0800"
      },
      "message": "Make android_get_application_target_sdk_version available to the NDK.\n\nAlso move this and android_get_device_api_level into \u003candroid/api-level.h\u003e\nso that they\u0027re always available.\n\nThis involves cleaning up \u003csys/cdefs.h\u003e slightly.\n\nBug: N/A\nTest: builds\nChange-Id: I25435c55f3549cd0d827a7581bee75ea8228028b\n"
    },
    {
      "commit": "9ce28844db7cf80ee8cf7c88dab23b666eaab739",
      "tree": "a6dc35217992637cf0102c4beba99c6fdcd1ffdc",
      "parents": [
        "e898a17e8f2bf30506642be8106b1f8a6de61151"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 25 12:11:39 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 30 09:21:16 2018 -0700"
      },
      "message": "Update to v4.19 kernel headers.\n\nTest: Builds and boots.\nChange-Id: I99a9ed79666e143b47f02ca4e59eed94f69b7e4a\n(cherry picked from commit a981e2e52e2e95a65fa9c9b6fb16dcb4c83dd576)\n"
    },
    {
      "commit": "82ab481123c171d2029bb0a7767d649b576ee2f8",
      "tree": "3227b9e82293bb449edfb52e1c753a45e044a4fd",
      "parents": [
        "773c697f815d43182adf1eb430f4899255088d6b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 09 13:56:06 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 09 13:56:06 2018 -0700"
      },
      "message": "Add _SC_UIO_MAXIOV as a synonym for _SC_IOV_MAX.\n\nglibc and musl both have these as synonyms for one another, so we may\nas well do the same and get backwards compatibility on old OS releases.\n\nBug: N/A\nTest: ran tests\nChange-Id: I6bf38ea446560e1b11022ff539f07eb67c157049\n"
    },
    {
      "commit": "dd6763a6c677687ad06727af037ed9a7b018c773",
      "tree": "51170c743639731a7e5a1a7540eb3f68870cb893",
      "parents": [
        "9df26193c8adc43a7ac1ba807e70d0b0772712c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 04 16:35:13 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 04 16:35:13 2018 -0700"
      },
      "message": "Another round of documentation.\n\nBug: N/A\nTest: N/A\nChange-Id: I1b818fbb36ddd6d084dee56828290c2717a0c9b0\n"
    },
    {
      "commit": "ce934e3d9be9700946ba51a39ba966faf3867a93",
      "tree": "0db870d9253699cf6084818dabbe8f0a46bec6fc",
      "parents": [
        "74934aaf10d629de477095f0b92c467849f89638"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 13:26:08 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 14:19:46 2018 -0700"
      },
      "message": "Add android_get_device_api_level.\n\nBug: http://b/113615412\nTest: ran tests\nChange-Id: I0a7ae336c96c9ed6543b6935cbc242d14d4a4a67\n"
    },
    {
      "commit": "222ce95c8ab6bb01ced9652c904536adf72d9dc4",
      "tree": "a1b07a272b4d3604abe87cc5ee8ee930cd41af8c",
      "parents": [
        "003521af4760215c9c3b8ba80c88dd3b3c87ab67"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 09:26:43 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 09:26:43 2018 -0700"
      },
      "message": "Remove ARM/MIPS fenv duplication.\n\nBug: http://b/32709207\nTest: ran tests\nChange-Id: I58d354e9f8b1e6023427ba271bf39e4e24b7f8ab\n"
    },
    {
      "commit": "b7b2884a2130c32b3ca7228891a0a9aa934a9be7",
      "tree": "0a84ca3f68ee988c501c776e0d957000aa1bf747",
      "parents": [
        "f2fb3b11c611536b19d4ce8949dffe7f151854b5",
        "0d1a8a5b0b78e0109c55b8f7a142488150b60cd6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 08 15:26:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 08 15:26:37 2018 +0000"
      },
      "message": "Merge \"Reland \"Retire GCC FORTIFY.\"\""
    },
    {
      "commit": "c1c8a188b26be9a8b9c48e6b21af4035226f9d1f",
      "tree": "a15bef933c4ca1e363e48b6124f49b7be5baa3f3",
      "parents": [
        "3bf897e12d73f5c038aeef85f91ccce1c35fe326"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Apr 24 18:43:19 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jul 30 23:49:19 2018 -0700"
      },
      "message": "Fix arm32/64 dynamic TLS relocations\n\narm32: Add a relocation for TLS descriptors (e.g. gcc\u0027s\n-mtls-dialect\u003dgnu2).\n\narm64: Add all the dynamic TLS relocations.\n\nTwo of the relocations here are obsolete:\n\n - ARM documents R_ARM_SWI24 as an obsolete static relocation without\n   saying what it did. It\u0027s been replaced by R_ARM_TLS_DESC, a dynamic\n   relocation. We could probably remove it, but I left it because arm32\n   is old, and I see the macro in other libc\u0027s. It\u0027s probably analogous\n   to R_ARM_THM_SWI8, which is also an obsolete relocation reserved for\n   a future dynamic relocation.\n\n - I couldn\u0027t find any ARM documentation at all for\n   R_AARCH64_TLS_DTPREL32. It seems to have been part of three\n   relocations:\n\n    - R_AARCH64_TLS_DTPREL32 1031\n    - R_AARCH64_TLS_DTPMOD32 1032\n    - R_AARCH64_TLS_TPREL32 1033\n\nBug: b/78026329\nTest: run bionic unit tests\nChange-Id: I5e7432f6e3e906152dc489be5e812fd8defcbafd\n"
    },
    {
      "commit": "0d1a8a5b0b78e0109c55b8f7a142488150b60cd6",
      "tree": "48a51876da8e0a43c2c46393d03a599f016dceae",
      "parents": [
        "4dbe8fc22f96868d3e5164653a6387b86b163673"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 19:36:51 2018 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 19:36:51 2018 +0000"
      },
      "message": "Reland \"Retire GCC FORTIFY.\"\n\nThis reverts commit 4dbe8fc22f96868d3e5164653a6387b86b163673.\n\nThe angler/bullhead builds are now dead, so this can go in.\n\nBug: https://issuetracker.google.com/74404306\nChange-Id: I130cdcd6375b6125cb8a1e63a4a540b0dbe41ceb\n"
    },
    {
      "commit": "4dbe8fc22f96868d3e5164653a6387b86b163673",
      "tree": "068475a0a85f6ed4919d4443fb39e7027e8485ed",
      "parents": [
        "067bdc9546557a1a107f2617d7d15b864ff493f1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 18:54:16 2018 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 24 18:54:16 2018 +0000"
      },
      "message": "Revert \"Retire GCC FORTIFY.\"\n\nThis reverts commit 067bdc9546557a1a107f2617d7d15b864ff493f1.\n\nThe angler/bullhead builds still use GCC, so I\u0027ll wait until they\u0027re turned down.\n\nBug: https://issuetracker.google.com/74404306\nChange-Id: I777b08dd6ab5250d532b4b5cc56e9a790c13db20\n"
    },
    {
      "commit": "067bdc9546557a1a107f2617d7d15b864ff493f1",
      "tree": "48a51876da8e0a43c2c46393d03a599f016dceae",
      "parents": [
        "94ab04c17a0e9f412b7de079f2ef35f39c7f06fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 23 16:53:12 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 23 17:22:58 2018 -0700"
      },
      "message": "Retire GCC FORTIFY.\n\nNDK r18 (which removes GCC) is about to ship. We don\u0027t need this any more.\n\nThe immediate motivation for removing this right now is that the test\nfails whenever we add Clang-only flags to the build system.\n\nWhile we\u0027re here, clean up \u003cstdatomic.h\u003e too.\n\nBug: https://issuetracker.google.com/74404306\nTest: ran tests\nChange-Id: Iaad5d634d1ba76f0b6f19ad32cc27b2533771a4a\n"
    },
    {
      "commit": "76a1d45599fb287742bfe645dea117039fca7949",
      "tree": "ea764b786629b81444fb42469cfdbb100ef29112",
      "parents": [
        "6747bd1631c24f76684278020056ee0d41cbb402"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 27 14:12:29 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 27 14:12:29 2018 -0700"
      },
      "message": "Update to v4.17.3 kernel headers.\n\nTest: Builds, boots on a walleye.\nChange-Id: I389d8b61ec00ea309e38d1b1a2e0dace48c21edb\n"
    },
    {
      "commit": "90234e57487642076e91a827d9f0cba9ad64faac",
      "tree": "3d59c7e5626b58b409f7c5144db1a0cf961632f0",
      "parents": [
        "1315e3ef852eafb3377a73212242bbe6b5247800",
        "b83bf14a352269135d3e2fe783414c3b6e1d0ac5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 23:49:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 22 23:49:40 2018 +0000"
      },
      "message": "Merge \"Fortify ppoll64.\""
    },
    {
      "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": "de45dcbbab9c36054172637231ba32bef86a73a6",
      "tree": "4750706cdbb27c13e467c2801060988040894321",
      "parents": [
        "6655ba1c321e8af27b1e8c0676e4a619227d8395"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Fri Mar 16 14:15:01 2018 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Mar 20 15:59:46 2018 -0700"
      },
      "message": "libc: silence unsigned-\u003esigned warnings with ioctl\n\nThis also tweaks cdefs to make __overloadable usable outside of\nFORTIFY. It had to be FORTIFY-only before we had unmarked overload\nsupport in clang+Bionic.\n\nBug: https://github.com/android-ndk/ndk/issues/402\nTest: Internal master builds + `mma`. `mma` in Bionic fails if the\nchange to ioctl is undone.\n\nChange-Id: Ib386b1786e1dca625e6d5a18682005adc734d9c1\n"
    },
    {
      "commit": "23415fc60d18b41b1a1ff9591176ce98b6f84485",
      "tree": "bb79fd7cf82c54ad730c8c268b68e02f29997e69",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 19:09:04 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 19:09:04 2018 -0800"
      },
      "message": "Add uc_sigmask64.\n\nAdded to each ucontext_t for source compatibility between platforms where\nsigset_t and sigset64_t differ (arm, x86) and where they\u0027re the same\n(all the rest).\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I65a37bfa177933701bbe6c2350448885fd0f9c43\n"
    },
    {
      "commit": "f81abef14852f2738043998e2f420d97ba59c286",
      "tree": "6dd2d8846f0a34993159a8576a35a2a20411f972",
      "parents": [
        "4a2407b3a1ad7b71bbc617ffdee961e416b121e4"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Jan 25 15:30:27 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Jan 25 17:54:50 2018 -0800"
      },
      "message": "Use __BIONIC_FORTIFY_VARIADIC for variadic functions.\n\n* Variadic functions usually cannot be inlined.\n* Do not use misleading __always_inline attribute,\n  and also avoid early clang 7.0 compiler bug.\n\nBug: 72412382\nTest: build and boot aosp*-eng in emulator\nChange-Id: I7490976166581abc626f397ad408581ada0ed308\n"
    },
    {
      "commit": "59a6ee963f96eedf01df7db1e57397ff71852b15",
      "tree": "d070eb160521ea7a969982a09d403c44e8f75a44",
      "parents": [
        "6651b3d2e6761d586cae660b68bba625b47f7bdf",
        "5da96467a99254c963aef44e75167661d3e02278"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 01:32:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 15 01:32:03 2017 +0000"
      },
      "message": "Merge \"Add trivial termios tests.\""
    },
    {
      "commit": "64f355ffbd715a3c8b467c3b37701ad404b566b4",
      "tree": "04e1e9ddac688de976ae427ece327ee1c68afeb5",
      "parents": [
        "3ba327198a42eecd2fbc2556d7d0fa41f8d6b17b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 30 16:10:24 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 14 10:07:27 2017 -0800"
      },
      "message": "Use in_addr in ip_mreq_source and ip_msfilter.\n\nThis adds a new mechanism to say \"replace struct S with #include \u003cbits/S.h\u003e\".\n\nAlso switch epoll_event over to the new mechanism.\n\nAlso use the kernel\u0027s struct sockaddr_storage directly rather than behind\nan unnecessary #define.\n\nThis patch also removes some dead code in the header scrubber. This code\nstill needs rewriting completely. I learned that a \"block\" isn\u0027t necessarily\na single struct definition, say; it might be a run of them. It seems like\na block is a run of preprocessor directives or a run of regular code.\n\nBug: https://issuetracker.google.com/36987220\nTest: new test\nChange-Id: Ic6a5c09559766a4babe3cd4c3ea538b885e07308\n"
    },
    {
      "commit": "5da96467a99254c963aef44e75167661d3e02278",
      "tree": "a0255adf4a9eab4c575e651f6478e294abd0553e",
      "parents": [
        "3ba327198a42eecd2fbc2556d7d0fa41f8d6b17b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 14 09:43:59 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 14 09:46:50 2017 -0800"
      },
      "message": "Add trivial termios tests.\n\n...and fix the bugs.\n\nAlso explain why we can\u0027t support separate input and output speeds\nwithout an ABI change. Luckily no-one is likely to need that anyway,\nand they can always work around it by using `struct termios2` directly\nthemselves.\n\nBug: http://b/69816452\nTest: ran tests\nChange-Id: Ie08499a198bb6a20d7e5e2f5ff74a60bd53e97e1\n"
    },
    {
      "commit": "21b56ebbd49362d293e1f56c4b3265c227bbbbae",
      "tree": "5f86bae235f84b48c20d66d9973118133e945892",
      "parents": [
        "eb7347aedbc61ba45555aef3e6e863f0d90b407b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 20 17:57:17 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 13 09:01:35 2017 -0800"
      },
      "message": "Test POSIX 1003.1 2016 chapter 13 \"Headers\".\n\nAnd fix one thing that this found: apparently \u003cstdlib.h\u003e should also\nmake the various *WAIT* macros available.\n\nBug: N/A\nTest: builds\nChange-Id: Id879bf3c1bddd1170261a809e7280150a74d6b3d\n"
    },
    {
      "commit": "b6c7f6e5950e609a2ede7990d2be0a1d1b55304f",
      "tree": "3c68573b1d47c41b8a5e2102ec8295ff3f88f29c",
      "parents": [
        "b06bb71672094d18d928c19ddc631af07931431f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 16:46:32 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 03 16:46:32 2017 -0700"
      },
      "message": "Fix arm/arm64 \u003cfenv.h\u003e to match current reality.\n\nARM stopped supporting enabling of FP exceptions years ago.\n\nBug: http://b/68832485\nTest: ran tests\nChange-Id: I8450baa78e04d994c352180975b0a1ecd5a9f662\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": "19d768598205d915a856ec8f8bf6f996dc6fa83a",
      "tree": "8463238af2bc21651e86e9e44973e9b3ba99eb52",
      "parents": [
        "435e6384de8f9e35b8878b1ccda5bb5686c15207"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:27:01 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 18 13:27:01 2017 -0700"
      },
      "message": "More \u003climits.h\u003e fixes.\n\nWent through the POSIX spec for the _POSIX* and _XOPEN* constants.\n\nBug: http://b/32776472\nTest: ran tests\nChange-Id: I389100dbc7de354eae9056e44b0a7fa8c37374e3\n"
    },
    {
      "commit": "ddd6436df2adef2e195cf45634750a31c3e03bd1",
      "tree": "ae58a01e0582b0a5b19f7545b048e56756993052",
      "parents": [
        "01bb7bf6fb6b5b43c4b1ff00be79b64f01015691",
        "d4ca231ae2891e5c9eccb6e9a2e6af7fabcfc2a5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 22:23:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 12 22:23:58 2017 +0000"
      },
      "message": "Merge \"Unified sysroot: kill arch-specific include dirs.\""
    },
    {
      "commit": "d4ca231ae2891e5c9eccb6e9a2e6af7fabcfc2a5",
      "tree": "4ffbf1b6c0d0acb3df88b1ce02d574eeaead3f0a",
      "parents": [
        "36f7b8b7891f0af56eb61e7d32cc8cedb5ded8de"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 11 22:27:45 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 12 13:19:51 2017 -0700"
      },
      "message": "Unified sysroot: kill arch-specific include dirs.\n\n\u003cmachine/asm.h\u003e was internal use only.\n\n\u003cmachine/fenv.h\u003e is quite large, but can live in \u003cbits/...\u003e.\n\n\u003cmachine/regdef.h\u003e is trivially replaced by saying $x instead of x in\nour assembler.\n\n\u003cmachine/setjmp.h\u003e is trivially inlined into \u003csetjmp.h\u003e.\n\n\u003csgidefs.h\u003e is unused.\n\nBug: N/A\nTest: builds\nChange-Id: Id05dbab43a2f9537486efb8f27a5ef167b055815\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": "aaf83e8051abf9a68e9deee589b18f0ecdf1b266",
      "tree": "f3b56813ba81ae68a68e28f73d4de933be22a455",
      "parents": [
        "0a451314b0bb3af51e34659ade322be58c434127"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 15:26:33 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 16:18:10 2017 -0700"
      },
      "message": "More POSIX limits cleanup.\n\nhttp://man7.org/linux/man-pages/man7/posixoptions.7.html is a very useful\nquick reference to what these are supposed to mean.\n\nBug: http://b/32776472\nTest: ran tests\nChange-Id: Icea6812d6075e663885844d7424aa6cf73d6284a\n"
    },
    {
      "commit": "3a8f75d8b052611c08ef17ecf625b8021f4e0229",
      "tree": "a41055f8209868da748f5118a24df528d1f07a9e",
      "parents": [
        "42f3bd0ffc3f0f0e3191c679ea4276f7f1882a00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 10:33:18 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 05 10:33:18 2017 -0700"
      },
      "message": "POSIX clock cleanup.\n\nThe newest of these clocks was added in Linux 2.6.12, so no need for runtime\nchecks.\n\nAdd CTS tests that we can actually use the various clocks.\n\nBug: http://b/67458266\nTest: ran tests\nChange-Id: I3cfd7982043d6f8d4ebdc2b29e8722334f443ce5\n"
    },
    {
      "commit": "df9a489b2bfcc224943a12b447e9cf00db81d9e0",
      "tree": "4ab72c37dc663296fedc579b194646b89d8d931c",
      "parents": [
        "57e07a150e536f79d78f8203b0c807087b5c854b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 23 14:34:03 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Aug 23 14:34:40 2017 -0700"
      },
      "message": "Add more const-correct C++ overloads.\n\nlibc++ actually provides overloads for all the standard C library stuff,\nso we just need to handle the POSIX and GNU extensions, of which there\nare just two more: memrchr and strcasestr.\n\nBug: http://b/22768375\nTest: builds\nChange-Id: Ie9ed1fbcc794e14a0c9bba13b5307ad677949613\n"
    },
    {
      "commit": "3ce8834e53304b66e5b0d0d56bc0efea1a172e95",
      "tree": "10164708817ee500bc04f2c19f8ddef81e0654bd",
      "parents": [
        "6beab08440cac666e9c4fd3e810237bf10295f86",
        "faa74342e3dc1fdb8832be9ad3a69c9f8fb749b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 15 20:30:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 15 20:30:28 2017 +0000"
      },
      "message": "Merge \"Name function arguments in libc headers for Studio.\""
    },
    {
      "commit": "95bd4884b525ad7a898105863c086113556ada29",
      "tree": "81f2d25c6491285b2fa0aade7a8298aeb7b33d7a",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Aug 14 14:48:55 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Mon Aug 14 14:48:55 2017 -0700"
      },
      "message": "libc fortify: error on realpath(NULL, foo)\n\nI\u0027ve half a mind to make this a warning instead, since this sort of\ncall isn\u0027t UB. That said:\n- if the user really wants this (I can\u0027t imagine why they would), they\n  can just put NULL in a non-const variable,\n- we\u0027re slowly moving to -Werror ~everywhere anyway, and\n- it\u0027s presumably easier to change this from an error to a warning than\n  the other way around\n\nBug: 12231437\nTest: m checkbuild on bullhead internal master. No new\nCtsBionicTestCases failures.\n\nChange-Id: Ie8bf5a3455f663686fda4a7450fb35d147fa745e\n"
    },
    {
      "commit": "faa74342e3dc1fdb8832be9ad3a69c9f8fb749b9",
      "tree": "1c7819aa00942949400abca5c21a6e31fd72dec5",
      "parents": [
        "30438e4cea83628bcacbedff37a35398bb8b40e7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 11 17:34:44 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 11 17:45:59 2017 -0700"
      },
      "message": "Name function arguments in libc headers for Studio.\n\nFirst batch of headers...\n\nBug: http://b/64613623\nTest: builds\nChange-Id: I6bc3ad79daa635456b61d03b1f43f06c433ec596\n"
    }
  ],
  "next": "daebd05739d6c29e7126a20aeeab73de530d293e"
}
