)]}'
{
  "log": [
    {
      "commit": "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63",
      "tree": "78c25e2a38b7efed8db770a623a5cbfb7eaab11d",
      "parents": [
        "ca5e0f49ca5df873a20c996755175b5c9c1e2ed9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 24 17:48:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 08:50:43 2017 -0700"
      },
      "message": "Move libc_log code into libasync_safe.\n\nThis library is used by a number of different libraries in the system.\nMake it easy for platform libraries to use this library and create\nan actual exported include file.\n\nChange the names of the functions to reflect the new name of the library.\n\nRun clang_format on the async_safe_log.cpp file since the formatting is\nall over the place.\n\nBug: 31919199\n\nTest: Compiled for angler/bullhead, and booted.\nTest: Ran bionic unit tests.\nTest: Ran the malloc debug tests.\nChange-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a\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": "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": "a9209d7a0ee7ef40f9a14cab2b6756d7e6f8b919",
      "tree": "7bfb6dd09e8ae5b353d512fde83d14053dedec06",
      "parents": [
        "56228373014e5ee0a3ff32930df9cfa05fef7389"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 18:16:47 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 18:27:07 2016 -0700"
      },
      "message": "Fix some easy cases of __ANDROID__ versus __BIONIC__.\n\nWe need to make a clearer distinction for bionic on the host. This patch\ndoesn\u0027t fully address things like \"should host bionic try to talk to netd?\"\nfor now, but is a step in the right direction.\n\nBug: http://b/31559095\nTest: bionic tests.\nChange-Id: I49812f8b75d9d78c4fd8a8ddf5df1201d63771d6\n"
    },
    {
      "commit": "7f0849fd113691e62af0400989936d3eff151e37",
      "tree": "166fa5afeed341e2685091c89d9d8418acb66e5d",
      "parents": [
        "a2b947e0a5ff4106e36f8110232131dab1356c25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:17:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 15:01:54 2016 -0700"
      },
      "message": "Fix sscanf/wcstod parsing of NaNs.\n\nThe parsefloat routines -- which let us pass NaNs and infinities on to\nstrto(f|d|ld) -- come from NetBSD.\n\nAlso fix LP64\u0027s strtold to return a NaN, and fix all the architectures\nto return quiet NaNs.\n\nAlso fix wcstof/wcstod/wcstold to use parsefloat so they support hex\nfloats.\n\nLots of new tests.\n\nBug: http://b/31101647\nChange-Id: Id7d46ac2d8acb8770b5e8c445e87cfabfde6f111\n"
    },
    {
      "commit": "fb3873d4db3012ac2d1ba87d688138798787c6e0",
      "tree": "1e392110ebe5ca3b0f3f466e493c1085b403b864",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 11:07:54 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 11:50:12 2016 -0700"
      },
      "message": "Fortify vsnprintf in more cases.\n\nBug: http://b/30445072\nChange-Id: I1893890f0e3b56533eef053eda1bd96a0b9a5119\n"
    },
    {
      "commit": "53cf348c829cb36328755bbdbe46668ecbc55348",
      "tree": "261d3370757fb0ae1f8f63b344802e62ed9aefe8",
      "parents": [
        "6ba5f07e3f6dbc487eb2cd341a9a4e804afafd51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 13:06:41 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 09 16:27:23 2016 -0700"
      },
      "message": "Remove more stdio copy/paste.\n\nChange-Id: Ia92629b75d2c153ecf1cec711e2f9575eef604ab\n"
    },
    {
      "commit": "d1f25a7eb171b490be59271e9ce619e236421aeb",
      "tree": "a094178ff6ae9af3f476c0480087a09a63a37000",
      "parents": [
        "ed9e6a41c92c9552be84ecc126e29b4604eee246"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 05 15:53:03 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 05 15:53:03 2016 -0700"
      },
      "message": "Reimplement remove(3) without the lstat(2).\n\nThis assumes that it\u0027s more likely we\u0027re unlinking a file than a directory,\nthough even if that\u0027s not true, as long as a failed unlink(2) is cheaper\nthan a successful lstat(2) -- which seems likely since there\u0027s no data to\ncopy -- we still win.\n\nChange-Id: I0210e9cd3d31b8cf1813c55c810262ef327382ed\n"
    },
    {
      "commit": "70715da453670b40701ea7d02ea9f702d10d783b",
      "tree": "a8e6c37cf0d36012df03ac0d68f395cb2d6e2f0d",
      "parents": [
        "a86e11f529aca06b2f4d5141ea838f2bc5ae9a73"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 16:35:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 18:06:38 2016 -0700"
      },
      "message": "More stdio one-liners.\n\nThis actually turns up a bug in fmemopen, so I guess that\u0027s what I\u0027ll\nlook at next...\n\nChange-Id: I2971ecd1b5a3a3c7f43c22d985f88e389af89e97\n"
    },
    {
      "commit": "cceaf069c7d203d63de6e8ca95e1d93ec32e7e0e",
      "tree": "5b9791a7a16b3bd823c255692376a1d02aab5cfb",
      "parents": [
        "9a776af9920c050c7bd7353f33e0e02df940cf92"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 16:31:52 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 16:31:52 2016 -0700"
      },
      "message": "More stdio cleanup.\n\nTime to get back to cleaning up stdio, so start with a bunch of easy\none-liners...\n\nChange-Id: I8df5fdc72500a89b977bfaa6c64c3639198d4e3e\n"
    },
    {
      "commit": "7b737e43f82682bcfaa086af116ddcddb9c1de8d",
      "tree": "a30c4a77b57beacacce71afeba2b905f389cde1d",
      "parents": [
        "e656a3acaf1001cdb8bf3ae9be84ed070ebe93f2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 25 15:57:02 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 25 15:57:02 2016 -0700"
      },
      "message": "Remove #pragma GCC visibility.\n\nWe have better control over visibility now.\n\nBug: http://b/24767418\nChange-Id: Ifa9a1e5af4bd4217db08422050908770247b3b69\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": "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4",
      "tree": "b37425943e0cd7284b319d6cad98bd71dcfdc8bb",
      "parents": [
        "9ee905f12fa0aeb4ae0df708e15d2ffcfaf58000"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8\n"
    },
    {
      "commit": "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": "955426ef79ae635b74ff917c2b9ebc1a24c6a3ef",
      "tree": "76d5403eaa41b9a00aa4447ae5700eb77170310f",
      "parents": [
        "194860a9e638b1d093857f08b8fad37c9ec0e113"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 18:25:52 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 18:25:52 2016 -0800"
      },
      "message": "Fix a sign extension bug in stdio.\n\nThis also lets us test the EOVERFLOW behavior, which pointed out that the\nfgetpos/fsetpos return on failure has always been wrong...\n\nBug: http://b/24807045\nChange-Id: I35273eb07c8c9155af858adb27569983397580b6\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": "023c3071a036d84bbd7973edef152c5a48679cb7",
      "tree": "342f0334af5820fe0a04bc968133bfc368327872",
      "parents": [
        "8fb40bad496c680b5ca644dbf6a2ada79a239eee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 22 15:04:51 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 22 23:54:10 2016 -0800"
      },
      "message": "Add _seek64 to FILE.\n\nMove fdopen/fopen/freopen and change them to initialize _seek64 instead\nof the legacy _seek. The in-memory streams can stick with _seek for now,\nsince you\u0027re not going to fit a \u003e 4GiB in-memory stream on a 32-bit device\nanyway.\n\nBug: http://b/24807045\nChange-Id: I09dcb426817b571415ce24d4d15f364cdda395b3\n"
    },
    {
      "commit": "b877601bff1fcc60c7ea2180d15e38b1e873f36e",
      "tree": "03e00ce79d772a97ec4df86adc66de71984bbd04",
      "parents": [
        "a42483baad9a37297e6bbbe02d433ecbde890386"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 22 19:18:48 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 22 19:23:40 2016 -0800"
      },
      "message": "Put struct FILE back how NDK-built apps expect it.\n\nThe first rule of stdio is you never change struct FILE. This broke all\nNDK-built apps that used stdin/stdout/stderr. (Which is more than you\nmight think, given that those streams don\u0027t go anywhere useful. Svelte!)\n\nI\u0027ve added a big code comment because I knew when I removed the field that\ndoing so was a mistake, but I couldn\u0027t think why.\n\nBug: http://b/24807045\nBug: http://b/26747402\nChange-Id: Ie1233586b223bb1cdf8e354c66d5ff23487a833a\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": "021335ebdac3768be571ea2fd0cb776b29a7f2df",
      "tree": "04094c14eefe610b7c7b263bb631af0a6be1e141",
      "parents": [
        "8b49f53a5e3b4073c9341a5be6c9deb9a1666e7e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 19 16:28:15 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 20 08:50:51 2016 -0800"
      },
      "message": "Move stdio implementation details around a little.\n\nChange-Id: I24594426d5479bdd55cbef0ab1b7d76c249dbd0c\n"
    },
    {
      "commit": "923f165b29866cba1bd077117127f576763b384d",
      "tree": "c5c05829f199caba0e483769023eed1e3d37206c",
      "parents": [
        "579f42b78922d8c70e19ea77d2818ec17d0dc6a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 19 15:46:05 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 19 15:46:05 2016 -0800"
      },
      "message": "Make FILE*s less usable after fclose(3).\n\nBSD doesn\u0027t invalidate the fd stored in struct FILE, which can make\nit possible (via fileno(3), for example), to perform operations on\nan fd you didn\u0027t intend to (rather than just failing with EBADF).\n\nFixing this makes the code slightly simpler anyway, and might help\ncatch bad code before it ships.\n\nBug: http://stackoverflow.com/questions/10816837/fclose-works-differently-on-android-and-linux\nChange-Id: I9db74584038229499197a2695c70b58ed0372a87\n"
    },
    {
      "commit": "29ee6397a844e2d88f776f5c0b4e656e58df9840",
      "tree": "078285424dafe2647378eb79e5b039c9572d439f",
      "parents": [
        "c4eef1fb5ba325317e94b598c6fbf8e4c4bf83e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 07 11:07:15 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 07 11:07:15 2015 -0800"
      },
      "message": "Fix stdio static initializers to make both clang and GCC happy.\n\nPreviously only clang was happy. GCC said:\n\n  error: missing initializer for field \u0027wcio_mbstate_in\u0027 of \u0027struct wchar_io_data\u0027\n\nChange-Id: I25a11b64f4dfa22a5dd5daded152191fe2cfacaf\n"
    },
    {
      "commit": "bb46afd6c44a847efe96e30d72708fd2d0906e8c",
      "tree": "9223b0b3f481341e36fc054e7209de3ec088a579",
      "parents": [
        "0d89913e74981cd51532e66a2e2f138392be4de1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 18:03:12 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 05 07:30:59 2015 -0800"
      },
      "message": "Revert \"Revert \"Remove __sinit and __sdidinit.\"\"\n\nThis reverts commit c8bae05f3ff9f1c736f7be70fa17d02795d748bb.\n\nWe were breaking init (ueventd) because we initialize system properties\nbefore we initialize stdio. The new system property implementation uses\nstdio to read from /property_contexts, so we end up touching stdio data\nstructures before they\u0027ve been initialized.\n\nThis second attempt takes things further by removing the stdio initialization\nfunction altogether. The data structures for stdin/stdout/stderr can be\nstatically initialized as data, and -- since we already had to give the\natexit implementation a backdoor for stdio -- we can just admit that we\nneed to clean up stdio, and that we always do so last.\n\nThis patch also removes the 17 statically pre-allocated file structures,\nso the first fopen will now allocate a block of 10 (the usual overflow\nbehavior). I did this just to make my life simpler, but it\u0027s not actually\nnecessary to remove it if we want it back.\n\nChange-Id: I936b2eb5e88e4ebaf5516121872b71fc88e5609c\n"
    },
    {
      "commit": "c8bae05f3ff9f1c736f7be70fa17d02795d748bb",
      "tree": "66de08608fd3b91963a647f70c7e0cfa65eaea07",
      "parents": [
        "4ade5195f188b84ce3599c71ef058d040b141da4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 17:47:20 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 17:47:20 2015 -0800"
      },
      "message": "Revert \"Remove __sinit and __sdidinit.\"\n\nThis reverts commit 4371961e00ad83fca033992c8a19c7d262fe6f84.\n\nThis broke booting; ueventd crashes with a null pointer dereference\nsomewhere in __sfp (but the kernel doesn\u0027t unwind, so I don\u0027t know\nwhat was calling __sfp).\n\nChange-Id: I65375fdfdf1d339a06558b4057b580cacd6324e2\n"
    },
    {
      "commit": "4371961e00ad83fca033992c8a19c7d262fe6f84",
      "tree": "414fdfe263a993592ff18cdfb8fe4d9d2d3a16ce",
      "parents": [
        "22dca83e1c37d3b465b9fa432bbf7cb4bd0df868"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 03 13:23:03 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 03 13:23:03 2015 -0800"
      },
      "message": "Remove __sinit and __sdidinit.\n\nWe\u0027re eagerly initializing stdio now, so this can all be simplified.\n\nChange-Id: Icb288f8dd0ee08f02bea0d23670f75e78bed6b99\n"
    },
    {
      "commit": "76144aaa6397fe9e16893882cf59c5c9c0684a66",
      "tree": "366d104ea020fb5d9138d296aac1fcceda383c61",
      "parents": [
        "0ebe2f07c35d4b764bc5d8b5226004e3db46da91"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Nov 19 13:52:16 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 20 17:44:26 2015 -0800"
      },
      "message": "Change _stdio_handles_locking into _caller_handles_locking.\n\nIt is reported by tsan that funlockfile() can unlock an unlocked mutex.\nIt happens when printf() is called before fopen() or other stdio stuff.\nAs FLOCKFILE(fp) is called before __sinit(), _stdio_handles_locking is false,\nand _FLOCK(fp) will not be locked. But then cantwrite(fp) in __vfprintf()\ncalls__sinit(), which makes _stdio_handles_locking become true, and\nFUNLOCKFILE(fp) unlocks _FLOCK(fp).\n\nChange _stdio_handles_locking into _caller_handles_locking,\nso __sinit() won\u0027t change its value. Add test due to my previous fault.\n\nBug: 25392375\nChange-Id: I483e3c3cdb28da65e62f1fd9615bf58c5403b4dd\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": "a8184456229ace2b0255468e6b15aeb6509e27f7",
      "tree": "bb0e1d6bdc4571d8b68b292a02c41a335fcae56f",
      "parents": [
        "c45f3bf3e691f48af63c5ea2bf7a348a698013ac"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 23 12:32:52 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 23 12:32:52 2015 -0700"
      },
      "message": "Rename LIBC64_HIDDEN to LIBC32_LEGACY_PUBLIC.\n\nChange-Id: If4da9e46398ca5524f6f0680d70588e3dc7e80b4\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": "8ab433df132aa59db08b4548155d72574ad06421",
      "tree": "23708cbc794620a364626a65306b8f260048d506",
      "parents": [
        "1ab3f303d2e7c8cc498a28fc3c8d9ded1fc46994"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 09 17:57:26 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 09 17:57:26 2015 -0700"
      },
      "message": "Fix stdio read after EOF behavior.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d184847\nChange-Id: Ia20ce94007c2a09649f0763b1dc7ba959f2f618d\n"
    },
    {
      "commit": "4e8ef698d0d76be3f8d75de32701e6e6327c1fbd",
      "tree": "c63f1d264df409ae6e57059fc9cd8deb4e4e0377",
      "parents": [
        "0378d8f65126b2d94c731f2719a68773e370f615"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 16:20:07 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 16:20:07 2015 -0700"
      },
      "message": "Don\u0027t use TEMP_FAILURE_RETRY on close in bionic.\n\nBug: http://b/20501816\nChange-Id: Id64b5109cc2b165fa0351b6edbb865a5e5058008\n"
    },
    {
      "commit": "17393b06bab9cb3e95d0f466a56c746de19b8eee",
      "tree": "fa260e58da8fe186bca7787e3d7645a86b2f79cb",
      "parents": [
        "fa3dcecc0fd7bbbf04234e41be690a5d33277870"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sat Mar 21 15:08:25 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 25 17:54:17 2015 -0700"
      },
      "message": "Hide internal of pthread_mutex_t.\n\nBug: 19249079\nChange-Id: Iffb79c8d861b698d474f212dc80c638fc2cf1620\n"
    },
    {
      "commit": "cc9ca1051dbf5bd2af1b801de13d43a399521cf9",
      "tree": "f8fd2edf4fd85c87a1b9259c821c4d8f9878b104",
      "parents": [
        "e6a33cefe4b3759fb77d9e69356cb50a97ea7e54"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 27 18:22:45 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 27 18:22:45 2015 -0800"
      },
      "message": "Fix fread returning bad data.\n\nBug: 19172514\nChange-Id: I05016577858a02aca7d14e75e6ec28abc925037c\n"
    },
    {
      "commit": "e6bb5a27769cc974c4c6c1bfc96dcd07f0c0f5ef",
      "tree": "67156569bf455a9eb3fd18e0151e8e67dfed309c",
      "parents": [
        "31005ca4c8562f3e6dfbed079eeaff8361ff8cdc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 23 17:48:15 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 24 12:35:41 2015 -0800"
      },
      "message": "Fix optimized fread.\n\ngcov does writes after reads on the same stream, but the bulk read optimization\nwas clobbering the FILE _flags, causing fwrite to fail.\n\nBug: 19129055\nChange-Id: I9650cb7de4bb173a706b502406266ed0d2b654d7\n"
    },
    {
      "commit": "8b5df3920f2843c9cdf04160517c1e8b77c992f5",
      "tree": "a0a678ee8f107e5c25f937f444a970a0539d2af7",
      "parents": [
        "2a8c929aaf8d34d2b6e89ed9c8b6da163316143e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 16:19:07 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 17:09:58 2015 -0800"
      },
      "message": "Turn on -Wold-style-cast and fix the errors.\n\nA couple of dodgy cases where we cast away const, but otherwise pretty boring.\n\nChange-Id: Ibc39ebd525377792b5911464be842121c20f03b9\n"
    },
    {
      "commit": "8c4994bbc1a9a01e34ea92c91eb5b2d1a27bd074",
      "tree": "8b632cea0832373b9cb843427bb5976b3668f1a2",
      "parents": [
        "f374358414812d3e5a45ba75a2b1926693924420"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 18:09:05 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 21 10:33:30 2015 -0800"
      },
      "message": "Implement __fsetlocking.\n\nThe old __isthreaded hack was never very useful on Android because all user\ncode runs in a VM where there are lots of threads running. But __fsetlocking\nlets a caller say \"I\u0027ll worry about the locking for this FILE*\", which is\nuseful for the normal case where you don\u0027t share a FILE* between threads\nso you don\u0027t need any locking.\n\nBug: 17154740\nBug: 18593728\nChange-Id: I2a8dddc29d3edff39a3d7d793387f2253608a68d\n"
    },
    {
      "commit": "e69e6458cca9adb9669850ac4055df38a20a70d1",
      "tree": "f99c0984eefd85502e7b047c8890ec80e8e4a5d4",
      "parents": [
        "a779719d628de5e504dac08d334bc576f3b7fb0a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 16:52:04 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 16:52:04 2015 -0800"
      },
      "message": "Fix signed/unsigned comparison that was upsetting clang.\n\nbionic/libc/stdio/fread.c:86:27: error: comparison of integers of different signs: \u0027int\u0027 and \u0027size_t\u0027 (aka \u0027unsigned int\u0027) [-Werror,-Wsign-compare]\n\nChange-Id: Ia7e1e053e0cb13113e8f2eede820be013acbab82\n"
    },
    {
      "commit": "8885dcc779bceae5016d5ad96caa73465a7bab90",
      "tree": "9a5851adf9ffa5755ff2e99da04e6320fc581f99",
      "parents": [
        "927d8be76d956fcda630e1088e9b89eb31be5146"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 16:18:32 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 16:18:32 2015 -0800"
      },
      "message": "Add TEMP_FAILURE_RETRY to stdio\u0027s low-level read/write functions.\n\nThis is correctness rather than performance, but found while investigating\nperformance.\n\nBug: 18593728\nChange-Id: Idbdfed89d1931fcfae65db29d662108d4bbd9b65\n"
    },
    {
      "commit": "75b99387dd3a8833f09e2139e7062be5d38c5511",
      "tree": "7b4c44035fd12bbfb6a9de3f22fdc95aca57cb9f",
      "parents": [
        "3bbf4639080bc2f42435b4a7fd400c44aab7fd70"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 11:23:50 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 15:59:17 2015 -0800"
      },
      "message": "Optimized fread.\n\nThis makes us competitive with glibc for fully-buffered and unbuffered reads,\nexcept in single-threaded situations where glibc avoids locking, but since\nwe\u0027re never really single-threaded anyway, that isn\u0027t a priority.\n\nBug: 18593728\nChange-Id: Ib776bfba422ccf46209581fc0dc54f3567645b8f\n"
    },
    {
      "commit": "20841a137beac5caa824e3586c7bd91d879ff92e",
      "tree": "3ccc88081ddcdbe9a4448c462eb16e971007f86e",
      "parents": [
        "5cd127d3aa4a2f225be202af01581838fdd3c721"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:13:30 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 14:22:02 2014 -0800"
      },
      "message": "Avoid pathological behavior in OpenBSD\u0027s fread.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d81155\nBug: 18556607\nChange-Id: Idc60976b79610e2202cc42dc393dcb4ca6c42e05\n"
    },
    {
      "commit": "c48c3e4bb3d1665f3e9fa2785daafa72dfe59399",
      "tree": "9a77515a49315acd7b7441349d5157597f2f76d8",
      "parents": [
        "27aa9c5b50cc3e979fc67c1bf5296dfd725c8540"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 19 15:16:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 19 15:16:51 2014 -0800"
      },
      "message": "Fix flockfile(3) and friends for stdin/stdout/stderr too.\n\nstdin/stdout/stderr are special; their mutexes are initialized by\n__sinit. There\u0027s no unit test for this, because __sinit has already\nbeen called by the time the first unit test runs, but you could\nreproduce this failure with a trivial main() that calls flockfile\nor ftrylockfile on one of the standard streams before otherwise\nusing stdio.\n\nBug: 18208568\nChange-Id: I28d232cf05a9f198a2bed61854d8047b23d2091d\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": "dc6599e20f6a2a82c35533fba36d16fd43c53273",
      "tree": "cee1bf160dc3d5d0b1712126a6187325e24efd35",
      "parents": [
        "695781b6f0419f82939176a6ec1a240300d9f036"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Nov 04 12:09:35 2014 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Nov 04 12:09:35 2014 -0800"
      },
      "message": "Fix warning of missing field initializer.\n\nBUG: 18241135\nChange-Id: I91304eb608bc3336ce5fcd5744fbe080d64f1cc2\n"
    },
    {
      "commit": "6a03abcfd23f31d1df06eb0059830e22621282bb",
      "tree": "7a6a1e6ee2ece560d31580c662060bda3d2d004b",
      "parents": [
        "38ff8822763a30d4c9033a38ec8b71fcd17aba87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 03 12:32:17 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 03 12:32:17 2014 -0800"
      },
      "message": "Ensure we initialize stdin/stdout/stderr\u0027s recursive mutexes.\n\nBug: 18208568\nChange-Id: I9da16ce0f9375bc363d1d02be706d73fd3b1e150\n"
    },
    {
      "commit": "78ba823033e5767f54e8f4a1f9986bbc6fe57e82",
      "tree": "e9c471b6fe616dba87180d308291c220aee27683",
      "parents": [
        "8dd3b65f2dd63df1baa83285f607cf110f21c27c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 09 18:31:01 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 09 22:23:50 2014 -0700"
      },
      "message": "Add back symbols to fix Greed for Glory franchise.\n\nBug: 17813018\n\n(cherry picked from commit c891e24073830e07ba7373dee554ff2c70e1d313)\n\nChange-Id: I4e891c2dbad9ea00d2377c5175317d9ae3840153\n"
    },
    {
      "commit": "abefc93ff33afdb0e92e1fe9bd47a82b5e303e14",
      "tree": "db389de548059c1185c4dbf83d7a550ce1450051",
      "parents": [
        "a864e72b566234fdc41344725aa9b4f47c5baba3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 17:20:53 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 20:07:10 2014 -0700"
      },
      "message": "Re-expose more stdio implementation details for LP32.\n\nKeeps a variety of apps running.\n\n(cherry-pick of 5def2f5aecd968e4022b0afbe4441fa7ba3e7c7e.)\n\nBug: 17047819\nChange-Id: I55882ec95f2b59a5df76e5a89c23aa315609e01d\n"
    },
    {
      "commit": "c08c25b4c9bdd95bfbda56a8c21f51b88c8a692e",
      "tree": "815a82fa0236c4f5c068ceb97c058bca1c639c57",
      "parents": [
        "fc5a93f7a2ea2be740f2c909e8a6a192fa65adc8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 10:27:09 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 24 10:32:30 2014 -0700"
      },
      "message": "Sync with upstream findfp.c.\n\nChange-Id: Ib298f46de0c4d0fd4ce0a9b456c163e8b8b06342\n"
    },
    {
      "commit": "5f35710fad2092f930124ca98c0ecd456f83eeca",
      "tree": "98aec6a401126b2009371f40f44c74c8ed746403",
      "parents": [
        "6487f0d8341b00b476995e0174dc92e5ae8efbbe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:41:11 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 18:23:46 2014 -0700"
      },
      "message": "Expose __swsetup for LP32 binary compatibility.\n\n(cherry-pick of 7e00b44e80d6e38b8ab86d0ebc86b666c0ac2ef6.)\n\nBug: 17476127\nChange-Id: I0ef1355ac913d782c268a638f88642d6cfc236c2\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": "a167eef5482d4a89d4277ec74f57adbe38052813",
      "tree": "53cfbccf1f41116a46996951eb08b6f00fb1fd09",
      "parents": [
        "673bff01aed0c08991b98841ed0bfad78a589672"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 14:41:47 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 14 15:13:30 2014 -0700"
      },
      "message": "Fix visibility for a bunch more symbols.\n\nBug: 11156955\nBug: 15291317\nChange-Id: I664f25cce7c17085a101d6593d8e01525a1f6a90\n"
    },
    {
      "commit": "f6d2ca269603c16a3b3bd4a2306fb961a79ba92f",
      "tree": "66448aaaad2c8949c11c0f2bcc4f686544ff009c",
      "parents": [
        "1454ff2574f0bee9fb3646c9c6dd30443e0dbd38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 27 21:23:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 27 21:23:36 2014 -0700"
      },
      "message": "Expose __srefill for LP64 until we can fix the NDK.\n\nThe LP64 has a duplicate copy of part of stdio, and relies\non bionic supplying this part. We should remove the hack from\nthe NDK, at least for LP64, and then revert this.\n\nBug: 15291317\nChange-Id: I75e06e130188ca0aeb9d50dfe3a3e48a1d3968b7\n"
    },
    {
      "commit": "aa50585d961fb2b0f6943399d90ca0ec734946a3",
      "tree": "3f6d24ed474c5d429846c1983f1741aa36c1cbfb",
      "parents": [
        "b3c75a1e8ffbf575c2a425b34fd67ff8077da299"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 27 11:22:39 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 27 11:22:39 2014 -0700"
      },
      "message": "Restore __srefill for LP32.\n\nThe NDK apparently includes an android_support.a library that\nrefers to __srefill in its copy of the vsnprintf implementation.\n\nBug: 15249361\nChange-Id: Ic2cf6f21290b3146c42fbe0624f5e4d54f6194b4\n"
    },
    {
      "commit": "35d90bb6ec9799e04dacaa4b3a4984de9dc4c7f2",
      "tree": "5f6eb7bdb70c9dd9fa39c7b82e344c2adb70d059",
      "parents": [
        "255789e4d12d95dbb8e34cfae7fdc58514843ba5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun May 25 10:38:25 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun May 25 10:38:25 2014 -0700"
      },
      "message": "Restore __srget and __swbuf for LP32.\n\nAnthony King \u003canthonydking@slimroms.net\u003e reports that for Grouper the\nNvidia GL blobs need access to __swbuf. This is because the old \u003cstdio.h\u003e\nhad inline getc and putc implementations that directly referred to these\nsymbols.\n\nChange-Id: I11a7b5550018ecc93d8f195c99857759669b2906\n"
    },
    {
      "commit": "2899de9b05f15e67966ed3d046709b48703a162a",
      "tree": "593a1f614b86d09b638398586d617addd4fdc3a4",
      "parents": [
        "ea7dc32080114af59789c119ca6aa4814426ea42"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 20:06:23 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 20:06:23 2014 -0700"
      },
      "message": "Hide various stdio implementation details.\n\nI\u0027ve left __sF exposed since that\u0027s how the OpenBSD stdin, stdout, stderr\nare implemented. Other BSDs and glibc use a separate global for each instead\nof an array.\n\nBug: 11156955\nChange-Id: I9f3d2d4314a8d4a78c3197b9acd9258820c5f150\n"
    },
    {
      "commit": "4c2da039baa6c621c78afa47ead85ec9e028f56d",
      "tree": "2fba53079e6ae8ecd692e8842e997845486ae2df",
      "parents": [
        "5e6e3edbba20bf5a166ea9d06a8f2f38a40e122f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 16:50:34 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 16:50:34 2014 -0700"
      },
      "message": "Fix the newly-introduced warning and turn on -Werror.\n\nI cleaned up most of our warnings last week but forgot to turn on -Werror,\nso of course we\u0027re getting new warnings already. I\u0027ve left -Werror commented\nout in those places where we still have warnings to deal with before we can\nturn on -Werror.\n\nChange-Id: Ia58ff8b8c1ada4bf81eec6f19ec1d34e133cf4b1\n"
    },
    {
      "commit": "623b0d05bd924e7fa3c155492695123c87c3a2b1",
      "tree": "8fa47b2bf2fb7abe4b168fb1009108cdd762f6e3",
      "parents": [
        "089c7c921786ff6255526feec96552fc16ada7f4"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 14 23:11:05 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 15 13:05:21 2014 -0700"
      },
      "message": "Register _cleanup function with atexit\n\n * Register cleanup function with atexit\n   instead of calling it explicitly on\n   exit()\n * abort() no longer calls _cleanup:\n   Flushing stdio buffers on abort is no\n   longer required by POSIX.\n * dlmalloc no longer need to reset cleanup\n   (see above)\n * Upstream findfp.c makebuf.c setvbuf.cexit.c\n   to openbsd versions.\n\nBug: 14415367\nChange-Id: I277058852485a9d3dbb13e5c232db5f9948d78ac\n"
    },
    {
      "commit": "7b1a95bc761c584d2654f6dc355830ff2e405655",
      "tree": "13d828d5828e7e9520a1f5e84aef2884aa146348",
      "parents": [
        "9b5ee4aa85cf55467eb9a749b6602f6f2ba1cfc6",
        "9287223674afe3957d248ad51200c5abead6ec96"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 06 13:47:18 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 06 13:47:19 2014 +0000"
      },
      "message": "Merge \"Add include guard to fileext.h\""
    },
    {
      "commit": "ad534985ec3e01d37d46c50caa562f6482f48347",
      "tree": "bef8cd34c71d6154bef579013e3aaf25c02760e2",
      "parents": [
        "8ec21d9ded4c05744b3f9388bf824a508d7c95c2",
        "e2341d08fa4a4e0c22056c410fd34d3f93e06017"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 21:49:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 05 21:49:22 2014 +0000"
      },
      "message": "Merge \"Disable %n in printf and vfwprintf.\""
    },
    {
      "commit": "e2341d08fa4a4e0c22056c410fd34d3f93e06017",
      "tree": "9f690c9aa212dc1d3301b4a25a006e1362ac5151",
      "parents": [
        "e987803c35b472f378f81a37beb162ac86e01503"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 02 18:16:32 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 14:43:17 2014 -0700"
      },
      "message": "Disable %n in printf and vfwprintf.\n\nBug: 14492135\nChange-Id: If190bede29e5f68a65043ddbe8e878c660933d03\n"
    },
    {
      "commit": "792ae72e41923800ba8797d87a76346cb2de14b9",
      "tree": "6d6996e9b4bd75c5c6bf4179d39b302ff83ada81",
      "parents": [
        "e987803c35b472f378f81a37beb162ac86e01503"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 02 18:18:46 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 02 18:22:23 2014 -0700"
      },
      "message": "Switch to current upstream OpenBSD fwrite.c.\n\nChange-Id: Ife527aafc1e5438f477d711902efe6e6f59f3f8e\n"
    },
    {
      "commit": "9287223674afe3957d248ad51200c5abead6ec96",
      "tree": "738f875d4a5166386f3960777bf270f6313770e2",
      "parents": [
        "790890fd5c896a098142e0783b10fa8246462249"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 02 11:53:26 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 02 17:34:58 2014 +0100"
      },
      "message": "Add include guard to fileext.h\n\nChange-Id: I89b0e3bf0b15989727b5903b40bec92d49e122d9\n"
    },
    {
      "commit": "01ae00f3170ad0e36c1657f6ff8c89dfa730fd37",
      "tree": "ad9cd6e6b1ee5b01dcc03f09495ee786ea0a12ec",
      "parents": [
        "c6e563c87a7d8329607bccbc5c4a61c4e1180507"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 16:28:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 16:28:56 2014 -0700"
      },
      "message": "Switch to the OpenBSD implementations of the wide scanf functions.\n\nThis also gets us the C99 wcstoimax and wcstoumax, and a working fgetwc and\nungetwc, all of which are needed in the implementation.\n\nThis also brings several other files closer to upstream.\n\nChange-Id: I23b025a8237a6dbb9aa50d2a96765ea729a85579\n"
    },
    {
      "commit": "9d3c2dd11f5e796cd814cddc5b907494f859058e",
      "tree": "d125563b7dcadf16b9768c1cc88c8b5bf21b3489",
      "parents": [
        "b88da06580a22d9a1ee5a1c573c49e89207bc71b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 13:13:04 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 13:13:04 2014 -0700"
      },
      "message": "Switch to upstream OpenBSD fread/fvwrite.\n\nChange-Id: I3dc11083693bc8d99edc0cbcc6f70dc9e5dc6565\n"
    },
    {
      "commit": "0549371bd74ba7c7a5a16c2a7d6cc17dbe0e6f97",
      "tree": "abc888f1515ccb74452a81472af0630a40c2d0b3",
      "parents": [
        "8da69a25b7840db23846d4bb303ef84a1775c1e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 17 17:30:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 17 17:30:03 2014 -0700"
      },
      "message": "Upgrade to current vfprintf.\n\nThis gets us various bug fixes and missing C99 functionality.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d64886\nChange-Id: Ie9f8ac569e9b5eec1e4a1faacfe2c21662eaf895\n"
    },
    {
      "commit": "4bd97cee28dd815fff54fc97560be60d566c1fa5",
      "tree": "f337de53e57aee78ad4e574c652fdeee679630b6",
      "parents": [
        "26c2bb84dd5cbd9ab43a5f0ebc2635bc3b64be3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 17:48:14 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 16 15:15:52 2014 -0700"
      },
      "message": "Switch to gdtoa.\n\nThis gives us a real strtold for LP64 and fixes various LP64\nbugs.\n\nBug: 13563801\nChange-Id: I277858d718ee746e136b6b6308a495ba50dfa488\n"
    },
    {
      "commit": "02c78a386739a8a2b3007efeb00a9ca04132100a",
      "tree": "6679bef40da8b7fbe6b3c5a479eb5c2e4e035708",
      "parents": [
        "055890686636faddbb6d5d407c67f5dcc53ac865"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 17:02:20 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 14 14:35:47 2014 -0700"
      },
      "message": "Reimplement isinf/isnan/fpclassify.\n\nAlso move isinf and isnan into libc like everyone else.\n\nAlso move fpclassify to libc like the BSDs (but unlike glibc). We need\nthis to be able to upgrade our float/double/long double parsing to gdtoa.\n\nAlso add some missing aliases. We now have all of:\n\n  isnan, __isnan, isnanf, __isnanf, isnanl, __isnanl,\n  isinf, __isinf, isinff, __isinff, isinfl, __isinfl,\n  __fpclassify, __fpclassifyd, __fpclassifyf, __fpclassifyl.\n\nBug: 13469877\nChange-Id: I407ffbac06c765a6c5fffda8106c37d7db04f27d\n"
    },
    {
      "commit": "5eb670462ab9e7d8a6363861e063cad4b5dfe7d1",
      "tree": "5a076fb31fb8f28d747da6bbdfd1eb12c840318e",
      "parents": [
        "a0b3232161f6ad60be1a3c4d97044ac2bb14808c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 18:00:37 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 18:00:37 2014 -0700"
      },
      "message": "Replace the bionic hack for a vfprintf leak with (roughly) the upstream fix.\n\nCurrently in bionic free and freedtoa are equivalent, but that\u0027s not true\nof gdtoa. This makes it easier to test gdtoa without having to replace\neverything. (Yes, I found this bug the hard way.)\n\nChange-Id: I290823a2a0a83329def5f2719b349215ad0dbbde\n"
    },
    {
      "commit": "edd7c2ec256548702d275b3023f54bd91b4dcfc4",
      "tree": "185b4c42aa947850753ef8caa171dc2e6ecd1b2e",
      "parents": [
        "9c9ef0db91c816ca81a22a94c3ddd896a0f0f1bc"
      ],
      "author": {
        "name": "Alexander Ivchenko",
        "email": "alexander.ivchenko@intel.com",
        "time": "Tue Apr 01 17:01:39 2014 +0400"
      },
      "committer": {
        "name": "Alexander Ivchenko",
        "email": "alexander.ivchenko@intel.com",
        "time": "Wed Apr 02 18:30:55 2014 +0400"
      },
      "message": "Fix the printf issue for 64 bits. The following case:\n\nprintf(\"%1$s %1$s\\n\", \"test\");\n\nwould print garbage instead of the second \"test\". The problem is __find_arguments\nand the patch is a backport of two patches from OpenBSD that fix the issue:\n\nAuthor: tedu \u003ctedu@cvs.openbsd.org\u003e\nDate:   Sat Apr 29 23:00:24 2006 +0000\n\n    check mmap for failure.  the helper functions using it return -1, but\n    callers do not yet check since printf() for example is not documented\n    to return an error.\n    some formatting cleanups.\n    mostly ok deraadt millert\n\nAuthor: millert \u003cmillert@cvs.openbsd.org\u003e\nDate:   Fri May 16 14:28:54 2008 +0000\n\n    C99 says that for each va_copy() there must be a matching va_end().\n    Replace the non-portable hackery in __find_arguments() with a union.\n    From FreeBSD.\n\nChange-Id: I6ea392ce6fcf4a319ae6a67ec58cc52fe7cbe534\nSigned-off-by: Alexander Ivchenko \u003calexander.ivchenko@intel.com\u003e\n"
    },
    {
      "commit": "c20de902875dcaebde0ccd0b7a8351598f254d4c",
      "tree": "cb4a8a75dd787d93bca11fc0a2da944a7fc2e76f",
      "parents": [
        "849e162d3bedc5ca61bdf15486268b253b9f4e93"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 20 15:21:32 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 21 09:59:34 2014 +0000"
      },
      "message": "Remove ALIGNBYTES and ALIGN from \u003csys/param.h\u003e\n\nThere are only three users of bionic definition of ALIGN and keeping it\nin sys/param.h polutes the namespace.\n\nI inline the definition in the the three places that\u0027s used.\n\nBug: 13400663\nChange-Id: I565008e8426c38ffb07422f42cd8e547d53044e9\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": "603332fc4c2d073f0e197f9ce4517710e9b3a6d0",
      "tree": "55e87813c7e80c351e22cb776ab9c2426e430a4d",
      "parents": [
        "0e79338d12d1ca780efcd0720af92b0a70e55da8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 17:10:41 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 17:10:41 2014 -0700"
      },
      "message": "Upgrade to current upstream scanf implementation.\n\nAlso add a basic test.\n\nChange-Id: Icc0e68a5716b9579244f6eb8bac1ab5a24eda85a\n"
    },
    {
      "commit": "ad41e9a4eb957ea318bbc93dd49dbe76b89df1e9",
      "tree": "8d95daa4b9d104c3b77467ae7eac651430cbe4f2",
      "parents": [
        "55f9710ac4843b4a5d2c8b03ade3d2bddd1fdf46"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 15:05:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 15:05:50 2014 -0700"
      },
      "message": "More stdio cleanup.\n\nChange-Id: Idc909cd3dc7b072f1edd2ae4980932d6550e8568\n"
    },
    {
      "commit": "53e43292aac91bf62995788cd5ca2ceb7caea283",
      "tree": "003679a1e2288bad947f714ee45bfa6febf479b6",
      "parents": [
        "ba40a560176e6ea753d09a6a71343b81ea4c8c1e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 18:00:43 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 18:02:05 2014 -0800"
      },
      "message": "More OpenBSD cleanup (primarily string).\n\nThis patch removes the string/ and wchar/ directories.\n\nChange-Id: Ia489904bc67047e4bc79acb1f3eec21aa3fe5f0d\n"
    },
    {
      "commit": "0133944b09d1c0a35041f7a41eb6bfb660144f4f",
      "tree": "0cb37ddb83c7cf6363d917791d76420ad6f6e1c1",
      "parents": [
        "e65055af112780623f372aca6a1f78d2b2acb34f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 18:04:58 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 21 14:30:18 2014 -0800"
      },
      "message": "Clean up our OpenBSD usage.\n\nAlso undo some of the mess where we have OpenBSD \u003cstdio.h\u003e but a mix of\ndifferent BSD\u0027s implementations.\n\nIn this first pass, I\u0027ve only moved easy OpenBSD stuff.\n\nChange-Id: Iae67b02cde6dba9d8d06fedeb53efbfdac0a8cf6\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "35d937e4eb7b8e0a4e9a113d2f7434d55c0bc056",
      "tree": "38f058560086d0a97b8455258fb66d05ada36a3b",
      "parents": [
        "76218efbeb2e124656ce15d4eb5a7039da065123"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Oct 01 15:02:07 2013 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Oct 01 15:02:07 2013 -0700"
      },
      "message": "Remove _FORTIFY_SOURCE in implementation files.\n\nThis was causing conflicting declarations for the library definitions of\ncommon functions like sprintf(), snprintf(), and strchr().\n\nChange-Id: I5daaa8a58183aa0d4d0fae8a7cb799671810f576\n"
    },
    {
      "commit": "1d13c64d781a87dfa3f01e5c179bfa36748786af",
      "tree": "f50fd074ebb7a749ff0bbb2069e3145cd67cd3ba",
      "parents": [
        "fc2ceae778afdcb2deee4abb5e2fc9b9904fa761"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 23 16:02:39 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 23 16:02:39 2013 -0700"
      },
      "message": "Fix %hhd formats in the printf family.\n\nFound by adapting the simple unit tests for libc logging to test\nsnprintf too. Fix taken from upstream OpenBSD without updating\nthe rest of stdio.\n\nChange-Id: Ie339a8e9393a36080147aae4d6665118e5d93647\n"
    },
    {
      "commit": "284f7880323d33356df682c3cfb6b7f0c665bfd4",
      "tree": "e810aa0bbbd9ca8257a1bcd6d52ea9b10540a592",
      "parents": [
        "f8a66bb31204b42f830c1865a795b5f3eb1e0147"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 19 15:20:31 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 19 15:20:31 2013 -0700"
      },
      "message": "Upgrade mktemp.c to the current upstream version.\n\nYet another archaic relic containing bugs that had been fixed years before the\nAndroid project even started...\n\nBug: 9935113\nChange-Id: I3c9d019a216efd609ee568cf8c70bc360f357403\n"
    },
    {
      "commit": "677ee5647721df22f13909375d5d0e770a1a80bf",
      "tree": "a1837c93d0fcd224a5745ea7036e1dda85dee9ae",
      "parents": [
        "f1867d47cbce4225d712a2684da67031f7350909"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 15:24:15 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 15:24:15 2013 -0700"
      },
      "message": "Switch to current upstream stdio makebuf.c and setvbuf.c.\n\nChange-Id: I4761b5e94459815520f01062eef39abf62af621f\n"
    },
    {
      "commit": "61e699a133a4807fe878a6cb0d7190d7c96e21f8",
      "tree": "12dd46e7f8e5f7172a3fe0fd9075fa929cbb1001",
      "parents": [
        "5cde15eb17f4ddc0949c0cbd38a46e6c0bad7019"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:05:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:14:53 2013 -0700"
      },
      "message": "Clean up abort.\n\n* A dlmalloc usage error shouldn\u0027t call abort(3) because we want to\n  cause a SIGSEGV by writing the address dlmalloc didn\u0027t like to an\n  address the kernel won\u0027t like, so that debuggerd will dump the\n  memory around the address that upset dlmalloc.\n\n* Switch to the simpler FreeBSD/NetBSD style of registering stdio\n  cleanup. Hopefully this will let us simplify more of the stdio\n  implementation.\n\n* Clear the stdio cleanup handler before we abort because of a dlmalloc\n  corruption error. This fixes the reported bug, where we\u0027d hang inside\n  dlmalloc because the stdio cleanup reentered dlmalloc.\n\nBug: 9301265\nChange-Id: Ief31b389455d6876e5a68f0f5429567d37277dbc\n"
    },
    {
      "commit": "6b05c8e28017518fae04a3a601d0d245916561d2",
      "tree": "91e24656267091edeeff1c171f20d635d2503c38",
      "parents": [
        "b632857a50a1fd2b759316d07ace6c36f6f418cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 13:54:48 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 13:55:01 2013 -0700"
      },
      "message": "Start moving to current FreeBSD stdio.\n\nThis only touches the easy stuff.\n\nChange-Id: Iecee57f1681dba5c56bff59f0e9a89811a71f0ca\n"
    },
    {
      "commit": "f27b7fb0567a9cbb642be9d98298cb6668e7db39",
      "tree": "99a6559087e9fcb01aa78852e57054c4f0316b7a",
      "parents": [
        "dea13da3407873e4f3fec9ba1a04b4fdacea07f4"
      ],
      "author": {
        "name": "Hakan Kvist",
        "email": "hakan.kvist@sonymobile.com",
        "time": "Wed Oct 10 08:32:52 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:53:33 2012 -0800"
      },
      "message": "Define DEFFILEMODE and friends\n\nDefine the macros ACCESSPERMS, ALLPERMS and DEFFILEMODE.\nThese macros originates from BSD but has been available in glibc\nfor quite some time.\n\nChange-Id: I429cd30aa4e73f53b153ee7740070cebba166c57\n"
    },
    {
      "commit": "a89864a20b818621a1da10e88fda815334062f9f",
      "tree": "7ebc6e1cf123c0f9d8ab50e775039e183990110b",
      "parents": [
        "d3bf954e9ffbdee8d732ccb6ad6143dc31b605fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:35:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:35:49 2012 -0700"
      },
      "message": "Move non-upstream code into the libc/bionic directory.\n\nI\u0027ll need at least one more pass, because there\u0027s some upstream code\nlurking in libc/bionic, but this is still a step in the right direction.\n\nChange-Id: I55927315972da8327ae01c5240ed587db17e8462\n"
    },
    {
      "commit": "91875dcd6e17b7f3b251efe9b236b905ef414dde",
      "tree": "3e1fb66b922496ec295bd63bfea01fe339f7fcc0",
      "parents": [
        "6e0e03c38bc0e864225b89b3fb273fb56ded8940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 17:55:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 12:02:17 2012 -0700"
      },
      "message": "Fix tmpfile(3).\n\nThis could be better, but at least now it works.\n\nChange-Id: I88b7cf3f7ce8e5fa0b3fe678b7d1679a68ffffc9\n"
    },
    {
      "commit": "a37ce7faa6d6c7355e3c6f6e09e5268cbf29c291",
      "tree": "de9e60d68ae8b49135e485fc4098648ff5de8372",
      "parents": [
        "26facba288df013fd898f8df12d84e5669ece6eb",
        "c7dcd67d56701a10c14019b17c9499249ab6c252"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 24 15:10:07 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 24 15:10:07 2012 -0700"
      },
      "message": "Merge \"Add missing va_end() to prevent stack corruptions\""
    },
    {
      "commit": "9145ad3f0ae917e6daddbceaa541dfbe208a3bc5",
      "tree": "18b0562387f0bc488da4023212efd44270384826",
      "parents": [
        "c27103d84c124d40f3f4cff46d7cfa74342e0585"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 25 16:01:38 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 25 16:01:38 2012 -0700"
      },
      "message": "vfprintf: fix spelling.\n\nChange-Id: I6dc611143fb1f3e9ccf0a77b40ee48a3c1d72ca9\n"
    },
    {
      "commit": "c7dcd67d56701a10c14019b17c9499249ab6c252",
      "tree": "675ccad6a3700d4c232a48999c6c9ed4bc15edef",
      "parents": [
        "5af97ca8514d9fb4175bff3a79abf26889b94530"
      ],
      "author": {
        "name": "Yaroslav Miroshnychenko",
        "email": "yaroslav.miroshnychenko@sonymobile.com",
        "time": "Thu Jun 14 12:41:54 2012 +0200"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Fri Jul 13 09:37:57 2012 +0200"
      },
      "message": "Add missing va_end() to prevent stack corruptions\n\nAdded va_end() for copied variable arguments lists\nin __vfprintf() and __find_arguments().\nThis is by C standard.\nImportant for systems which pass arguments in registers.\n\nChange-Id: I7ac42beaa6645bfe856c18132253352dae29ea37\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": "9831ad3ce6bd5b22da16a275ed67e7236eae3d1f",
      "tree": "2f5152add91760c209361fb918ad83a4f24b3502",
      "parents": [
        "4b469eae40368913b2841b390dada6c58296c602"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Aug 29 21:43:46 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 15 13:16:42 2011 +0100"
      },
      "message": "libc: speed-up flockfile()/funlockfile()\n\nFor Honeycomb, we added proper file thread-safety for\nall FILE* operations. However, we did implement that by\nusing an out-of-band hash table to map FILE* pointers\nto phtread_mutex_t mutexes, because we couldn\u0027t change\nthe size of \u0027struct _sFILE\u0027 without breaking the ABI.\n\nIt turns out that our BSD-derived code already has\nsome support code to extend FILE* objects, so use it\ninstead. See libc/stdio/fileext.h\n\nThis patch gets rid of the hash table, and put the\nmutex directly into the sFILE extension.\n\nChange-Id: If1c3fe0a0a89da49c568e9a7560b7827737ff4d0\n"
    },
    {
      "commit": "bc9d1fe7c467d861a2b7c1deafca5589c1bc309e",
      "tree": "ed4d7ca34ce793a3b91d8c4358c6a80bf70b9cb5",
      "parents": [
        "663e05797f9bb2463217055a2510063ea7977379",
        "4685acbdd45c44e2e21c74242953bee5198209f9"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit%android.com@gtempaccount.com",
        "time": "Wed Aug 03 08:16:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 03 08:16:37 2011 -0700"
      },
      "message": "am 4685acbd: am 9efda5b7: Merge \"typo in libc/stdio/wcio.h\"\n\n* commit \u00274685acbdd45c44e2e21c74242953bee5198209f9\u0027:\n  typo in libc/stdio/wcio.h\n"
    },
    {
      "commit": "7743f68204515c64ce363b397a7e0bd8015bd692",
      "tree": "87220e4db8e000bcc11b6d611608f91443583158",
      "parents": [
        "2f5c6d2d663591b0b5cff9f7e90f58f12a5967eb"
      ],
      "author": {
        "name": "Nathan Forbes",
        "email": "me@nathanforbes.com",
        "time": "Sat Jul 02 20:29:25 2011 -0400"
      },
      "committer": {
        "name": "Nathan Forbes",
        "email": "me@nathanforbes.com",
        "time": "Sat Jul 02 20:29:25 2011 -0400"
      },
      "message": "typo in libc/stdio/wcio.h\n\nwhcar_io_data -\u003e wchar_io_data\nSigned-off-by: Nathan Forbes \u003cme@nathanforbes.com\u003e\n\nChange-Id: I45c231efffac265eed51b7632d5a1b21c18bfa55\n"
    },
    {
      "commit": "3f7a3228cdf1a48e379fb297be9114ecd71bff11",
      "tree": "11833674ffcc309e67884e544218a21aceee3fba",
      "parents": [
        "add0a45a117f00553e79e7137d023416f9c0a54f",
        "c5c84c8643250c71bde87541f2b28fc21a9c5cc7"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Tue May 17 04:47:06 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 17 04:47:06 2011 -0700"
      },
      "message": "am c5c84c86: Merge \"vfscanf: Add support for L type modifier for long long\"\n\n* commit \u0027c5c84c8643250c71bde87541f2b28fc21a9c5cc7\u0027:\n  vfscanf: Add support for L type modifier for long long\n"
    },
    {
      "commit": "712e4f81e066578b0925dbfb5a6b664aeba5f564",
      "tree": "9a587fdc41cf8409ca832b58234843c552ba72d4",
      "parents": [
        "e274a9fac077d350391b721e9a08b650b243577e"
      ],
      "author": {
        "name": "Chris Fries",
        "email": "C.Fries@motorola.com",
        "time": "Wed May 04 09:54:06 2011 -0500"
      },
      "committer": {
        "name": "Chris Fries",
        "email": "C.Fries@motorola.com",
        "time": "Thu May 05 11:02:33 2011 -0500"
      },
      "message": "vfscanf: Add support for L type modifier for long long\n\nscanf()\u0027s man page suggests support for %Ld, (and ioux).\nImplement this so that 3rd party code will work correctly.\n\nChange-Id: Idce9d266071cb688ca71429395a2d9edf6813595\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": "f4e10b721ee281f3e90736364ac15864d0a3adf7",
      "tree": "8d7ad7cf73dd45105d71108aacae3004889745e7",
      "parents": [
        "f65368a6939322ac3a47fc0304e63fb185c5746e",
        "0946b1f6e9223a0a82306e40fc2b41ebddb1f7ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 16 08:50:20 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jan 16 08:50:20 2011 -0800"
      },
      "message": "Merge \"Bug 3330205 Put blanks and zeroes in const area\""
    },
    {
      "commit": "e9d0518394dda010c8873dbd0ca4de7db5a5bbec",
      "tree": "7c14520d6d496a8b84a2781161fe13ebfcd5c99d",
      "parents": [
        "015610e64eb728dd031c6b1730b70460d9d298b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 09:28:31 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 11:47:42 2011 -0800"
      },
      "message": "Bug 3330205 Remove unnecessary static variable\n\nChange-Id: I7e781d26d6565952712f8fb0274d336462b441fd\n"
    }
  ],
  "next": "0946b1f6e9223a0a82306e40fc2b41ebddb1f7ef"
}
