)]}'
{
  "log": [
    {
      "commit": "1628eb1d43008c52b00ec98d10c4fd9e8b6fc7c5",
      "tree": "dbc976246dd99c44e949e410290283fd6dd882e1",
      "parents": [
        "4ad5066e1de326e5db46df18eeade9a88bc11bec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 10:47:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 10:47:33 2014 -0700"
      },
      "message": "Explain how wcswcs ended up in ndk_cruft.cpp.\n\nChange-Id: Ie45148095b2d5c3896c0df623d5d06a700c33c70\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": "ac6467587e864d199377f14281da4641f979a68a",
      "tree": "138acbcc6c8d89da231342e9698de1a0b08580cd",
      "parents": [
        "9a3ad98fd69a276f7c5fca0489d5657be75fcf69"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 02:10:49 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 12:32:38 2014 -0700"
      },
      "message": "Revert \"Revert \"Remove ftime from bionic LP64\"\"\n\nThis reverts commit 0921204660b9597de795065d0350a787035ad589.\n\nChange-Id: I749af8d7d429cda9f9d09a75bd30df54e6b1dd65\n"
    },
    {
      "commit": "462abab12b074c62c0999859e65d5a32ebb41951",
      "tree": "c0979cfcae24863834ccc28821bd7d1483bac732",
      "parents": [
        "72dc1c22dc6a92dea925398c9e3880364ab29c1c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 13 16:51:24 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 16 10:12:37 2014 -0700"
      },
      "message": "Removes getdtablesize(3) from LP64.\n\ngetdtablesize(3) was removed fro POSIX 2004. Keep the symbol around in LP32 for\nbinary compatibility, but remove the declaration from unistd.h.\n\nBug: 13935372\nChange-Id: I1f96cd290bf9176f922dad58bd5a7ab2cae7ef0f\n"
    },
    {
      "commit": "8229ae46f4fb165a18da4dca1be74c4c099c3ee7",
      "tree": "43204bf27e85e7e18a6fa87d7db7398af583b280",
      "parents": [
        "0f690d9eda1893e66223138d2b930eb3e0164820"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 13 16:04:41 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jun 13 16:04:41 2014 -0700"
      },
      "message": "Removes wait3(2) from LP64.\n\nwait3(2) was removed from POSIX 2004. Keep the symbol around in LP32 for binary\ncompatibility, but remove the declaration in sys/wait.h.\n\nBug: 13935372\nChange-Id: Ic715fce6781aae43b4ac6d745dc6d1e6b9914e71\n"
    },
    {
      "commit": "bffbfeed7a595dcbe5843a77d84c409a0225b4e1",
      "tree": "2df025b90853eeeef5f8dc7b623617f96ecc8914",
      "parents": [
        "19718f0cd605f55df26823c67b62ceab6fe99a00"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 20:41:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 20:41:42 2014 -0700"
      },
      "message": "Add the missing issetugid binary compatibility stub.\n\nBug: 14569474\nChange-Id: I3bedc1a0acf356af76424ceaf62ae7e85239f617\n"
    },
    {
      "commit": "d1ead2af8bf2f6bb801da272e3778f89efefe613",
      "tree": "0b9ad65d08c8d28d4ce1d71aff1c46853a0322cb",
      "parents": [
        "087b3cfa5b56c2e4a29cca225fdb1956033868ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:24:20 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:24:20 2014 -0700"
      },
      "message": "Fix ndk_cruft.cpp __getdents64 build failure.\n\nChange-Id: Ia463113da0575b36b5a9935d8d45e7bd2c801357\n"
    },
    {
      "commit": "3d5cb30d23cfc6a72f01c00246e69a2c614c8228",
      "tree": "25e525111f2e2181c6544e96eebc4ce6ec11777e",
      "parents": [
        "c3bdc792be78d788663ff9b5e019b4af852dc6f7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 11:44:55 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 06 15:05:58 2014 -0700"
      },
      "message": "Remove getdents from bionic.\n\nBug: 11156955\nChange-Id: I6c306989801be552d85fba8a50dcdc79282fb9d2\n"
    },
    {
      "commit": "205dd7d9b3ba314ef8601e4613823c2d62a0605b",
      "tree": "06109b7334bace518e53cd8c0b6bbf3c590839c0",
      "parents": [
        "8aabecf35c71a8255db259cba01005eea10485cf"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 10:14:19 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 08:21:17 2014 -0700"
      },
      "message": "Remove bsd_signal and sysv_signal from bionic LP64.\n\nbsd_signal was removed in POSIX 2008, sysv_signal was never POSIX.\n\nBug: 13935372\nChange-Id: I7688e5cc317247ff075dcf99b598f515fb4f15c4\n"
    },
    {
      "commit": "0921204660b9597de795065d0350a787035ad589",
      "tree": "4f53609088f6d2c5a53a73b03737fdb82c8a0f38",
      "parents": [
        "26d6799bbe170b0955f564974b584c1471efdca1"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 00:50:43 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 05 00:50:43 2014 +0000"
      },
      "message": "Revert \"Remove ftime from bionic LP64\"\n\nBreaking some build... will look in to it later.\n\nThis reverts commit 26d6799bbe170b0955f564974b584c1471efdca1.\n\nChange-Id: I35fa770221be3a181bd37c6c3dce1bf37a69a4a1\n"
    },
    {
      "commit": "26d6799bbe170b0955f564974b584c1471efdca1",
      "tree": "5291e782c3d8b431f666ba38119721f45a4862bd",
      "parents": [
        "623dce3bd43975ca5b8698955a9fd8f18e9d5963"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 15:20:17 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 16:25:24 2014 -0700"
      },
      "message": "Remove ftime from bionic LP64\n\nBug: 13935372\nChange-Id: I5dd31147143b23a090a3b75b846dc5354e599121\n"
    },
    {
      "commit": "001f8f041bf21c53d4a0b919ef2c859b047bac0a",
      "tree": "4f53609088f6d2c5a53a73b03737fdb82c8a0f38",
      "parents": [
        "e120cba31df5249b720579312e799bd1c65f8e3d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 09:53:06 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 12:01:56 2014 -0700"
      },
      "message": "Removes wcswcs from bionic for LP64.\n\nBug: 13935372\nChange-Id: I0deb15e769da4fa81bb65a87f3c86db5163a5796\n"
    },
    {
      "commit": "b30aff405a220495941f1673b0a5e66c4fa8b84c",
      "tree": "3bf667c009cf468c040ccaae6e81d468b4fd0254",
      "parents": [
        "52f74322b1d72d57146107f32ee2c76c421bf4b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 28 19:35:33 2014 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 28 18:31:15 2014 -0700"
      },
      "message": "Revert \"Revert \"Lose the hand-written futex assembler.\"\"\n\nThe problem with the original patch was that using syscall(3) means that\nerrno can be set, but pthread_create(3) was abusing the TLS errno slot as\na pthread_mutex_t for the thread startup handshake.\n\nThere was also a mistake in the check for syscall failures --- it should\nhave checked against -1 instead of 0 (not just because that\u0027s the default\nidiom, but also here because futex(2) can legitimately return values \u003e 0).\n\nThis patch stops abusing the TLS errno slot and adds a pthread_mutex_t to\npthread_internal_t instead. (Note that for LP64 sizeof(pthread_mutex_t) \u003e\nsizeof(uintptr_t), so we could potentially clobber other TLS slots too.)\n\nI\u0027ve also rewritten the LP32 compatibility stubs to directly reuse the\ncode from the .h file.\n\nThis reverts commit 75c55ff84ebfa686c7ae2cc8ee431c6a33bd46b4.\n\nBug: 15195455\nChange-Id: I6ffb13e5cf6a35d8f59f692d94192aae9ab4593d\n"
    },
    {
      "commit": "001707363ddee680d466c88dd330900683dadf63",
      "tree": "f08b347664f3c458b804e89397134f4fb6144506",
      "parents": [
        "d4f37110ce4b8439dd30540565f7c73e00cfe2fb"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat May 24 16:47:14 2014 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 24 20:13:13 2014 -0700"
      },
      "message": "Restore tkill for LP32.\n\nlibmono from Unity still requires tkill(2).\n\nChange-Id: I37a1994b08086c7fedb5c78ea0dadf2d72bc1463\nSigned-off-by: Anthony King \u003canthonydking@slimroms.net\u003e\n"
    },
    {
      "commit": "bd3a98c6b9850a8e55fb0e0ed9f045212c494881",
      "tree": "db21005b5d19e5025952afafc6530efc120e5f02",
      "parents": [
        "1c4d83012fea4e6d011215bef1665cf68d2ac47c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 24 17:19:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat May 24 17:19:36 2014 -0700"
      },
      "message": "Restore __futex_wake and __futex_wait for LP32.\n\nShould fix Skype:\n\n  java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol \"__futex_wake\" referenced by \"libsliq.so\"...\n\nBug: 15196718\nChange-Id: I8a18e18d830f0436e820cbde577121bd92710803\n"
    },
    {
      "commit": "fcac8ff97f6b6cced6546e0096cadc1039b68b5e",
      "tree": "06ea666f735a14951c3facd2cb986d8835798399",
      "parents": [
        "b2b0f7e1ae0a0459b41a7732b84f58d62373e512"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 01:24:30 2014 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 11:27:06 2014 +0100"
      },
      "message": "Switch to POSIX dprintf/vdprintf.\n\nBug: 11156955\nChange-Id: I734bd02db514367ab119a48304aae9767958e367\n"
    },
    {
      "commit": "eae5902e73dc4381811e08fd2334bf4a9300a928",
      "tree": "2ba628d1e74d046bd87ec060a68d0cc6d7b52100",
      "parents": [
        "635edbdf93a127da7db77d9cd174615734b4fb85"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 17:56:42 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 17:56:42 2014 -0700"
      },
      "message": "Remove strntoimax and strntoumax from the future.\n\nWhere do these turds come from?\n\nChange-Id: Id9ad2cc85c6128aa63b5d56ff2aa455bde39a5eb\n"
    },
    {
      "commit": "efbdb53f84f4e1faf38f3c1a4cb60a83b9885ef4",
      "tree": "ce1cefce8be4e92dec242f1a06672b1dfbf566d7",
      "parents": [
        "5f149f1bdef31d198c0e84fd8c904204d263e825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 15:17:19 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 15:17:19 2014 -0700"
      },
      "message": "Remove a non-standard turd: strtotimeval.\n\nChange-Id: I1b1e40746cb573e3fb73a5276969b40c5da36d15\n"
    },
    {
      "commit": "a4eafa6dbc98378f3fa759fec8590871e2b5ae29",
      "tree": "4b8a1a0a8c8070ae4845d9dfcaa88daab380ae68",
      "parents": [
        "10f6beb3eb46cb2488427f58dccdd7bbfab5a250"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 10 18:10:04 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 11 10:44:36 2014 +0000"
      },
      "message": "Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr\n\nMoved existing definitions to ndk_cruft to preserve NDK compatibility.\n\nBug: 13281069\nChange-Id: I6f260de69afa55a6274f0d13145c19ac6517b9d5\n"
    },
    {
      "commit": "152b9de19ade833ada124390ef153e53d3d3e2ed",
      "tree": "96e0f98537c7420007bbb3452dcbe5d57bbf5fe3",
      "parents": [
        "638e7892c63c9d6968c0cf2e98ace89b9c5b2f26"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 15:54:40 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 15:54:40 2014 -0700"
      },
      "message": "Remove non-standard memswap.\n\nChange-Id: I06548dda339987b755ef7139c590ca3e1f9fe0a9\n"
    },
    {
      "commit": "0e44bc3baeb1677e5fbdda87a737b9c508c95132",
      "tree": "1470737507c2d3924297e61e463edc18a191cc8e",
      "parents": [
        "b26e4944e2a5bf4b7e33fa38fb17a3b76c7fe0f7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 15:55:31 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 15:55:31 2014 -0800"
      },
      "message": "Remove \u003casm/page.h\u003e.\n\nIf we have PAGE_SIZE/PAGESIZE, POSIX says they should be in \u003climits.h\u003e.\n\nChange-Id: I3c2d574ea2aea81f524874a156361411a4ffa18e\n"
    },
    {
      "commit": "062092543fdbd6fa2676e4f5b37a15f7bba94332",
      "tree": "1363126a8783cca6b0ae3faf7cab2657d1934323",
      "parents": [
        "7115c80231aa88272294076c8775c09727ece85a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 16:20:54 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 16:33:39 2013 -0800"
      },
      "message": "Clean up the 32-bit kernel support, fix LP64 fcntl declaration.\n\nIn practice, thanks to all the registers the stubs don\u0027t actually change,\nbut it\u0027s confusing to have an incorrect declaration.\n\nI suspect that fcntl remains broken for aarch64; it happens to work for\nx86_64 because the first vararg argument gets placed in the right register\nanyway, but I have no reason to believe that\u0027s true for aarch64.\n\nThis patch adds a unit test, though, so we\u0027ll be able to tell when we get\nas far as running the unit tests.\n\nChange-Id: I58dd0054fe99d7d51d04c22781d8965dff1afbf3\n"
    },
    {
      "commit": "567a8de3ca5b4c4f033bfbcdd339a3fd59a76227",
      "tree": "1a7f98471fcdec66ad6a8a9e8805aaf2f4e7556f",
      "parents": [
        "972885499255a9368e96332f9da0d28b2436d042"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 17:14:55 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 17:14:55 2013 -0700"
      },
      "message": "Start moving 32-bit cruft somewhere it won\u0027t pollute 64-bit.\n\nChange-Id: I03a6a50a5243f29e50fb58a3cf8b5e7198640baa\n"
    }
  ]
}
