)]}'
{
  "log": [
    {
      "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": "d1eda33f012e46083b91e087fb79d14a5ce70f0e",
      "tree": "2d075e9d43c3a300327e79ee27c5b8330d8dce4c",
      "parents": [
        "dc9d8d050a43e1cd32f1337e79187124bb15d938"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 16:43:38 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 16:49:28 2013 -0700"
      },
      "message": "Avoid confusing \"read prevented write\" log messages.\n\nMoving to a \"function: message\" style avoids ambiguity.\n\nChange-Id: If9d590e50265c61725d3673bd03796e65edd2d5e\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": "6861c6f85e6563695c4763e56756398c9d5f6e14",
      "tree": "c1d460b532b20b094f8bad905159f62a076c7eaf",
      "parents": [
        "a81fd294be55f8781dbf22f381a3335212d8dbd9"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 09:45:24 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 11:43:30 2013 -0700"
      },
      "message": "Make error messages even better!\n\nChange-Id: I72bd1eb1d526dc59833e5bc3c636171f7f9545af\n"
    },
    {
      "commit": "e2617290fca2ebbc4d64cae5a8d8d9e9f8e6c701",
      "tree": "7cd7f32b7fdd038bbaae6043d36a6854d1db5379",
      "parents": [
        "41ba05e22ed1829cc7431fd4899cfa5725c76044"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 08:57:17 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 08:57:17 2013 -0700"
      },
      "message": "FORTIFY_SOURCE: emphasize prevention in error messages.\n\nFORTIFY_SOURCE prevents buffer overflows from occurring.\nHowever, the error message often implies that we only\ndetect it, not prevent it.\n\nBring more clarity to the error messages by emphasizing\nprevention over detection.\n\nChange-Id: I5f3e1478673bdfc589e6cc4199fce8e52e197a24\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": "c85e0dbb0b8d602f930cf7ae99901730c1c6a26a",
      "tree": "830421cf56c1382abaf4b3d46ba5dd1c5444ad42",
      "parents": [],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 14 22:51:47 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 14 22:51:47 2013 +0000"
      },
      "message": "Merge \"Add more information to error due to truncated Elf32_Ehdr\""
    }
  ]
}
