)]}'
{
  "log": [
    {
      "commit": "b5f053b5a7deb084e7a052d527e0aa41339ae05c",
      "tree": "a75d6715f7c7c954d22440b8c21c59b01d87e83d",
      "parents": [
        "4a9b7c694a8312160d3cd953a8227c23a1624868"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:17:54 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 15:18:21 2012 -0700"
      },
      "message": "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).\n\nChange-Id: I426109db25e907980d6cb3a7a695796e45783b78\n"
    },
    {
      "commit": "f8b3a920a895a53b207017249080087d562bd0d2",
      "tree": "ed13cbbfe8069cba7a30d206d503d4558ed28630",
      "parents": [
        "4ec9e343cf445c5032d9a782d2e92b1dba713e61"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:39:58 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 12:10:10 2012 -0700"
      },
      "message": "Revert \"Revert \"Switch to NetBSD\u0027s strxfrm(3).\"\"\n\nThis reverts commit 8793e7c7d21a0434d1b5e63364c88b2b125a3d29,\nand fixes the build by building upstream NetBSD source as a\nseparate library that\u0027s then swallowed whole into libc_common.\n\nChange-Id: I6c9317d8c48b5ccaf85a7b185bc07fb31176ff97\n"
    },
    {
      "commit": "8793e7c7d21a0434d1b5e63364c88b2b125a3d29",
      "tree": "a515a4be8d2881d734a6b1c2a2e4f1fdd0c43e1d",
      "parents": [
        "be1d78b0dc899a732c0e9d7515d3023e8004e368"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:36:17 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 10 11:36:17 2012 -0700"
      },
      "message": "Revert \"Switch to NetBSD\u0027s strxfrm(3).\"\n\nThis reverts commit be1d78b0dc899a732c0e9d7515d3023e8004e368\n\nChange-Id: I11a95db474796f3da004f27652b081d5ba4ec9b4\n"
    },
    {
      "commit": "be1d78b0dc899a732c0e9d7515d3023e8004e368",
      "tree": "46bb803853eec1e06ee940a04335aa38032b33a3",
      "parents": [
        "0836a7ffb13890558fe568119b023007cce66373"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:03:02 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 10 11:03:02 2012 -0700"
      },
      "message": "Switch to NetBSD\u0027s strxfrm(3).\n\nThere were two bugs in our implementation. Intel found one, but another\nremainined, and tracking upstream is the way forward for functions where\nwe add no value.\n\nChange-Id: Ida9bac0293fb2c4cbc942b1e0515ee0477c6538b\n"
    },
    {
      "commit": "da2611084f7b5a05b802af6d5007661f42fc2578",
      "tree": "9f00b8cf4ab354fbb145a05b77d0d9e0178bbb81",
      "parents": [
        "a513f70b43e75136145d756388b50028ac4fc4b8"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Fri Jan 27 17:55:49 2012 -0800"
      },
      "committer": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Wed Aug 01 17:53:07 2012 -0700"
      },
      "message": "Error numbers are target specific.\n\nUse the system supplied error numbers when mapping error numbers to messages.\n\nChange-Id: I520556fa3e2ff668fdc4eda36ad31491fbb48ea8\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\n"
    },
    {
      "commit": "c37fc1ab6a3ac3956a8c9ba3ac089d41969815ed",
      "tree": "8fd21828b1fc97423bbe5e3652513772260604f3",
      "parents": [
        "e1d909f71e183ac3d1e21af5bb1af35d30e9de5b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 17:49:10 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 17:58:37 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: revert memcpy changes.\n\nPerformance regressions.  Hopefully this is a temporary\nrollback.\n\nBug: 6821003\nChange-Id: I84abbb89e1739d506b583f2f1668f31534127764\n"
    },
    {
      "commit": "260bf8cfe00f83bc579dfe81c78b75bd9973f051",
      "tree": "b8ff686500d30625cb9d5908ecba4895f20a1467",
      "parents": [
        "b2060b027c9eb2748895b53a0d69d40b52371a4e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 11:27:06 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 13:49:59 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: strlen check.\n\nThis test is designed to detect code such as:\n\nint main() {\n  char buf[10];\n  memcpy(buf, \"1234567890\", sizeof(buf));\n  size_t len \u003d strlen(buf); // segfault here with _FORTIFY_SOURCE\n  printf(\"%d\\n\", len);\n  return 0;\n}\n\nor anytime strlen reads beyond an object boundary. This should\nhelp address memory leakage vulnerabilities and make other\nunrelated vulnerabilities harder to exploit.\n\nChange-Id: I354b425be7bef4713c85f6bab0e9738445e00182\n"
    },
    {
      "commit": "b2060b027c9eb2748895b53a0d69d40b52371a4e",
      "tree": "00b0d9fa0f2bb7d106aff303feeb3ddbead6baeb",
      "parents": [
        "88bfc28ac4d5f4e1f3d0b7a8b0c67efb54458641"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 12:45:14 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jul 13 13:49:45 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: restore __memcpy_chk()\n\nIn our previous FORTIFY_SOURCE change, we started using a custom\ninline for memcpy(), rather than using GCC\u0027s __builtin_memcpy_chk().\nThis allowed us to delete our copy of __memcpy_chk(), and replace it\nby __memcpy_chk2().\n\nApparently GCC uses __memcpy_chk() outside of __builtin_memcpy_chk().\nSpecifically, __memcpy_chk() is used by __builtin__memMOVE_chk() under\ncertain optimization levels.\n\nKeep the old __memcpy_chk() function around, and have it call into\n__memcpy_chk2().\n\nChange-Id: I2453930b24b8a492a3b6ed860e18d92a6b762b80\n"
    },
    {
      "commit": "f3913b5b68347ce9a4cb17977df2c33f1e8f6000",
      "tree": "fae959e2f8c146b61eb43af80d9ae4918640d2c0",
      "parents": [
        "86a4fca0b473c49bcbcf2deb6b5822aa9ab9631e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 12 15:10:03 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jul 12 15:38:15 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: enhanced memcpy protections.\n\nTwo changes:\n\n1) Detect memory read overruns.\n\nFor example:\n\nint main() {\n  char buf[10];\n  memcpy(buf, \"abcde\", sizeof(buf));\n  sprintf(\"%s\\n\", buf);\n}\n\nbecause \"abcde\" is only 6 bytes, copying 10 bytes from it is a bug.\nThis particular bug will be detected at compile time.  Other similar\nbugs may be detected at runtime.\n\n2) Detect overlapping buffers on memcpy()\n\nIt is a bug to call memcpy() on buffers which overlap. For\nexample, the following code is buggy:\n\n  char buf3[0x800];\n  char *first_half  \u003d \u0026buf3[0x400];\n  char *second_half \u003d \u0026buf3[1];\n  memset(buf3, 0, sizeof(buf3));\n  memcpy(first_half, second_half, 0x400);\n  printf(\"1: %s\\n\", buf3);\n\nWe now detect this at compile and run time.\n\nChange-Id: I092bd89f11f18e08e8a9dda0ca903aaea8e06d91\n"
    },
    {
      "commit": "e64259e860a84c9527ffbe6d9bd2f6eeab6fdac4",
      "tree": "59b3fd8b76808b6e61bc2fa5853757293e2f8452",
      "parents": [
        "6334c662cae4cd9b61f5f3185048b0cd3633dad7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 11 17:34:04 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 11 17:46:03 2012 -0700"
      },
      "message": "memmove: Don\u0027t call memcpy if regions overlap\n\nmemmove() unconditionally calls memcpy() if \"dst\" \u003c \"src\". For\nexample, in the code below, memmove() would end up calling memcpy(),\neven though the regions of memory overlap.\n\nint main() {\n  char buf3[0x800];\n  char *dst  \u003d \u0026buf3[1];\n  char *src \u003d \u0026buf3[0x400];\n  memset(buf3, 0, sizeof(buf3));\n  memmove(dst, src, 0x400);\n  printf(\"1: %s\\n\", buf3);\n  return 0;\n}\n\nCalling memcpy() on overlaping regions only works if you assume\nthat memcpy() copies from start to finish. On some architectures,\nit\u0027s more efficient to call memcpy() from finish to start.\n\nThis is also triggering a failure in some of my code.\n\nMore reading:\n* http://lwn.net/Articles/414467/\n* https://bugzilla.redhat.com/show_bug.cgi?id\u003d638477#c31 (comment 31)\n\nChange-Id: I65a51ae3a52dd4af335fe5c278056b8c2cbd8948\n"
    },
    {
      "commit": "8df49ad2467ec2d48f94a925162185c34bf6e68b",
      "tree": "00161cd65c6292eebd000699534b554b2c52be0a",
      "parents": [
        "4442d512c66aa32a26fe2e652e55ad05249ea3da"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 16:57:27 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 14 12:52:42 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add strlcpy / strlcat support\n\nAdd strlcpy / strlcat support to FORTIFY_SOURCE. This allows\nus to do consistency checks on to ensure we don\u0027t overflow buffers\nwhen the compiler is able to tell us the size of the buffer we\u0027re\ndealing with.\n\nUnlike previous changes, this change DOES NOT use the compiler\u0027s\nbuiltin support. Instead, we do everything the compiler would\nnormally do.\n\nChange-Id: I47c099a911382452eafd711f8e9bfe7c2d0a0d22\n"
    },
    {
      "commit": "009f38478e6a1c47aa355b0aed80b69ba91b9c61",
      "tree": "4ddfedaecd744900e449d68972157afb99f27908",
      "parents": [
        "76656afc6dd069fcfda5768e6e54bb85e4e99942"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Fri Jun 08 14:39:11 2012 -0700"
      },
      "committer": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Mon Jun 11 11:30:56 2012 -0700"
      },
      "message": "Added actual event logging calls to the FORTIFY_SOURCE methods.\n\nChange-Id: I3bf4fa8678c33187cb8ce4b75e666ddcd24403ab\n"
    },
    {
      "commit": "76656afc6dd069fcfda5768e6e54bb85e4e99942",
      "tree": "8fc474895f6bffba90a06989e9a168fbaaaff99a",
      "parents": [
        "f41855949d5f19e0fc1f8873278ae21c52dd5676"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 07 16:30:02 2012 -0700"
      },
      "committer": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Fri Jun 08 20:18:19 2012 -0700"
      },
      "message": "_FORTIFY_SOURCE: check for integer overflows\n\nEnsure that strcat / strncat check for integer overflows\nwhen computing the length of the resulting string.\n\nChange-Id: Ib806ad33a0d3b50876f384bc17787a28f0dddc37\n"
    },
    {
      "commit": "71a18dd435e96564539b5af71b8ea5093a2109a1",
      "tree": "fd59c2a7cc23b663d090b0b8843a5d19c97df7d0",
      "parents": [
        "7d11009a970732ea18f8a0599d63c94eab9ec3f0"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 07 14:01:26 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jun 07 14:19:52 2012 -0700"
      },
      "message": "_FORTIFY_SOURCE: add memset / bzero support\n\nAdd _FORTIFY_SOURCE support for the following functions:\n\n* memset\n* bzero\n\nMove the __BIONIC_FORTIFY_INLINE definition to cdefs.h so it\ncan be used from multiple header files.\n\nChange-Id: Iead4d5e35de6ec97786d58ee12573f9b11135bb7\n"
    },
    {
      "commit": "0a2301598c207fd1b50015984942fee5e8511593",
      "tree": "161496d8ec411c14f7f82990e82e970c7e328a2a",
      "parents": [
        "31431f454a9d3d3dde46de0e3c39cc409a39c436"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 04 15:20:25 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 05 15:44:31 2012 -0700"
      },
      "message": "libc: implement some FORTIFY_SOURCE functions\n\nAdd initial support for -D_FORTIFY_SOURCE to bionic for the\nfollowing functions:\n\n* memcpy\n* memmove\n* strcpy\n* strcat\n* strncpy\n* strncat\n\nThis change adds a new version of the above functions which passes\nthe size of the destination buffer to __builtin___*_chk.\n\nIf the compiler can determine, at compile time, that the destination\nbuffer is large enough, or the destination buffer can point to an object\nof unknown size, then the check call is bypassed.\n\nIf the compiler can\u0027t make a compile time decision, then it calls\nthe __*_chk() function, which does a runtime buffer size check\n\nThese options are only enabled if the code is compiled with\n-D_FORTIFY_SOURCE\u003d1 or 2, and only when optimizations are enabled.\n\nPlease see\n* http://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html\n* http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html\n\nfor additional details on FORTIFY_SOURCE.\n\nTesting: Compiled the entire Android tree with -D_FORTIFY_SOURCE\u003d1,\nand verified that everything appears to be working properly.\nAlso created a test buffer overflow, and verified that it was\ncaught by this change.\n\nChange-Id: I4fddb445bafe92b16845b22458d72e6dedd24fbc\n"
    },
    {
      "commit": "cb1df9161666db2a312814752de67fc623149a9b",
      "tree": "aa6db13b060299aad917d756bce73d0c84306a4d",
      "parents": [
        "89d3fdcae26980bf81a4622c3c83e48ead4c1c3a"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue Oct 25 13:06:09 2011 +0400"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Dec 05 18:37:10 2011 -0800"
      },
      "message": "string: Fix wrong comparison semantics\n\nChars are signed for x86 -- correct the comparison semantics.\n\nChange-Id: I2049e98eb063c0b4e83ea973d3fcae49c6817dde\nAuthor: Liubov Dmitrieva \u003cliubov.dmitrieva@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "bf018299bd556867ffcd573417c11f6c83f601cd",
      "tree": "374ace0548e37bdca78014a706472cd7d026211e",
      "parents": [
        "2848ca2c05fc30d1ff3405c9467605dce82c5d90"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 13 10:53:53 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 13 10:54:34 2011 -0700"
      },
      "message": "Fix strerror(3) for errno 0.\n\nEveryone else\u0027s C library says \"Success\". We say \"Unknown error: 0\", which\nisn\u0027t really true.\n\nChange-Id: I9f9054779123eda996634e5f7a277789b6805809\n"
    },
    {
      "commit": "0f67de14e605f519d74ed6fff67c6712158459d3",
      "tree": "a68c0e239c76d60c6d5dc6f193a485b04553cb35",
      "parents": [
        "9a3305128920e0ff018d267d1bf4f5e58a5146e5"
      ],
      "author": {
        "name": "Johannes Carlsson",
        "email": "johannes.carlsson.x@sonyericsson.com",
        "time": "Thu Feb 03 15:16:15 2011 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Thu Feb 03 15:17:13 2011 +0100"
      },
      "message": "Use more optimized version of memmove\n\nOn ARM there is currently no assembler optimized memmove in libc.\nThere is however a more optimized bcopy which copies long instead\nof bytes where possible. This almost doubles the performance in\nbest case.\n\nChange-Id: I1f1cd27529443358047c385730deaf938ce4e642\n"
    },
    {
      "commit": "5b81b918173b4bf446c1a85240c094e4dd77231f",
      "tree": "dd4cab2ff2183ab7a13833f343870d57baaa1250",
      "parents": [
        "af00228b705b53165c132a22b30c2d6cbb9acd13"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Oct 07 11:03:32 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Oct 07 11:03:32 2010 +0200"
      },
      "message": "libc: optimize memmove() with memcpy() if possible.\n\nChange-Id: I90e578fdc82e427caee8fa4157ce3f8c6c99926d\n"
    },
    {
      "commit": "af00228b705b53165c132a22b30c2d6cbb9acd13",
      "tree": "b66b8b3ce14c1731e6bebad7fcdc2bf019563d71",
      "parents": [
        "defd162212de3789d2268a1f3339c2a6097fa825"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Sep 28 10:24:20 2010 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Sep 28 10:24:20 2010 -0700"
      },
      "message": "Revert \"libc: memmove(): non-overlapping block optim.\"\n\nThis reverts commit 80fba9a2fe4eacaabee99cf0bbead872c2792231,\nwhich caused the system to not boot anymore, aborting with:\n\"java.lang.RuntimeException: Missing static main on com.android.server.SystemServer\".\n\nChange-Id: I745e0a23c728cccf5f95a3c7642d544478a4e57e\n"
    },
    {
      "commit": "80fba9a2fe4eacaabee99cf0bbead872c2792231",
      "tree": "35cf24d62149365bdad0994d837654e3d05399d9",
      "parents": [
        "b9e49ad56e5776ace7c6eab2e997d5b7acb16792"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sun Sep 26 22:40:02 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Sep 27 17:34:41 2010 +0200"
      },
      "message": "libc: memmove(): non-overlapping block optim.\n\nChange-Id: I5652f4f97ca59d95176443fc27c737ef76258183\n"
    },
    {
      "commit": "e44cb1a35c4bf3f30e2b9e3961c57b7ca6fa7849",
      "tree": "a505afada0c66179cb978fd3c7694a50e67e3486",
      "parents": [
        "6a51defa034a1c033ed01f7de444c0a4fc615249"
      ],
      "author": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Aug 31 15:19:38 2010 -0700"
      },
      "committer": {
        "name": "rich cannings",
        "email": "richc@google.com",
        "time": "Tue Aug 31 15:19:38 2010 -0700"
      },
      "message": "Fix return value.\n\nReturn a valid pointer (not NULL) when the character \"c\" is at the end of \"src\".\n\nChange-Id: Iab0b677943f2c8a9fbb255c44689f5d6dc3535d7\nExample:\n  memccpy(dest, \"xzy\", \u0027y\u0027, 3) should return dest+3 rather than null.\n"
    },
    {
      "commit": "d791da79432064bc954fedf8d4e4394aaafefe75",
      "tree": "6d731e33e6d3f2ff28feff74ef07cc680aee886e",
      "parents": [
        "0be7eda75a14815aaa3e5cd5d5d4e5d25dc35d1c",
        "aba3ee7d322f30735433e2e6ae98fa3d849a1c7e"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon May 10 14:52:02 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Mon May 10 14:52:02 2010 -0700"
      },
      "message": "Merge \"string: tidy up strndup()\""
    },
    {
      "commit": "8ab5b02b5f58d9b2f050a98b189284a3d6263d7b",
      "tree": "2f92218f958f60550990b0649011c93bf578b90a",
      "parents": [
        "87ae0da81716d61f556b1ee456a6764a1f635e55",
        "bdc6e3c83f70db35603260d5c1baa8097cb765fe"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon Mar 29 15:05:47 2010 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Mon Mar 29 15:05:47 2010 -0700"
      },
      "message": "Merge changes Ibdc6e3c8,I9bcb91a2\n\n* changes:\n  Correct generic memset implementation\n  Generic memcpy should define MEMCOPY before including bcopy.c\n"
    },
    {
      "commit": "bdc6e3c83f70db35603260d5c1baa8097cb765fe",
      "tree": "5876d8cb021bbd72508dea2c3c5426512011f685",
      "parents": [
        "9bcb91a212ab4b9bd5892f4cf3adda6a549b8fbc"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Fri Feb 05 15:13:55 2010 -0800"
      },
      "committer": {
        "name": "Dan Hazon",
        "email": "dan@mips.com",
        "time": "Fri Feb 05 15:13:55 2010 -0800"
      },
      "message": "Correct generic memset implementation\n\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\n"
    },
    {
      "commit": "9bcb91a212ab4b9bd5892f4cf3adda6a549b8fbc",
      "tree": "cab2fee8e6cab072acece72b269b7a1349a3209b",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Fri Feb 05 15:13:55 2010 -0800"
      },
      "committer": {
        "name": "Dan Hazon",
        "email": "dan@mips.com",
        "time": "Fri Feb 05 15:13:55 2010 -0800"
      },
      "message": "Generic memcpy should define MEMCOPY before including bcopy.c\n\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\n"
    },
    {
      "commit": "aba3ee7d322f30735433e2e6ae98fa3d849a1c7e",
      "tree": "6eac980a5bc405285906c6129252f082de8bae10",
      "parents": [
        "30a419afc3cdb641e350c7cfde753877675958e0"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:29:59 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:29:59 2010 -0200"
      },
      "message": "string: tidy up strndup()\n\nIt decreases code size:\n   text    data     bss     dec     hex filename\n    161       0       0     161      a1 strndup-BEFORE.o\n    153       0       0     153      99 strndup-AFTER.o\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "30a419afc3cdb641e350c7cfde753877675958e0",
      "tree": "b4484c80c91c40584edcba2625c196b36a3bae0c",
      "parents": [
        "8f92500fa93d174d077af28d8af3e3cb732e0aff"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:28:49 2010 -0200"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:28:49 2010 -0200"
      },
      "message": "improve readability of string: fix indentation and remove trailing spaces\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\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": "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e",
      "tree": "c06064fc9022ef63a40f83a91292103784f49780",
      "parents": [
        "d37527501c85edcb3a6a7c8a0b6297d52d434897"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\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"
    }
  ]
}
