)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
