)]}'
{
  "log": [
    {
      "commit": "0336e35368aa161f1fed04ccde39553db4740b97",
      "tree": "695110f21adb248648f6c2d850c8abb2d6800564",
      "parents": [
        "27c7dbeee6c5e0cee488ce5085cc0b8c5e0301bd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 08 06:58:01 2013 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Feb 26 15:33:13 2014 -0800"
      },
      "message": "libc: Make calls to new user-space logger\n\n* libc (fatal) logging now makes socket connection to the\n  user-space logging service.\n* Add a TARGET_USES_LOGD make flag for BoardConfig.mk to manage\n  whether logd is enabled for use or not.\n\nChange-Id: I96ab598c76d6eec86f9d0bc81094c1fb3fb0d9b4\n"
    },
    {
      "commit": "59a13c122ebc4191583b67c846a95d690dcda5cf",
      "tree": "70d47582d6e0c4c18847e3f74649b2bca0fef5c6",
      "parents": [
        "c85e0dbb0b8d602f930cf7ae99901730c1c6a26a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 01 13:13:33 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 14 18:14:43 2013 -0700"
      },
      "message": "Optimize __memset_chk, __memcpy_chk. DO NOT MERGE.\n\nThis change creates assembler versions of __memcpy_chk/__memset_chk\nthat is implemented in the memcpy/memset assembler code. This change\navoids an extra call to memcpy/memset, instead allowing a simple fall\nthrough to occur from the chk code into the body of the real\nimplementation.\n\nTesting:\n\n- Ran the libc_test on __memcpy_chk/__memset_chk on all nexus devices.\n- Wrote a small test executable that has three calls to __memcpy_chk and\n  three calls to __memset_chk. First call dest_len is length + 1. Second\n  call dest_len is length. Third call dest_len is length - 1.\n  Verified that the first two calls pass, and the third fails. Examined\n  the logcat output on all nexus devices to verify that the fortify\n  error message was sent properly.\n- I benchmarked the new __memcpy_chk and __memset_chk on all systems. For\n  __memcpy_chk and large copies, the savings is relatively small (about 1%).\n  For small copies, the savings is large on cortex-a15/krait devices\n  (between 5% to 30%).\n  For cortex-a9 and small copies, the speed up is present, but relatively\n  small (about 3% to 5%).\n  For __memset_chk and large copies, the savings is also small (about 1%).\n  However, all processors show larger speed-ups on small copies (about 30% to\n  100%).\n\nBug: 9293744\n\nMerge from internal master.\n\n(cherry-picked from 7c860db0747f6276a6e43984d43f8fa5181ea936)\n\nChange-Id: I916ad305e4001269460ca6ebd38aaa0be8ac7f52\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": "cf870199d576bdfc339b7fb016c9f6fe7f2c87ed",
      "tree": "e4bdb361862de3efd9b907379d0fe3f2ad3f4ae2",
      "parents": [
        "72f59c84fd73a0a701ce6448d103e9021c1cb060"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 30 16:48:53 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 31 09:07:46 2013 -0700"
      },
      "message": "FORTIFY_SOURCE: strcat / strncat optimize\n\n__strcat_chk and __strncat_chk are slightly inefficient,\nbecause they end up traversing over the same memory region\ntwo times.\n\nThis change optimizes __strcat_chk / __strncat_chk so they\nonly access the memory once. Although I haven\u0027t benchmarked these\nchanges, it should improve the performance of these functions.\n\n__strlen_chk - expose this function, even if -D_FORTIFY_SOURCE\nisn\u0027t defined. This is needed to compile libc itself without\n-D_FORTIFY_SOURCE.\n\nChange-Id: Id2c70dff55a276b47c59db27a03734d659f84b74\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": "0d787c1fa18c6a1f29ef9840e28a68cf077be1de",
      "tree": "3f8efc05d80658c9be48513238104a5de01a9951",
      "parents": [
        "014c75c78bdcad8acde8d0abb2450aa1f78e1a1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 04 13:46:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:24:19 2013 -0700"
      },
      "message": "Make abort messages available to debuggerd.\n\nThis adds __libc_fatal, cleans up the internal logging code a bit more,\nand switches suitable callers over to __libc_fatal. In addition to logging,\n__libc_fatal stashes the message somewhere that the debuggerd signal handler\ncan find it before calling abort.\n\nIn the debuggerd signal handler, we pass this address to debuggerd so that\nit can come back with ptrace to read the message and present it to the user.\n\nBug: 8531731\nChange-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "e23ed8c6441389a79c6504295184f7249e01a197",
      "tree": "8d10d7ccfc20e0a212c60b7628bb4ae709447d37",
      "parents": [],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 18:26:49 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 15 18:26:49 2013 +0000"
      },
      "message": "Merge \"Remove useless workaround for HTC RIL bugs.\""
    }
  ]
}
