)]}'
{
  "log": [
    {
      "commit": "fa9e16efaf0e885f6044e725eb759ef6de10f7ef",
      "tree": "b2788038c17cde5a1d53c13a51d6a16868bd229f",
      "parents": [
        "0d7415fb225573c37ff9e880957cd2044dd658ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 23 17:49:45 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 23 17:49:45 2014 -0700"
      },
      "message": "Fix getpid caching across a clone.\n\nIf you make clone, fork, or vfork system calls directly, you\u0027re still\non your own, but we now do the right thing for the clone wrapper.\nWith this implementation, children lose the getpid caching, but we\u0027ve\nno reason to think that that covers any significant use cases.\n\nBug: 15387103\nChange-Id: Icfab6b63c708fea830960742ec92aeba8ce7680d\n"
    },
    {
      "commit": "7086ad6919feb2415c6027163f5c63323bcca27c",
      "tree": "f32c06d513e90ba1fcb8fe56f9cd055cccc7d01b",
      "parents": [
        "d1bf37780d0bcaca3e6046171f958ebfea34bde1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 16:39:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 20 09:06:57 2014 -0700"
      },
      "message": "Cache getpid.\n\nIn practice, with this implementation we never need to make a system call.\nWe get the main thread\u0027s tid (which is the same as our pid) back from\nthe set_tid_address system call we have to make during initialization.\nA new pthread will have the same pid as its parent, and a fork child\u0027s\nmain (and only) thread will have a pid equal to its tid, which we get for\nfree from the kernel before clone returns.\n\nThe only time we\u0027d actually have to make a getpid system call now is if\nwe take a signal during fork and the signal handler calls getpid. (That,\nor we call getpid in the dynamic linker while it\u0027s still dealing with its\nown relocations and hasn\u0027t even set up the main thread yet.)\n\nBug: 15387103\nChange-Id: I6d4718ed0a5c912fc75b5f738c49a023dbed5189\n"
    },
    {
      "commit": "738b0cc5e95a9a650e9621603f4dd8dd16b07568",
      "tree": "a20e3a0ffc6154cc562326a42b212759cda31d72",
      "parents": [
        "dc3fb119497382fc8d9c3b87c5ef8321141330dc"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 21 19:03:34 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 29 10:51:22 2014 -0700"
      },
      "message": "Fix overflow testing in sbrk.\n\nModify the overflow testing for sbrk.\n\nBug: 15188366\n\nChange-Id: Ia83f85f7c1789454d872279bd41f38f1ce6b8a34\n"
    },
    {
      "commit": "1728b2396591853345507a063ed6075dfd251706",
      "tree": "7083cd234073afa5179b94b3d978550c890af90c",
      "parents": [
        "bac795586bbc5dcbe886d8d781710f60c4c19d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "message": "Switch to g_ for globals.\n\nThat\u0027s what the Google style guide recommends, and we\u0027re starting\nto get a mix.\n\nChange-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc\n"
    },
    {
      "commit": "063525c61d24776094d76971f33920e2a2079530",
      "tree": "de279e25b05c43dbb06bc3ceb49f23bed3874377",
      "parents": [
        "a26dd781fe675cf94c62183da27622eb83ff6fa7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "message": "Consistently use #if defined(__BIONIC__) in tests.\n\nI\u0027ve also switched some tests to be positive rather than negative,\nbecause !defined is slightly harder to reason about and there are\nonly two cases: bionic and glibc.\n\nChange-Id: I8d3ac40420ca5aead3e88c69cf293f267273c8ef\n"
    },
    {
      "commit": "a62a28d1d9c8df7cb77e4bca19814922729b5291",
      "tree": "4aa5ff9eaa99c5692413d7228b6ff69844ea9f53",
      "parents": [
        "837abf04667c29db178fd28f500537429a18be30"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 14:30:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 14:30:33 2014 -0700"
      },
      "message": "Add basic tests for fsync/fdatasync.\n\nBug: 14613980\nChange-Id: Ie8002c2a1abae07295b7bdb33772764767c03d37\n"
    },
    {
      "commit": "3d7a0d9b08ecab054b2dff8332507644de3690b0",
      "tree": "b6c4f27e3abdd6590a452c978048ae21d934da09",
      "parents": [
        "07bab525e24725aaacd71e7cc63dfc31d48ba8a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 14:46:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 14:53:11 2014 -0700"
      },
      "message": "Switch to the OpenBSD wcsto* functions.\n\nThis replaces a partial set of non-functional functions with a complete\nset of functions, all of which actually work.\n\nThis requires us to implement mbsnrtowcs and wcsnrtombs which completes\nthe set of what we need for libc++.\n\nThe mbsnrtowcs is basically a copy \u0026 paste of wcsnrtombs, but I\u0027m going\nto go straight to looking at using the OpenBSD UTF-8 implementation rather\nthan keep polishing our home-grown turd.\n\n(This patch also opportunistically switches us over to upstream btowc,\nmbrlen, and wctob, since they\u0027re all trivially expressed in terms of\nother functions.)\n\nChange-Id: I0f81443840de0f1aa73b96f0b51988976793a323\n"
    },
    {
      "commit": "533dde4dbf87d6615952be3654fc74e5ff2e1003",
      "tree": "1322327db26b0dcce421e891bbe10231cde75bcb",
      "parents": [
        "eff450ff45170ff17f17b7ceb26f54b858c39238"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 18:27:38 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 19:38:33 2014 -0700"
      },
      "message": "Fix brk/sbrk error checking.\n\nNote that the kernel returns the current break on error or if the requested\nbreak is smaller than the minimum break, or the new break. I don\u0027t know where\nwe got the idea that the kernel could return -1.\n\nAlso optimizes the query case.\n\nAlso hides an accidentally-exported symbol for LP64.\n\nChange-Id: I0fd6b8b14ddf1ae82935c0c3fc610da5cc74932e\n"
    },
    {
      "commit": "cbf6df0459f05e180d1c50b3f5b36cdd483193c6",
      "tree": "6073e9703454ad83731042dbc79b464a64cd7646",
      "parents": [
        "532ad903d2febc400e23d66c5f4d836d1e5f11fc"
      ],
      "author": {
        "name": "Grigoriy Kraynov",
        "email": "grigoriy.kraynov@intel.com",
        "time": "Tue Sep 17 15:44:22 2013 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 22 19:09:45 2014 -0700"
      },
      "message": "Tests for environment variables utility functions\n\nThis is the first patch from the new set of tests for Bionic standard functions.\n\nChange-Id: Ie568788a24832394e597ad33f44a5c71cb33b51f\nSigned-off-by: Grigoriy Kraynov \u003cgrigoriy.kraynov@intel.com\u003e\n"
    },
    {
      "commit": "764a99361130dceda62bbc4f8780bbf395dbc424",
      "tree": "1764161705276ce49a6e1646bc6bf651e8713914",
      "parents": [
        "7f38a3c9bef9c6efc30a6b60873bbdeea04a18f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 19:44:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 19:44:36 2014 -0700"
      },
      "message": "Fix build: include what you use.\n\nChange-Id: I12b2d5e434ad3ed38d4451bd470673781e6ca8fe\n"
    },
    {
      "commit": "9f525644df99cb2f7f81a23ca23840f0a8f82275",
      "tree": "edfe771f84024370aba4988e016534e5c535984e",
      "parents": [
        "ac70d2e1fe71f98232942237c2b463ea3adbf662"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 17:14:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 08 17:16:13 2014 -0700"
      },
      "message": "Implement _Exit(3).\n\nChange-Id: Ida6ac844cc87d38c9645b197dd8188bb73e27dbe\n"
    },
    {
      "commit": "aedb00d04eb7f0b20b6abde702ba94a46577ca68",
      "tree": "2346f63ba4777e6739e6a4115b68fad529e8f801",
      "parents": [
        "dfeb42ede69a0dbea5735aed5fddaee3f810801d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 14:38:20 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 00:58:31 2014 +0000"
      },
      "message": "Switch to upstream alarm(3).\n\nThe only way the setitimer call can fail is if the unsigned number of seconds is\ntoo large to fit in the kernel\u0027s signed number of seconds. If you schedule a\n68-year alarm, glibc will fail by returning 0 and BSD will fail by returning -1.\n\nChange-Id: Ic3721b01428f5402d99f31fd7f2ba2cc58805607"
    },
    {
      "commit": "915fefb62e1beed3da26fe299a8141645733a925",
      "tree": "59a4187f3e8c3cb476d1a1a0dca35f6a0f3a3a49",
      "parents": [
        "ffe026680edaba268330bc67dd986d2c900ecfc7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 12:34:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 18 12:34:51 2014 -0800"
      },
      "message": "Fix x86 build.\n\nChange-Id: Iee6e5884288f7da6c955694cfe32fecfd9c9e263\n"
    },
    {
      "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": "13613137bc4266656bffce464e525eb9ae6371f0",
      "tree": "0acda656b21254c1b809b575ab403d4099811b6e",
      "parents": [
        "020bcdaef349b6bd82302a0656fdf9aaff30bdb3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 28 15:24:04 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 29 14:55:11 2013 -0700"
      },
      "message": "Fix up failing glibc tests.\n\nThere is a known bug running clone with the CLONE_VM flag, so for host\ncreate an empty test.\n\nChange the expected output of the stdio test for a glibc difference.\n\nChange the pause test to use ScopedSignalHandler to setup/restore the SIGALRM\nhandler.\n\nAfter this, running bionic-unit-tests-glibc passes for all tests.\n\nBug: 11389824\n\nChange-Id: Ib304eae4164115835a54991dfdca5821ecc3db5e\n"
    },
    {
      "commit": "11952073af22568bba0b661f7a9d4402c443a888",
      "tree": "c4ae77a40e8e309219cd4ab993a39d92f3d13e50",
      "parents": [
        "cdac5f73aca015287d1f40ff50d4fbf293a0c549"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 15:15:14 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 24 15:48:32 2013 -0700"
      },
      "message": "Remove dependencies on obsolete __ARCH_WANT_SYSCALL_DEPRECATED system calls.\n\n(aarch64 kernels don\u0027t have these system calls.)\n\nChange-Id: I6f64075aa412f71520f2df71c3d69b647f91c1ca\n"
    },
    {
      "commit": "b4f7616fd618875768b8fffc122b58bdb84a9969",
      "tree": "7a76517ef594dd73dfe18c388483e504fccb0a3d",
      "parents": [
        "f8e71bac14a4bc52cc95c56adfe042c3938279b5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 16:27:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 16:27:24 2013 -0700"
      },
      "message": "Ensure we have the off64_t variant of every function that takes an off_t.\n\nChange-Id: Ib2eee0cf13162be3b62559b84e90c6dcf5aab1c3\n"
    },
    {
      "commit": "428f5567be25b8090e3dd72e2d3d337c305b514e",
      "tree": "fe9bc208b680b3366150885d6efc5be034c3f21e",
      "parents": [
        "a4f88fdcf0e9be084d04048ad65671716298c3c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 05 16:10:59 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 05 16:10:59 2013 -0800"
      },
      "message": "Remove bogus extra alignment from sbrk.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d37349\nChange-Id: I970c7b6be7bb7fbe6bbbe2c332f05816aeb0e09f\n"
    },
    {
      "commit": "a55f63083fb16b2595f517a3260083e5f8cddd02",
      "tree": "a21307c7a280a75b425eac764546fb1460e3eb76",
      "parents": [
        "f6524f8bda87f7d25dad7bed7091a93f3de58728"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 02 14:23:43 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 02 14:23:43 2013 -0800"
      },
      "message": "Define _POSIX_MONOTONIC_CLOCK and implement sysconf(_SC_MONOTONIC_CLOCK).\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d39680\nChange-Id: I11cf10a66f9d305868a725f04f581099fb88bbfc\n"
    }
  ]
}
