)]}'
{
  "log": [
    {
      "commit": "6633b0ca090dd3da45b8936d587a1316401e46ba",
      "tree": "0b87776d1449833c2be01ed02d1b5352f23ac867",
      "parents": [
        "a10d40e2b2a6132b7e06397f62ac07a4d9bfb5e1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 03 16:03:28 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 03 18:37:52 2018 -0700"
      },
      "message": "Add a MemoryOfflineBuffer object.\n\nUse this for offline stack data so that it\u0027s not necessary to\ncopy any data around.\n\nAdd unit tests for the new object.\n\nBug: 77258731\nBug: 74354410\n\nTest: Ran libunwindstack/libbacktrace unit tests.\nChange-Id: I9b0f25d9520c96e64aedef5f295423c60ddb3488\n"
    },
    {
      "commit": "458f4e725d65e0d400552fbdbefb7d4b19d3c3c5",
      "tree": "3215275566d5b1f796c087f834ad044592419f7e",
      "parents": [
        "7102f7c98d2aaa393cc6ddc44cf277c5b9b71bf1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 23 12:51:43 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 23 13:01:44 2018 -0700"
      },
      "message": "Method to avoid skipping frames for local unwinds.\n\nIn cases where there might be a crash in the unwind library itself,\nwe need a method to avoid skipping these frames or we won\u0027t be able\nto see the actual crash.\n\nAdded unit test for this behavior.\n\nBug: 74121887\n\nTest: Ran unit tests on host and target.\nChange-Id: I45825020c174016af39dd8ffdc67acb72a24ad4d\n"
    },
    {
      "commit": "d5b22c5f048c3aae950d48a7681c156fe52cad24",
      "tree": "223634bb9f3992004a5394e9c742a021af964d2a",
      "parents": [
        "5ea2c4baf1d60915b4a75f2ea8347afbcecef98f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 22 17:11:31 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 21 17:23:54 2018 -0700"
      },
      "message": "Support a map that represents gdb jit elf data.\n\nChanges:\n- Add a new flag to the libbacktrace and libunwindstack map data.\n- Modify the unwinder to handle this map to use the raw pc when stepping.\n- Add new unit tests for this case.\n\nBug: http://b/73127105\nTest: Run simpleperf to unwind through jit symfiles.\nTest: Run new unit tests.\nTest: Run 137-cfi test on host.\nChange-Id: I10bc0410680accc6d35fe51e9f1098911f667e01\n"
    },
    {
      "commit": "432981b9055b411c4f4f1c5d6f60c94f8648c0b7",
      "tree": "fdca6018896e96e0097ae4ad02de9f327af40510",
      "parents": [
        "cdf778f5d92ab8748897a4d95693524d3273c23a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 22 19:42:53 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 23 09:14:06 2018 -0800"
      },
      "message": "Modify the offline handling interface.\n\n- Add a new function Backtrace::UnwindOffline that takes the stack data.\n- Modify BacktraceMap::CreateOffline so it doesn\u0027t take the stack data.\n  This makes it easier to reuse the map object created this way.\n\nReusing the map object increases simpleperf speed (unwinds per second) by 50%.\n\nTest: backtrace_test libunwindstack_test\nChange-Id: I90cfbae9e50d95d8a0e3cd394b33ba36d65d45f7\n"
    },
    {
      "commit": "e4b3a6aaa46bfe4b20597d89ba73c90e33da463d",
      "tree": "8f2f942a780b8c30a0b312df71ce008071134e28",
      "parents": [
        "ca26cbc5d389971887227b737489ff6b44e82a8f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 20 13:58:40 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 20 17:10:23 2018 -0800"
      },
      "message": "Add ability to skip function name resolution.\n\nBug: 73558129\n\nTest: New unit tests pass.\nChange-Id: I3a6b17d2590aacb367ab3e3a51cc85be73ad64eb\n"
    },
    {
      "commit": "dc699a269f6a22af6cbba0f6e1359fde103dc4d3",
      "tree": "db8830dc9e776480c4bc2170d276582d57a9a83a",
      "parents": [
        "8c0c1ba98939a201f758fc3952ab59c7429132c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 17:58:14 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 17:58:14 2018 -0800"
      },
      "message": "bpfmt.\n\nBug: N/A\nTest: builds\nChange-Id: I89ad00e1c4c7e0767bc80a7ac7935a4d55e090ac\n"
    },
    {
      "commit": "6983112f59a96ccefe4867a48cd102e8b0970067",
      "tree": "8a05d4d597635b332bdec98f98fdd74fbdca8394",
      "parents": [
        "76eda07ff6bacb5972bec7f59f0d36ac076028ec"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Feb 16 14:52:26 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 16 14:54:36 2018 -0800"
      },
      "message": "Fix darwin build\n\nDarwin needs libbase too.\n\nTest: \u0027m\u0027\nChange-Id: I9d50face92b7d5a4399dbcebd39d4062477b3a2c\n"
    },
    {
      "commit": "e1415a5c3b3e279fd6cfb6a7ee73ddc98bbec2ae",
      "tree": "93490451128e77d8f3a6fd3dcfb01c84975ef31d",
      "parents": [
        "73a2508dc4b2b6644e4904f013a6df5fff5e4569"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 15 09:18:21 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 15 16:28:50 2018 -0800"
      },
      "message": "Include the map name when dumping memory around a register.\n\nBug: http://b/19590178\nTest: ran tests, ran crasher\nChange-Id: Ib9afa34c860d8732ef1943eb4decd0b7c8fb55fd\n"
    },
    {
      "commit": "7747b60faa5dcfd43d920c1e60abdab1150aab32",
      "tree": "87d6249b19071be18cdb079980b09997369ada14",
      "parents": [
        "4819edf4fc15264cae0d94fbda5482b2480e99b9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 31 19:05:19 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 02 15:03:00 2018 -0800"
      },
      "message": "Load dex files from ART-specific data structure.\n\nFixes cdex which was recently changed to have shared data section,\nwhich means the DEX PC cannot be used to find the right symbol,\nas the bytecode is no longer within the dex file, and in-fact,\nwe might have to scan multiple dex files to find the method.\n\nBug: 72520014\nTest: testrunner.py --host --cdex-none -t 137\nTest: testrunner.py --host --cdex-fast -t 137\nTest: All unit tests pass.\nChange-Id: I80265d05ad69dd9cefbe3f8a75e4cd349002af5e\n"
    },
    {
      "commit": "d70ea5ea8511ae9b9ae57b17390e4027d20e3390",
      "tree": "958dc628f9a4d173076a54bc7d012d85ecc2473e",
      "parents": [
        "01ba1157325a5e6572122f5d46cfd0376b75aa98"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 30 19:47:24 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 31 14:19:42 2018 -0800"
      },
      "message": "Move dex pc frame creation into libunwindstack.\n\nTest: Compiles, all unit tests pass.\nTest: Ran 137-cfi art test in interpreter and verified interpreter\nTest: frames still show up.\n\nChange-Id: Icea90194986faa733a873e8cf467fc2513eb5573\n"
    },
    {
      "commit": "c8bec5aa91b20b0173bf6bf5f73f9e6daa40519d",
      "tree": "cada46a2ee86c8c6c22d563b605a5120caff0426",
      "parents": [
        "8abe4e2638587957f621450b4e4c3ff7af310b08"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Dec 11 17:44:33 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 29 10:41:11 2018 -0800"
      },
      "message": "Use new unwinder for offline in libbacktrace.\n\nlibbbacktrace changes:\n- Completely rewrite the BacktraceOffline class to use the new unwinder.\n- Modify the test data to save ucontext_t data instead of unw_context data.\n- Convert the previous tests from unw_context data to ucontext_t data.\n\nBug: 65682279\n\nTest: New unit tests pass in libunwindstack.\nTest: All offline tests continue to pass.\nChange-Id: I540345c304b20199d46deeb0349a0638a0f3ab2f\n"
    },
    {
      "commit": "8fe5836c02d3e0399c2246e67fc33ff5d4aa0032",
      "tree": "d59c2e6ddb576cbd497b50b5622e48eb963cee68",
      "parents": [
        "969539c5c80fae62fc92553766c22bd5952dc2f2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 26 14:26:13 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 26 14:26:13 2018 -0800"
      },
      "message": "Fix frame numbering regression.\n\nTest: All unit tests now pass.\nChange-Id: I280dfbbed3f835c826788b80ff4abb22bea7dc59\n"
    },
    {
      "commit": "645f8bbc6f3f97699b2ff8e849ead34519d11251",
      "tree": "12a7fb3f590dad15f3d3fd22bc44dc08317437b3",
      "parents": [
        "ccb9960bebe4e8ec7d674d8d1b778e5cd9669b48"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 25 12:21:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 25 14:09:43 2018 +0000"
      },
      "message": "Emit the frame for DEX PC before the frame for native PC.\n\nThis results in more natural backtrace.\n\nTest: ART\u0027s 137-cfi test\n\nChange-Id: Ic472db2733a330f8dbc722887809273b77d9dfb5\n"
    },
    {
      "commit": "0b06a590d9d949b9738266488d7fd2bc2d0b0557",
      "tree": "9088f2b7a33f42ad9478ee1a663a0ab5d71c65fd",
      "parents": [
        "b04bbccbb60ae303ecd083e5faa25f3168ba95cb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 19 10:26:36 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 23 13:17:48 2018 -0800"
      },
      "message": "Add extra frame when dex_pc is non-zero.\n\nUse the art dex file library to read the dex data.\n\nAdd unit tests for the UnwindDexFile code.\n\nBug: 72070049\n\nTest: All unit tests continue to pass.\nTest: Dumped the backtrace of the 137-cfi test while running in interpreter\nTest: mode and verified that the stack trace is correct. Did this on host\nTest: and for arm/arm64.\n\nChange-Id: Ia6f343318c5dd6968a954015a7d59fdf101575b0\n"
    },
    {
      "commit": "2486d5a10d01d9427f86f02a33ddb9a49ce671f5",
      "tree": "c55a4969ec0e4a0e68ab97d2bb2d24e18c85dca5",
      "parents": [
        "0ba2c9f4a242570b416a2814818787a4d29d3f19"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 22 17:37:59 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 22 17:37:59 2018 -0800"
      },
      "message": "Fix null ptr dereference if jit debug not enabled.\n\nTest: No crash when a jit debug object is not instantiated.\nChange-Id: Ic4350a10258459ead7c5679ceb84372f1084f0ad\n"
    },
    {
      "commit": "e20b4a48fee974901e73039f6add426df857e3de",
      "tree": "8818fbffe638b0523535829829e047a6ca0ec82b",
      "parents": [
        "b6d7f2655d19f8de30b3957a12715afddf7fc522",
        "7937a36c8e24ef2dc5105a2a6b67f395934b2e2f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 19 23:30:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 19 23:30:33 2018 +0000"
      },
      "message": "Merge \"Change all uintptr_t to uint64_t in API.\""
    },
    {
      "commit": "7937a36c8e24ef2dc5105a2a6b67f395934b2e2f",
      "tree": "c41fda20166f7166c5f17dc881da3ec5d8c3b25d",
      "parents": [
        "2c4f487dfbf1e1cce6e887bfef5e864f8222d07f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 18 11:15:49 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 18 17:26:20 2018 -0800"
      },
      "message": "Change all uintptr_t to uint64_t in API.\n\nIn order to support the offline unwinding properly, get rid of the\nusage of non-fixed type uintptr_t from all API calls.\n\nIn addition, completely remove the old local and remote unwinding code\nthat used libunwind.\n\nThe next step will be to move the offline unwinding to the new unwinder.\n\nBug: 65682279\n\nTest: Ran unit tests for libbacktrace/debuggerd.\nTest: Ran debuggerd -b on a few arm and arm64 processes.\nTest: Ran crasher and crasher64 and verified tombstones look correct.\nChange-Id: Ib0c6cee3ad6785a102b74908a3d8e5e93e5c6b33\n"
    },
    {
      "commit": "98984b41da78448df24d8d9ced842066328d5f11",
      "tree": "642bbd79fd42f8deccf9b29b3c73b5af295ec936",
      "parents": [
        "2c4f487dfbf1e1cce6e887bfef5e864f8222d07f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 17 12:59:45 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 17 19:18:00 2018 -0800"
      },
      "message": "Add support for getting a dex pc.\n\nChanges:\n- Change the register type from int16_t to uint32_t for the location data\n  and the Eval processing. This is because the special dex pc is \u003e 65535.\n- Add the ability for Dwarf register location information to point to a\n  register that is itself a Dwarf location register.\n- Add dex_pc to the frame information.\n- Modify the unwind tool to print the dex pc if non-zero.\n\nThis does not implement the printing of the dex information in anything\nbut the unwind tool. It\u0027s not the final form of this printing.\n\nBug: 72070049\n\nTest: Ran new unit tests.\nTest: Dumped stack while in interpreter running 137-cfi art test and\nTest: verified dex pc is set to non-zero.\nChange-Id: I6ce8a6b577fb4f92abacbd433b1f68977e272542\n"
    },
    {
      "commit": "150db124f3f3c0f8e1c341fd33c6c64310e0ac39",
      "tree": "87fb701a6895bf8f273997edb1d98bf9aea2a3cd",
      "parents": [
        "55feb241b159a946ad3a24286baec3b8bf43a9e6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Dec 20 18:49:01 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 12 11:18:42 2018 -0800"
      },
      "message": "Add ability to read jit gdb data.\n\nChanges:\n- New JitDebug class to handle all of the jit gdb interface.\n- Add unit tests for all, along with new offline test using debug data.\n- Add new Memory type called MemoryOfflineParts that has multiple\n  MemoryOffline objects to support the offline test.\n- Update the tools to use the JitDebug object.\n- Modify libbacktrace to use the JitDebug, but only looking in libart.so\n  and libartd.so.\n- Change the Format32Bits to Is32Bit since it\u0027s more accurate and I use\n  it in a different context where original name didn\u0027t make sense.\n- Add a new function to find global variables in an elf file\n  (GetGlobalVariable).\n- Add a new function to determine if a pc is valid for this elf (IsValidPc).\n\nBug: 68396769\n\nTest: Ran new unit tests. Added new offline test that uses jit debug data.\nTest: Ran art test that generates jit data and verified a crash unwinds\nTest: through the jit data.\nChange-Id: I6e7ee2f5bab2242028a06feece156dff21c0a974\n"
    },
    {
      "commit": "987913772094932de62e345a763fb024521a8f76",
      "tree": "cc3d647fa7fe0be12f5a535f44902576fec92c6c",
      "parents": [
        "6d8aff5fdc55d3a017209d931b221e14333bd478"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 18 14:37:54 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Dec 18 18:20:44 2017 -0800"
      },
      "message": "libBacktraceOffline: improve unwinding callchains.\n\n1. Extend MAX_BACKTRACE_FRAMES to 256, as we can have callchains\n   with length near 256 when recording Android applications.\n\n2. .eh_frame and .ARM.exidx doesn\u0027t know how to unwind from instructions\n   setting up or destroying stack frames. It can lead to wrong callchains,\n   which may contain pcs outside executable mapping areas. Stop unwinding\n   once this is detected.\n\n3. Some CIE entries in .eh_frame/.debug_frame suggest unwinder reading\n   personality routine from memory. However, that is not available in\n   offline unwinding, and leads to ACCESS_MEM_FAILED error. Work around\n   this by returning all zero data when failed to read data for some\n   addresses.\n\n4. Some libraries have empty .eh_frame_hdr but valid .eh_frame.\n   Work around this by building eh_frame_hdr manually.\n\n5. Prefer to use .debug_frame than .eh_frame. Because the former\n   can unwind instructions setting up and destroying stack frames.\n\nBug: http://b/69383534\nTest: run backtrace_test.\nTest: run simpleperf on some apps.\n\nChange-Id: I62dddda3865dd567c6be150ce5527dc2d3516256\n"
    },
    {
      "commit": "f88082811a87e3e088b926d0e0fa90688e02d258",
      "tree": "f338ee9f0e5e0c061fde9e3a39f2f27f9e457958",
      "parents": [
        "80bfeeef884e08b3a6aa593b1a35217b01e1b855"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 12 18:04:10 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Dec 15 13:29:53 2017 -0800"
      },
      "message": "libbacktrace: export offline unwinding failures.\n\nThis is to help debugging different offline unwiding failures.\n\nBug: http://b/69383534\nTest: run backtrace_test.\nChange-Id: I5ed4837027a9f17d032925e97e9f5927161444b3\n"
    },
    {
      "commit": "0ca49b09add6f8d0fc3254984cb3f87d192b910b",
      "tree": "a9817a12857178e5de2ede7c5be1b709c4b9956a",
      "parents": [
        "d65c6ba9552816382fd760024574a1a6d353f2a4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sun Dec 10 17:55:12 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sun Dec 10 18:00:35 2017 -0800"
      },
      "message": "libBacktraceOffline: try both .debug_frame and .ARM.exidx on arm.\n\nCurrently, libBacktraceOffline doesn\u0027t try .ARM.exidx if a function\nappears in .debug_frame. This make it can\u0027t unwind through functions\nappear in both .debug_frame and .ARM.exidx, but having dwarf instructions\nnot accepted by libunwind.\nThis patch fixes this by trying first .debug_frame then .ARM.exidx on arm.\n\nBug: http://b/69383534\nTest: run libbacktrace_test on arm.\n\nChange-Id: Ib95dd56d5cc123a20948e880b51b28ddc04b4a6e\n"
    },
    {
      "commit": "88b48f7b18a259a894e2d6644af316cb3046e2b8",
      "tree": "c2ebaaca894d72832da0f56088ddfde52c699676",
      "parents": [
        "a4a9a81d383b4c29841279b342a4e8772542ea88"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 08 12:19:44 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 08 12:48:46 2017 -0800"
      },
      "message": "Make sure at least XX maps are created.\n\nRather than expect exactly one set of maps, make sure there are at\nleast XX number of maps.\n\nTest: Ran the 32 bit and 64 bit variants of the benchmarks.\nChange-Id: I34184eab3810e92e7f246aa810ddb18fab443c9a\n"
    },
    {
      "commit": "70f7d47f3ca5ac63f3e4d77c60a37aaff19f5b2a",
      "tree": "963ee36f5745de63d0f8b721b0cc7ae21117f75d",
      "parents": [
        "cf27dbacafb53e800ca77c8b95392bafc739253f",
        "e328673a305a5c9f4acf73a7a2826eb61390632c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 08 20:09:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 20:09:34 2017 +0000"
      },
      "message": "Merge \"Add method to detect remote read function to use.\""
    },
    {
      "commit": "e328673a305a5c9f4acf73a7a2826eb61390632c",
      "tree": "a4de300723718b8bfac81cff5a0ab7caa4b76b4a",
      "parents": [
        "255c43cd050f5202e96483430684c19b7ce916ff"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Dec 07 17:41:18 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Dec 07 19:00:00 2017 -0800"
      },
      "message": "Add method to detect remote read function to use.\n\nThe process_vm_read function is much faster than ptrace, but sometimes\nthat will not work on a remote process. Modify the libunwindstack\nMemoryRemote object to figure out which one it can use.\n\nWrote new unit test to verify this checking behavior.\n\nModify libbacktrace so that the read from libunwind is used instead of\nusing the default ptrace calls.\n\nAdd some benchmarks to libbacktrace to compare the two different methods.\n\nTest: Ran unit tests libbacktrace/libunwindstack/debuggerd.\nTest: Ran debuggerd -b \u003cSYSTEM_SERVER_PID\u003e\nTest: Ran debuggerd -b \u003cMEDIACODEC PID\u003e\nTest: Ran debuggerd -b \u003cRANDOM_PID\u003e\nTest: Used crasher to create tombstones and verified stack data is\nTest: dumped properly.\nChange-Id: If75ca238289532dd8e1de430d569cabb2523380a\n"
    },
    {
      "commit": "3289b9c9282dec777363256e27fcc23cd97001c1",
      "tree": "e592f69aba1eceaf88b8ddb643935a5e77b13e3c",
      "parents": [
        "255c43cd050f5202e96483430684c19b7ce916ff",
        "693d63f9cfc21e3334c6f8f228d73c4fb60ced8b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 23:21:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 07 23:21:26 2017 +0000"
      },
      "message": "Merge \"Add OWNERS.\""
    },
    {
      "commit": "693d63f9cfc21e3334c6f8f228d73c4fb60ced8b",
      "tree": "f0cc35536aff301e680302b8f3654517b8863acc",
      "parents": [
        "aaa0bbce8eadf1a428493f3524066a74447eded4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 11:31:02 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 13:30:03 2017 -0800"
      },
      "message": "Add OWNERS.\n\nBug: N/A\nTest: N/A\nChange-Id: Ie785058c0f5eb9b4086c98ccba6e63e3ed411b65\n"
    },
    {
      "commit": "a7e2a12d388cf9e02bb1f73c789fb03960eccdfa",
      "tree": "98325da11752985846d77f987f644bb55754aac4",
      "parents": [
        "a78c68679946bcf5a59462660db3d23002334667",
        "d06001d6e07b14b865f3294fff82d2571ed7cb2c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Dec 07 02:35:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 07 02:35:35 2017 +0000"
      },
      "message": "Merge \"Split arch data into separate files.\""
    },
    {
      "commit": "d7edcc9bc4728c63f04a1a85556c9714c2911b3c",
      "tree": "c65e5db61846f4294ee18974b6e62964db2a0adc",
      "parents": [
        "665f144566baa5f2f10a536fa14c54d8b7d15032",
        "4a26eaf1f14eee98b40fe626138466f8b89854fa"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Dec 07 00:25:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 07 00:25:20 2017 +0000"
      },
      "message": "Merge \"libBacktraceOffline: fix using debug frame with load bias.\""
    },
    {
      "commit": "d06001d6e07b14b865f3294fff82d2571ed7cb2c",
      "tree": "658e3e571743464b47bad3a5642e2ab0bd41fa40",
      "parents": [
        "1ae6d14f938c05654a4bef99a54503dbb2409572"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 18:56:01 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Dec 06 16:01:40 2017 -0800"
      },
      "message": "Split arch data into separate files.\n\nAdd an ArchEnum to express the arch of the Elf objects and Reg objects.\n\nSplit out the regs code into per arch pieces and generic parts.\nAlso, split out the header files for each arch.\n\nDo not break out the test code yet, there isn\u0027t enough and it doesn\u0027t\nhelp to maintain the tests.\n\nTest: libunwindstack/libbacktrace/debuggerd unit tests pass.\nTest: Running debuggerd -b \u003cPIDS\u003e yields valid data on bullhead.\nChange-Id: If61f6c730c9ff2249f986b41de8c4d62f7158325\n"
    },
    {
      "commit": "4a26eaf1f14eee98b40fe626138466f8b89854fa",
      "tree": "65890f29b95700abde526d54014b88d2c1d20bbd",
      "parents": [
        "6740b9697e76fa8144d958a9248eee5bf4749e0f"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 05 17:40:48 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Dec 06 11:27:06 2017 -0800"
      },
      "message": "libBacktraceOffline: fix using debug frame with load bias.\n\nBug: http://b/69383534\nTest: run backtrace_test.\nChange-Id: I295d9dc8f3e5b628f179b2eaeac21fa93de130b0\n"
    },
    {
      "commit": "b7de5f542925216dbb8b7124260d2915570598d1",
      "tree": "2126153a21557204dd60a05605c4aa0445155b11",
      "parents": [
        "ebca57adecb3521d78e4e1e5c220df897f84e336"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 01 21:37:37 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Dec 05 13:12:47 2017 -0800"
      },
      "message": "Demand read load bias for a map.\n\nAdd a static GetLoadBias method to the Elf object that only reads just\nenough to get the load bias.\n\nAdd a method to MapInfo that gets the load bias. First attempt to get\nit if the elf object already exists. If no elf object was created, use\nthe new static method to get the load bias.\n\nIn BacktraceMap, add a custom iterator so that when code dereferences\na map element, that\u0027s when the load bias will be retrieved if it hasn\u0027t\nalready been set.\n\nBug: 69871050\n\nTest: New unit tests, verify tombstones have non-zero load bias values for\nTest: libraries with a non-zero load bias.\nChange-Id: I125f4abc827589957fce2f0df24b0f25d037d732\n"
    },
    {
      "commit": "be788d891da26943b1ad6abe0f07a8745fa676d5",
      "tree": "859d524e7673f9e700d5c5f9a102e485fd8c8602",
      "parents": [
        "f03f2a5cd7a7ad7a2cfa3c2ae5f512c0ddbeeb80"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 27 14:50:38 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 28 15:20:38 2017 -0800"
      },
      "message": "Allow multiple threads sharing a map to unwind.\n\nAdd a mutex in MapInfo, and a mutex in Elf. Lock the creation of an Elf\nfile using the MapInfo mutex, and lock when calling Step, GetFunctionName,\nor GetSoname since they can modify information in the object. It might\nbe beneficial to use a fine grained lock in the future.\n\nChange the Maps object to contain a vector of MapInfo pointers rather\nthan the total objects. This avoids copying this data around.\n\nAdd a test to libbacktrace to verify that sharing a map while doing\nunwinds in different threads works.\n\nAdd concurrency tests in libunwindstack to verify the locking works.\n\nAdd always inline to the RegsGetLocal arm and aarch64 functions. I had\na case where clang did not inline the code, so make sure this is specified.\n\nBug: 68813077\n\nTest: New unit tests to cover the case. Passes all unit tests.\nTest: Ran a monkey test while dumping bugreports and verified that\nTest: no crashes in libunwind.\nTest: Remove the locking and verified that all of the concurrenty tests fail.\nChange-Id: I769e728c676f6bdae9e64ce4cdc03b6749beae03\n"
    },
    {
      "commit": "c56a499422a7d85999babecfb0e7b8a7d0b42adc",
      "tree": "da665c52b1791154de8f101a3b9bfb8002750c2a",
      "parents": [
        "0d323c12df99201a341f0fb34ed543a46ec6eb86"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 02 16:19:56 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 02 16:22:52 2017 -0700"
      },
      "message": "Only skip frames for local unwinds.\n\nWhen doing a remote unwind, and there is a crash in the unwind stack\ncode or in libbacktrace, the old version would skip those frames.\nThis makes debugging crashes in those libraries a bit difficult.\n\nBug: 68820611\n\nTest: Ran unit tests.\nTest: kill -3 a zygote process and verify no frames in\nTest: libunwindstack.so/libbacktrace.so.\nTest: Forced a crash in libunwindstack.so and verified the tombstone\nTest: contains the full crash.\nChange-Id: I297e5b3775c87c0dddf57ebb423bd72ba1baf193\n"
    },
    {
      "commit": "086baf981d696cb80c564df9c34affdcd2458504",
      "tree": "c8d6350c5947fdeb0f9e4b3692cfa706ad5b1317",
      "parents": [
        "d9f183b83b17795cf8b075da44b9d85c166217af"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 17 14:12:52 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 30 13:37:50 2017 -0700"
      },
      "message": "Switch libbacktrace new unwinder.\n\nUpdate the backtrace leak tests to share a map since this is the most\ncommon way it will be used, and it runs much faster.\n\nRemove the CreateNew functions, and references to them.\n\nRemove benchmarks of CreateNew functions.\n\nTest: Builds, ran new unit tests, ran art tests.\n\nChange-Id: I4a25a412f1a74c6d43aebbebbf32ead20ead8f94\n"
    },
    {
      "commit": "e22701ee8a8246e9648a60ebdbed2c415c103c91",
      "tree": "499fe42dcb3b6bbd31bfbaeff09398b34e02e2ac",
      "parents": [
        "b9670bb437d493f834c6ba3096946583d2904b72"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 23 14:25:08 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 26 14:20:17 2017 -0700"
      },
      "message": "libbacktrace: remove exit time destructors.\n\nIf libbacktrace is statically linked into a library that interposes\nlibc, exit-time destructors can lead to a segfault upon exit if static\nvariables are used after their destruction.\n\nRemove the one use of a static variable (with inconsequential\nperformance impact of less than 1us per backtrace), and enable\n-Wexit-time-destructors to ensure this stays fixed in the future.\n\nTest: mma\nChange-Id: Icdaf1cf1c1f166cf501d9ecd1983c44e4305f7e9\n"
    },
    {
      "commit": "b9670bb437d493f834c6ba3096946583d2904b72",
      "tree": "c3cba9f1e1f440595976843b018d4d1c7cc80c10",
      "parents": [
        "3b094c169f0fe1b799114fde35f73f2a064a63d4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 25 15:12:24 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 26 14:20:16 2017 -0700"
      },
      "message": "libbacktrace: add benchmarks for Backtrace::Create, CreateNew.\n\nTest: backtrace_benchmarks\nChange-Id: I80ba5adb31d446314060edd00149f09e14e6815e\n"
    },
    {
      "commit": "3b094c169f0fe1b799114fde35f73f2a064a63d4",
      "tree": "36927db5b0db017c10a6d621fd0e82c83fdb8594",
      "parents": [
        "cd546c11d679288d552d80b3e6caf965a9094c63"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 26 13:57:40 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 26 14:19:49 2017 -0700"
      },
      "message": "libbacktrace: let the benchmark library decide iteration count.\n\nManually doing 1000 iterations of the benchmark doesn\u0027t seem to add any\nsignificant amount of precision, and it makes the benchmark take\nforever and obfuscates the results. Just let benchmark figure out the\ntime (with the option of using command line flags to increase the\nnumber of iterations).\n\nTest: backtrace_benchmarks64\nChange-Id: I8de912c1b3c904755c8e2ac4175ff70176544ba3\n"
    },
    {
      "commit": "cd546c11d679288d552d80b3e6caf965a9094c63",
      "tree": "3e78e02b3af17a345e0ae63f776d20ec954a6f99",
      "parents": [
        "972753e09411ab223d2ed5a70a2a99938f2785b1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 25 15:21:45 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Oct 26 14:19:49 2017 -0700"
      },
      "message": "libbacktrace: correctly number frames when skipping.\n\nCorrect for the number of skipped frames when unwinding with\nlibunwindstack.\n\nTest: backtrace_test32  --gtest_filter\u003d\"unwind_frame_skip_*\"\nChange-Id: I9528977104fde3c4ec792a6db1ada24ed571b867\n"
    },
    {
      "commit": "3adedf9895eda0ac679e73418ed53848c4c7423f",
      "tree": "9f6ea27b3408a76315d00cc61ee56455cdd024fd",
      "parents": [
        "1ab86ad3bc3fd4b9c4e18e549d135e25ab07936a",
        "1cb84cea2f622327d41abb8845e97dffa055fa4e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 25 19:18:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 25 19:18:21 2017 +0000"
      },
      "message": "Merge \"Add an interface for stopping in certain maps.\""
    },
    {
      "commit": "1cb84cea2f622327d41abb8845e97dffa055fa4e",
      "tree": "f6eee63bebccee922592de7b3946d4aab564475e",
      "parents": [
        "09123383cbdaee9ca0a85289061b7b98ff6160d8"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 24 15:36:00 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 24 15:45:59 2017 -0700"
      },
      "message": "Add an interface for stopping in certain maps.\n\nAlso, change the std::set parameters to std::vector. As jmgao points out,\na small std::set is not really the best choice for performance reasons.\n\nTest: All unit tests pass, enabled the new unwinder and did a kill -3 on\nTest: an android process.\nChange-Id: I81227d7b79a9b7cf1d54fb0e3331d3cf4d4d3c4f\n"
    },
    {
      "commit": "5169c167c5ab026e80437c4f54bd4486549a782e",
      "tree": "e0df34ca665fe8386e9199138f55eee6aba137ed",
      "parents": [
        "cada8d74d09d8c6f1e472a720c456bc90de77f13"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 24 12:39:10 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 24 12:39:10 2017 -0700"
      },
      "message": "Remove PauseTiming/ResumeTiming calls.\n\nThese calls can only be used after the call to state.KeepRunning(),\nwhich handles the start/stop itself.\n\nBug: 68170209\n\nTest: Ran the benchmark and got reasonable results.\nChange-Id: Ie12eb3a983f6fe60c85d6dfc90957eedc16b5526\n"
    },
    {
      "commit": "1c65e77e6d73b9eee13d913e0b7886c72282e67f",
      "tree": "ad4fe5d769556097d531f6c2ab67a2192a2f555c",
      "parents": [
        "b409e5e00b0af1cfe5648d132d4f62797738ac1d",
        "6f580d8b843f4caac8c12383684941ca02de12a8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 24 04:03:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 24 04:03:18 2017 +0000"
      },
      "message": "Merge changes I8f33830f,Icd2b891b,I8736ff5c,Iae6e342a\n\n* changes:\n  libunwindstack: add method to iterate across registers.\n  libbacktrace: expose BacktraceMap\u0027s unwindstack::Memory.\n  libunwindstack: expose UnwindStackMap::GetFunctionName.\n  libbacktrace: expose libunwindstack Unwind routine.\n"
    },
    {
      "commit": "ebea0ef2566bb2404154d89fbe4e80b0abf197cd",
      "tree": "1512402047eae7aaf9e1ab8ecb83317991a3fe66",
      "parents": [
        "358de18b2747828720e7f9dc538e724a66f02cba"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 06 15:39:14 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 20 13:52:56 2017 -0700"
      },
      "message": "libbacktrace: expose BacktraceMap\u0027s unwindstack::Memory.\n\nTest: mma\nChange-Id: Icd2b891b121b90d55e3ac45037a59c24221a2496\n"
    },
    {
      "commit": "358de18b2747828720e7f9dc538e724a66f02cba",
      "tree": "60788722a9ace559fd55cc9e7a46b3fc59b10bfd",
      "parents": [
        "45c4a56f1d484ce60390bf48ab55076d4d601c9d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 06 22:16:09 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 20 13:52:56 2017 -0700"
      },
      "message": "libunwindstack: expose UnwindStackMap::GetFunctionName.\n\nTest: mma\nChange-Id: I8736ff5c2ed7c5e64eb68df5f4eccfed614612c7\n"
    },
    {
      "commit": "45c4a56f1d484ce60390bf48ab55076d4d601c9d",
      "tree": "d6401f8b6a85858c91af46cb6b282f3f1ac8cc50",
      "parents": [
        "d72d92aee2d125f6a8d26932e6482bea5398b92c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 06 14:35:35 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 20 13:52:56 2017 -0700"
      },
      "message": "libbacktrace: expose libunwindstack Unwind routine.\n\nTest: backtrace_test32/64 on hikey960\nChange-Id: Iae6e342a8ffd13b4d5f76b39dd434c827f7a4d9e\n"
    },
    {
      "commit": "9a6b3e39e58e761bdc5b23af19378efb023e1dac",
      "tree": "d384940db728f89db3f76596af6c4081e7a2d53c",
      "parents": [
        "d72d92aee2d125f6a8d26932e6482bea5398b92c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 18 09:08:51 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 18 19:20:12 2017 -0700"
      },
      "message": "Fix demangle of function names.\n\nAlso move the Backtrace::CreateNew function into the same place as ::Create\nin preparation for the switch to the new unwinder as the base.\n\nTest: Verify that names are demangled properly.\nChange-Id: I6274cd43ea52210523e1e1ce23af5b22f62f4573\n"
    },
    {
      "commit": "22d2136d758a7217b6d477607376bec40cecfb26",
      "tree": "07c56ab1f2272ba63c1185538f406b37ad389a97",
      "parents": [
        "6e52973623623c07d86a03fde0b9e5ff70cd8176",
        "b7d92c4b96cebae6a60f5256c9173e46f325e860"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 01:31:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 01:31:24 2017 +0000"
      },
      "message": "Merge \"libbacktrace is not directly available to vendors\""
    },
    {
      "commit": "bdddcab3bd0c92d12793d4e1bc7252443bcd0e6e",
      "tree": "331faf41713b3286f19eb651ef6cb882562b1732",
      "parents": [
        "06254de12a9a12c5d0a7732d2a40cc3a10754b57"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Tue Oct 03 14:17:31 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 16 20:55:39 2017 -0700"
      },
      "message": "Use target.linux for all linux kernel based targets\n\nNow in Android.bp files, target.linux applies to all targets running a\nlinux kernel (android, linux_glibc, linux_bionic). So common\nflags/sources/etc can be combined instead of copying them to each\ntarget.\n\nTest: m\nChange-Id: If7ad138ea1c540c160731f86b6ccc0daa5c69b83\n"
    },
    {
      "commit": "b7d92c4b96cebae6a60f5256c9173e46f325e860",
      "tree": "2c9292849b77f78c143bd2fe7014c133461b3ce5",
      "parents": [
        "06254de12a9a12c5d0a7732d2a40cc3a10754b57"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Aug 23 13:25:21 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 16 11:35:02 2017 +0900"
      },
      "message": "libbacktrace is not directly available to vendors\n\nThis lib becomes VNDK-SP just because libutils, which is VNDK-SP, is\ndepending on it. Since libutils provide android::CallStack class for\ncollecting and printing the callstack, there is no need for vendors to\nuse the internal libbacktrace library. Thus the lib is marked as\nvendor_available: false.\n\nBug: 64730695\nTest: build 2017 pixel device\nChange-Id: I4ad91e3a6747bb0ae88d32cd26dfba32239c5b93\n"
    },
    {
      "commit": "9e6c11da18267ffe27f7be06ce5a04fe321645a3",
      "tree": "419928f6eb5f5fbd0c55db00d6d0650522f0cb2f",
      "parents": [
        "4e008547bea04bd552fbca53c742987087c8c4d6",
        "f6f691b63c1b2166ed005a462a6fba5001786eda"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 05 20:46:01 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 05 20:46:01 2017 +0000"
      },
      "message": "Merge \"Update the Unwinder object and add tests.\""
    },
    {
      "commit": "f6f691b63c1b2166ed005a462a6fba5001786eda",
      "tree": "0b8cb36809d1d497a6fa9388620dda1768ca5c50",
      "parents": [
        "dea5e081ac0f94a83650a600af881b529817b6fd"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Sep 25 19:23:07 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Oct 04 14:40:14 2017 -0700"
      },
      "message": "Update the Unwinder object and add tests.\n\nChanges:\n- Remove unused GetReturnAddressFromDefault function and tests.\n- Modify the unwinder to stop when a pc/sp in a device map.\n- Modify the unwinder to skip initial frames based on map names.\n- Unit tests that exercise all of the paths in the unwinder code.\n- Move the test Elf/ElfInterface objects into their own file.\n- Update RegsFake to handle extra cases.\n- Modify libbacktrace code to use this unwinder.\n\nThe new unwinder does not implement the ignore frame functionality since\nthis is not used very often and is better implemented using a skip frames\nin named libraries functionality.\n\nTest: Ran new unit tests, ran backtrace tests.\nChange-Id: Ifd65e9acd66ac5e2d0e04bd32a9ad870b54610ff\n"
    },
    {
      "commit": "48529337077a2fad36a7cba0a26083694bff3537",
      "tree": "7ee83a477c711abf16ce00de72adfa2270277290",
      "parents": [
        "cd58088ccfc1a3315bed181c0c1b7cab3e71176f"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 02 10:38:16 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Mon Oct 02 10:44:29 2017 -0700"
      },
      "message": "Rename target.linux[_x86[_64]] to target.linux_glibc[_x86[_64]]\n\nIn the future, target.linux will apply to all targets running a linux kernel\n(android, linux_glibc, linux_bionic). So move all current users to the specific\nlinux_glibc.\n\nThere will be another cleanup pass later that will move some instances back to\ntarget.linux if the properties should be shared with target.android and\ntarget.linux_bionic, but target.linux needs to be removed first.\n\nTest: out/soong/build.ninja identical before/after\nChange-Id: I72ef34689c60ce547cab2898e354b027e335f6a1\nExempt-From-Owner-Approval: build system cleanup\n"
    },
    {
      "commit": "1e45d533b36df8436a667a63fe624091933cb2ab",
      "tree": "0a68593653604ca37e993339f5d8b3c44a02a559",
      "parents": [
        "39071a517738b24611ae373c9a608a4ca00d0630"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Sep 28 17:13:32 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Sep 29 13:17:06 2017 -0700"
      },
      "message": "Remove default libraries\n\nlibdl is part of system_shared_libs now. -ldl -lpthread -lm are now defaults\nfor host_ldlibs on Linux and Darwin. -lrt is a default for host_ldlibs on\nLinux.\n\nTest: m host\nChange-Id: I0b3c147b00a8ab6ff289b85db55b88836c905f5c\nExempt-From-Owner-Approval: build system cleanup\n"
    },
    {
      "commit": "92c355cc4fcc608791f258d28e2bcfcccc19acd0",
      "tree": "ee90a1d36e9878213d4818a2809b196057d13335",
      "parents": [
        "f7d14b643b48800ddb6b117fadc5225a67ea5a27",
        "868d39a82fb2d9830d253409a1c28f0ae1fcac33"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 26 21:01:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 26 21:01:20 2017 +0000"
      },
      "message": "Merge \"Show the number of VMAs in the tombstone.\""
    },
    {
      "commit": "868d39a82fb2d9830d253409a1c28f0ae1fcac33",
      "tree": "4fa6cbeb2fb1bcde3db301f722212d35d335ff9b",
      "parents": [
        "65673033ab9473142b334df76e8c0fcdea6a9335"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 11:54:49 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 26 12:01:06 2017 -0700"
      },
      "message": "Show the number of VMAs in the tombstone.\n\nTombstones (especially ones with lots of VMAs) are regularly truncated.\nWe can at least show the number of VMAs, though, for anyone interested\nin knowing whether they got close to the default 64Ki limit.\n\nBug: http://b/66911122\nTest: ran crasher, examined tombstone\nChange-Id: I286db66f28f132307d573dbe5164efc969dc6ddc\n"
    },
    {
      "commit": "b9de87f7edefd7a2473134b267716c5fd750e89f",
      "tree": "b172908cd472d59887c35a040b61c7fe6d61196a",
      "parents": [
        "0bb8dcb23ea63995fa7afe84be58c6e9407585a8"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Sep 20 13:37:24 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 22 16:55:12 2017 -0700"
      },
      "message": "Add a new unwind method on error.\n\nIf a function crashes by jumping into unexecutable code, the old method\ncould not unwind through that. Add a fallback method to set the pc from\nthe default return address location.\n\nIn addition, add a new finished check for steps. This will provide a method\nto indicate that this step is the last step. This prevents cases where\nthe fallback method might be triggered incorrectly.\n\nUpdate the libbacktrace code to unwind using the new methodology.\n\nUpdate the unwind tool to use the new unwind methodology.\n\nAdd a new option to crasher that calls through a null function.\n\nCreate a new object, Unwinder, that encapsulates the a basic unwind. For now,\nlibbacktrace will still use the custom code.\n\nAdded new unit tests to cover the new cases. Also add a test that\ncrashes calling a nullptr as a function, and then has call frames in\nthe signal stack.\n\nBug: 65842173\n\nTest: Pass all unit tests, verify crasher dumps properly.\nChange-Id: Ia18430ab107e9f7bdf0e14a9b74710b1280bd7f4\n"
    },
    {
      "commit": "b63a60fe831165db10bc01948758c3b0b4e1726d",
      "tree": "34d97ad29efc709e6f6cffe6ae931682410a05d6",
      "parents": [
        "18149b6764437eeb88d0ab78e565ec9cb2384779"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 06 14:34:26 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Sep 06 17:02:26 2017 -0700"
      },
      "message": "libbacktrace: make Backtrace::FormatFrameData static.\n\nBacktrace::FormatFrameData doesn\u0027t depend on anything from its\ninstance. Make it static so that callers that don\u0027t have a Backtrace*\navailable can format frames.\n\nTest: mma\nChange-Id: Id0ca93bbef19da488305374e58b25c7ca9d0e518\n"
    },
    {
      "commit": "5f118519fd323a0c71b54de9279e8a9ea6a56271",
      "tree": "3ce288c58ab8d5a6aa1d3c307def1f0f1019ae7a",
      "parents": [
        "9638729a9d9e3cbbbe1bb2784e774fef0f2e6a54"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Sep 01 11:17:16 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 05 14:30:22 2017 -0700"
      },
      "message": "Add a method to share the process memory object.\n\nNew function to create the process memory object. This allows for\na future where different remote process memory objects could be created\ndepending on the way remote memory can be created. Even different local\nmemory objects that access memory without doing any checks.\n\nIt also allows MemoryRange objects to share one single process memory object\nand could help if the process memory object caches data.\n\nSmall changes to MapInfo::CreateMemory to when some errors are detected.\n- Always check if the map is a device map, instead of only if the name\n  is not empty.\n- Check if a memory map is readable before creating the memory from process\n  memory.\n\nBug: 23762183\n\nTest: Ran unit tests, unwound on device using the new code.\nChange-Id: I12a93c2dc19639689a528ec41c67bfac74d431b3\n"
    },
    {
      "commit": "458cc66b0793a0552ff6e401aea9f76b911ad113",
      "tree": "20541e62861a9439f566198d0483fbbb1ea2e675",
      "parents": [
        "9f38e19b888d145d7082cfc8ef64650169ed8b0c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Aug 28 16:31:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Aug 28 18:08:52 2017 -0700"
      },
      "message": "Update the tests.\n\n- Change all load_base to load_bias in the test files.\n- Add the test files to the backtrace_test.\n- Add a function to get the path to the test libraries.\n- Change aarch64 to arm64 for offline test code.\n- Modify the offline tests so that they can be easily updated when\n  unwinding on any arch for any other arch is possible.\n- Add tests of CreateNew for remote debugging.\n\nTest: Ran unit tests on host and angler.\nChange-Id: Id6c5afe73aeb2ac22463dd81f061799fcb1c178b\n"
    },
    {
      "commit": "75a40988c0e7a35f2663b644989ce012b66f4586",
      "tree": "2e40cac43676143ffa2d2793fdc87aa7ee5807e4",
      "parents": [
        "54a28300b790dbbb165563bca0720939b5157864",
        "0953ecd03a90350117d6881c55959c6644972b79"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Aug 26 00:02:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 26 00:02:46 2017 +0000"
      },
      "message": "Merge \"libunwindstack: make machine type a property of Regs.\""
    },
    {
      "commit": "0953ecd03a90350117d6881c55959c6644972b79",
      "tree": "5bfbfde939a83d68e8769f58eefda0c4f3d61380",
      "parents": [
        "46244a6497ac6b0b1a589e40a67d0f99f462ba1e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 25 13:55:06 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 25 14:48:09 2017 -0700"
      },
      "message": "libunwindstack: make machine type a property of Regs.\n\nThere are no actual users of the machine type output parameter to\nRegs::RemoteGet. The concrete implementations of Regs know what machine\ntype they represent anyway, so provide an accessor to query.\n\nTest: treehugger\nTest: libunwindstack tests on 32/64-bit host, hikey960\nChange-Id: Ia25910531d36c41b2b6919f154cfa914aae63117\n"
    },
    {
      "commit": "df3e89be9466cd29d3d35c0e5a7b687789d2be09",
      "tree": "e71565ec1233824576147a84b2b746722e0e6507",
      "parents": [
        "06e0c704d7b3a97348ae10eb257d856dabd5656e",
        "60521c7d52962827b447467ef550d9db05cc358c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 25 19:04:14 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 25 19:04:14 2017 +0000"
      },
      "message": "Merge \"Speed up map creation.\""
    },
    {
      "commit": "60521c7d52962827b447467ef550d9db05cc358c",
      "tree": "6c080470815a650e39f167101ed4fc633d62fad3",
      "parents": [
        "e3e4ec7c97e7f4beafd5c6d6186018c93a9b6e5d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 18 15:10:53 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 23 15:43:39 2017 -0700"
      },
      "message": "Speed up map creation.\n\n- Rewrite the Maps::Parse to use open, and a buffer on the stack.\n- Rewrite the line parser away from sscanf. The current way sscanf\n  is used does not catch many malformed lines. In addition, this\n  new version improves performance by 50% over sscanf on sailfish.\n- Add a lot of unit tests for the parser to make sure there are\n  no problems. In addition, add a special line that was not rejected\n  with the previous version of the code.\n- Add new accessor to get the map at a particular index.\n- Add a backtrace benchmark for map creation for both new and old.\n\nThis cl results in ~5% speedup and makes the new unwinder map creation\nabout the same for 64 bit. It\u0027s still a bit slower, but not by much.\nOn 32 bit, we are still about 5% slower than the old creation method,\nthough.\n\nBug: 23762183\n\nTest: libunwindstack unit tests pass. Ran the new benchmarks.\nChange-Id: Id4431e539f400984e6fad62153fdf4152d518322\n"
    },
    {
      "commit": "9ca92458e272c63f838d0c9340650f29d6eef81e",
      "tree": "411571e86c2ec95537ec5885cf844204ff7542c0",
      "parents": [
        "7f16cad877571ce8ef0808dcdb81234d61b771ca"
      ],
      "author": {
        "name": "Justin Yun",
        "email": "justinyun@google.com",
        "time": "Mon Jul 31 15:41:10 2017 +0900"
      },
      "committer": {
        "name": "Justin Yun",
        "email": "justinyun@google.com",
        "time": "Wed Aug 23 17:56:13 2017 +0900"
      },
      "message": "Mark the modules as VNDK-SP in Android.bp\n\nAs a VNDK-SP module, Android.bp must have \u0027vndk\u0027 tag as well as\n\u0027vendor_available: true\u0027.\n\nThe \u0027vndk\u0027 tag for VNDK-SP formated as follows:\nvndk: {\n    enabled: true,\n    support_system_process: true,\n},\n\nVNDK-SP modules will be installed both in system/lib(64) as normal\nand in system/lib(64)/vndk-sp as a vendor variant.\n\nBug: 63866913\nTest: build and boot with BOARD_VNDK_VERSION\u003dcurrent\nMerged-In: I51fe0859f63ad58b7b91909e7d7d4206443228cd\nChange-Id: I51fe0859f63ad58b7b91909e7d7d4206443228cd\n(cherry picked from commit aeb68e86e4e335d4b201c46099cc2ce1256beec2)\n"
    },
    {
      "commit": "04fdec0bbf41cc252ecf6b7a98f58196dc940bc2",
      "tree": "7f0cd355c2ce14d4ce948bbf511e92f974a58a16",
      "parents": [
        "12bd22badf129ac21fe257d2b1c1f6c678719299"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 11 15:17:46 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 11 15:17:46 2017 -0700"
      },
      "message": "Add demangling of function name.\n\nBug: 23762183\n\nTest: Builds, unit tests pass.\nChange-Id: Id49248a27d822db0f3837bfc0c20d004c55315fc\n"
    },
    {
      "commit": "3b4b075fea87c0177e5ef314776713162d86566d",
      "tree": "0968973b5fb6232d55d1818157627956a2cc1ea9",
      "parents": [
        "2d1d8812cc71c9ab17c0362602f3adff9e643d81"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 09 11:16:03 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 09 14:22:12 2017 -0700"
      },
      "message": "Small clean ups\n\n- Remove redundant map_info checks.\n- Initialize fde_count_ to zero.\n\nBug: 23762183\n\nContributed-By: Ivan Maidanski \u003ci.maidanski@samsung.com\u003e\n\nTest: Builds, run backtrace_test modifying CreateNew to Create and vice-versa.\nChange-Id: I6e9cdfa99734f8cc2d9915cc32c66a1455e79f1b\n"
    },
    {
      "commit": "6f3981c181677830c33093411b51ad6b0bf2e337",
      "tree": "35ea042367a3e9462346d78ba86e8be397b77edb",
      "parents": [
        "5c655991f51e63f4264619293b393a2c6bddb1fa"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jul 27 09:29:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 03 10:15:44 2017 -0700"
      },
      "message": "Add support for the new unwind method.\n\nAlso add a comment to the GetElf function to indicate that it never returns\nnullptr.\n\nAlso needed to add this library to the a million and one places that the vndk\nhas hard-coded this data.\n\nBug: 23762183\n\nTest: Built, nothing uses the new code.\nTest: However, I did run backtrace_test using this code, and all tests pass.\nChange-Id: Ib270665dcb7a7607075e36d88be76dbde6e2faa8\n(cherry picked from commit dc4104b720c7fd2014ccfa9fa621d02df58a43c4)\n"
    },
    {
      "commit": "0d2cac9ea8000933cf4beb3c3066a26877b44ba8",
      "tree": "467001f658be28be0bf410260a8a976e36e5c00b",
      "parents": [
        "9ccf627e7876a05d79fd7a69a194aa614e6964d5",
        "bd625efbca611f56f9e206e8f876e128a1dd5364"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 02 01:49:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 02 01:49:03 2017 +0000"
      },
      "message": "Merge \"Revert \"Add support for the new unwind method.\"\""
    },
    {
      "commit": "bd625efbca611f56f9e206e8f876e128a1dd5364",
      "tree": "f77f535b2ce7df9df96483c8fe0c0b2aef4e2c4b",
      "parents": [
        "5b460d13a4c383fa6c9a416d64502430ab065209"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 02 01:47:31 2017 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Aug 02 01:47:31 2017 +0000"
      },
      "message": "Revert \"Add support for the new unwind method.\"\n\nThis reverts commit 5b460d13a4c383fa6c9a416d64502430ab065209.\n\nReason for revert: Strange sailfish boot problem.\n\nChange-Id: Ibde9375405cca4343c262335647dac120aab4d73\n"
    },
    {
      "commit": "9ccf627e7876a05d79fd7a69a194aa614e6964d5",
      "tree": "eadae2b36d0389870712bbd9d1dd9825a35fc30c",
      "parents": [
        "e4bd153e55a3dc39ae95e15c6995b310d08b8007",
        "5b460d13a4c383fa6c9a416d64502430ab065209"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 01 23:22:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 01 23:22:42 2017 +0000"
      },
      "message": "Merge \"Add support for the new unwind method.\""
    },
    {
      "commit": "85244e8bc2702f9a46782c5075b832b7c1d96900",
      "tree": "effeb66248b4be8136348a877274dc8e3731dbba",
      "parents": [
        "eb3fa921916f2505d85fe42b780a890f7358f482"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 01 13:49:57 2017 -0700"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 01 22:12:57 2017 +0000"
      },
      "message": "Fix misc-macro-parentheses warnings in system/core.\n\nAdd NOLINT comment to work around clang-tidy\nerror in checking macro arguments used in\ntype expressions.\n\nBug: 28705665\nTest: make with WITH_TIDY\u003d1 WITH_TIDY_CHECKS\u003d-*,misc-macro-* \\\n      WITH_TIDY_FLAGS\u003d-header-filter\u003dsystem/core/.*\n\nChange-Id: I7619978c1804e151a11a8b0477e80076bcf21cab\n"
    },
    {
      "commit": "5b460d13a4c383fa6c9a416d64502430ab065209",
      "tree": "d9a8238774e138208ecc47f507aef04c6ded7025",
      "parents": [
        "6fa0884188dbc27b59b2fa3f86fb317bb1381252"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jul 27 09:29:18 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jul 31 13:00:35 2017 -0700"
      },
      "message": "Add support for the new unwind method.\n\nAlso add a comment to the GetElf function to indicate that it never returns\nnullptr.\n\nBug: 23762183\n\nTest: Built, nothing uses the new code.\nTest: However, I did run backtrace_test using this code, and all tests pass.\n\nChange-Id: I252b9c2497e2d3d94347dd6e506170bf50cbfe16\n"
    },
    {
      "commit": "96722b0fa48524e03659c0a3d579f8ef4f1641ba",
      "tree": "36fc9010745e09a91647fabbc5abdbbbe2cea9f2",
      "parents": [
        "33913ebfb5ca699d09459227284b3d324343fa43"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 19 14:20:46 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 19 15:36:32 2017 -0700"
      },
      "message": "Cleanup the libbacktrace interface a bit.\n\n- Change the field name load_base to load_bias (which is what it really is).\n- Add a rel_pc field so that callers do not need to compute it themselves.\n- Remove the BacktraceMap::GetRelativePc() since nobody should need to\n  compute this themselves.\n\nBug: 23762183\n\nTest: Compiles and unit tests pass (debuggerd, libbacktrace).\nChange-Id: I2cb579767120adf08c407a58f3c487ee3f2b45fc\n"
    },
    {
      "commit": "8f0947c11fc77eab980ea2de2cc3fa90ff4973a5",
      "tree": "a83135f81f2c927c31bcc45f476bfb97ae3abbb7",
      "parents": [
        "eb42bb8c8ba93b092e50e5426a07c692fa76d8b2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 03 13:02:33 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 04 12:03:52 2017 -0700"
      },
      "message": "Backtrace: Add libziparchive dependency\n\nBug: 37342627\nTest: m\nChange-Id: I2b4155bd11b315ff49eb9a69549e1ab3678d0b28\n"
    },
    {
      "commit": "7d0aea91c9b8939ddc5c8602d427da1052441309",
      "tree": "96036f4ef17c113c5333ba77cfea0eaf90388b46",
      "parents": [
        "9b537f24bd375cf1954e94efbc8ee7d97b5a1e8e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jun 01 14:15:09 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 02 10:10:24 2017 -0700"
      },
      "message": "Use demangle for function names.\n\nBug: 62141808\n\nTest: Ran unit tests, ran debuggerd -b on android processes.\nChange-Id: I40f341bcb2b35dd0a020d245d6b6f2ed2df65481\n"
    },
    {
      "commit": "f30a810bcea188fddc96a752f4198304444136c0",
      "tree": "714d56df20aec116f8b96360a0ffac6ed1fdfc3c",
      "parents": [
        "8fad110bfa18b962b8c6e3a25297970a0febe1f2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 17:22:24 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 04 17:15:17 2017 -0700"
      },
      "message": "Use async safe logging in signal handlers.\n\nTest: Boot on bullhead.\nTest: Ran the libbacktrace tests on bullhead.\nTest: Added a temporary log message in the signal handler, and ran the\nTest: backtrace tests.\nChange-Id: I0a6888c9f311af2c8cc7fbb4929315911bd2bb3c\n"
    },
    {
      "commit": "4ad9d5155b530912c8bb50a6e19c5e312ef3427a",
      "tree": "b1238dbe798a7b5fb60fe515f26cbc0bbc54b818",
      "parents": [
        "2d0dc9966a05e1bb967e5cd760338edd339fe368"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Apr 13 21:01:40 2017 -0700"
      },
      "committer": {
        "name": "Jaesoo Lee",
        "email": "jaesoo@google.com",
        "time": "Fri Apr 28 09:42:50 2017 +0900"
      },
      "message": "libutils: export libbacktrace headers\n\nThis is used in CallStack.h.\n\nTest: m -j libutils\nTest: links\nTest: trying to compile with BOARD_VNDK_VERSION :\u003d current\nBug: 33241851\nChange-Id: I076c9551d356824d6e69b82349b890369bc7eea3\nMerged-In: If7258e7b38000a72fd520f725030fb0038f90167\n"
    },
    {
      "commit": "bb11af88e234f27c08499994f23994289077f5c1",
      "tree": "c8a1c559682fb41e95dc6d2a1ea7e56c26c9d559",
      "parents": [
        "3c71bbdde3a8d3219934a0fadbfd40b1850a9043"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Apr 13 23:35:06 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Apr 19 10:32:43 2017 -0700"
      },
      "message": "libbacktrace: make vendor_available\n\nBy setting vendor_available, the following may become true:\n\n* a prebuilt library from this release may be used at runtime by\n  in a later releasse (by vendor code compiled against this release).\n  so this library shouldn\u0027t depend on runtime state that may change\n  in the future.\n* this library may be loaded twice into a single process (potentially\n  an old version and a newer version). The symbols will be isolated\n  using linker namespaces, but this may break assumptions about 1\n  library in 1 process (your singletons will run twice).\n\nBackground:\n\nThis means that these modules may be built and installed twice --\nonce for the system partition and once for the vendor partition. The\nsystem version will build just like today, and will be used by the\nframework components on /system. The vendor version will build\nagainst a reduced set of exports and libraries -- similar to, but\nseparate from, the NDK. This means that all your dependencies must\nalso mark vendor_available.\n\nAt runtime, /system binaries will load libraries from /system/lib*,\nwhile /vendor binaries will load libraries from /vendor/lib*. There\nare some exceptions in both directions -- bionic(libc,etc) and liblog\nare always loaded from /system. And SP-HALs (OpenGL, etc) may load\n/vendor code into /system processes, but the dependencies of those\nlibraries will load from /vendor until it reaches a library that\u0027s\nalways on /system. In the SP-HAL case, if both framework and vendor\nlibraries depend on a library of the same name, both versions will be\nloaded, but they will be isolated from each other.\n\nIt\u0027s possible to compile differently -- reducing your source files,\nexporting different include directories, etc. For details see:\n\nhttps://android-review.googlesource.com/368372\n\nNone of this is enabled unless the device opts into the system/vendor\nsplit with BOARD_VNDK_VERSION :\u003d current.\n\nBug: 33241851\nTest: build and flash internal marlin\nTest: m -j libbacktrace\nTest: build with BOARD_VNDK_VERSION :\u003d current\n(cherry picked from commit 4c0e956c7690abf0c434e742a369fb8576abf413)\nMerged-In: Idab4880e011416ebc40b225205c30fb5ed8661db\nChange-Id: Idab4880e011416ebc40b225205c30fb5ed8661db\n"
    },
    {
      "commit": "8f2c28d572e08cb456da05d692e41f978c3776b1",
      "tree": "f24d6e2e935760dd877452ad81f8f4c0fc2a97d3",
      "parents": [
        "a4b40020ef5ae339e19b832f441c26b598f6c4aa"
      ],
      "author": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Tue Apr 11 11:22:43 2017 -0700"
      },
      "committer": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Tue Apr 11 11:22:43 2017 -0700"
      },
      "message": "Moved include/backtrace to libbacktrace/include\n\nExport libbacktrace_headers\n\nBug: 33241851\nTest: Build sailfish\nChange-Id: Iba310ffc21d17ba542bed954a960ab305037061c\n"
    },
    {
      "commit": "d13099e66c50e0f9e9d9548f0ddb31f421e4ac91",
      "tree": "ddb3958f7e695e9e901b5909f648f0632699a68d",
      "parents": [
        "3ba313597d82f9b69142c8526440727477904d2e",
        "5ea2c1f20a091a44fb2c6cee2ec438f6e2fe2183"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 24 17:22:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 24 17:22:25 2017 +0000"
      },
      "message": "Merge \"Test unwinding through a signal handler.\""
    },
    {
      "commit": "5ea2c1f20a091a44fb2c6cee2ec438f6e2fe2183",
      "tree": "d16999c2b224faca9683ed303047fa7eddf1e340",
      "parents": [
        "0e19795a621ddb9912edc58b832f078405e485fd"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 23 14:55:01 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 23 16:16:02 2017 -0700"
      },
      "message": "Test unwinding through a signal handler.\n\nAlso make backtrace_testlib.c C++.\n\nBug: 34468756\nTest: Ran new unit test on host x86, host x86_64, angler (32 bit, 64 bit),\nTest: fugu.\nChange-Id: Ia810f596c2df56cd56e8ab17e6c19be0c48d737f\n"
    },
    {
      "commit": "6d1da7c607647bb783af9c50097557c864606bc4",
      "tree": "c4a48afeb4b5c709bfd1b03e29e99f78256042e3",
      "parents": [
        "a06e1c9eefb50791f65fa9d68e5000f5ab9370a6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 23 11:24:33 2017 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 23 11:29:57 2017 -0700"
      },
      "message": "Fix spelling error in warning\n\nTest: m -j32 -k\nBug: 36450628\nChange-Id: I0f6463f3de3dcf45f396c7f406f8c1d6b79bf7f9\n"
    },
    {
      "commit": "f5e568e653d0dd6bccc86d1a60db5a2573f75f0e",
      "tree": "15b6eb5ebf107abc74ee75703867b38a36daaf17",
      "parents": [
        "435fc451031a6a186284d43a340f6e35be4aa170"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 22 13:18:31 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 22 14:55:05 2017 -0700"
      },
      "message": "Do not access device maps.\n\nIt\u0027s possible that a device map has memory controlled by a single entry\ndevice driver. Thus, you can deadlock if a process is touching that\ndevice memory and we try to unwind it and also touch that device memory.\nSimply skip any attempts to step through, or get function names from\ndevice memory maps.\n\nBug: 36130325\n\nTest: Ran new unit tests, ran bionic unit tests, ran art ThreadStress.\nChange-Id: Ibc62d7ec8106c619ee08968f05e04aea55d7cbfa\n"
    },
    {
      "commit": "82f3bbdc25253ee299207acd22b074bbe39bf2c6",
      "tree": "b67e7819902938723b530108841a16059d6bf5f1",
      "parents": [
        "e87a826a1df1891d2819aa70d613f7f140b11953"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 14 15:22:26 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 21 14:21:49 2017 -0700"
      },
      "message": "Allow calling GetFunctionName before unwinding.\n\nSome extra initialization needs to occur before calling the local/remote\nGetFunctioneName.\n\nAlso, cleanup the test code a bit:\n\n- Make all local functions static.\n- Create a common function to create and finish remote processes.\n- Remove unused function.\n- Fix the formatting a bit by making it match clang format.\n\nTest: Ran the unit tests.\nChange-Id: I998bed1378d582df59fdf9263df6f208db5d795a\n"
    },
    {
      "commit": "e0cd1e043dbcbe9e4a134584b16339a753d2f69c",
      "tree": "1625815eb6c3713df1aaa19af5331ee4ba89e6de",
      "parents": [
        "e7b335b4712bc650c93b5b5777a6f8b1d85ad83f"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Mar 15 15:23:36 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Mar 15 15:44:00 2017 -0700"
      },
      "message": "Enable more modules on linux_bionic builds\n\nBug: 31559095\nTest: Enable host bionic, run soong\nChange-Id: Ib4ebd909322cf464b6a40040e4b60ece7d905b6f\n"
    },
    {
      "commit": "f161e00289378e87b345412f182617a57742e604",
      "tree": "c462a6d713ae82a01f9c8785dadb8ca42e3f7d84",
      "parents": [
        "3f4f1a1a4abc7748fbfc890c00d5a913fe7f1f97",
        "10ab87f646cb1e21ab102632e53705399860a04d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 13 20:50:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 13 20:50:20 2017 +0000"
      },
      "message": "Merge \"Restore errno in signal handlers.\""
    },
    {
      "commit": "a78d9a293cf3bdca23c5cd6ef92966f40e851009",
      "tree": "e6bd26df8f57c00017eddb7b4fa067889bd3bfa0",
      "parents": [
        "ce7ee088ff7524b1101441bd84db90821be41c6c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 10 11:25:32 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 10 13:01:39 2017 -0800"
      },
      "message": "Add a 2 width option of clang format.\n\nMake the default the 4 tab space version.\n\nAdd a link to the 2 space version for libbacktrace.\n\nThe only other difference between the 4 space and 2 space tab version\nis that the 2 space tab version allows short functions on a single line.\nThis is for things like constructors, short destructors, or accessor\nfunctions. I believe this is closer to the Google C++ style guide.\n\nBug: 36046320\n\nTest: NA\nChange-Id: Ida08db18902eeb101f42869dd5590182529d54ef\n"
    },
    {
      "commit": "10ab87f646cb1e21ab102632e53705399860a04d",
      "tree": "af86aa4f16a5f26abaa40dd40f63e6be98cc3cc7",
      "parents": [
        "c1b3c8ef2629eac2a73aa4a95bf43a66edf4cd0f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 09 14:04:43 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 10 10:13:48 2017 -0800"
      },
      "message": "Restore errno in signal handlers.\n\nThere was a problem where errno could be set in a signal handler\nand cause bugs if other system calls were interrupted.\n\nThere isn\u0027t strong evidence this is causing any issues, but add this\nproactively.\n\nBug: 31448909\n\nTest: Ran the backtrace unit tests, backtraces few random processes,\nTest: forced the ANR path for some zygote based processes.\nTest: Ran the art ThreadStress test a few times.\nChange-Id: I5abc9e330a5e86cea7015e2362f66044c6bc37d0\n"
    },
    {
      "commit": "26369a3a010ad4c34b28766318bc1835403c1bf0",
      "tree": "2af622367637339fd08343cb7647c3d46bb25dfc",
      "parents": [
        "5c3a707542fdae13611b973ec0404f3573c058ea"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Feb 10 18:05:34 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 13 10:35:06 2017 -0800"
      },
      "message": "libbacktraceoffline: make it thread-safe.\n\nMake libbacktraceoffline thread-safe by protecting the global variable with\na lock. So it can be used in a multi-thread environment, like by\nsimpleperf inplace sampling.\n\nBug: http://b/30974760\nTest: no\nChange-Id: I4699bf15dfa69ac75faeb4e79a73fb3af0f08dfc\n"
    },
    {
      "commit": "c4a480e423e90675e93d94ba4d55ddf8eed50a8b",
      "tree": "ebd758a1ad741656b7caac7506821de06769c793",
      "parents": [
        "1cb8d9df6c82c26c1af0d44082d21f53bffae7bc"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Feb 02 15:25:08 2017 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Feb 10 17:51:16 2017 -0800"
      },
      "message": "libbacktraceoffline: choose correct debug section for a given address.\n\n1. In /system/lib/libart.so, the ranges of functions covered by .eh_frame\nand .ARM.exidx overlap with each other. Currently, we don\u0027t check .eh_frame\nif the address is in the ranges of functions covered by .ARM.exidx. It leads\nto a wrong unwinding result. So change the logic to first try .eh_frame and\n.debug_frame, if it fails, then try .ARM.exidx.\n2. Add test for Item 1.\n\nBug: http://b/35251937\nTest: run backtrace_test.\n\nChange-Id: Ic412705617c300bc69b4ece178cc2e1bb3eb765b\n"
    },
    {
      "commit": "30f991f251940be3ed11566fb71139852286f68a",
      "tree": "5cef5c112aa400da1ad1572d26fcc3b6b3099b6e",
      "parents": [
        "cdd7ec12be3dfb6a7fa2f597d2220445c96725cf"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 10 13:19:54 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 09:31:15 2017 -0800"
      },
      "message": "liblog: use log/log.h when utilizing ALOG macros\n\nTest: compile\nBug: 30465923\nChange-Id: Id6d76510819ebd88c3f5003d00d73a0dbe85e943\n"
    },
    {
      "commit": "d233c2752bfa96d5fc55c6d45622f64a48288cce",
      "tree": "0023c2ce6428fda8b6ab37ab25268a39154ed597",
      "parents": [
        "3b261ace575a931d0cac9870798548560992c221"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 17 13:34:05 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Dec 17 13:34:05 2016 -0800"
      },
      "message": "Remove obsolete mentions of LLVM_HOST_BUILD_MK\n\nThe libbacktrace common flags don\u0027t need the flags from\nLLVM_HOST_BUILD_MK, they are added directly to libbacktrace_offline.\nThe -fno-omit-frame-pointer is unnecessary, as we no longer import\nflags only used to build LLVM into everything that depends on LLVM.\nRemoving -Wno-extern-c-compat doesn\u0027t cause any warnings.\n\nTest: mma -j\nChange-Id: Ia01380e8572c3d84268843291a54ec8c932a327f\n"
    },
    {
      "commit": "da9bd5902fea148c91cafe01df413cae5511497f",
      "tree": "b8e22266e0b63737e07168b6433d0b364b434e8d",
      "parents": [
        "06d314917fcf44bae9f1178b225e9280caec17ea"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 14 17:24:46 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 15 12:57:47 2016 -0800"
      },
      "message": "Convert the rest of libbacktrace to Android.bp\n\nSee build/soong/README.md for more information.\n\nReapplies I61c49fb62fdeafb66db25b8f97621239b8fd6e75 after fixing\nan unused parameter warning on mips builds.\n\nTest: mma -j\nTest: backtrace_test\nChange-Id: I6dc353a274cafcdb05ee866b41c3c2731612941c\n"
    },
    {
      "commit": "06d314917fcf44bae9f1178b225e9280caec17ea",
      "tree": "c1ab1189bb9376b99555d07208eeb79ffd33e066",
      "parents": [
        "049376f14d31cbc65a94b0bb2641df51e73ac5c0"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 15 12:55:03 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 15 12:57:45 2016 -0800"
      },
      "message": "Fix unused parameter warning for mips builds\n\nlibbacktrace_offline was inheriting -Wno-unused-parameter from llvm\u0027s\nmakefiles.  Fix an unused parameter warning when compiling for an\nunsupported architecture, and return false since *value wasn\u0027t\nwritten.\n\nTest: lunch aosp_mips-eng \u0026\u0026 mma -j\nChange-Id: I7df990f01e1025ca17ec3717107df56d2349f3cb\n"
    },
    {
      "commit": "ced030892df27c543da599d6baa4b17b0588fa32",
      "tree": "d7197b775a4ac4e57696222bf0e18d4b45555130",
      "parents": [
        "9a3603622ff95a602a1ce018ada59cb52d2539f4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 15 20:44:30 2016 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Dec 15 20:44:30 2016 +0000"
      },
      "message": "Revert \"Convert the rest of libbacktrace to Android.bp\"\n\nThis reverts commit 9a3603622ff95a602a1ce018ada59cb52d2539f4.\n\nBroke the mips build with an unused parameter warning\n\nChange-Id: If36964ea189b58a9825de8904f1cf49010548b59\n"
    },
    {
      "commit": "9a3603622ff95a602a1ce018ada59cb52d2539f4",
      "tree": "e8c5bfa6b29fb30600bde074f34300e2989df578",
      "parents": [
        "5d0f40f7c5a5172ab963feed2fdfa92216421ab5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 14 17:24:46 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Dec 14 17:24:46 2016 -0800"
      },
      "message": "Convert the rest of libbacktrace to Android.bp\n\nSee build/soong/README.md for more information.\n\nTest: mma -j\nTest: backtrace_test\nChange-Id: I61c49fb62fdeafb66db25b8f97621239b8fd6e75\n"
    },
    {
      "commit": "5d991bc351faf86ae08a6db248509e1650253156",
      "tree": "e7f0b94189e633236a879ab059ce42f56de79fc3",
      "parents": [
        "6e5f730243edb6232c6ce2ce9027b19c7a5628bf"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 15 17:47:09 2016 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Dec 07 10:25:33 2016 -0800"
      },
      "message": "libbacktrace_offline: support .ARM.exidx.\n\n1. Read .ARM.exidx and .ARM.extab, provides these data to libunwind\nthrough AccessMem.\n2. In FindProcInfo, search .ARM.exidx for the idx entry of function\ncontaining ip.\n3. Add structures to store .ARM.exidx info in DebugFrameInfo, and\nclean up the structure.\n4. Add tests to test each unwind information (.eh_frame, .debug_frame,\n.gnu_debugdata, .ARM.exidx) separately.\n\nBug: http://b/30974693\nTest: run backtrace_test.\nTest: run simpleperf runtest.py.\nChange-Id: I9377a54379158bd35860efcf0e011423be7350d4\n"
    },
    {
      "commit": "c198b150d473199e933fe24ebcf252c1584219d1",
      "tree": "4c12aa20b4643632f8f47e5d25881b706dce6715",
      "parents": [
        "16017b3fbbb6ada5cd22ca38e80776981800e036"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Mon Nov 28 15:27:40 2016 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Wed Nov 30 17:43:20 2016 +0000"
      },
      "message": "Statically link LLVM libraries into backtrace_test\n\nBug: http://b/28866258\n\nRemove dependency of backtrace_test on libLLVM.  Also clean up\nspecification for libbacktrace_offline module.  Since it is a static\nlibrary now, dependencies are only needed to automatically include\nnecessary headers.\n\nTest: 32-bit and 64-bit backtrace_test passes on host and on Angler.\n      mma in system/extras/simpleperf, cts/tests/tests/simpleperf\n      m test-art-host\n\nChange-Id: I76b0db14d067fa7b140a99edd237370ac04fe873\n"
    },
    {
      "commit": "f96e7446fda3be741a10a640b35221bb3d477264",
      "tree": "6eefb9521c533af153206b5db2cd60eccaa1b80f",
      "parents": [
        "557359863c0d1fcda9a85e3b7fb275cb12a3eb70",
        "fdb02f8b9c6920d6c5edecabda62e175fc03dcbf"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 14 20:14:17 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 14 20:14:18 2016 +0000"
      },
      "message": "Merge \"Revert \"Use process_vm_readv to read memory.\"\""
    }
  ],
  "next": "fdb02f8b9c6920d6c5edecabda62e175fc03dcbf"
}
