)]}'
{
  "log": [
    {
      "commit": "62e9c76ee89effccfbbff08167dbaa5e52618be3",
      "tree": "af80ac9463eedc3be56f41dc73444e11194e9dbf",
      "parents": [
        "4939d6d8424d47e19823e5dfcfc5474e8a7e77b8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 31 17:27:00 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 31 17:27:00 2014 -0800"
      },
      "message": "Clean up debugger.cpp slightly.\n\nIn particular, don\u0027t do weird things with \u0027int tid\u0027.\n\nChange-Id: I0fd9158a452967163508ada8987de9494ad5f9af\n"
    },
    {
      "commit": "f858bd1c6eec7eb6bbfc8844e0de096be011e99a",
      "tree": "0173c1b1d3505506ba015ba68d10467bf2ef7558",
      "parents": [
        "a14df4a98ad1c4018f63fea358dd30c7e6b51858"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 31 16:56:39 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 31 16:56:39 2014 -0800"
      },
      "message": "LP64 binaries should talk to debuggerd64.\n\nChange-Id: I7eb30f9d04f80b6b45d3148757970d3f1117493c\n"
    },
    {
      "commit": "e365f9d6543bc6607864ef61257505239dde15d1",
      "tree": "ecc2e3605bc26aeb9b16a1d3adbceb70da40ba19",
      "parents": [
        "2e3826c08171ead1647c800a0a6d9c333d335762"
      ],
      "author": {
        "name": "Marcus Oakland",
        "email": "marcus.oakland@arm.com",
        "time": "Thu Oct 10 15:19:31 2013 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 17 15:02:43 2013 -0800"
      },
      "message": "AArch64: Linker64 support for AArch64\n\nAddition of support for AArch64 in the linker64 target.\n\nChange-Id: I8dfd9711278f6706063e91f626b6007ea7a3dd6e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n"
    },
    {
      "commit": "4eeb1f12a8b63afc0d0ad4d466b16fbffb21cd5a",
      "tree": "618c8b7133f3602880e0a4c8285c34e7552a0a45",
      "parents": [
        "93fcfeee2b4de4c65fc766bf10601397592341d7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 25 17:38:02 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 28 11:02:49 2013 -0700"
      },
      "message": "Clean up linker architecture macros.\n\nWe don\u0027t need our own architecture macros; the standard ones will do.\n\nThis patch also fixes some __x86_64__ tests to be USE_RELA tests instead,\nbecause they\u0027re not actually x86_64-specific.\n\nI\u0027ve cleaned up architecture-specific code slightly so where possible\nall the code corresponding to a particular architecture is together.\n\nThis patch also fixes a bug in LP64 DT_PLTGOT handling, which should be\nan error rather than falling through into DT_DEBUG! There was another #ifdef\nbug where we\u0027d only report unexpected DT_ entries on MIPS.\n\nChange-Id: Id1d04e372611f641c1aa278a18e379f28af9eaf5\n"
    },
    {
      "commit": "c7e9b2331771e5e87c34a8ee3dc6cc41d35b02fe",
      "tree": "c04816a58f739d9f76c12a0f5acf1676eed6c89c",
      "parents": [
        "f89f1eaa6071111c2ef584e97efb23f1b5dbdd2d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 16 22:27:54 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 17 11:36:55 2013 -0700"
      },
      "message": "Fix sigaction(3) for 64-bit.\n\nAlso clean up \u003csignal.h\u003e and revert the hacks that were necessary\nfor 64-bit in linker/debugger.cpp until now.\n\nChange-Id: I3b0554ca8a49ee1c97cda086ce2c1954ebc11892\n"
    },
    {
      "commit": "c00f2cb587630d5e954c7f548749f1e3170b3cb1",
      "tree": "c62c53a795026d249df132db9bc7894add15611d",
      "parents": [
        "5d06718cd357b509588465ec1fa261db23b5899a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 04 17:01:33 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 09:57:01 2013 -0700"
      },
      "message": "x86_64 linker.\n\nBased on I8dc3e2cb596f75dc58ae82e4dc58f8c177dd3323 by\nPavel Chupin \u003cpavel.v.chupin@intel.com\u003e.\n\nChange-Id: Icd582d277cbe273477b450f2848343d72c86ec9f\n"
    },
    {
      "commit": "c620059479c47a78d57086d73726c9adc2f337ad",
      "tree": "ef410fffb4d853aaf7dbfee41743c197c4985856",
      "parents": [
        "6dee3b9aeec40bb518c1a29b4462300869a03d8e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 30 18:43:46 2013 -0700"
      },
      "message": "Remove 32-bit assumptions from the ELF code.\n\nChange-Id: I2c1f3d34c33685799aade8866eec44479ff9f963\n"
    },
    {
      "commit": "84114c8dd5b17efecf7988f263ce431208d7be5a",
      "tree": "81d4ae4e6a40c4255b2e76adeb2b68dab5932058",
      "parents": [
        "40e7a87864fee75f7af2caf8e1972d0d764135cd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 13:33:19 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 13:33:19 2013 -0700"
      },
      "message": "Improve stack overflow diagnostics (take 2).\n\nThis reverts commits eb1b07469f2b5a392dc1bfd8adc211aea8c72bc5 and\nd14dc3b87fbf80553f1cafa453816b7f11366627, and fixes the bug where\nwe were calling mmap (which might cause errno to be set) before\n__set_tls (which is required to implement errno).\n\nBug: 8557703\nChange-Id: I2c36d00240c56e156e1bb430d8c22a73a068b70c\n"
    },
    {
      "commit": "d14dc3b87fbf80553f1cafa453816b7f11366627",
      "tree": "b1a26c875f451b79888f60cf73504aab799874e1",
      "parents": [
        "aa754dca90487356cabf07ade0e8d88c2630b784"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Jul 17 03:17:05 2013 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Jul 17 03:17:05 2013 +0000"
      },
      "message": "Revert \"Improve stack overflow diagnostics.\"\n\nThis reverts commit aa754dca90487356cabf07ade0e8d88c2630b784.\n\nChange-Id: Ifa76eee31f7f44075eb3a48554315b2693062f44\n"
    },
    {
      "commit": "aa754dca90487356cabf07ade0e8d88c2630b784",
      "tree": "b4cda0d4fa3935abd85b3ee178d35d0738e8a744",
      "parents": [
        "9562d38df1e4aba941b3433cfd0922fee5ea258b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 13:14:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 13:14:24 2013 -0700"
      },
      "message": "Improve stack overflow diagnostics.\n\nWe notify debuggerd of problems by installing signal handlers. That\u0027s\nfine except for when the signal is caused by us running off the end of\na thread\u0027s stack and into the guard page.\n\nBug: 8557703\nChange-Id: I1ef65b4bb3bbca7e9a9743056177094921e60ed3\n"
    },
    {
      "commit": "0d787c1fa18c6a1f29ef9840e28a68cf077be1de",
      "tree": "3f8efc05d80658c9be48513238104a5de01a9951",
      "parents": [
        "014c75c78bdcad8acde8d0abb2450aa1f78e1a1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 04 13:46:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:24:19 2013 -0700"
      },
      "message": "Make abort messages available to debuggerd.\n\nThis adds __libc_fatal, cleans up the internal logging code a bit more,\nand switches suitable callers over to __libc_fatal. In addition to logging,\n__libc_fatal stashes the message somewhere that the debuggerd signal handler\ncan find it before calling abort.\n\nIn the debuggerd signal handler, we pass this address to debuggerd so that\nit can come back with ptrace to read the message and present it to the user.\n\nBug: 8531731\nChange-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "d4ee82dfa3ba01baa10e3ca48fcb31a27b8a4e81",
      "tree": "b3e7ea16cf946c1d23131bb86f59e043449b7776",
      "parents": [
        "d392e044c7a03ff1c0903c3512d00955bc7de473"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 28 15:58:45 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 05 15:27:21 2013 -0800"
      },
      "message": "Minor linker cleanup, primarily to use Elf32_Dyn\n\nChange-Id: Ifa9408e9859c6f79444715bed4808b7c13fdced5\n"
    },
    {
      "commit": "6b8e321e610c0683062c0e8d8deabb64565c7403",
      "tree": "8840b7b04702236a2243660768bd5d691746bcbb",
      "parents": [
        "02f96b9db0242711fe1dfe0713c0c4e698561da5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 14:17:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 14:17:14 2013 -0800"
      },
      "message": "Clean up debuggerd-related logging.\n\nBug: 7291287\nChange-Id: Ia7aa386e8b75b8058d7d9e707e11b1da7dc62f00\n"
    },
    {
      "commit": "1e980b6bc8315d00a07312b25486531247abd98c",
      "tree": "539f2c0c63fca27d5eb6ba184d658bb0e11a32d9",
      "parents": [
        "e4ca88d9fa8757e4fb4056fcafa5bc15b406a2fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 18:36:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 18 22:20:06 2013 -0800"
      },
      "message": "Fix the duplication in the debugging code.\n\nWe had two copies of the backtrace code, and two copies of the\nlibcorkscrew /proc/pid/maps code. This patch gets us down to one.\n\nWe also had hacks so we could log in the malloc debugging code.\nThis patch pulls the non-allocating \"printf\" code out of the\ndynamic linker so everyone can share.\n\nThis patch also makes the leak diagnostics easier to read, and\nmakes it possible to paste them directly into the \u0027stack\u0027 tool (by\nusing relative PCs).\n\nThis patch also fixes the stdio standard stream leak that was\ncausing a leak warning every time tf_daemon ran.\n\nBug: 7291287\nChange-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8\n"
    },
    {
      "commit": "61a9ccb41eba8c35cae6e21318aca7160a402c5b",
      "tree": "45635217570d9cb83b4da14cac70beefdaa73f53",
      "parents": [
        "ed537239a94ebd11a8c262a319d81fd1f0d3f73f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 12:37:13 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 02 13:46:23 2012 -0700"
      },
      "message": "Make dynamic linker debugging always available.\n\nIf you need to build your own linker to get debugging, the debugging\nis never available when you need it.\n\nChange-Id: I5ff7e55753459d49a2990f25d9aa155e0b8602e0\n"
    },
    {
      "commit": "d23736e4f228e46304b7cbc674a1d0094d73e0f5",
      "tree": "a3604b996016d73b2ccaf2982d338dc5d5ae53a3",
      "parents": [
        "064f862d557ab741575dfae479499a07ca0ab742"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 15:16:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 01 16:48:14 2012 -0700"
      },
      "message": "Keep the dynamic linker\u0027s soinfo pools mostly read-only.\n\nWe\u0027ll need a lot more refactoring of this code before we can reduce\nthe granularity, but this is a step forward.\n\nChange-Id: I07061720e734b571a8399c1d5b4f2f35cd681307\n"
    },
    {
      "commit": "18a206c81d9743481e364384affd43306911283d",
      "tree": "2f211404b359cb7278f6963bb82f507e6c9a2050",
      "parents": [
        "06b596104a9ed3ac089abd00186a5698d7e8544f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 29 17:37:13 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 16:35:38 2012 -0700"
      },
      "message": "More dynamic linker cleanup.\n\nI still want to break linker_format out into its own library so we can reuse\nit for malloc debugging and so forth. (There are many similar pieces of code\nin bionic, but the linker\u0027s one seems to be the most complete/functional.)\n\nChange-Id: If3721853d28937c8e821ca1d23cf200e228a409a\n"
    },
    {
      "commit": "06b596104a9ed3ac089abd00186a5698d7e8544f",
      "tree": "fee68e3aaa870bc72c2e7f6fee3de18bac42bcc4",
      "parents": [],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 30 12:57:57 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 12:57:58 2012 -0700"
      },
      "message": "Merge \"Fix bug in pthread_join, pthread_exit, pthread_detach\""
    }
  ]
}
