)]}'
{
  "log": [
    {
      "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": "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": "79a3db030475792f8ee355292235d3453f50db65",
      "tree": "737ec0a93f712f489970fc4bd4737e190c761100",
      "parents": [
        "9cb82a2c6b9001f7c50cbb3465f4aabc5d7cd055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 17 18:56:08 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 17 18:56:08 2017 -0700"
      },
      "message": "Only rename fgetpos/fsetpos/fseeko/ftello/funopen if we\u0027re N or newer.\n\nWithout this, setting __FILE_OFFSET_BITS to 64 and targeting pre-L\nmade these functions entirely unavailable.\n\nBug: https://github.com/android-ndk/ndk/issues/333\nTest: builds\nChange-Id: Id17ae3c070f8b2650a9bc9aa2aa2e92c5fcdf4ad\n"
    },
    {
      "commit": "9c2094f3c527301068f2049eefd9e684a7995352",
      "tree": "e5c03a364d9abadd8c2d0cc63e865e81d4cfc4c2",
      "parents": [
        "8b154b1e8233e1d34a6a66b72369f05f8655b653"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 14 19:28:18 2017 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Feb 14 22:22:13 2017 -0800"
      },
      "message": "Fixup API level guards for new fortify functions.\n\nTest: tools/update_headers.sh \u0026\u0026 make checkbuild\nBug: None\nChange-Id: I9d06ea8a5ee9dc27d957f59e6e84150651ed1c76\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": "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": "3037ea43fccf5ec64537c3ee024bc726ee723c01",
      "tree": "830fda3221eb1207bb837f78298032be2d2c1706",
      "parents": [
        "d8244214751f9b48e60e69910c4e7175f8fab1ac"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 06 15:46:45 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 20 10:10:45 2016 -0700"
      },
      "message": "Fix stdin/stdout/stderr for pre-M.\n\nThis wasn\u0027t an array of pointers, it was an array of structs.\nUnfortunately we need a complete type to index into the struct for\nstdin/stdout/stderr, so add a phony struct that matches the size and\nalignment of `struct __sFILE`. This property is guaranteed by the\nstatic_asserts in libc/bionic/struct_file_test.cpp.\n\nTest: mma\nBug: http://b/30465923\nChange-Id: I8ce851dd64a261703bb44f9b5cd23b7caff4dd68\n"
    },
    {
      "commit": "fd936ae0257dd3db5ec5fcff46188993bec7a65d",
      "tree": "20ce6e21b87dfa819ba79354344b4310ad94b8cc",
      "parents": [
        "166f875eabdd2b7c508fc4ed1789a0d37fb1bdce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 10:16:34 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 10:16:34 2016 -0700"
      },
      "message": "POSIX says \u003cfcntl.h\u003e makes SEEK_* visible.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html\n\nWe already had two copies of these constants, so time to factor them out\ninto bits/.\n\nChange-Id: I213c0d2372e41463593f878d338002b8eaa918cd\n"
    },
    {
      "commit": "53cf348c829cb36328755bbdbe46668ecbc55348",
      "tree": "261d3370757fb0ae1f8f63b344802e62ed9aefe8",
      "parents": [
        "6ba5f07e3f6dbc487eb2cd341a9a4e804afafd51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 13:06:41 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 16:27:23 2016 -0700"
      },
      "message": "Remove more stdio copy/paste.\n\nChange-Id: Ia92629b75d2c153ecf1cec711e2f9575eef604ab\n"
    },
    {
      "commit": "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": "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": "c1020754c26b3d9f89a61491d515acead2c6c52a",
      "tree": "cc732a80c86fc404426d070c538b5a1cf1af4a98",
      "parents": [
        "91f33cd5ae3f09b7d2e614f5d0809037c1708db1"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 26 16:26:15 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 26 16:28:30 2016 -0700"
      },
      "message": "Remove _GNU_SOURCE guard on tmpnam.\n\nThis shouldn\u0027t be guarded by _GNU_SOURCE. external/opencv3 expects\nP_tmpdir to be available.\n\nhttp://pubs.opengroup.org/onlinepubs/009695399/functions/tmpnam.html\n\nTest: make checkbuild\nChange-Id: Iba9ee03aec6e712356b571f7165ed1809e6227fe\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": "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": "32c79c279d8d06163c8ee3e013007bebe3ff62ba",
      "tree": "38065c4c5837bcb9a6a23679e0d7e925faf3d1c8",
      "parents": [
        "77bd6073fb60c4515219fc73712a76f780f9c060"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jul 15 11:32:23 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jul 15 12:54:14 2016 -0700"
      },
      "message": "Put the legacy stdio fds back for pre-M.\n\nChange-Id: I2e397b04cba2969b9f9a3767b9b2fd12a289fcd2\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": "20788aec002ab3f6dea4e01665a439933161d11c",
      "tree": "cb77d4d956f2377e762476a96cfe92b4dcaf6a94",
      "parents": [
        "70d99a1053542b8c062e6cb7eca2bcfb16c25d55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 15:16:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 15:16:32 2016 -0700"
      },
      "message": "Add ctermid.\n\nChange-Id: I7c7c815c2725df222932db923632c8b6419741ab\n"
    },
    {
      "commit": "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": "14adff1cfa06a3d4d3281a9bf7848b556d84c20d",
      "tree": "ce1fb2867f69e49f57d0bbe8a9099b09beda0c19",
      "parents": [
        "5a3d5cac642f9e58b2c510eab23789fb4fc3a753"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 12:00:55 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 16:39:50 2016 -0700"
      },
      "message": "Add versioning information to symbols.\n\nBug: http://b/28178111\nChange-Id: I46bf95accd819f4521afb1173d8badcc5e9df31c\n"
    },
    {
      "commit": "f226ee59e0effedeabed09e2d65be7fa7499cc25",
      "tree": "60b192388b5575a5315d7e9ea2b5b4ffa29ed59f",
      "parents": [
        "a279324094d748b97201412b2457d2f6e26287dd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 11:24:28 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 11:24:28 2016 -0800"
      },
      "message": "Add fopen64/freopen64/tmpfile64 aliases.\n\nOur fopen/freopen/tmpfile are already always O_LARGEFILE, but let\u0027s add\nthe aliases for _LARGEFILE_SOURCE compatibility.\n\nBug: http://b/24807045\nChange-Id: I5d99b3ef3c9f27ce70f13313f6a92e96c7f21f80\n"
    },
    {
      "commit": "03e65eb03bf0bfaafa797daf91e80e8308968db3",
      "tree": "9f3158666a6a63833a0ae6beb23f3e0979de1fd8",
      "parents": [
        "ced73ee45e04a991ce1295a38364568a17884eed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:13:04 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:45:13 2016 -0800"
      },
      "message": "Implement funopen64.\n\nBug: http://b/24807045\nChange-Id: I161920978161389be34b707cc6ce8e05f760d552\n"
    },
    {
      "commit": "9677fab88c25fd2e6f3149ad00fb8870963f0675",
      "tree": "365bc8bb9137d504717b88444cdc1262a6c58df3",
      "parents": [
        "ac67b4eb7c70ea668abb32298b0cb16920a32a66"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 15:50:59 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 09:14:41 2016 -0800"
      },
      "message": "Support _FILE_OFFSET_BITS\u003d64 for most of \u003cstdio.h\u003e.\n\nThis doesn\u0027t address funopen, but does add fgetpos/fsetpos/fseeko/ftello.\n\nBug: http://b/24807045\nChange-Id: Ibff6f00df5fb699c8e8f13b91a75caf024540b73\n"
    },
    {
      "commit": "e70e0e9267d069bf56a5078c99307e08a7280de7",
      "tree": "13e4b48665f46eecb2660bdde4775f2b761226ec",
      "parents": [
        "ad9c3f34f762ed45cce5dbb93218124ed31f6873"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 11:10:47 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 11:10:47 2016 -0800"
      },
      "message": "Move internal FILE flags macros to \"local.h\" from \u003cstdio.h\u003e.\n\nBug: http://b/24807045\nChange-Id: Ia42ec1907370b4af957ece94a856f71c7ee27cb7\n"
    },
    {
      "commit": "2704bd13409a77237147f861c43796148326b2e3",
      "tree": "c2433fa289edb2a7654a3c1caa2ad3c21c60e23d",
      "parents": [
        "5f1ff279ea6aa4c35c59a81018131810e35b2bff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 20 17:14:53 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 21 10:34:35 2016 -0800"
      },
      "message": "Simplify fseek/ftell.\n\nAnother step towards _FILE_OFFSET_BITS\u003d64 support.\n\nBug: http://b/24807045\nChange-Id: I00b83c81a7b108176c4d9437bc32611f73b7e967\n"
    },
    {
      "commit": "fb994f4c040da968b7271860535f07daba182069",
      "tree": "b2c6e72f4484ca30990ae6625a677a394b97e227",
      "parents": [
        "8b5b2c467281de502ba1c8ffbe447ef95fbf5219"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 06 16:13:47 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 06 16:13:47 2015 -0800"
      },
      "message": "Add fileno_unlocked to support thread sanitizer.\n\nBug: 25392375\nChange-Id: If3f92a0e08a53f4b59e01397e8efa307d8572349\n"
    },
    {
      "commit": "f0141dfab10a4b332769d52fa76631a64741297a",
      "tree": "79595f40434f33a870ac4b79b9916a9408b88a8a",
      "parents": [
        "e78392637d5086384a5631ddfdfa8d7ec8326ee3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 12 12:44:23 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 12 12:53:42 2015 -0700"
      },
      "message": "Make struct FILE opaque.\n\nBug: http://b/24807045\nChange-Id: I3cb4e436325a65bef3b203e3970e4d967101fcce\n"
    },
    {
      "commit": "fed2659869ec41a93f655be8058568ddab419e01",
      "tree": "5dca1c6f1f120a561d5279eb76816e94e210cb94",
      "parents": [
        "2565492db0d67b95348cd1c3026ed338ca59aa37"
      ],
      "author": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Sat Jul 18 13:55:51 2015 -0400"
      },
      "committer": {
        "name": "Daniel Micay",
        "email": "danielmicay@gmail.com",
        "time": "Thu Jul 23 18:55:46 2015 -0400"
      },
      "message": "add fortified implementations of fread/fwrite\n\nA __size_mul_overflow utility is used to take advantage of the checked\noverflow intrinsics in Clang and GCC (\u003e\u003d 5). The fallback for older\ncompilers is the optimized but less than ideal overflow checking pattern\nused in OpenBSD.\n\nChange-Id: Ibb0d4fd9b5acb67983e6a9f46844c2fd444f7e69\n"
    },
    {
      "commit": "f1b4a5d510c693d7cffc76cade9ab049f7dfed07",
      "tree": "f30cc0fd2c51c137aaa2e53c41542dc912214f5c",
      "parents": [
        "448a85968da1e4622e829bb48fd888a38f9f6c49",
        "9b4f77f5cfc45a377b7de7195341a7769a722b74"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 26 02:17:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 26 02:17:17 2015 +0000"
      },
      "message": "Merge \"Make tempnam/mktemp deprecated.\""
    },
    {
      "commit": "9b4f77f5cfc45a377b7de7195341a7769a722b74",
      "tree": "41c892013dbfcde3a5a52b7c2a3aa06341cc3573",
      "parents": [
        "913fcb274f353348a353aaabbe872b3b5924a6e7"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 23 16:42:07 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 25 15:42:01 2015 -0800"
      },
      "message": "Make tempnam/mktemp deprecated.\n\nBug: 19340053\nChange-Id: Ib02c65814ef97cd1758fd8142b73736cc8bc1700\n"
    },
    {
      "commit": "4add77b93c0c61381faa9d4d8dc62f81cafcc69a",
      "tree": "085f6898cd08fd3ff275b16e88c80b190b132d67",
      "parents": [
        "1dbc6bb02521ba1535748826eeaf28404160d788",
        "913fcb274f353348a353aaabbe872b3b5924a6e7"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 18 21:33:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 18 21:33:02 2015 +0000"
      },
      "message": "Merge \"Make gets() deprecated.\""
    },
    {
      "commit": "913fcb274f353348a353aaabbe872b3b5924a6e7",
      "tree": "26701a564824e9a41de417eafc156f51895db10c",
      "parents": [
        "0e61c2c0ea201e157d0d3d3c04564588bcfb7c66"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 18 12:20:32 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 18 12:20:32 2015 -0800"
      },
      "message": "Make gets() deprecated.\n\ngets is already deprecated in glibc. Others with __warnattr are not deprecated.\n\nChange-Id: I80a276d2b5964630218be47f1c94b146c0d31151\n"
    },
    {
      "commit": "68dc20d41193831a94df04b994ff2f601dd38d10",
      "tree": "7706f742caa2ce1db9868baadf890187d7d02dbd",
      "parents": [
        "d687905f11102a7f6bad461b6f501dc870c59999"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 06 22:28:49 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 17 19:54:43 2015 -0800"
      },
      "message": "Implement _FILE_OFFSET_BITS (mostly).\n\nI still don\u0027t think we can make stdio\u0027s fseeko and ftello work, but we can\nhave everything else, and very few programs use fseeko/ftello (and they can\njust refrain from using _FILE_OFFSET_BITS and be no worse off than they are\ntoday).\n\nBug: 11865851\nChange-Id: Ic3cb409aae6713f4b345de954bcc4241fcd969ec\n"
    },
    {
      "commit": "784de4e50a1161d78757402c149d85368bd49c29",
      "tree": "b845b7e6adc69d65e8b96e31fd25c1cf98d56493",
      "parents": [
        "4645c4f62df49d1ece5aabb7c9fa44ca34d30272"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 17 23:54:40 2015 +0000"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 17 23:54:40 2015 +0000"
      },
      "message": "Revert \"Move use of __warnattr to __deprecated.\"\n\nThis reverts commit 4645c4f62df49d1ece5aabb7c9fa44ca34d30272.\n\nChange-Id: I6c1062d54a4e2c4f41ce7a403e4e7840e6339146\n"
    },
    {
      "commit": "4645c4f62df49d1ece5aabb7c9fa44ca34d30272",
      "tree": "49f40a240870fdbd7f481215b82217c95a5b9536",
      "parents": [
        "fb48c68221afb1f9e7c63a15a20cca0857d1b9f9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 17 12:39:39 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 17 14:14:45 2015 -0800"
      },
      "message": "Move use of __warnattr to __deprecated.\n\nclang don\u0027t support warning attribute. Replacing warning attriubte with\ndeprecated attribute can achieve the same behavior whether compiled by\ngcc or clang.\n\nBug: 19340053\nChange-Id: I064432b81cf55212458edbc749eb72dc15a810fb\n"
    },
    {
      "commit": "1ed337dbdfd419db0365f4457b96fe129d21db90",
      "tree": "e6048080c31d0a46d3270b6faa0267f23cd8620b",
      "parents": [
        "c57b5c5094f915ff975a256e086d58e2e7cfedf1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 14:02:09 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 02 14:02:09 2015 -0800"
      },
      "message": "Clean up SEEK_SET definitions.\n\nIf we lose the #ifndef, the compiler will tell us if the definitions\nof SEEK_SET and friends ever get out of sync.\n\nChange-Id: I357cabec7c9cd451c604342344f210bba20fb6bc\n"
    },
    {
      "commit": "168667c972a1e9ede5b64ad6cee0666e9b96d4d8",
      "tree": "d4312b237b885460537ce9dc8fe53e26564a7d48",
      "parents": [
        "898aab282cff2a2949bc1726f8a4b81c1c30148e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 14 14:42:59 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 14 14:42:59 2014 -0800"
      },
      "message": "Add non-macro stdin/stdout/stderr too.\n\nVarious C and C++ standards explicitly say that stdin/stdout/stderr\nshould be macros, but glibc makes them global variables too. This\nmeans it\u0027s possible to write code that uses those names as locals,\nbut that code (toybox being an example) won\u0027t build on bionic.\n\nIf we\u0027d done this earlier, we could have hidden __sF for LP64, but\nit\u0027s too late now.\n\nChange-Id: I90cf8c73f52b66e1760b8fa2e135b9f9f9651230\n"
    },
    {
      "commit": "658727e111ed6dee7be5239494f0764f7b1b02f8",
      "tree": "253051956500d39d0a9e8d282aacebe78dc21def",
      "parents": [
        "eeb9aa02b7f307a1d9b80731dd69ef9dd2f47e47"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 07 11:10:36 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Oct 07 16:46:47 2014 -0700"
      },
      "message": "Inline helpers need to be exported unmangled.\n\n__open_2() is used by the fortify implementation of open(2) in\nfcntl.h, and as such needs an unmangled C name. For some reason\n(inlining?), this doesn\u0027t cause problems at the default optimization\nlevel, but does for -O0.\n\nThe rest of these didn\u0027t cause build failures, but they look suspect\nand probably will, we just haven\u0027t caught them yet.\n\nBug: 17784968\nChange-Id: I7391a7a8999ee204eaf6abd14a3d5373ea419d5b\n"
    },
    {
      "commit": "2ad11a96a169eedbab5ecdfac23fcfb095df2140",
      "tree": "bf0e0ec3dc0e90d6bac01b21a2ebff20172f7579",
      "parents": [
        "2f5cf100a8cfaf51296fda69d31ef9e59c6d1da3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 12:14:21 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 17 15:21:10 2014 -0700"
      },
      "message": "Fix some 32-bit-isms in \u003cstdio.h\u003e.\n\n(cherry-pick of 2d80400a9e8454038a3ec29959436184be0c4c65.)\n\nBug: 17157793\nChange-Id: I8290e240b92e5617f4c12c0eacad6e622e677b6a\n"
    },
    {
      "commit": "6b841db2baa24ffcf2a4e5f975d1d07f1699b918",
      "tree": "af58fa1f4b5fa777f47e9ef797c50cff964b7046",
      "parents": [
        "b6ed54076abdd337150d7a92a661247b69d26cb4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 16:10:49 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 17:03:46 2014 -0700"
      },
      "message": "Add POSIX-2008 fmemopen, open_memstream, and open_wmemstream.\n\nBug: 17164505\nChange-Id: I59e28a08ff8b6ab632230b11a5807cfd5278aeb5\n"
    },
    {
      "commit": "2b021e10664c3938249eb18b48eeac253cbb3e20",
      "tree": "31772908fbc1209095bbe668887809eff2fd60fd",
      "parents": [
        "b61c50647b85b3c33af8ca155e88ec098d9e8cb0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 19 17:00:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 10:23:52 2014 -0700"
      },
      "message": "Add \u003cstdio_ext.h\u003e for elfutils.\n\nBug: 17139679\nChange-Id: I1605ac382dbb6f23b2d874dbb9769f3cde4a6a99\n"
    },
    {
      "commit": "2cfb4e8e2e217ef0e4140dcbf9b3da809781158c",
      "tree": "19a83c3a73ba3c613de106fd1b6ae8e83f75d3d4",
      "parents": [
        "2b6cdb5e459661727c99e81660c7c3df5cdbe024"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 18 14:45:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 18 14:45:42 2014 -0700"
      },
      "message": "Improve \u003csys/cdefs.h\u003e.\n\nFix and use __RENAME (and lose ___RENAME --- two underscores should be\nenough for anybody). This was the point of this change, because I want\nto use __RENAME to support the two basename variants and the two\nstrerror_r variants.\n\nLose a bunch of macros that weren\u0027t being used.\n\nLose three dead files from the DNS code.\n\nChange-Id: I3ef645c566b16a52217bc2e68c7d54b37c7c9522\n"
    },
    {
      "commit": "df85f50b82efc96e348c3d88e67b7bcdb263921f",
      "tree": "5f7b193eb6b1d5fdc53d2310e1f7c248bdb06ba7",
      "parents": [
        "de69069fcfee8d89dfc70da374760ef0c29fe0a4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 05 17:07:46 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 09:03:52 2014 -0700"
      },
      "message": "Add an obvious comment to \u003cstdio.h\u003e for fixincludes.\n\nWe don\u0027t want GCC\u0027s fixincludes to touch our \u003cstdio.h\u003e because we\nwant to support multiple platform versions with one toolchain. Give\nthem a nice easy unambiguous string to look for.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d73728\nChange-Id: I15cb9a2c9eb0a44b0965dc2139f224f2b6e68ea1\n"
    },
    {
      "commit": "f4c1a36a4500bc7f12e3065be3da4e8669ee011d",
      "tree": "22654356b6c7febe5ad131e6bd4f9f13c3818d21",
      "parents": [
        "2b591b37420b4186bda7fa823b9058d4b19565f6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 29 16:43:55 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 29 16:57:47 2014 -0700"
      },
      "message": "Remove declarations for things that don\u0027t exist.\n\nThe \u003cgrp.h\u003e ones prevent gdb from building out of the box.\n\nChange-Id: I0efbffad2215cfcd75b4d442dfc972444b51d97c\n"
    },
    {
      "commit": "9635046e53e14ff44348853a9cacdffd444b35ae",
      "tree": "9f2a9c023d1e981cedc9811e25035f82783c092c",
      "parents": [
        "1ef3ba2b4fd2408cdd78828ec2930ce31ce8cee7"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jun 17 23:31:21 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jun 17 17:37:06 2014 -0700"
      },
      "message": "Hide declaration of gets(3) for C11 and later.\n\ngets(3) was removed from C11.\n\nThis reverts commit 1291680c2a0c23b2163198d27e00261ca206298b.\n\nBug: 14500800\nChange-Id: I5e5146bdbb80f2be818a17f287b112bab37d1f6d\n"
    },
    {
      "commit": "1291680c2a0c23b2163198d27e00261ca206298b",
      "tree": "e4b34e6e1b1d2c8e182e5afa18651870779b5665",
      "parents": [
        "c0ce5908277a9bf18628946629dba4277e9a2281"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jun 17 23:23:59 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jun 17 23:28:38 2014 +0000"
      },
      "message": "Revert \"Hide declaration of gets(3) for C11 and later.\"\n\nBreaks stlport. checkbuild lied to me?\n\nThis reverts commit c0ce5908277a9bf18628946629dba4277e9a2281.\n\nChange-Id: I72fb21aba7eaea96a7c3208236fd03411527fa5e"
    },
    {
      "commit": "c0ce5908277a9bf18628946629dba4277e9a2281",
      "tree": "202bb9620430a58b0899a7948c36dc4be3cad272",
      "parents": [
        "b656410a73c4dfa2a3f8deba0a673080320f8605"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jun 17 15:33:31 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jun 17 15:52:07 2014 -0700"
      },
      "message": "Hide declaration of gets(3) for C11 and later.\n\ngets(3) was removed from C11.\n\nChange-Id: I4040a8a6c6d5d2a86878e8a80ca67964fbbb82a8\n"
    },
    {
      "commit": "37b845f9e410e326f24fa8c820774d92eafa4dd3",
      "tree": "10934b84e3e7c66ae6f5c116b85ecc03bedb1de0",
      "parents": [
        "b67a3c271616d7b2506ead15e97c6a840b5eb5a8",
        "8e613cf342b369f7985135dbe11ebdbf8c736157"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 12 20:22:53 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 12 05:34:11 2014 +0000"
      },
      "message": "Merge \"Remove declaration for putw(3)/getw(3).\""
    },
    {
      "commit": "8e613cf342b369f7985135dbe11ebdbf8c736157",
      "tree": "729d925aaeff9b92b7bb09c9385e90069b400c2c",
      "parents": [
        "440bd6bcc308f78b32fcbc4a3ba312dd1343559b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 11 14:17:35 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 11 14:41:45 2014 -0700"
      },
      "message": "Remove declaration for putw(3)/getw(3).\n\nThese were both removed from POSIX 2004, and we don\u0027t define an\nimplementation for getw(3). Keep the definition of put(3) on LP32 for\nbinary compatibility.\n\nBug: 13935372\nChange-Id: Iba384b45093ac6d2d7c2d81f7980cd7701dd6f56\n"
    },
    {
      "commit": "cd32219c5b3c402c99d3ad7d1997d42b5f04015e",
      "tree": "dd9831b3ce6e185b3be64d3f51b70c60ff14cd46",
      "parents": [
        "440bd6bcc308f78b32fcbc4a3ba312dd1343559b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 11 13:20:18 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 11 13:20:18 2014 -0700"
      },
      "message": "Remove declarations related to cuserid(3).\n\ncuserid(3) was removed from POSIX 2004, and we don\u0027t have an\nimplementation anyway.\n\nBug: 13935372\nChange-Id: I7ac7cde931ba802d0d5b917c22f5116618b21d2f\n"
    },
    {
      "commit": "fcac8ff97f6b6cced6546e0096cadc1039b68b5e",
      "tree": "06ea666f735a14951c3facd2cb986d8835798399",
      "parents": [
        "b2b0f7e1ae0a0459b41a7732b84f58d62373e512"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 01:24:30 2014 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 11:27:06 2014 +0100"
      },
      "message": "Switch to POSIX dprintf/vdprintf.\n\nBug: 11156955\nChange-Id: I734bd02db514367ab119a48304aae9767958e367\n"
    },
    {
      "commit": "7eb28b59c7665654255640e3fac4ccd5a9e1cbab",
      "tree": "fbbd8cb69d55191fd9b1d2816bfa379aba215432",
      "parents": [
        "849e162d3bedc5ca61bdf15486268b253b9f4e93"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Mar 18 17:03:38 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Mar 18 17:03:38 2014 -0700"
      },
      "message": "FORTIFY_SOURCE: don\u0027t define s?printf macros if already defined\n\nClang specific: Don\u0027t #define sprintf and snprintf macros if they\nare already defined.\n\nChange-Id: I30fc507d898377e1b8a57a65a147926229e0f9e2\n"
    },
    {
      "commit": "f2cea021ab2c6d7d7feeb40cca098aa132605876",
      "tree": "119daf06820264a62bf3290bbbf8839dcb0196e3",
      "parents": [
        "6ece7fc33a389ef9bcbe78a83a6633e4cb4e4743"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "message": "Clean up \u003cstdio.h\u003e macros.\n\nAlso neuter __isthreaded.\n\nWe should come back to try to hide struct FILE\u0027s internals for LP64.\n\nBug: 3453512\nBug: 3453550\nChange-Id: I7e115329fb4579246a72fea367b9fc8cb6055d18\n"
    },
    {
      "commit": "cd0609f4fcec9bdcb99a2127137c5570b18c499c",
      "tree": "c44ef75939752fb371678851d00688bdbd0e27a9",
      "parents": [
        "cf7a4a4fda076ec76bb79fdbd039665171e8cd75"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 12:21:07 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 14:20:22 2013 -0800"
      },
      "message": "Allow GCC-built fortified code to run on a clang-built bionic.\n\nEven though code built with clang won\u0027t be fully fortified\nand won\u0027t contain calls to our various helpers, binaries built\nwith GCC will.\n\nChange-Id: I389b2f1e22a3e89b22aadedc46397bf704f9ca79\n"
    },
    {
      "commit": "c13fb75ceabb47f8292be206db80b93889fccf66",
      "tree": "6aca1af2e53339d0c6f04abf3fa9fa696d9268c9",
      "parents": [
        "f293b15728031432317791fb4a17a423545d37b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 20:43:30 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 20:43:30 2013 -0800"
      },
      "message": "Move bionic over to GCC\u0027s \u0027warning\u0027 attribute.\n\nThis is a better solution than the old __warn_references because it\u0027s\na compile-time rather than link-time warning, it doesn\u0027t rely on something\nthat doesn\u0027t appear to be supported by gold (which is why you only used\nto see these warnings on mips builds), and the errors refer to the exact\ncall site(s) rather than just telling you which object file contains a\nreference to the bad function.\n\nThis is primarily so we can build bionic for aarch64; building libc.so\ncaused these warnings to fire (because link time is the wrong time) and\nwarnings are errors.\n\nChange-Id: I5df9281b2a9d98b164a9b11807ea9472c6faa9e3\n"
    },
    {
      "commit": "f8fcfbc85a3ce3e195626b90736d3a484331494b",
      "tree": "5742644f2305f27b65ae7d3a4d07a7614c36af2a",
      "parents": [
        "f0ed9bf2537e861ae75e6ab71efb4b4722ad0eee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 22 13:28:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 22 16:31:01 2013 -0700"
      },
      "message": "Move away from the __ARCH_WANT_SYSCALL_NO_AT system calls.\n\nModern architectures only get the *at(2) system calls. For example,\naarch64 doesn\u0027t have open(2), and expects userspace to use openat(2)\ninstead.\n\nChange-Id: I87b4ed79790cb8a80844f5544ac1a13fda26c7b5\n"
    },
    {
      "commit": "6e38072addd556e3894284b5bd040ac64fffa72e",
      "tree": "e13c1bf92ae30ecd9050b1d519cfd24831442ddf",
      "parents": [
        "eda2679e30b997d036e0ec572cda054adc2ac3a6"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Oct 11 00:45:24 2013 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Oct 11 12:14:49 2013 -0700"
      },
      "message": "Wrap sprintf()/snprintf() macros to prevent expansion errors.\n\nPreviously, FORTIFY_SOURCE used single macros to define these standard\nfunctions for use with clang. This can cause conflicts with other macros used\nto call these functions, particularly when those macros expand the number of\narguments to the function. This change wraps our macro definitions, so that\nexpansion properly takes place for programmer arguments first.\n\nChange-Id: I55929b1fd2a643b9d14a17631c4bcab3b0b712cf\n"
    },
    {
      "commit": "c8ae8bd9418b79f4da85dc12a61ebd82146b7e51",
      "tree": "993d68a67de1e710dc393dd70e61775057ad22c3",
      "parents": [
        "fbec57d46c42460b2381484d1610ff21922d162e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 27 08:58:14 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 27 09:17:48 2013 -0700"
      },
      "message": "stdio.h: enable vs?printf clang FORTIFY_SOURCE\n\nEnable FORTIFY_SOURCE protections under clang for the following\nfunctions:\n\n  * vsprintf\n  * vsnprintf\n\nand add unittests.\n\nChange-Id: I90f8a27f7b202c78b5dd8ebf53050bf9e33496f7\n"
    },
    {
      "commit": "621b19dddbfba1cd98c01cb95ce312baa20e0e7c",
      "tree": "cf8335801d54362b0e7c3e032c4f35a46d017e2f",
      "parents": [
        "1642edb5208fe02ef64d5734fffaf7c4a724fd2f"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 25 10:02:35 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 25 10:02:35 2013 -0700"
      },
      "message": "libc: enable FORTIFY_SOURCE snprintf under clang\n\nChange-Id: I8b8059782a720104722b0841994b38f873ed02aa\n"
    },
    {
      "commit": "c6eb9854542c115fd9aa87731adcb1b5da57e8ac",
      "tree": "5ca9c0df80389608790d1673951539774ff80195",
      "parents": [
        "53ddcc90701d86c7d809a84cf4710c651066e3c7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 24 11:44:00 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 24 14:10:29 2013 -0700"
      },
      "message": "libc: enable sprintf FORTIFY_SOURCE under clang\n\nclang doesn\u0027t support __builtin_va_arg_pack(), so we have\nto use #define instead.\n\nChange-Id: I2ee75e6267d60cdf997fee6b9b0547bf68f062a1\n"
    },
    {
      "commit": "16d1af167f8e36a9aa4a07ae77034ad519b00463",
      "tree": "61abe872a5f2ebebc4fe15205a77158bc8372ec2",
      "parents": [
        "b24c0637d06fe0980b9e13a8d0c3e6f4dbda9cd5"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 17 14:49:19 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 18 12:14:20 2013 -0700"
      },
      "message": "libc: add limited FORTIFY_SOURCE support for clang\n\nIn 829c089f83ddee37203b52bcb294867a9ae7bdbc, we disabled all\nFORTIFY_SOURCE support when compiling under clang. At the time,\nwe didn\u0027t have proper test cases, and couldn\u0027t easily create targeted\nclang tests.\n\nThis change re-enables FORTIFY_SOURCE support under clang for a\nlimited set of functions, where we have explicit unittests available.\nThe functions are:\n\n* memcpy\n* memmove\n* strcpy\n* strncpy\n* strcat\n* strncat\n* memset\n* strlen (with modifications)\n* strchr (with modifications)\n* strrchr (with modifications)\n\nIt may be possible, in the future, to enable other functions. However,\nI need to write unittests first.\n\nFor strlen, strchr, and strrchr, clang unconditionally calls the\nfortified version of the relevant function. If it doesn\u0027t know the\nsize of the buffer it\u0027s dealing with, it passes in ((size_t) -1),\nwhich is the largest possible size_t.\n\nI added two new clang specific unittest files, primarily copied\nfrom fortify?_test.cpp.\n\nI\u0027ve also rebuild the entire system with these changes, and didn\u0027t\nobserve any obvious problems.\n\nChange-Id: If12a15089bb0ffe93824b485290d05b14355fcaa\n"
    },
    {
      "commit": "b24c0637d06fe0980b9e13a8d0c3e6f4dbda9cd5",
      "tree": "918218d294c845db4b5fda6f9fb9a211a443bb54",
      "parents": [
        "977a33137d2be0093f474055f839cf665b82b588"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 18 10:46:02 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 18 12:13:52 2013 -0700"
      },
      "message": "libc: Introduce __errordecl()\n\nDefine __errordecl and replace __attribute__((__error__(\"foo\")))\nwith __errordecl. Make sure __errordecl is a no-op on clang, as it\ngenerates a compile time warning.\n\nChange-Id: Ifa1a2d3afd6881de9d479fc2adac6737871a2949\n"
    },
    {
      "commit": "d04c18397946f87ac4495351537c31a3d67257da",
      "tree": "3917d8d909d7f5ed401bdad509a364256b0890a9",
      "parents": [
        "349ef893e82f37632a705f39efc47c0d440f63c7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 14 16:08:43 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 14 16:08:43 2013 -0700"
      },
      "message": "Add more __restricts, clean up __format__ attributes.\n\nChange-Id: I7e2d270cc722d339d221eaea92747eaff3b51403\n"
    },
    {
      "commit": "9020fd503c9eb073f70dbc239a212f8ece19359d",
      "tree": "bd7f3027f2ccaede0e78d9e789ac3579c46eff00",
      "parents": [
        "b94b2851d72187cc9095864a9c99429ee62d7786"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 30 11:31:35 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Apr 30 11:31:35 2013 -0700"
      },
      "message": "libc: upgrade some libc functions to _FORTIFY_SOURCE\u003d2\n\nUpgrade the following functions:\n\n* vsnprintf\n* vsprintf\n* snprintf\n* fgets\n* strcpy\n* strcat\n* strncat\n* strlcpy\n* strlcat\n* strlen\n* strchr\n\nChange-Id: Icc036fc7f0bb317e05f7c051617887a1601271aa\n"
    },
    {
      "commit": "78d6d9888c24c50f65d694dc8283afdcb58db84c",
      "tree": "49f69782a3b58be8555e7a1ab5bc623c2f80648c",
      "parents": [
        "382a7753786646483a8101f4e337f9e3a82ec852"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 29 16:29:37 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Apr 29 16:41:54 2013 -0700"
      },
      "message": "libc: upgrade sprintf to _FORTIFY_SOURCE\u003d2\n\nUpgrade sprintf to fortify_source level 2, to catch\nadditional security bugs.\n\nChange-Id: Ibc957d65e4cb96152de84b3745a04e00fa22659e\n"
    },
    {
      "commit": "890c8ed6ef773160cd6840a92e0d469fe530871f",
      "tree": "6689569955f500ea13697ea928386dd9c64d1af3",
      "parents": [
        "34895c1bdfa5df48ee9a7b4368b6def403f24cf1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 22 10:58:55 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 22 10:58:55 2013 -0700"
      },
      "message": "Fix builds where _FORTIFY_SOURCE is off.\n\nAlso add a more intention-revealing guard so we don\u0027t have loads of\nplaces checking whether our inlining macro is defined.\n\nChange-Id: I168860cedcfc798b07a5145bc48a125700265e47\n"
    },
    {
      "commit": "41b3179c9ef03ebb447cac7f5e8405dce399cb17",
      "tree": "b0fa19272b1a7bb1ca7fe17c35a7374b650913b6",
      "parents": [
        "0a91b11d286446fe7849a6f537b4a21a52f63399"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 28 10:36:31 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 28 10:36:31 2013 -0800"
      },
      "message": "Unit tests for formatting code, fix %%.\n\nAlso fix \u003csignal.h\u003e and \u003cstdio.h\u003e so they don\u0027t cause compiler warnings.\n\nChange-Id: Ib1a746bf01de22d47dbd964de0e6af80a7c96303\n"
    },
    {
      "commit": "3975cec694a0c9b42e3f7e671fcd678da92836c3",
      "tree": "bf92249d492ff0b9902d06950814e18be342a4b8",
      "parents": [
        "50e62e4051c14d7d2a5e07ebe66afd2a81693a26"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 17:25:23 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 17:25:23 2012 -0800"
      },
      "message": "Remove (near-)duplicate definitions of size_t and ssize_t.\n\nThe near duplicates upset fussier compilers that insist that\ntypedefs be exactly the same, but the fix isn\u0027t to make all\ncopies identical...\n\nChange-Id: Icfdace41726f36ec33c9ae919dbb5a54d3529cc9\n"
    },
    {
      "commit": "ce45fea03ddfd8d6d1900d6777a002dec98ea1e1",
      "tree": "faa21f4c8abfa6500b431ec98e56da7320ffa923",
      "parents": [
        "4e457759893a6a6ab4f84a5aea231d0a11c7bb13"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 16:10:27 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 16:10:27 2012 -0700"
      },
      "message": "Add missing BEGIN_DECLS/END_DECLS for FORTIFY_SOURCE stdio prototypes.\n\nChange-Id: I35ceb09fedf873c5e98e1e26efce5e4f00a17e74\n"
    },
    {
      "commit": "7d56ccbfaac2b702e4be0f71038efb7f251ef637",
      "tree": "cd684140bf457eee69547130bb109e264ebdc534",
      "parents": [
        "d3bf954e9ffbdee8d732ccb6ad6143dc31b605fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:56:58 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:56:58 2012 -0700"
      },
      "message": "Always take GCC\u0027s definition of NULL.\n\nThere\u0027s a (bad) definition of NULL in \u003clinux/stddef.h\u003e, and this\ndefinition of NULL, and the One True definition in the \u003cstddef.h\u003e provided\nby the compiler. This change at least kills one of the bad duplicates.\nKilling the \u003clinux/stddef.h\u003e one is harder, because it\u0027s in a generated\nfile.\n\nChange-Id: Iea4ccb12d6758199f312ea9cd753b84322d5c471\n"
    },
    {
      "commit": "0cc0d250fd3097e4c26b70cdeb5c47caac634069",
      "tree": "96aafbb8f67296aab27a805de9a6fc3536fac910",
      "parents": [
        "fe712e6caedccbbba24bda8429cb0b8cc6057ff1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 15:12:40 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 15:12:40 2012 -0700"
      },
      "message": "Remove useless #defines and incorrect claims from header files.\n\nThe various __need_* macros were write-only.\n\nChange-Id: Id3cca34188e0801fdf93a038b22f2817226ad9c2\n"
    },
    {
      "commit": "422b6ef92c1cca3cfd412621dc3db3b8609fa88c",
      "tree": "6108aeee437a77c0084ff045f6e3fc112733c4de",
      "parents": [
        "eac9eb462ed6f7fcfb791e7a08b4011fcca47829"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 28 10:15:52 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 28 10:15:52 2012 -0700"
      },
      "message": "Define ssize_t if necessary.\n\nChange-Id: I63801cc1f09be5e4ca20a6da7ec3366ba6441afd\n"
    },
    {
      "commit": "eac9eb462ed6f7fcfb791e7a08b4011fcca47829",
      "tree": "3b436a25d9ff22616ca22919ff9026e4426a9243",
      "parents": [
        "e4030e0bfc427e755477bbea69afe60308a62d91"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:28:30 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 27 11:38:57 2012 -0700"
      },
      "message": "Add getdelim(3) and getline(3) to bionic\n\nSome userspace programs (e.g. perf) need getline.\n\nChanges:\n() add getdelim.c, getline.c from NetBSD (http://netbsd.org/) under the\nNetBSD Foundation\u0027s (TNF) license (\"2 clause\" Berkeley-style license).\n() add stub for reentrant.h header that is needed by getdelim.c\n() add tests for getdelim(3) and getline(3).\n() update NOTICE file.\n\nChange-Id: I22ed82dd5904b9d7a3695535c04f502be3c27c5d\nSigned-off-by: Irina Tirdea \u003cirina.tirdea@intel.com\u003e\n"
    },
    {
      "commit": "829c089f83ddee37203b52bcb294867a9ae7bdbc",
      "tree": "95fb7297694601b1ff65ba0296cfff3a5ee66fd6",
      "parents": [
        "069c64cdf2d3da7b7ff6ea5d1041f982fb10ab22"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Aug 29 12:40:53 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Aug 29 12:47:41 2012 -0700"
      },
      "message": "disable _FORTIFY_SOURCE under clang\n\nClang and _FORTIFY_SOURCE are just plain incompatible with\neach other.  First of all, clang doesn\u0027t understand the\n__attribute__((gnu_inline)) header. Second of all,\nClang doesn\u0027t have support for __builtin_va_arg_pack()\nand __builtin_va_arg_pack_len() (see\nhttp://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc)\n\nUntil we can resolve these issues, don\u0027t even try using\n_FORTIFY_SOURCE under clang.\n\nChange-Id: I81c2b8073bb3276fa9a4a6b93c427b641038356a\n"
    },
    {
      "commit": "9b6cc223a36835c4367a036d4cfeff14d25bc742",
      "tree": "8fcd143b253225860fbd817cdad02afac00f1be8",
      "parents": [
        "260bf8cfe00f83bc579dfe81c78b75bd9973f051"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 14:46:36 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 14:49:33 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: introduce __BIONIC_FORTIFY_UNKNOWN_SIZE macro\n\nReplace all occurances of \"(size_t) -1\" with a\n__BIONIC_FORTIFY_UNKNOWN_SIZE macro.\n\nChange-Id: I0b188f6cf31417d2dbef0e1bd759de3f9782873a\n"
    },
    {
      "commit": "965dbc6405aa2c3170270cfc53a8d4416444fddb",
      "tree": "7764d865c47bc84041f521ac11748ebe986a8871",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jul 03 11:45:31 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 09:57:18 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add fgets support.\n\nChange-Id: I8c3410a90c71a3336c4ac8581618fa9330edf5e3\n"
    },
    {
      "commit": "9b549c39c938f54680f282c21e6885f53254bfb0",
      "tree": "8bb4a40d6d9c7f265a58954572097eefa1c2da5e",
      "parents": [
        "c2f1d215b1786520fa8c371caa97f062e0bfb513"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 15:59:04 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 09:14:30 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add sprintf / vsprintf support\n\nsprintf FORTIFY_SOURCE protections are not available\non clang.\n\nAlso add various __attribute__s to stdio functions.\n\nChange-Id: I936d1f9e55fe53a68885c4524b7b59e68fed218d\n"
    },
    {
      "commit": "cffdf6693ffb50d2a1258d955a162bca83038f25",
      "tree": "205f5c66002cd0a5f064081142bf1b54507e9a4e",
      "parents": [
        "85b06f9365ae6776deb9fcf09f450f777ace9e34"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 15:50:57 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 16:46:16 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add snprintf, vsnprintf\n\nAdd _FORTIFY_SOURCE support for snprintf, vsnprintf\n\nAt this time, we opt out of these protections for clang, as clang\ndoes not implement __builtin_va_arg_pack().\n\nhttp://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc\n\nChange-Id: I73ebe5ec8dad1dca8898a76d6afb693a25f75375\n"
    },
    {
      "commit": "f39a3fe67d7f1faa21a39ea8e1f57a6596c8cadb",
      "tree": "4b348d687db7a7a27af9840571ccbb8ff8dc847a",
      "parents": [
        "1625c7a837d73b6729f97edb32c497d289c0220c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 10:15:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 10:15:45 2012 -0800"
      },
      "message": "Allow C++ to call fdprintf\n\nChange-Id: I1adb7b165ab9f62eaee4e7a9108e8b461350b347\n"
    },
    {
      "commit": "f582340a6a48588aa50da17e1620e8f91b146941",
      "tree": "d30c0ffb648b7a43ff469f89f05850f5008482ec",
      "parents": [
        "72f9a5c374bf559e9c69a62c1d95304f913ef6b2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Feb 12 07:13:44 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 14 09:32:56 2011 -0800"
      },
      "message": "Fix the handle locking in stdio\n\nFix the handle locking in stdio to use flockfile/funlockfile\ninternally when and where required.  Macros in \u003cstdio.h\u003e are updated\nto automatically call the underlying functions when the process is\nthreaded to obtain the necessary locking.  A private mutex is added\nto protect __sglue, the internal list of FILE handles, and another\nto protect the one-time initialization.  Some routines in libc that\nuse getc() change to use getc_unlocked() as they\u0027re either protected\nby their own lock or aren\u0027t thread-safe routines anyway.\n\nBased on OpenBSD change by guenther@openbsd.org\nhttp://www.mail-archive.com/source-changes@cvs.openbsd.org/msg01015.html\n\nBug: 3446659\nChange-Id: Ie82116e358c541718d6709ec45ca6796be5a007b\n"
    },
    {
      "commit": "bb5581ad6eec40041dab4e961149f7a8a3a83497",
      "tree": "5e8c1e583da643c37143adff205c6d794a0850c5",
      "parents": [
        "af00228b705b53165c132a22b30c2d6cbb9acd13"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Oct 09 17:56:55 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Oct 09 17:56:55 2010 +0200"
      },
      "message": "libc: tag missing functions in system headers.\n\nThis matches recent changes in the NDK header.\nWe enclose missing functions in #if 0 .. #endif blocks\nwith a clear \"MISSING\" in comments in order to locate\nthem later.\n\nChange-Id: I87b3a62e777897e75c9243360fb0a82bcc53d9fb\n"
    },
    {
      "commit": "50ace4fec5e8cb5afcbc656a4556fa528adfd760",
      "tree": "04647e039a457f69ba48a8301bebdd605fda7fca",
      "parents": [
        "6a9b888d7c4b246f6f66360789c72b754ff85021"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 16 16:36:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 22 17:51:41 2010 -0700"
      },
      "message": "Remove compiler warnings when building Bionic.\n\nAlso add missing declarations to misc. functions.\nFix clearerr() implementation (previous was broken).\nHandle feature test macros like _POSIX_C_SOURCE properly.\n\nChange-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4\n"
    },
    {
      "commit": "fc10b24accd082fb33c8f92ff8b92481c22fe3dc",
      "tree": "edadb43992d3ff9334ff7e1f257f13073d25ebd6",
      "parents": [
        "8c59d96e243ba1a05d7d9ab7a14d1a00e20bad4a"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jan 13 17:48:34 2010 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 15 16:52:35 2010 -0800"
      },
      "message": "Add implementation of fdprintf, clearenv, and stubs for ttyname_r, *usershell\n\nChange-Id:\tI5fe7e8b6ee5edbb49e707c3b6737a58563781fa3\n"
    },
    {
      "commit": "c1202510b67f200b668d85ac0190db2b179b0c4d",
      "tree": "d21ef3298289e6418ffe505cd85bb3fb6e7066a1",
      "parents": [
        "00da948b09af535c389f791086cc8e08b3da67dc"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Nov 25 14:16:53 2009 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Nov 25 14:16:53 2009 -0800"
      },
      "message": "Added a comment.\n\nThe structs for stdin/stdout/stderr are formed with a static initializer\nthat needs to be updated if something in FILE is changed.\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "e5cc1f386b167b9f7bfdebc7219e89aa9b71e4b2",
      "tree": "2cbd43daa6744ed80e833528f8cbfc0c485e5253",
      "parents": [
        "6d6c82c7a0a6b9a89f61b61c66f9b90d9c7177dc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "4e468ed2eb86a2406e14f1eca82072ee501d05fd",
      "tree": "4e05b3c66eef86531e464521a3bf96a1864d4bf5",
      "parents": [
        "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
