)]}'
{
  "log": [
    {
      "commit": "e412f8944ec8d73739c876899fabef7f87bb8168",
      "tree": "1e9d44f0cf5d625dea10c5fd5aa45c15ab45a35e",
      "parents": [
        "3a528f1cbfb053e09101a7b2e1ae767993929206"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 14:00:45 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 14:00:45 2016 -0700"
      },
      "message": "Clean up 32-bit x86 memset assembler.\n\nChange-Id: I2d334db29226f9c60cf20220a569f1b772bf7c66\n"
    },
    {
      "commit": "3a528f1cbfb053e09101a7b2e1ae767993929206",
      "tree": "ef796345ae5c7e112d156e289bbfbb17e4b2990c",
      "parents": [
        "3318c56c99e7edf0a744a47f50478a5ed372c989"
      ],
      "author": {
        "name": "Lev Rumyantsev",
        "email": "levarum@google.com",
        "time": "Fri Jul 29 17:55:42 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 09:59:19 2016 -0700"
      },
      "message": "Fix x86 __memset_chk.\n\nWhen __memset_chk_fail moved to C++, we didn\u0027t take into account\nthat the stack wasn\u0027t set up correctly for the jump from assembler.\nPresumably no one had run the 32-bit x86 tests until now!\n\nBug: http://b/30513094\nChange-Id: Iab9fbc731b6bfecd7ca4d3f3844d0568a5d30d86\n"
    },
    {
      "commit": "204990cc83769396f78d6119e142b5344f4ea68f",
      "tree": "c726dbe32b9f98c57c14ed3e48e23f926886e245",
      "parents": [
        "e725dc164015d873b64639f0fee9ba5c30175f4c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 24 22:34:47 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 24 22:34:47 2016 -0700"
      },
      "message": "Fix x86 __memset_chk.\n\nThe stack offsets assumed we\u0027d pushed %ebx. Unlike x86-64 we can\u0027t fall\nthrough, but we can avoid repeating work we\u0027ve already done.\n\nChange-Id: I7e5f9be50983ed6178dd0c0534042da7ea30ad0c\n"
    },
    {
      "commit": "81d6a18c69b71288c0ab0f65e0ee594f752febc8",
      "tree": "89685f4a7848b242f6fbdf8caa42005aa059d7e7",
      "parents": [
        "f3b42e5ae7727234cac586c20c230466886a7232"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 03 16:10:33 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 03 16:10:33 2016 -0800"
      },
      "message": "Add x86 __memset_chk assembler.\n\nChange-Id: Ic6732f761ea8a41f70d5ff59d47ad38417d17cc2\n"
    },
    {
      "commit": "bed110af26f947057fd7940ba383b6f562d2df97",
      "tree": "9bbd7b566df7613598c1fa5377f7f135b1252853",
      "parents": [
        "6809af03759e27c87598ea56e4f6a8c9b6267add"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 03 10:41:42 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 03 10:41:42 2016 -0800"
      },
      "message": "Clean up bcopy cruft.\n\nAlso remove some generic x86 assembler that\u0027s never built.\n\nChange-Id: Ic126de2eee646b5ba2b6ee549679ba90d67a48bb\n"
    },
    {
      "commit": "01d5b946acac8519d510781967bf538acdae1853",
      "tree": "8a5558513fc4642648887d3428f02eb2906c5021",
      "parents": [
        "5e57039c24d8aa777480e33255d627ca28af7dfe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 02 17:18:18 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 02 17:21:07 2016 -0800"
      },
      "message": "Remove optimized code for bzero, which was removed from POSIX in 2008.\n\nI\u0027ll come back for the last bcopy remnant...\n\nBug: http://b/26407170\nChange-Id: Iabfeb95fc8a4b4b3992e3cc209ec5221040e7c26\n"
    },
    {
      "commit": "97b6e131fd85bb0ae321d9e5a8a613f5ee373cf4",
      "tree": "cfaf65609a13604d142393086d0622d3994fc478",
      "parents": [
        "4dd56ac9a5248c9fdeffe6c0f8029a83bcb43fe4"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 17 19:17:02 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 17 19:17:02 2016 -0800"
      },
      "message": "Fix cfi directives for memmove/strlcpy.\n\nBug: 27227225\nChange-Id: I47ca82daaadb3ec24cefc3c9aa4df7ed1798aced\n"
    },
    {
      "commit": "de84e51f8c7b45869a8f83a1d5eacbf19b6d5eb5",
      "tree": "8f5e5f0790d13cf1b5633030eef666750d8feb24",
      "parents": [
        "c347a107602f3011b393f2b2407425b5d668e14e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 17 16:34:02 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 17 16:34:02 2016 -0800"
      },
      "message": "Fix cfi directives in small strncmp case.\n\nBug: 27227225\nChange-Id: Id4f88fe288109a82822ad1b2291858c1c85b0ca7\n"
    },
    {
      "commit": "592c7b4cd72e18f2f1941df3d63026d7f94ef7ce",
      "tree": "fa41291c9e0c777848fe5af732230cfde10a87e1",
      "parents": [
        "195b85a80faadcb4180f7f8192fc8ae162165892"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Jan 12 09:48:09 2016 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Jan 12 09:48:09 2016 -0800"
      },
      "message": "Explicit binary op order for both gcc and clang/llvm.\n\n* gcc assembler parses (1 \u003c\u003c n - 1) as ((1 \u003c\u003c n) - 1)\n* llvm assembler parses (1 \u003c\u003c n - 1) as (1 \u003c\u003c (n - 1))\n\nBUG: 26289334\nChange-Id: Iaaa3d07f59c0f87cb1b80b9a1c4e765b66846791\n"
    },
    {
      "commit": "c89ee272fbc2bd2ed244605b8f8c60fa50e9de15",
      "tree": "ec811a23884dc07338a6e56b3e9d6ce4d7e30ed3",
      "parents": [
        "54d76360ebfb79b57177a81632901ebe1c8fc11f"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Oct 21 16:25:35 2014 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Oct 21 16:25:35 2014 -0700"
      },
      "message": "Replace ambiguous cmp operator with cmpl.\n\nClang assembler rejects ambiguous cmp instruction.\n\nBUG: 17302482\nChange-Id: Ie8dca7e4f46e0906c47076bba21c1941482ba6b3\n"
    },
    {
      "commit": "857fa6b2a390101a92254b735cc9bc583f78dad5",
      "tree": "7f13002b78090be3a3f1263662255c67e4e97271",
      "parents": [
        "9e307af982ea9030849293b5e3307733289e3c2c"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 27 15:04:23 2014 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 27 15:04:23 2014 -0700"
      },
      "message": "Replace ambiguous cmp instruction with cmpl.\n\nClang assembler rejects ambiguous cmp instruction.\n\nBUG: 17302482\nChange-Id: I74f49de87464541f9fe6fa288e4093a9fbf37120\n"
    },
    {
      "commit": "891dedb935b50f1abb39eedfe33049a1e49283cb",
      "tree": "8066a42ec9e07537607254deb91195fb9d102a88",
      "parents": [
        "4fb0d4fb312ed696081200e65ce9bf643928e5e6"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 13 12:28:11 2014 +0200"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 13:10:20 2014 -0700"
      },
      "message": "libc: Fix \u0027index\u0027 symbol export.\n\nThe C library didn\u0027t export the \u0027index\u0027 symbol, but its C++ name-mangling\ninstead, which broke the ABI and prevented some applications from loading\nproperly.\n\nThe main reason was that the implementation under bionic/index.cpp relied\non the declaration to specify that the function has C linkage.\n\nHowever, the declaration for index() was removed from both \u003cstring.h\u003e\nand \u003cstrings.h\u003e in a recent patch, which made the compiler think it was\nok to compile the function with C++ linkage instead!\n\nThis patch does the following:\n\n- Move index() definition to bionic/ndk_cruft.cpp and ensure it uses\n  C linkage.\n\n  Note that this removes index() from the 64-bit library entirely, this\n  is intentional and will break source compatibility. Simply replacing\n  an index() call with the equivalent strchr() should be enough to fix\n  this in third-party code.\n\n- Remove bionic/index.cpp from the tree and build files.\n\n- Remove x86 assembly implementation from arch-x86/ to avoid conflict\n  with the one in ndk_cruft.cpp\n\nBUG\u003d15606653\n\nChange-Id: I816b589f69c8f8a6511f6be6195d20cf1c4e8123\n"
    },
    {
      "commit": "24614b4729a4c8665193f5793b93019b37f779b1",
      "tree": "52631806852b1c584e50f04981e1f64d99106d3f",
      "parents": [
        "346fa721ca20e481a624930425d823d452e11dfe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 12 15:35:22 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 12 15:35:22 2014 -0700"
      },
      "message": "Remove __memcmp16 from bionic.\n\nChange-Id: I2486d667d96c8900dd368d855f37c1327161efb7\n"
    },
    {
      "commit": "5a92284167ffba6d45210ef6889fa7d255c15d4f",
      "tree": "0ab0ebc49463cc1bdcad12f96ee12c5acbe51cc1",
      "parents": [
        "ebcc72070499b2ab2d1dee990d6f52814a56600e"
      ],
      "author": {
        "name": "Varvara Rainchik",
        "email": "varvara.rainchik@intel.com",
        "time": "Thu Apr 24 15:41:20 2014 +0400"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 12 13:56:59 2014 -0700"
      },
      "message": "Add 32-bit Silvermont-optimized string/memory functions.\n\nAdd following functions:\nbcopy, memcpy, memmove, memset, bzero, memcmp, wmemcmp, strlen,\nstrcpy, strncpy, stpcpy, stpncpy.\nCreate new directories inside arch-x86 to specify architecture: atom,\nsilvermont and generic (non atom or silvermont architectures are treated like generic).\nDue to introducing optimized versions of stpcpy and stpncpy,\nc-implementations of these functions are moved from\ncommon for architectures makefile to arm and mips specific makefiles.\n\nChange-Id: I990f8061c3e9bca1f154119303da9e781c5d086e\nSigned-off-by: Varvara Rainchik \u003cvarvara.rainchik@intel.com\u003e\n"
    }
  ]
}
