)]}'
{
  "log": [
    {
      "commit": "3f525d41c2acde2ae3309cf839d83d7f41ab2fe6",
      "tree": "572f2b5a63ffbbec084c9f048f396856c228b9b0",
      "parents": [
        "52f9b051c8bcb3d723b023a74d7d89ee45cf754c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 24 16:32:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 24 19:03:31 2014 -0700"
      },
      "message": "Add splice, tee, and vmsplice.\n\nChange-Id: I5f43380b88d776a8bb607b47dbbc5db5a2fe6163\n"
    },
    {
      "commit": "48501af98f3cdf0115a469ee8d773cf74c42958d",
      "tree": "b26893fa81d808c0f93bf8fdf966e3210948b8c2",
      "parents": [
        "0b0387c965894e235b72fa965191bf346270135d"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Fri Mar 14 13:16:25 2014 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 12:19:23 2014 -0700"
      },
      "message": "AArch64: Fix flock64 for LP64.\n\nOn LP64 systems F_GETLK64, F_SETLK64 and F_SETLKW64 definitions should\nmap onto the F_GETLK, F_SETLK and F_SETLKW definitions, respectively.\nLP64 also doesn\u0027t have a struct flock64.\n\nChange-Id: Ibdfed9645d9e946999acd6efa8b96ea6238ed5bf\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "3434727b3ece18d90894c3f8d9ffd000a00c9c50",
      "tree": "c59559d2e31e2da8fab09af1e7a0a8764413bcba",
      "parents": [
        "27c7dbeee6c5e0cee488ce5085cc0b8c5e0301bd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 26 11:10:32 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 26 15:51:01 2014 -0800"
      },
      "message": "Ensure that \u003cfcntl.h\u003e has the SYNC_FILE_RANGE_* constants.\n\nNeeded to build strace at their tip of tree.\n\nChange-Id: I64db00a332088e08e25bc30357293a9308b8a226\n"
    },
    {
      "commit": "db1ea3474899ebbd783aba872d3005f95a816d0f",
      "tree": "b70fedd7d69098f5141dbbb09ef41851a61eec8d",
      "parents": [
        "3623d80675e5321b92c2d88a7b7ec6bd998d81d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 17 18:42:49 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 15:39:24 2014 -0800"
      },
      "message": "Implement some of the missing LFS64 support.\n\nThis gives us:\n\n* \u003cdirent.h\u003e\n  struct dirent64\n  readdir64, readdir64_r, alphasort64, scandir64\n\n* \u003cfcntl.h\u003e\n  creat64, openat64, open64.\n\n* \u003csys/stat.h\u003e\n  struct stat64\n  fstat64, fstatat64, lstat64, stat64.\n\n* \u003csys/statvfs.h\u003e\n  struct statvfs64\n  statvfs64, fstatvfs64.\n\n* \u003csys/vfs.h\u003e\n  struct statfs64\n  statfs64, fstatfs64.\n\nThis also removes some of the incorrect #define hacks we\u0027ve had in the\npast (for stat64, for example, which we promised to clean up way back\nin bug 8472078).\n\nBug: 11865851\nBug: 8472078\nChange-Id: Ia46443521918519f2dfa64d4621027dfd13ac566\n"
    },
    {
      "commit": "f64b8ea09db3bdd84eed59f7721301743332b3fe",
      "tree": "6d45a510ee831e1bc154170170afe7c931474ebc",
      "parents": [
        "a122c376ef0737454a592cf44f50beabe154e9e3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 03 16:20:46 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 03 16:20:46 2014 -0800"
      },
      "message": "Add fallocate/fallocate64/posix_fallocate/posix_fallocate64.\n\nBug: 5287571\nBug: 12612860\nChange-Id: I4501b9c6cdf9a830336ce0b3afc4ea716b6a0f6f\n"
    },
    {
      "commit": "01e505ac9c321307eedcb7f34fb1dabac8949184",
      "tree": "1163fc81bfa0e149826e4586cbc6eb09f2472ea0",
      "parents": [
        "27a4bb319885f9ed218ebca02a92870582b35fd4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 07 17:47:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 07 17:47:20 2014 -0800"
      },
      "message": "\u003cfcntl.h\u003e should get you the POSIX_FADV_* constants.\n\nChange-Id: I9de8b840570b228308c12d72b7617b8758237fb8\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": "e989399dc2b17013c9a7f12f1e4765d383e6e771",
      "tree": "8398993c8ac37c806273ffa3fcbccf9f40bf5f67",
      "parents": [
        "967cd1bcaf5e75314b3cff2ea7bbd0eb18ab7438"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 17 11:45:22 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 17 11:45:22 2013 -0700"
      },
      "message": "O_CLOEXEC is always defined for arm, mips, x86, and x86_64.\n\nI built all four, just to be sure.\n\nChange-Id: I5c818575c8142fccfc8fb163468832807a535e90\n"
    },
    {
      "commit": "a641c18f0c62c31f5678f8c159a74486010ea851",
      "tree": "58f89487d51470e9748495461b97f1e776859fe6",
      "parents": [
        "16d1af167f8e36a9aa4a07ae77034ad519b00463"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 18 13:07:18 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 18 13:07:18 2013 -0700"
      },
      "message": "libc: Rename fortify error functions.\n\n__umask_error -\u003e __umask_invalid_mode\n__creat_error -\u003e __creat_missing_mode\n__too_many_args_error -\u003e __creat_too_many_args\n\nChange-Id: I4036f344a3a93628e70f2e948ad73cfed3a967ea\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": "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": "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": "a3e230d1fa9a5ed773a029e2acc6eb4f3e849ea3",
      "tree": "6f1dbd761142774dc7bed997d14ec4090c874880",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 02 12:24:42 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 12:30:40 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: Add openat, fix bug\n\nAdd fortify_source support for openat(). This change requires that\nan argument be supplied when using O_CREAT.\n\nFix unnecessary call to __open_2. If, at compile time, we know that\n\"flags\" is constant and DOESN\u0027T contain O_CREAT, the call to __open_2\nis useless.\n\nChange-Id: Ifcd29c4fb25e25656961d7552d672e161f0cfdbd\n"
    },
    {
      "commit": "8118f62a7d3f1af1edb47e0bc2a49af1d523ae0f",
      "tree": "c385eb2c8e0d083fbc9b8715d2f15b3ac0fc6908",
      "parents": [
        "b52e4385c403d18a68309e568ac729c787d900c4"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 15:08:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 26 15:19:12 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add open() checks\n\nAdd a FORTIFY_SOURCE check which requires that you pass a\n\"mode\" argument when calling open(..., O_CREAT). If a mode isn\u0027t\npassed, then the file is created with \"undefined\" permissions.\n\nChange-Id: I4427be4f9ce170c69da01af5b00fb05b03613a28\n"
    },
    {
      "commit": "00eea3f8a07190dc6d2c4d0e927fed3e47502424",
      "tree": "93e11a2dd3474816b6afbbcb1776c17946e806f8",
      "parents": [
        "b9e49ad56e5776ace7c6eab2e997d5b7acb16792"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sun Sep 26 20:03:16 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Sep 27 17:33:40 2010 +0200"
      },
      "message": "libc: add missing O_CLOEXEC from \u003cfcntl.h\u003e\n\nChange-Id: Ie7ad57898e67800a9fe92bb52589d67ec30e1cd9\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": "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"
    }
  ]
}
