)]}'
{
  "log": [
    {
      "commit": "02c78a386739a8a2b3007efeb00a9ca04132100a",
      "tree": "6679bef40da8b7fbe6b3c5a479eb5c2e4e035708",
      "parents": [
        "055890686636faddbb6d5d407c67f5dcc53ac865"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 17:02:20 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 14 14:35:47 2014 -0700"
      },
      "message": "Reimplement isinf/isnan/fpclassify.\n\nAlso move isinf and isnan into libc like everyone else.\n\nAlso move fpclassify to libc like the BSDs (but unlike glibc). We need\nthis to be able to upgrade our float/double/long double parsing to gdtoa.\n\nAlso add some missing aliases. We now have all of:\n\n  isnan, __isnan, isnanf, __isnanf, isnanl, __isnanl,\n  isinf, __isinf, isinff, __isinff, isinfl, __isinfl,\n  __fpclassify, __fpclassifyd, __fpclassifyf, __fpclassifyl.\n\nBug: 13469877\nChange-Id: I407ffbac06c765a6c5fffda8106c37d7db04f27d\n"
    },
    {
      "commit": "b676aafad04f88e36658d4468054375158dbd3c1",
      "tree": "ba44c6f2c480d3078c2c7b5508f39848009af668",
      "parents": [
        "b64868a50715cfdb5c71d97144ba00acf78e2a76"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 17:50:06 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 17:50:06 2014 -0700"
      },
      "message": "Remove unnecessary #includes.\n\nChange-Id: Ie7e0c9ea03f35517c7dcf09fc808c12e55262bc1\n"
    },
    {
      "commit": "a5d83312bdeae2062a45160f54ce86c4b7b164e0",
      "tree": "7974c6adb612f384fe14b81c864b4dfb664ec05f",
      "parents": [
        "b52a4ab4e281c7adae35b3d7ae8d99b5753b870d",
        "ff64831b0965c16c95c9f81a148f30a6ef3a6c64"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 09 06:06:46 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 09 06:06:48 2014 +0000"
      },
      "message": "Merge \"Use glibc structure for __cmsg_nxthdr.\""
    },
    {
      "commit": "c4936e20a3a8772cc393423037be36091e68acc2",
      "tree": "17df342ad605fcb25812936a34d68e3f225b387e",
      "parents": [
        "ac70d2e1fe71f98232942237c2b463ea3adbf662"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 17:05:05 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 19:37:38 2014 -0700"
      },
      "message": "Flesh out \u003clocale.h\u003e.\n\nThis is a trivial implementation that only supports the C/POSIX locale.\n\nChange-Id: Ib11cea4249e1862aca96a8b94d58ea9a418cbe75\n"
    },
    {
      "commit": "ff64831b0965c16c95c9f81a148f30a6ef3a6c64",
      "tree": "8dbd07fa5ed8323b98063427eaa8b72a4ac49102",
      "parents": [
        "38687593141ca4a4072210417877590e44a10b0c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 07 20:39:20 2014 +0300"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 09 00:55:24 2014 +0300"
      },
      "message": "Use glibc structure for __cmsg_nxthdr.\n\nBug: 13418328\nChange-Id: I7e656b373e53e80d708325321e48dcedacf5086d\n"
    },
    {
      "commit": "5363a45f2b6d4eeb054710d0886bbadea8a15273",
      "tree": "907bc848885d648d631a41c768ca60b7f69bbcdf",
      "parents": [
        "5acd2d40052c55255a346167e504afb884eeb3af"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 14:34:12 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 14:34:12 2014 -0700"
      },
      "message": "Clean up localeconv(3).\n\nThe OpenBSD doesn\u0027t support C99, and the extent to which we support\nlocales is trivial, so just do it ourselves.\n\nChange-Id: If0a06e627ecc593f7b8ea3e9389365782e49b00e\n"
    },
    {
      "commit": "41059d764f347baa28b8da653a88c772daa9b738",
      "tree": "f8c851b6d89e2c96a6b2abbddae691574c278ed3",
      "parents": [
        "b9bb48bf289eec9053c6d7cc77ebbde2b4356c4b",
        "950a58e24d1019eb9d814dbb16f111a6b61e3f23"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 08 01:21:06 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 08 01:21:07 2014 +0000"
      },
      "message": "Merge \"Add stpcpy/stpncpy.\""
    },
    {
      "commit": "950a58e24d1019eb9d814dbb16f111a6b61e3f23",
      "tree": "5a91099e0ce1b9d552e7210fb914ba8d4d5ddb10",
      "parents": [
        "5f149f1bdef31d198c0e84fd8c904204d263e825"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 04 14:38:18 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 07 16:41:53 2014 -0700"
      },
      "message": "Add stpcpy/stpncpy.\n\nAdd tests for the above.\n\nAdd the fortify implementations of __stpcpy_chk and __stpncpy_chk.\n\nModify the strncpy test to cover more cases and use this template for\nstpncpy.\n\nAdd all of the fortify test cases.\n\nBug: 13746695\nChange-Id: I8c0f0d4991a878b8e8734fff12c8b73b07fdd344\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": "77e944fd46728075fe632bcb5211da9daf5b7e68",
      "tree": "078c4ed4dcd4a8d857aa948de76dec223c588e0d",
      "parents": [
        "dc5fcf3620bfc221954b3d42f459bfdcf8f48216"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 04 17:34:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 14:29:28 2014 -0700"
      },
      "message": "Implement wctomb(3) for ltrace.\n\nThis is an implementation in the style of the rest: char \u003d\u003d byte.\n\nWe might want to come back and implement UTF-8, but this is enough for ltrace.\n\nBug: 13747066\nChange-Id: Ib2b63609c9014fdef9a8491e067467c4fc5ae3cc\n"
    },
    {
      "commit": "473d06707bccf0dd707905dcbe74ba91c4d1e8a5",
      "tree": "4356b6200e8681c28c0b0ca07b986cb35e802e9a",
      "parents": [
        "1653ad5e08ba4cabfd4d81237e13a4952fac6194"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 19:07:52 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 19:07:52 2014 -0700"
      },
      "message": "Fix the POSIX timers fix.\n\nIf we\u0027re not going to wait for the timer threads to exit, we need\nanother way to ensure that we don\u0027t free the data they\u0027re using\nprematurely. The easiest way to ensure that is to let them free the\ndata themselves.\n\nChange-Id: Icee17c87bbcb9c3aac5868973f595d08569f33aa\n"
    },
    {
      "commit": "64b2963224bdd139caf667b6263e3b75e99dd20a",
      "tree": "41c763492e6402398747d390582cadca3e1d9122",
      "parents": [
        "f42df8c1ac1fd1924a6244f5b9ad472d73786949"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 13:48:30 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 01 13:48:30 2014 -0700"
      },
      "message": "Fix debug malloc for LP64.\n\nChange-Id: I5de2097b6589c0d6750b2a3bc3cbb06227de6d5f\n"
    },
    {
      "commit": "f1d7536dcfffadc91aabd0a14ec07334a334eea2",
      "tree": "85b0f36159cef4b13751d2e7a101a024092b5a45",
      "parents": [
        "4bfaf462f0c864473faaca63cc4ba9e1a1b103a8"
      ],
      "author": {
        "name": "Weichuan Yan",
        "email": "wchyan@marvell.com",
        "time": "Wed Mar 26 03:41:15 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 27 14:57:36 2014 +0000"
      },
      "message": "Fix and clean up strtotimeval\n\n- parsing of fractional part was wrong (always parsed as 0)\n- return value was also wrong in the presence of fractional parts\n- general style clean up\n\nChange-Id: I1935a63db938dbed7cacb4b5646e993a52c27f1a\nSigned-off-by: Weichuan Yan \u003cwchyan@marvell.com\u003e\n"
    },
    {
      "commit": "9e8a8dc18cb3162858feef2d4baaf3fa357aa3d2",
      "tree": "519f12143c3a294f9b6ec933fdd376363d748340",
      "parents": [
        "95c1abecc02b2a2f40b507e669b5bc17d4412bf9",
        "c20de902875dcaebde0ccd0b7a8351598f254d4c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 24 12:11:30 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 24 12:11:30 2014 +0000"
      },
      "message": "Merge \"Remove ALIGNBYTES and ALIGN from \u003csys/param.h\u003e\""
    },
    {
      "commit": "cce6c380d7c9574f823f5e038c28c793fdb55c58",
      "tree": "c61b984b07930613ac3b830b0000ff95d843d565",
      "parents": [
        "998d7b030763e8da6ff04020eedab552857587d2",
        "8664be583a4556e5ca132288e989d307d2df92ce"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 21 20:09:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 21 20:09:32 2014 +0000"
      },
      "message": "Merge \"libc: Thread IDs missing from logcat -v thread\""
    },
    {
      "commit": "c20de902875dcaebde0ccd0b7a8351598f254d4c",
      "tree": "cb4a8a75dd787d93bca11fc0a2da944a7fc2e76f",
      "parents": [
        "849e162d3bedc5ca61bdf15486268b253b9f4e93"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 20 15:21:32 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 21 09:59:34 2014 +0000"
      },
      "message": "Remove ALIGNBYTES and ALIGN from \u003csys/param.h\u003e\n\nThere are only three users of bionic definition of ALIGN and keeping it\nin sys/param.h polutes the namespace.\n\nI inline the definition in the the three places that\u0027s used.\n\nBug: 13400663\nChange-Id: I565008e8426c38ffb07422f42cd8e547d53044e9\n"
    },
    {
      "commit": "753ad778bc1c3aecc4cd82b8387a7dc8a9b44d34",
      "tree": "6eedabf25b6c892f6eb95b847e3100c8245dcacf",
      "parents": [
        "2cc58603d5fd68ec582984318fb3c5f8865a186f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 20 20:47:45 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 20 20:47:45 2014 -0700"
      },
      "message": "Fix deadlock in timer_delete.\n\nIf the callback function for a timer did a timer_delete, the function\nwould never return. The problem was that the timer_delete function would try\nto wait until the timer thread has finished. Waiting for yourself to finish\ndoesn\u0027t work very well.\n\nBug: 13397340\nChange-Id: Ica123a5bafbc8660c8a4a909e5c2dead55ca429d\n"
    },
    {
      "commit": "8664be583a4556e5ca132288e989d307d2df92ce",
      "tree": "b60fb319aec98cff9f636db29f1432a2ba1096c3",
      "parents": [
        "2cc58603d5fd68ec582984318fb3c5f8865a186f"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 20 16:07:55 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 20 16:35:18 2014 -0700"
      },
      "message": "libc: Thread IDs missing from logcat -v thread\n\n- stuff caller\u0027s thread id into the packet.\n\nBug: 13568206\nChange-Id: If8b318ef75c7dcdddb05da8ac3038860f0fda5ec\n"
    },
    {
      "commit": "f2cea021ab2c6d7d7feeb40cca098aa132605876",
      "tree": "119daf06820264a62bf3290bbbf8839dcb0196e3",
      "parents": [
        "6ece7fc33a389ef9bcbe78a83a6633e4cb4e4743"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "message": "Clean up \u003cstdio.h\u003e macros.\n\nAlso neuter __isthreaded.\n\nWe should come back to try to hide struct FILE\u0027s internals for LP64.\n\nBug: 3453512\nBug: 3453550\nChange-Id: I7e115329fb4579246a72fea367b9fc8cb6055d18\n"
    },
    {
      "commit": "879d33049946fa2293a61dbdb20addace953922b",
      "tree": "6711f84820764224551d9dfec174251c5c94ff0a",
      "parents": [
        "01cd78854afe5707f0d5b2b8418de07a55f8fde4"
      ],
      "author": {
        "name": "jiaguo",
        "email": "jiaguo@marvell.com",
        "time": "Thu Mar 13 17:39:58 2014 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 12:42:52 2014 -0700"
      },
      "message": "property: fix getting dirty serial value\n\n__system_property_serial just returned serial value without\nchecking if it is dirty, so check and wait until serial\nvalue is not dirty before return\n\nChange-Id: If485b6251b5555b004912c66c7c2cb455a7fdbdc\nSigned-off-by: jiaguo \u003cjiaguo@marvell.com\u003e\n"
    },
    {
      "commit": "5a8173860d65182af022be88fed0c5d8d5dcb69d",
      "tree": "907e7263b278203193247ef582a4e1a8b263e21e",
      "parents": [
        "56e1eebd39be4830f309603b38e4b1118c544fb3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 16:12:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 16:12:57 2014 -0700"
      },
      "message": "Ensure we always have symbols for atof, strtof, strtold.\n\nWe\u0027ll need a better implementation of strtold for LP64, but all our\nlong double functions are currently broken for LP64 anyway so this\nisn\u0027t a regression.\n\nChange-Id: I2bdebac11245d31521d5fa09a16331c03dc4339c\n"
    },
    {
      "commit": "8d4b5849f21dc4115ad66944dc11df838b3faa52",
      "tree": "a9d93f0a9a42b93132d6a21643cc46cdedb5e488",
      "parents": [
        "76b4f1a33caef09891114bf37562968ab627059a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 16:06:23 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 19:13:25 2014 -0700"
      },
      "message": "Clean up our termios implementation.\n\nIt\u0027s safe to fix our constant definitions because we know we never\nhad symbols before, so can\u0027t be passing the bad old constants to the new\nfunctions, or the correct new constants to the old inlines.\n\nChange-Id: I858fc680df39bdd3ba471e867833bdfa71f6224e\n"
    },
    {
      "commit": "cccfe1e17c47799deee67fa23f48d8c860390ac8",
      "tree": "6f9e16f0334ab314da4aaabea677b1c5d47f471f",
      "parents": [
        "753e1399060c08072a8fb17eb297889a2ae987d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 13:37:11 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 13:37:11 2014 -0700"
      },
      "message": "Reimplement clock(3) and switch to OpenBSD time(3).\n\nThe new implementation is a better approximation to the processor time used\nby the process because it\u0027s actually based on resource usage rather than just\nelapsed wall clock time.\n\nChange-Id: I9e13b69c1d3048cadf0eb9dec1e3ebc78225596a\n"
    },
    {
      "commit": "a0ca209ac0deef086c0e69b59168dd75df2a3f52",
      "tree": "0154bf58590810c7d716bfa46508984fc9633b82",
      "parents": [
        "a4eafa6dbc98378f3fa759fec8590871e2b5ae29"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 10 18:25:36 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 11 10:44:50 2014 +0000"
      },
      "message": "Sysconfig fixes\n\nRemove _POSIX_THREAD_ATTR_STACKADDR and _POSIX_THREAD_ATTR_STACKSIZE\nsince they don\u0027t exists. Return -1 for their corresponding values but\ndon\u0027t set errno.\n\nBug: 13281069\nChange-Id: Ice29b4dfebe2b474212e40ee726d86782a3064b9\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": "247dc91889ffc8b71fc3371edba9d834afab96ab",
      "tree": "5e7fc130a6cfee3b122b0689eaeab4a2094272c8",
      "parents": [
        "a3056591960f9d9f646135ee20804cc1a9e41106"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 17:17:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 17:17:01 2014 -0700"
      },
      "message": "Take ownership of various simple syscall wrappers.\n\nNone of these trivial functions is something we\u0027re going to get from BSD.\n\nChange-Id: Iee1d1281b73db67da5ec303da7a49748121464bf\n"
    },
    {
      "commit": "19f58efa22357bfaa6a63a0940928830e95c5123",
      "tree": "83e025603557f711c7c5966e31ba34399977dab2",
      "parents": [
        "ec674b4d064d923818d0deba9f8378d13ff6451a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:32:35 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:32:35 2014 -0700"
      },
      "message": "Switch to NetBSD utmp.c.\n\nChange-Id: Ibe94888aa48b5b28fea97fd5719a1ed7a23ddeb3\n"
    },
    {
      "commit": "57a883640f3b43bf5e332d64489b3eab67a5ac3f",
      "tree": "f00c5ee9548c676257df83f41456e3aeddaa60a7",
      "parents": [
        "7aef27468ee7683a0ce436f5453e6eb6ca12103b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:23:09 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:23:09 2014 -0700"
      },
      "message": "Switch to upstream FreeBSD ldexp.c.\n\n(Yes, this should be in libm, but it isn\u0027t. For once, this mistake predates\nbionic!)\n\nChange-Id: I1340407acbcdc0151dee969a38ba490bdd5e6767\n"
    },
    {
      "commit": "7aef27468ee7683a0ce436f5453e6eb6ca12103b",
      "tree": "b4c2b6765c0817543ed8dd6ac185d468b7528d90",
      "parents": [
        "321ecc4eaf9d061905f009494b420a604e1d973e",
        "c8937eadf4a45afebe586dcea7a8ed882f3bec3b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 23:21:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 10 23:21:08 2014 +0000"
      },
      "message": "Merge \"Switch to OpenBSD wcscoll.\""
    },
    {
      "commit": "c8937eadf4a45afebe586dcea7a8ed882f3bec3b",
      "tree": "393671d39ed1809074c7e58d728b128b5f7df910",
      "parents": [
        "638e7892c63c9d6968c0cf2e98ace89b9c5b2f26"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:11:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 10 16:11:59 2014 -0700"
      },
      "message": "Switch to OpenBSD wcscoll.\n\nChange-Id: I1050ef728e18124656e76f32b42ac9a4688f252d\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": "04620a3cd7bdea0d1b421c8772ba3f06839bbe9c",
      "tree": "cbc1d4ecfc8e681d69dc7658f91c3078b46bd4bd",
      "parents": [
        "333e2ae87dac85d6420786e9e12ffd7ea84dae38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 07 17:59:05 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 07 17:59:05 2014 -0800"
      },
      "message": "Fix pthread_detach for already-exited threads.\n\nChange-Id: I2bf7f41234d93b226132a4c51705f4186f4961c3\nReported-by: Paresh Nakhe \u003cpnakhe@codeaurora.org\u003e\n"
    },
    {
      "commit": "4d46c940315af2d93efb44e751b69ea6880a5d65",
      "tree": "e826802683bf05cbb4ef822e3b5a37485a45fe00",
      "parents": [
        "b145b5ef7c91ec76e4dc8450f70b7af80873b46e",
        "4b558f50a42c97d461f1dede5aaaae490ea99e2e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Mar 08 00:50:56 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 08 00:50:56 2014 +0000"
      },
      "message": "Merge \"Rewrite the POSIX timer functions.\""
    },
    {
      "commit": "4b558f50a42c97d461f1dede5aaaae490ea99e2e",
      "tree": "c239a686131cdda28272c961ce98febbc0c772f8",
      "parents": [
        "bef5016491eed41521f514d5c5528e2274689948"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 15:58:02 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 07 16:49:46 2014 -0800"
      },
      "message": "Rewrite the POSIX timer functions.\n\nThis is a much simpler implementation that lets the kernel\ndo as much as possible.\n\nCo-authored-by: Jörgen Strand \u003cjorgen.strand@sonymobile.com\u003e\nCo-authored-by: Snild Dolkow \u003csnild.dolkow@sonymobile.com\u003e\nChange-Id: Iad19f155de977667aea09410266d54e63e8a26bf\n"
    },
    {
      "commit": "d40eb1594dff0103247292967f8a801ef8c0ff12",
      "tree": "bc63ab3ef922cb8c264f2fa6fe47ec32a556f878",
      "parents": [
        "087dbc6bb789dc549d8f71ea820e6fc7e69d99d2",
        "f0870c3bfeba99482392fafe6d5f49615393c2b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 07 01:03:24 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 07 01:03:25 2014 +0000"
      },
      "message": "Merge \"Fix some pthread symbols build as C++ symbol under x64 lunch.\""
    },
    {
      "commit": "9fc76027f3e1e02193f3dd98063c55918e1b4066",
      "tree": "9b07b62b5c0b809a0534c019ae18ee05ec478304",
      "parents": [
        "48d145c1ced299525ca766afd2aa34725bef5301"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Mar 05 13:44:00 2014 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Mar 05 16:59:39 2014 -0800"
      },
      "message": "libc: libc_logging 64bit compile issue\n\n- user space logger wire format for time\n\nChange-Id: I4840653e3a6ae151a02584311d1227d2fe536d0f\n"
    },
    {
      "commit": "f0870c3bfeba99482392fafe6d5f49615393c2b1",
      "tree": "1890250f9c08baa19ddd7b0a6fccaab1f95dc3d4",
      "parents": [
        "bef5016491eed41521f514d5c5528e2274689948"
      ],
      "author": {
        "name": "Halton Huo",
        "email": "halton.huo@intel.com",
        "time": "Fri Feb 21 18:05:29 2014 +0800"
      },
      "committer": {
        "name": "Halton Huo",
        "email": "halton.huo@intel.com",
        "time": "Wed Mar 05 16:34:20 2014 +0800"
      },
      "message": "Fix some pthread symbols build as C++ symbol under x64 lunch.\n\nFunctions protected with !defined(__LP64__) will be get build as C++\nsymbols for X64 build. This is not the desired work. So protect the\nimplementation with !defined(__LP64__) as well.\n\nChange-Id: I4ef50ec36e46289ab308063e24f6c5ac61a6ca8d\n"
    },
    {
      "commit": "39b644a0e270df453c53d6060cd364391bb1c512",
      "tree": "fc937b2b00e2efe603ac0bd48fc0a1c832b46456",
      "parents": [
        "a0bf9bdea24164db96ec1d5dfa2cd327942671b6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 10:55:39 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 10:55:39 2014 -0800"
      },
      "message": "Remove dead NULL checks from pthread code.\n\nGCC is removing these checks anyway because it knows the arguments\nmust be non-null, so leaving this code around is just confusing.\n\nWe know from experience that people were shipping code with locking\nbugs because they weren\u0027t checking for error returns. Failing hard\nlike glibc does seems the better choice. (And it\u0027s what the checked\nin code was already doing; this patch doesn\u0027t change that. It just\nmakes it more obvious that that\u0027s what\u0027s going on.)\n\nChange-Id: I167c6d7c0a296822baf0cb9b43b97821eba7ab35\n"
    },
    {
      "commit": "0e714a5b41451e84c5ded93a42c9a4b0a9440691",
      "tree": "86e6519cc723fb66a9432193da16b380255c22f7",
      "parents": [
        "8e541b12237f597c186820b9e18b059b620bef54"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 16:42:47 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 10:27:58 2014 -0800"
      },
      "message": "Implement POSIX pthread_mutex_timedlock.\n\nThis replaces the non-standard pthread_mutex_lock_timeout_np, which we have\nto keep around on LP32 for binary compatibility.\n\nChange-Id: I098dc7cd38369f0c1bec1fac35687fbd27392e00\n"
    },
    {
      "commit": "51e6cb33e3d7c2f44864d356a2a8e66317688f55",
      "tree": "48863111f16d659bbc0456662d67f5fc8ff3bef2",
      "parents": [
        "2c7c79e6e5e730553281b6d42e734ee2c532a660"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 03 15:38:51 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 04 11:17:13 2014 +0000"
      },
      "message": "Implement pthread_condattr_{get,set}clock.\n\nWe only support CLOCK_REALTIME and CLOCK_MONOTONIC for now,\nso we us a single bit from pthread_cond_t-\u003evalue to denote\nthe clock type. Note that this reduces the width of the counter\nto 30 bits, but this should be large enough for all practical\npurposes.\n\nbug: 13232338\n\nChange-Id: I857e7da64b3ecbb23eeac7c9f3fbd460f60231bd\n"
    },
    {
      "commit": "9bd9b7dd205e79577f5cd1d9488aabe0f213ce35",
      "tree": "502fe092fd17b7eddae73d1bebe417ff40a81889",
      "parents": [
        "15e71cd760c35a4eab09b850904581ebbdc9bee3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 11:54:21 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 11:54:21 2014 -0800"
      },
      "message": "If the kernel doesn\u0027t have MADV_MERGEABLE, stop asking for it.\n\nNote that a dynamically-linked binary will still probably see two attempts ---\none by the dynamic linker (which will set its copy of the flag so it won\u0027t try\nagain) and then one by the executable itself (which gets a new uninitialized\ncopy of the flag).\n\nChange-Id: Id6b7e47780f0f24d2ca0384a75373f4824fa8f12\n"
    },
    {
      "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": "ba76572789740ec1a04da30dd89121ef5cb0bf44",
      "tree": "d0fc08febdef41d97549daa11256f3d5f657c7d5",
      "parents": [
        "901553aaf4960c4ab21c9a090919aee8be5e62ab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 25 15:32:01 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 25 15:32:01 2014 -0800"
      },
      "message": "Fix log_backtrace assertion failure caused by LP64 fix.\n\nWhen libc.debug.malloc is enabled, stack backtraces fail with:\n\nbionic/libc/bionic/libc_logging.cpp:378: assertion \"conversion\n    specifier unsupported\" failed\n\nThe cause was a change to the format specifier from \"%08x\" to\n\"%0*x\" to pass the field width as an additional parameter.\nUnfortunately this modifier isn\u0027t supported by out_vformat() in\nlibc_logging.cpp.\n\nChanged to use \"%016x\" if __LP64__ is defined; \"%08x\" otherwise.\n\nBug: 13177507\nChange-Id: Ibf07263acf14da086d3c3788872f4b5477bd5708\n"
    },
    {
      "commit": "b6208836cb9d3254a5e2046a71ac4ec30a0efdf5",
      "tree": "43c4c2207059b037cd0b7e5d3c850640e88cc51a",
      "parents": [
        "5c7816f425cb70ca6920e816aba33ce3d691ef10"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 25 15:12:29 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 25 15:12:29 2014 -0800"
      },
      "message": "Fix LP64 builds after OpenBSD string changes.\n\nChange-Id: I07202f6484e716d153d0387fcfc023e119438251\n"
    },
    {
      "commit": "5c7816f425cb70ca6920e816aba33ce3d691ef10",
      "tree": "7f9076c57183142a7466c24cc466c22e9db6cf0d",
      "parents": [
        "a92b57c7f8230661d911f2fd6dd67a81e9a90cef",
        "53e43292aac91bf62995788cd5ca2ceb7caea283"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 25 21:41:47 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 21:41:48 2014 +0000"
      },
      "message": "Merge \"More OpenBSD cleanup (primarily string).\""
    },
    {
      "commit": "a92b57c7f8230661d911f2fd6dd67a81e9a90cef",
      "tree": "da3df37981e655f8d236facaf411d279183f63c9",
      "parents": [
        "7c1efffc249283b47309846abba8795f3fb91555",
        "d4934a70e69365c97b1378820152e134a0089b5e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 25 10:44:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 10:44:26 2014 +0000"
      },
      "message": "Merge \"Added ftw64, nftw64\""
    },
    {
      "commit": "7c1efffc249283b47309846abba8795f3fb91555",
      "tree": "51c0fb5fc7dd9fa85f36c4bc17c52d41dd525692",
      "parents": [
        "ba40a560176e6ea753d09a6a71343b81ea4c8c1e",
        "fe317a3775e16d466bb884a8e054fd77f7087bb3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 25 10:43:30 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 10:43:31 2014 +0000"
      },
      "message": "Merge \"Added mkstemp64\""
    },
    {
      "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": "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": "d4934a70e69365c97b1378820152e134a0089b5e",
      "tree": "c26c1ef275cd79486a03d9e4df76193c4a4ccc33",
      "parents": [
        "fe317a3775e16d466bb884a8e054fd77f7087bb3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 24 16:13:50 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 24 20:22:11 2014 +0000"
      },
      "message": "Added ftw64, nftw64\n\nBug: 13076637\nChange-Id: I5b926526f935b00bba14c2807b61d85f95089c33\n"
    },
    {
      "commit": "fe317a3775e16d466bb884a8e054fd77f7087bb3",
      "tree": "c26e2b737d6741add069324fc0dc8a2ad31cd731",
      "parents": [
        "da030de702b756077fec536ed139e7ea38b51022"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 21 15:11:03 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 24 20:19:19 2014 +0000"
      },
      "message": "Added mkstemp64\n\nBug: 13076637\nChange-Id: I41bf28ab3e6c7325470781e9323eeec023483df5\n"
    },
    {
      "commit": "37e9570bce0ec5c08eab53935905f1e3a133dea2",
      "tree": "cfe25aecdd5c335ea85f54a8c525f7692a110b7f",
      "parents": [
        "c6d96bb8673a4f44d84f3beaa5ed4fec1484f0ad"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 24 11:05:02 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 24 11:05:02 2014 +0000"
      },
      "message": "Fix 64-bit build.\n\nA warning about signed vs unsigned comparison was converted\ninto an error here :\n\n ...\n struct stat st;\n if (st.st_size \u003e sizeof(prop_area) {\n ...\n\nst_size is either an off64_t, which is a signed type. It\u0027s\nworth investigating why this didn\u0027t trigger a warning on 32 bit,\nwhere it\u0027s signed as well.\n\nChange-Id: Ib2622bd5c444ddcfa7fb2141f00332cbb4a0818b\n"
    },
    {
      "commit": "c9ae21a5c3b2e1baafe50f752e2e07e343d39530",
      "tree": "80d3c9ac31b5c5662b70aacd9c03d9d798ceafae",
      "parents": [
        "3572fbc8cd01d90a7f0c65a15c79abf1ece144ef"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Feb 19 17:59:05 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Feb 24 10:45:35 2014 +0000"
      },
      "message": "Move system_properties over to C++.\n\nThis change constitutes the minimum amount of\nwork required to move the code over to C++, address\ncompiler warnings, and to make it const correct and\nidiomatic (within the constraints of being called\nfrom C code).\n\nbug: 13058886\n\nChange-Id: Ic78cf91b7c8e8f07b4ab0781333a9e243763298c\n"
    },
    {
      "commit": "0133944b09d1c0a35041f7a41eb6bfb660144f4f",
      "tree": "0cb37ddb83c7cf6363d917791d76420ad6f6e1c1",
      "parents": [
        "e65055af112780623f372aca6a1f78d2b2acb34f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 18:04:58 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 21 14:30:18 2014 -0800"
      },
      "message": "Clean up our OpenBSD usage.\n\nAlso undo some of the mess where we have OpenBSD \u003cstdio.h\u003e but a mix of\ndifferent BSD\u0027s implementations.\n\nIn this first pass, I\u0027ve only moved easy OpenBSD stuff.\n\nChange-Id: Iae67b02cde6dba9d8d06fedeb53efbfdac0a8cf6\n"
    },
    {
      "commit": "db1ea3474899ebbd783aba872d3005f95a816d0f",
      "tree": "b70fedd7d69098f5141dbbb09ef41851a61eec8d",
      "parents": [
        "3623d80675e5321b92c2d88a7b7ec6bd998d81d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 17 18:42:49 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 15:39:24 2014 -0800"
      },
      "message": "Implement some of the missing LFS64 support.\n\nThis gives us:\n\n* \u003cdirent.h\u003e\n  struct dirent64\n  readdir64, readdir64_r, alphasort64, scandir64\n\n* \u003cfcntl.h\u003e\n  creat64, openat64, open64.\n\n* \u003csys/stat.h\u003e\n  struct stat64\n  fstat64, fstatat64, lstat64, stat64.\n\n* \u003csys/statvfs.h\u003e\n  struct statvfs64\n  statvfs64, fstatvfs64.\n\n* \u003csys/vfs.h\u003e\n  struct statfs64\n  statfs64, fstatfs64.\n\nThis also removes some of the incorrect #define hacks we\u0027ve had in the\npast (for stat64, for example, which we promised to clean up way back\nin bug 8472078).\n\nBug: 11865851\nBug: 8472078\nChange-Id: Ia46443521918519f2dfa64d4621027dfd13ac566\n"
    },
    {
      "commit": "ffe026680edaba268330bc67dd986d2c900ecfc7",
      "tree": "18c7511d7f5025db420b1b49820ac241ec280501",
      "parents": [
        "7f15e28dd4184015a2c990b6e45c33c35b251935",
        "3d19a8319b9c27af8aa5cfbf495da0fe7fa62d3e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 20:31:01 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 18 20:31:01 2014 +0000"
      },
      "message": "Merge \"bionic: fix __set_errno for arm64 syscalls that return a 64-bit value\""
    },
    {
      "commit": "3d19a8319b9c27af8aa5cfbf495da0fe7fa62d3e",
      "tree": "a51591477e2f6f97ae56ae027d01ca1ff8c302ef",
      "parents": [
        "d4bc9ef83b36916d5e63c4c3e4a092381473ea52"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 14 18:56:23 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 12:11:38 2014 -0800"
      },
      "message": "bionic: fix __set_errno for arm64 syscalls that return a 64-bit value\n\nbionic/libc/arch-arm64/syscalls/read.S ends with:\n    b.hi __set_errno\n    ret\nEND(read)\n\nIf __set_errno returns int, it will set w0 to 0xFFFFFFFF, which means\nx0 is 0x00000000FFFFFFFF.  When interpreted as a ssize_t that is\nINT_MAX, not -1.\n\nChange __set_errno to return long, which will cause x0 to be set instead\nof w0.\n\nChange-Id: I9f9ea0f2995928d2ea240eb2ff7758ecdf0ff412\n"
    },
    {
      "commit": "a38cb088619d3e2f2194247038c10897d1c5036e",
      "tree": "83cde27cb78ed069749b6beddb2ad5199d068214",
      "parents": [
        "d4bc9ef83b36916d5e63c4c3e4a092381473ea52"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 17 12:33:16 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 12:04:54 2014 -0800"
      },
      "message": "Clean up various warnings in bionic.\n\nChange-Id: Ic57541d0a567fd4ae79f0ad59b2ffde1130eb7d2\n"
    },
    {
      "commit": "cfbfe7059ca4e44291d065ccd4da436aedff5a73",
      "tree": "80981a799b4bcd402c77397c538c9368266453c8",
      "parents": [
        "95b808c4ae11ea5737fee63f7b61673483ea5e2d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 17 10:57:56 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 17 10:57:56 2014 -0800"
      },
      "message": "Remove duplicate definitions of MIN and MAX.\n\nThese were needed when bionic\u0027s header files were missing these macros (though\nit would have made a lot more sense to just fix the header files!) but cause\nwarnings now.\n\nChange-Id: I65a677122f4f6bd07dffc3f37a0c4c0e823d1bb0\n"
    },
    {
      "commit": "671e236d5fd2cae169c2a31d0a35e66c4fcc5556",
      "tree": "55c1a2a77c279f671d77e23ff1ee89946fd6efde",
      "parents": [
        "fc48e8cf28b80ce0f95e288eeee459b4cb932afa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 12 19:04:27 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 12 19:04:27 2014 -0800"
      },
      "message": "Restore sys_signame for LP64.\n\nmksh is using this, and we probably build as much BSD source as glibc source.\n\nChange-Id: I400d255a67f9614ca9e57090e3a2e49d2b10cba4\n"
    },
    {
      "commit": "aa0ebdafc71e1ceac78e0929b94f3bb117d0c8e9",
      "tree": "e0fa3c926172fbc3e4b1a43950ae2a7ea662deb7",
      "parents": [
        "9e572ca4163e42bcd053df2cb8557e4b61ad064d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 11 19:57:06 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 12 17:09:25 2014 -0800"
      },
      "message": "Clean up sys_signame and sys_siglist a little.\n\nWe don\u0027t need quite so much duplication because we already have a way\nto get the signal number from its name, and that already copes with the\nfact that the mips/mips64 numbers are different from everyone else\u0027s.\n\nAlso remove sys_signame from LP64. glibc doesn\u0027t have this BSD-ism.\n\nChange-Id: I6dc411a3d73589383c85d3b07d9d648311492a10\n"
    },
    {
      "commit": "0266ae5f884d72da58f33a072e865ba131234a5e",
      "tree": "48763b706806f544b1dec0ef98261bed6f21dee2",
      "parents": [
        "eeb9a9f59a58a2f042e8f6fd1a4911ae92ac5493"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 17:46:57 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 10 18:22:24 2014 -0800"
      },
      "message": "Switch \u003celf.h\u003e over to linux uapi under the covers.\n\nRemove the linker\u0027s reliance on BSD cruft and use the glibc-style\nElfW macro. (Other code too, but the linker contains the majority\nof the code that needs to work for Elf32 and Elf64.)\n\nAll platforms need dl_iterate_phdr_static, so it doesn\u0027t make sense\nto have that part of the per-architecture configuration.\n\nBug: 12476126\nChange-Id: I1d7f918f1303a392794a6cd8b3512ff56bd6e487\n"
    },
    {
      "commit": "f64b8ea09db3bdd84eed59f7721301743332b3fe",
      "tree": "6d45a510ee831e1bc154170170afe7c931474ebc",
      "parents": [
        "a122c376ef0737454a592cf44f50beabe154e9e3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 03 16:20:46 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 03 16:20:46 2014 -0800"
      },
      "message": "Add fallocate/fallocate64/posix_fallocate/posix_fallocate64.\n\nBug: 5287571\nBug: 12612860\nChange-Id: I4501b9c6cdf9a830336ce0b3afc4ea716b6a0f6f\n"
    },
    {
      "commit": "46f3db6bb81b3368783ea3748df46c2d7d2f7b2f",
      "tree": "ba9b2ce3fb580b284d62257049d89ea9a10086d7",
      "parents": [
        "07f84025520a9530760a2f2535a1effde5ec51dd"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Thu Jan 30 20:01:19 2014 -0800"
      },
      "committer": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Thu Jan 30 20:39:53 2014 -0800"
      },
      "message": "[MIPS] SA_RESTORER support is not needed for MIPS\n\nChange-Id: I1c000c94973e811193c80c9770da4f3157594f90\nSigned-off-by: Chris Dearman \u003cchris.dearman@imgtec.com\u003e\nSigned-off-by: Duane Sand \u003cduane.sand@imgtec.com\u003e\n"
    },
    {
      "commit": "431166d99519f6794f10c48694913d2fe864b841",
      "tree": "7c148908e51c210646a28f890da96897e6000138",
      "parents": [
        "652dd5196df87bdeef7bff452f1a4857a96e3133"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 27 16:28:31 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 27 16:36:56 2014 -0800"
      },
      "message": "Fix 32-bit mmap/mmap64 handling of negative offsets.\n\nWe don\u0027t actually need to worry about sign extension if we reject\nnegative values ourselves. Previously it was possible to come up\nwith negative but aligned values that we would pass to the kernel;\nin the case of mmap (as opposed to mmap64) we\u0027d incorrectly turn\nthose into large positive offsets.\n\nChange-Id: I2aa583e0f892d59bb77429aea8730b72db32dcb0\n"
    },
    {
      "commit": "af8aebebb52d73ea38c604525a6a5857618861cf",
      "tree": "b38fcd81c0a7b3c06f50767a571243d5b4fcc6fa",
      "parents": [
        "d971f7290529310df6f8d4ba8b3a30f629ba2946"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 14 17:16:18 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 14 17:16:18 2014 -0800"
      },
      "message": "Move _thread_created_hook to where it belongs.\n\nChange-Id: I643d761c78ccaae25270aeffa2afb811c4e2fcd7\n"
    },
    {
      "commit": "4e9cb032d1eab7ceaef47f4d5104d2c42d556ce2",
      "tree": "b56bcbacd448e4f54a61c7e6722b5f1ac153a643",
      "parents": [
        "33c3e8d3b2312be3a3eb9d2632c4a570969e1624"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Thu Jan 09 14:06:20 2014 -0800"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Fri Jan 10 01:24:34 2014 +0000"
      },
      "message": "Add extra libc stubs for mntent related functions.\n\nThis adds stubs for setmntent() and endmntent().\n\nChange-Id: I6ccaa044145405cd7226c1c54a25d435c96a2308\n"
    },
    {
      "commit": "0f461e35f63200641fc53bba222845a84589c024",
      "tree": "d5b0d3a9e13f4699bdc57dfd422a69ddfdde5090",
      "parents": [
        "8276d2875f64587e266567f5bb2c5e0c70ef0a5d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 09 10:17:03 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 09 11:00:04 2014 -0800"
      },
      "message": "Fix \u003csys/resource.h\u003e.\n\nThe situation here is a bit confusing. On 64-bit, rlimit and rlimit64 are\nthe same, and so getrlimit/getrlimit64, setrlimit/setrlimit64,\nand prlimit/prlimit64 are all the same. On 32-bit, rlimit and rlimit64 are\ndifferent. 32-bit architectures other than MIPS go one step further by having\nan even more limited getrlimit system call, so arm and x86 need to use\nugetrlimit instead of getrlimit. Worse, the 32-bit architectures don\u0027t have\n64-bit getrlimit- and setrlimit-equivalent system calls, and you have to use\nprlimit64 instead. There\u0027s no 32-bit prlimit system call, so there\u0027s no\neasy implementation of that --- what should we do if the result of prlimit64\nwon\u0027t fit in a struct rlimit? Since 32-bit survived without prlimit/prlimit64\nfor this long, I\u0027m not going to bother implementing prlimit for 32-bit.\n\nWe need the rlimit64 functions to be able to build strace 4.8 out of the box.\n\nChange-Id: I1903d913b23016a2fc3b9f452885ac730d71e001\n"
    },
    {
      "commit": "887e1140fe7596fa1239a0bc802d2cdb51c57d3c",
      "tree": "de277e97257d5397d6ae36287a080477966dac5c",
      "parents": [
        "17c9fe7d2f396294a09344a253b2a16ae400df14"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 02 12:05:50 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 02 12:05:50 2014 -0800"
      },
      "message": "Clean up \u003csched.h\u003e.\n\nThis patch switches to using the uapi constants. It also adds the missing\nsetns system call, fixes sched_getcpu\u0027s error behavior, and fixes the\ngensyscalls script now ARM is uapi-only too.\n\nChange-Id: I8e16b1693d6d32cd9b8499e46b5d8b0a50bc4f1d\n"
    },
    {
      "commit": "2aace21a19b6be8f6a427fc664d4175f0bf832c9",
      "tree": "2f5405d71e85ba2eee7b6d33d327a8866f8951cc",
      "parents": [
        "6d929061c36e7929c61c8e6331315b86fe86976f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 21 15:30:49 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 21 15:30:49 2013 -0800"
      },
      "message": "Remove the bogus exit status from _exit_with_stack_teardown.\n\nIt should always be 0, and there\u0027s no reason to pass a constant in as\nan argument.\n\nChange-Id: I92ac59b718a18e298bd7c52821af447f9181ca2a\n"
    },
    {
      "commit": "99868904feeac944a0d482a2994f9d7b6828bff2",
      "tree": "1f630430195de631470350904561211cc5e3a8c8",
      "parents": [
        "22323f91b11b0fbaa0a101a75e116132028a5817"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 18:17:34 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 18:17:34 2013 -0800"
      },
      "message": "Avoid sign extension in 32-bit mmap.\n\nChange-Id: I2a77925f62f381a0b34648c3db8154a55dd80c46\n"
    },
    {
      "commit": "5eccb9646dd94438911706d3ebf52775caa7f41e",
      "tree": "65e098b6c9b6e25947f40a8466d05f87c906af5d",
      "parents": [
        "026b6ab6d5f0d8fca5cdfab05727197626769dc2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 16:58:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 20 16:58:06 2013 -0800"
      },
      "message": "Fix aarch64 futex assembly routines.\n\nAlso make the other architectures more similar to one another,\nuse NULL instead of 0 in calling code, and remove an unused #define.\n\nChange-Id: I52b874afb6a351c802f201a0625e484df6d093bb\n"
    },
    {
      "commit": "5e26221a1da6bc0f11819078e74f1f6e0b76f642",
      "tree": "3074537821dfcecc6f4039ba462019a52829175d",
      "parents": [
        "21955e5453de0b82c1ab25a3bb7314c249d73269",
        "063a572e6bc958746031ad5cc4d4f9622c5d6ad3"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Fri Dec 20 21:54:38 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 20 21:54:38 2013 +0000"
      },
      "message": "Merge \"Fix backwards compatible system property structure\""
    },
    {
      "commit": "17cabe15d52528255829c9cff53a26bf4b3db61e",
      "tree": "9fbdfad090111593e6899d8660a6a5dbb413b861",
      "parents": [
        "ed96db2a4f2fe5683407c3571d037bb7325544da"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 16:48:56 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 16:48:56 2013 -0800"
      },
      "message": "Don\u0027t force O_LARGEFILE on LP64.\n\naarch64\u0027s strace is confused by this, and it isn\u0027t necessary anyway.\n\nChange-Id: Ib07b649eb1c38ff0296003874f73af78c47bc276\n"
    },
    {
      "commit": "9a42eef8b19005757db1cd5f39e25c27b664667b",
      "tree": "abb647ba83a783d732a00f75e7f27685d381f670",
      "parents": [
        "c13d89b829a83a248130184583cf0332515a05df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 20:02:16 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 20:02:16 2013 +0000"
      },
      "message": "Revert \"Add C linkage for __open_2 and __openat_2.\"\n\nThis reverts commit c13d89b829a83a248130184583cf0332515a05df.\n\nChange-Id: I40a3c6b926e920b65dd054353a2db8d314d5b300\n"
    },
    {
      "commit": "c13d89b829a83a248130184583cf0332515a05df",
      "tree": "6170358d0b80dca786adf34b115929f0073d2ccb",
      "parents": [
        "81ddd14381b09f171c006ebcbba15b3c1baf2a9f"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu Dec 19 10:24:04 2013 -0800"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu Dec 19 10:49:20 2013 -0800"
      },
      "message": "Add C linkage for __open_2 and __openat_2.\n\nOtherwise Clang mangle them with C++ names.\n\nChange-Id: I844e28d834df8b0752b32d2aadd2013fc8804a43\n"
    },
    {
      "commit": "e4c6b08c4e81f640afc502804d1226a3e79dc26d",
      "tree": "6cc797173f041fe783ad156ec74309597283fa28",
      "parents": [
        "4063bb6147bd256ad455bd3bd063ef40aae8851d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 18 19:17:14 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 18 19:17:14 2013 -0800"
      },
      "message": "Clean up more recursive FORTIFY_SOURCE calls\n\nDon\u0027t use FORTIFY_SOURCE on functions which implement\nFORTIFY_SOURCE, to avoid infinite recursion problems.\n\nThe previous patch only addressed one of the problems.\n\nBug: 12216860\nChange-Id: I6f30ae7cb5b481be9942add18182ea4839d348a6\n"
    },
    {
      "commit": "ddea38343311b66ae023473a342c11824f6a8f65",
      "tree": "1063db7aad8e1e5c9a24a11475f41c4d4aa668a3",
      "parents": [
        "f5897dcb1d1dc493b6a2ba526a766da73bb9c1da"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 18 18:17:52 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Dec 18 18:17:52 2013 -0800"
      },
      "message": "__strnlen_chk: avoid recursive strlen calls\n\nDon\u0027t use FORTIFY_SOURCE on functions which implement\nFORTIFY_SOURCE.\n\nBug: 12216860\nChange-Id: I61db1b47ccdd6bdcf41eab3303f4806494016199\n"
    },
    {
      "commit": "9e79af3b61b5a617c537862ebe72248beff58f19",
      "tree": "5901c5b3dd3eb00353ac1233f1506aa266a92221",
      "parents": [
        "611b903ca7ba9d604a9e2ebc1efa5a66f7ccc049"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 10:05:42 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 10:05:42 2013 -0800"
      },
      "message": "Small style cleanup.\n\nChange-Id: Ib45a4a2296232968296f9bd7cc3592ba46fd412d\n"
    },
    {
      "commit": "611b903ca7ba9d604a9e2ebc1efa5a66f7ccc049",
      "tree": "aacd4f90033fe14a9689caace700b9ed19af0a6b",
      "parents": [
        "e00f4890c71e9c9eb715faf2c7443732b2fdfae3",
        "4fae14f3335375714be3104742fa69fe65b02001"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 17:56:22 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 18 17:56:22 2013 +0000"
      },
      "message": "Merge \"Properly detect timeout in pthread_mutex_lock_timeout_np_impl\""
    },
    {
      "commit": "e7c59f9e2041812c597ff1c8689d47d1bfd32883",
      "tree": "97d56c8132b832669676c08de6c9298b50a33a5f",
      "parents": [
        "f293b15728031432317791fb4a17a423545d37b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 20:47:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 09:47:44 2013 -0800"
      },
      "message": "Fix compilation of crtbegin.c and pthread_debug.cpp.\n\nBecause there was no default :\u003d for the aarch64 libc_crt_target_cflags,\nthe +\u003d was causing libc_crt_target_cflags to be recursively-defined\nvariable, which meant that when we were compiling crtbegin.c LOCAL_PATH\nwould be bionic/tests/ and we\u0027d have -Ibionic/tests/include/ and find\nnone of our include files.\n\nAlso fix linking of pthread_debug.cpp, at least in the disabled mode.\nThe enabled mode was already broken for all architectures, and continues\nto be broken after this change. It\u0027s been broken for long enough that\nwe might want to just remove it...\n\n(aarch64 is using the FSF linker where arm uses the gold linker.)\n\nChange-Id: I7db2e386694f6933db043138e6e97e5ae54d4174\n"
    },
    {
      "commit": "4fae14f3335375714be3104742fa69fe65b02001",
      "tree": "bdf4e9cd74914f6b6a506ee1a65ac0634a556f73",
      "parents": [
        "3377165387d455d4cb56807a9c02cd2ece6cb24b"
      ],
      "author": {
        "name": "Ken Mixter",
        "email": "kmixter@google.com",
        "time": "Tue Dec 17 12:40:08 2013 -0800"
      },
      "committer": {
        "name": "Ken Mixter",
        "email": "kmixter@google.com",
        "time": "Tue Dec 17 14:26:01 2013 -0800"
      },
      "message": "Properly detect timeout in pthread_mutex_lock_timeout_np_impl\n\nPreviously we were checking against a positive errno which\nwould not be returned from a system call.\n\nChange-Id: I8e3a36f6fbf5ccc2191a152a1def37e2d6f93124\n"
    },
    {
      "commit": "063a572e6bc958746031ad5cc4d4f9622c5d6ad3",
      "tree": "7546689017409cf80b3794722838ceeb7f9d759c",
      "parents": [
        "8623bf7b4da802ee56618f575e92290499011df9"
      ],
      "author": {
        "name": "Joshua J. Drake",
        "email": "android-open-source@qoop.org",
        "time": "Fri Dec 13 13:44:53 2013 -0600"
      },
      "committer": {
        "name": "Joshua J. Drake",
        "email": "android-open-source@qoop.org",
        "time": "Fri Dec 13 13:56:39 2013 -0600"
      },
      "message": "Fix backwards compatible system property structure\n\nThe original structure included four reserved 32-bit values. This\nchange adds these back into the structure so that the\n__system_property_find_compat function will (again) process the system\nproperties correctly.\n"
    },
    {
      "commit": "dff7203ee99ccac446b9a1c4371753a5216c6db4",
      "tree": "854bf99a06ea89a29e8eee49d0c5cc361e30531c",
      "parents": [
        "73ef27cd0de0c6b7d4f6bc9c2250dbae3f0a88c3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 11 14:54:00 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 11 14:54:00 2013 -0800"
      },
      "message": "Remove harmful attempts to be helpful in pthread_mutex functions.\n\nMost callers won\u0027t check for EINVAL, so it\u0027s best to fail early.\nGCC takes the nonnull attribute as a guarantee that an argument\nwon\u0027t be NULL, so these hacks were already ineffective, which is\nhow we found that at least one commercial game was using NULL\nas if it\u0027s a mutex, but actually getting no-op behavior.\n\nBug: 11971278\nChange-Id: I89646e043d931778805a8b692e07a34d076ee6bf\n"
    },
    {
      "commit": "960ee37f2aaf52bbec2f6265fd6e30fb2b41fef3",
      "tree": "d07da920636204ea700c7945db95e1b086730d4f",
      "parents": [
        "2e3591557f4a382e441ee2d60614d616b5acb434"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 11 12:41:54 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 11 12:41:54 2013 -0800"
      },
      "message": "Clarify a comment.\n\nChange-Id: Iad2e33fb059170f808023ce3d17e9b8c13191f42\n"
    },
    {
      "commit": "101fb7d963ed362c4e351d95e55cbd70dc59eac3",
      "tree": "07785e035365c55c1720f26db8086fcd5cb778ad",
      "parents": [
        "6afe8ab7533937c7444756ae72dda547b9849fe2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 06 18:54:48 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 06 23:00:44 2013 -0800"
      },
      "message": "Do not clear tids on detached threads.\n\nMake sure that the kernel isn\u0027t going to try and clear the tid of\nfreed memory.\n\nBug: 11963327\nChange-Id: I95d02340bfbe92f56036d2cc58dbf0e3079eb7c3\n"
    },
    {
      "commit": "80906141f79be8be63fc915bfab467029b442ca1",
      "tree": "791a682ab1dcb29efd3eeeac1f8eb3af0144466c",
      "parents": [
        "1c057607d89229f5effaf1acf2ecde24ece41389"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 26 13:57:21 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 26 13:57:21 2013 -0800"
      },
      "message": "Work around CLONE_SETTLS being weird on x86.\n\nUnlike other architectures, on x86 (but not x86-64), CLONE_SETTLS\ntakes a pointer to a struct user_desc instead of a pointer to the\nTLS itself. Rather than have to deal with this here, let\u0027s just use\nthe old __set_tls mechanism we used to use (and still use for the\nmain thread on all architectures, so it\u0027s not going away any time\nsoon).\n\nBug: 11826724\nChange-Id: I02a27939a73ae6cea1134a3f4c1dd7eafea479da\n"
    },
    {
      "commit": "f00c938c7f5887981d724bf2dd9989ee0af08332",
      "tree": "215f86cc9ce1b1ed167d925419122327d3ffaa3e",
      "parents": [
        "a626e4d8bc3d59cc328942fc30ffc04981b154ed",
        "811b0cdb2d6e4a697dbc63a678712759dd0db242"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Nov 22 11:08:12 2013 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Nov 22 13:38:33 2013 -0800"
      },
      "message": "Merge commit \u0027811b0cdb2d6e4a697dbc63a678712759dd0db242\u0027 into HEAD\n\nChange-Id: I786944f80fb1a2d502fed51dc2c391ed5db66761\n"
    },
    {
      "commit": "ab61eb366ac48addf2bca6093a34455193f5c8df",
      "tree": "335fe463aa773ac8484c40e955fec90f126c9e4f",
      "parents": [
        "39bc7ecd45700e9edac0b29d33cc211383ebb107"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 20 16:09:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 20 16:24:16 2013 -0800"
      },
      "message": "Switch to upstream sleep(3) and usleep(3).\n\nAlso fix the signature of usleep, and the definition of useconds_t which\nshould be unsigned, as the \u0027u\u0027 in its name implies.\n\nThis patch also cleans up the existing FreeBSD hacks by moving the libm\nstuff from \u003csys/cdefs.h\u003e to a libm-private header, and adding comments\nabout the hacks we use to build FreeBSD source.\n\nChange-Id: Ibe5067a380502df94a0a3a7901969b35411085b6\n"
    },
    {
      "commit": "cef3faec0ea40fdfe58e425fd0be64f00de6a26d",
      "tree": "1f33cbb2de225d0d76d3eb53ef8857b9ecc79bbe",
      "parents": [
        "1b2d214b62ad7bf46f37c79442a69d930aa29027"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 16:52:24 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 17:22:22 2013 -0800"
      },
      "message": "Clean up pthread_internal_t.\n\nBug: 11755300\nChange-Id: Ib509e8c5ec6b23513aa78b5ac5141d7c34ce2dc8\n"
    },
    {
      "commit": "36d6188f8cd8b948fb797f11d9620d63d0c2215a",
      "tree": "86b3162cac031151b2ae44b4d554fce4f9456147",
      "parents": [
        "318e86ed887e04e593f3db9b84b402d5501ced9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 13:31:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 14:08:54 2013 -0800"
      },
      "message": "Clean up forking and cloning.\n\nThe kernel now maintains the pthread_internal_t::tid field for us,\nand __clone was only used in one place so let\u0027s inline it so we don\u0027t\nhave to leave such a dangerous function lying around. Also rename\nfiles to match their content and remove some useless #includes.\n\nChange-Id: I24299fb4a940e394de75f864ee36fdabbd9438f9\n"
    },
    {
      "commit": "877ec6d90418ff1d6597147d355a2229fdffae7e",
      "tree": "e475221a7fbff1564ad37548e920333c49cc5873",
      "parents": [
        "f246c589d66e5dc0e3cddc3c37261fb0e3fc67e9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 17:40:18 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 18 19:48:11 2013 -0800"
      },
      "message": "Fix pthread_join.\n\nLet the kernel keep pthread_internal_t::tid updated, including\nacross forks and for the main thread. This then lets us fix\npthread_join to only return after the thread has really exited.\n\nAlso fix the thread attributes of the main thread so we don\u0027t\nunmap the main thread\u0027s stack (which is really owned by the\ndynamic linker and contains things like environment variables),\nwhich fixes crashes when joining with an exited main thread\nand also fixes problems reported publicly with accessing environment\nvariables after the main thread exits (for which I\u0027ve added a new\nunit test).\n\nIn passing I also fixed a bug where if the clone(2) inside\npthread_create(3) fails, we\u0027d unmap the child\u0027s stack and TLS (which\ncontains the mutex) and then try to unlock the mutex. Boom! It wasn\u0027t\nuntil after I\u0027d uploaded the fix for this that I came across a new\npublic bug reporting this exact failure.\n\nBug: 8206355\nBug: 11693195\nBug: https://code.google.com/p/android/issues/detail?id\u003d57421\nBug: https://code.google.com/p/android/issues/detail?id\u003d62392\nChange-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b\n"
    },
    {
      "commit": "e48b68570d872ef7ece1d873c0ea298ea76393f3",
      "tree": "8c6d8721af2bfddd2c649a0d887a4a905358da04",
      "parents": [
        "e39e3a77d6e8cf681718a572bc754fd64dfc87ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:57:45 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:57:45 2013 -0800"
      },
      "message": "Clean up the pthread_create trampoline.\n\nBug: 8206355\nBug: 11693195\nChange-Id: I35cc024d5b6ebd19d1d2e45610db185addaf45df\n"
    },
    {
      "commit": "70b24b1cc2a1a4436b1fea3f8b76616fdcb27224",
      "tree": "70c8e04ccd256eaeda3c7e516776f4c9bca25628",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 11:51:07 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 15 14:41:19 2013 -0800"
      },
      "message": "Switch pthread_create over to __bionic_clone.\n\nBug: 8206355\nBug: 11693195\nChange-Id: I04aadbc36c87e1b7e33324b9a930a1e441fbfed6\n"
    },
    {
      "commit": "61fb3fc770566c7bafe7af8fb93590bcad387fbb",
      "tree": "6ee5199c60b3105c89e8dcf01a6d065007533013",
      "parents": [
        "266eb4a44c4cdd9502980511ff2846fde5c66454"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 07 12:28:46 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 07 12:29:07 2013 -0800"
      },
      "message": "Prepare to switch to the uapi \u003clinux/signal.h\u003e.\n\n\u003ctime.h\u003e didn\u0027t need to copy the cruft from \u003csignal.h\u003e, and\n\u003csignal.h\u003e only needs the uid_t hack when it\u0027s not using\nuapi headers.\n\npthread_exit.cpp should include what it uses.\n\nChange-Id: I836c36abe0f0a781d41fc425b249d1c7686bb124\n"
    },
    {
      "commit": "7250d2e5b4cd4af7cd802ae04b9b77d97f3a5a45",
      "tree": "73ebda84047c05f50726c593ffb2924533a5cdd0",
      "parents": [
        "f945732e21e3c1291943d21fa5fee0c43792bbec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 17:21:09 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 06 17:21:09 2013 -0800"
      },
      "message": "Remove pathconf\u0027s dependencies on non-uapi header files.\n\nChange-Id: I597996e4b141b009916f7ad2866dd100e08aa4d3\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": "6fa79c5cf57a3a7bc37849d0d510bf8cb043b531",
      "tree": "a2f0ef4501935803d4661b508b5fdf728b856ddc",
      "parents": [
        "943cc1b58892c627f65f44b7f0fcf365048b7364"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 05 11:59:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 05 11:59:06 2013 -0800"
      },
      "message": "Remove unnecessary #include.\n\nChange-Id: I99dade0b3803272ee29eba2ad36b0311f8a24c31\n"
    },
    {
      "commit": "66759d6041b33706c3a92dde48492ba4f2bbab2f",
      "tree": "53c8282836fb5f88d285a0305e7204202f6eabfb",
      "parents": [
        "0360e3ab2d21d4b4b3d5590765857bef595c0046"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 14:09:39 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 14:09:39 2013 -0700"
      },
      "message": "Move the pthread debugging flags to the right place.\n\nChange-Id: Ie805bd837d1f72cdf1818e056c0baeb0857e4e84\n"
    },
    {
      "commit": "c3f114037dbf028896310609fd28cf2b3da99c4d",
      "tree": "e463aeb3604177cd93cea8a58936a8dce4b34ee5",
      "parents": [
        "d0d0b52da375bfa85947a4257198791f615f18a8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 30 14:40:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 12:31:16 2013 -0700"
      },
      "message": "\u003cpthread.h\u003e fixes and pthread cleanup.\n\n\u003cpthread.h\u003e was missing nonnull attributes, noreturn on pthread_exit,\nand had incorrect cv qualifiers for several standard functions.\n\nI\u0027ve also marked the non-standard stuff (where I count glibc rather\nthan POSIX as \"standard\") so we can revisit this cruft for LP64 and\ntry to ensure we\u0027re compatible with glibc.\n\nI\u0027ve also broken out the pthread_cond* functions into a new file.\n\nI\u0027ve made the remaining pthread files (plus ptrace) part of the bionic code\nand fixed all the warnings.\n\nI\u0027ve added a few more smoke tests for chunks of untested pthread functionality.\n\nWe no longer need the libc_static_common_src_files hack for any of the\npthread implementation because we long since stripped out the rest of\nthe armv5 support, and this hack was just to ensure that __get_tls in libc.a\nwent via the kernel if necessary.\n\nThis patch also finishes the job of breaking up the pthread.c monolith, and\nadds a handful of new tests.\n\nChange-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7\n"
    }
  ],
  "next": "2b6e43e00ece68b3aba26d8f95f07cd9d9294ab4"
}
