)]}'
{
  "log": [
    {
      "commit": "d5f84b7cd0acc564c7144213025e8ce100bbc3bd",
      "tree": "6ace8af7050520035cd6ab4545c9130dcdf588e9",
      "parents": [
        "2433bec947a77dcad888369dd7535c3d3e7cff16"
      ],
      "author": {
        "name": "leonardchan",
        "email": "leonardchan@google.com",
        "time": "Wed Jun 22 02:27:51 2022 +0800"
      },
      "committer": {
        "name": "Leonard Chan",
        "email": "leonardchan@google.com",
        "time": "Tue Jun 21 18:57:45 2022 +0000"
      },
      "message": "[libipt] Do not add pt_cpuid.c if host target is arm\n\nOtherwise, we transitively include this x86-only header\nprebuilt/third_party/clang/linux-arm64/lib/clang/15.0.0/include/cpuid.h\non host arm.\n\nBug: 103083\nChange-Id: I6d55c4b902af5d56023528b5341d0099a42958fd\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/692769\nReviewed-by: Roland McGrath \u003cmcgrathr@google.com\u003e\n"
    },
    {
      "commit": "2433bec947a77dcad888369dd7535c3d3e7cff16",
      "tree": "9703b26c3452f61f18acc096b4ac60d2e074635e",
      "parents": [
        "247f20bc0b32a8e9dfba9011bf221d09acd17425"
      ],
      "author": {
        "name": "Mark Schott",
        "email": "schottm@google.com",
        "time": "Fri Nov 12 11:51:36 2021 -0800"
      },
      "committer": {
        "name": "Mark Schott",
        "email": "schottm@google.com",
        "time": "Wed Jan 26 15:56:33 2022 +0000"
      },
      "message": "[cpp] Suppress C++20 warning\n\nWe need a public config to protect downstream consumers and suppress a\nwarning that prevents us from building in C++20 mode.\n\nTest: Add --experimental_cxx_version\u003d20 to args.gn and fx build\n\nChange-Id: I7177b7cb30cd4853bafb4288b1f8fe8cd09d8746\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/635942\nReviewed-by: Roland McGrath \u003cmcgrathr@google.com\u003e\n"
    },
    {
      "commit": "247f20bc0b32a8e9dfba9011bf221d09acd17425",
      "tree": "e2f8bc3e8572857ce5720e4c419ceabbce4ea28d",
      "parents": [
        "ee41dcdec8721813c180c3f7305c6a743d266bcc"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Tue Nov 02 12:23:50 2021 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Tue Nov 02 19:37:29 2021 +0000"
      },
      "message": "[cpp] Move suppression flags to config\n\nFixes cflags ordering issue.\n\nChange-Id: I3e929910426e446328f1046d5f43030c165e729e\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/600894\nReviewed-by: Tamir Duberstein \u003ctamird@google.com\u003e\n"
    },
    {
      "commit": "ee41dcdec8721813c180c3f7305c6a743d266bcc",
      "tree": "545166cca0456b55a1b99bb730983ba3fa954f45",
      "parents": [
        "6390086dbd0879d103e583ba2a3c3f6daae075e0"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Tue Nov 02 10:06:24 2021 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Tue Nov 02 17:27:12 2021 +0000"
      },
      "message": "[cpp] Demote public config to local cflags\n\nDon\u0027t propagate warning suppressions to dependents.\n\nChange-Id: I6e5b3fad006b40af9d37c5edb2a87689bf6130ea\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/600891\nReviewed-by: Tamir Duberstein \u003ctamird@google.com\u003e\n"
    },
    {
      "commit": "6390086dbd0879d103e583ba2a3c3f6daae075e0",
      "tree": "bc9ab36df5e7c6e574ce868bc8f2a1b1a217a00a",
      "parents": [
        "51ffbd6ef92e5ad8598f59ca7d045b7c584bcad1"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Mon Nov 01 23:27:33 2021 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Tue Nov 02 16:43:18 2021 +0000"
      },
      "message": "[cpp] Suppress -Wstrict-prototypes\n\nBug: 56256\nChange-Id: I95f9b9eed7ceb1007b49892fd218e4cabb4eb221\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/600884\nReviewed-by: Tamir Duberstein \u003ctamird@google.com\u003e\n"
    },
    {
      "commit": "51ffbd6ef92e5ad8598f59ca7d045b7c584bcad1",
      "tree": "f79a54dbf2ad889a8e9f320bf0ae41ece93c1bdd",
      "parents": [
        "d73f26a6e250e0abb55630f11ef48cf5149c9c18"
      ],
      "author": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Sun May 09 11:53:41 2021 -0400"
      },
      "committer": {
        "name": "Tamir Duberstein",
        "email": "tamird@google.com",
        "time": "Sun May 09 19:20:23 2021 +0000"
      },
      "message": "[config] Suppress implicit fallthrough\n\nChange-Id: If89c044abe89c9f7e82391dc0ca56c037b4f12e1\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/527278\nReviewed-by: Shai Barack \u003cshayba@google.com\u003e\n"
    },
    {
      "commit": "d73f26a6e250e0abb55630f11ef48cf5149c9c18",
      "tree": "70d1f19081d42874dccff8fbc4bcd1f95751bbaf",
      "parents": [
        "16306be83d147df4893fadcef578984c524ff039"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Sun Sep 13 16:09:47 2020 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Mon Sep 14 01:20:27 2020 +0000"
      },
      "message": "[Wconversion] Suppress warnings\n\nBug: 58162\nChange-Id: Ic7812d0a4eca483d7a8c48d00d398ac6a49933b5\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/426736\nReviewed-by: Petr Hosek \u003cphosek@google.com\u003e\n"
    },
    {
      "commit": "16306be83d147df4893fadcef578984c524ff039",
      "tree": "a18aca7ea9b12566bf660244a4973b14037bee05",
      "parents": [
        "a94454c938a6552f34a285fa3c31a9d8d5cbb019"
      ],
      "author": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Thu Sep 10 17:39:45 2020 -0700"
      },
      "committer": {
        "name": "Shai Barack",
        "email": "shayba@google.com",
        "time": "Fri Sep 11 22:34:53 2020 +0000"
      },
      "message": "[Wconversion] Suppress warnings\n\nBug: 56258\nBug: 58162\nChange-Id: I0fe5067a96071be618799deb66dd9d9e1e2aa743\nReviewed-on: https://fuchsia-review.googlesource.com/c/third_party/processor-trace/+/425972\nReviewed-by: Petr Hosek \u003cphosek@google.com\u003e\n"
    },
    {
      "commit": "a94454c938a6552f34a285fa3c31a9d8d5cbb019",
      "tree": "7e0e789cc8d00d71ced6745455fae179670dcdb7",
      "parents": [
        "d64fbe156de17cf43302156f80f3f4a7266090d6"
      ],
      "author": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Tue May 15 20:57:47 2018 -0700"
      },
      "committer": {
        "name": "Petr Hosek",
        "email": "phosek@google.com",
        "time": "Tue May 15 20:57:47 2018 -0700"
      },
      "message": "Update README.fuchsia\n\nChange-Id: I0e17099d992c6fddfa68bc9b4e111dd718819cb5\n"
    },
    {
      "commit": "d64fbe156de17cf43302156f80f3f4a7266090d6",
      "tree": "63fb54375a3bec624aa3c9763bdf96599fc7eea3",
      "parents": [
        "d8d7dd2dab0f03e31e386678bb7179ad31bfe19f"
      ],
      "author": {
        "name": "Damien Miller",
        "email": "djm@google.com",
        "time": "Wed Apr 04 17:35:25 2018 +1000"
      },
      "committer": {
        "name": "Damien Miller",
        "email": "djm@google.com",
        "time": "Wed Apr 04 17:35:25 2018 +1000"
      },
      "message": "Update README.fuchsia\n\nChange-Id: I56d41801973e95ce746fdfcf175127669d386589\n"
    },
    {
      "commit": "d8d7dd2dab0f03e31e386678bb7179ad31bfe19f",
      "tree": "27e8c05cecf05f7db41904835bfaa187888faebd",
      "parents": [
        "cb3d2376abc18b13f593c349b6d9d060e40d485e"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed May 31 15:09:11 2017 -0700"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed May 31 15:18:06 2017 -0700"
      },
      "message": "support mac builds\n\nDNO-96 #done\n\nChange-Id: I6f058706b720efe0fc52235b31d7efc15efeb678\n"
    },
    {
      "commit": "cb3d2376abc18b13f593c349b6d9d060e40d485e",
      "tree": "fd07dd4588a518e53d133c200b83f46fd5da5fbb",
      "parents": [
        "9982f7aacbbe4be4010de425f0c33e69a2eb97c5"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Fri Apr 14 09:47:01 2017 -0700"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Fri Apr 14 09:47:01 2017 -0700"
      },
      "message": "simplify, remove unnecessary group\n\nChange-Id: I5cf4c4a1f73645730e6ca4849286b23e5f14295c\n"
    },
    {
      "commit": "9982f7aacbbe4be4010de425f0c33e69a2eb97c5",
      "tree": "a4bd18f18e599e67ef505988b130fb107be911e0",
      "parents": [
        "1c73aed2fb21d83036f1cba6d2698e9bc74bdd9a"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Sun Mar 12 22:56:37 2017 -0700"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed Mar 15 15:20:14 2017 +0000"
      },
      "message": "Ensure posix/init.c is included by the linker.\n\nChange-Id: I24cec815f6a58a09483059bcc4d978568b305530\n"
    },
    {
      "commit": "1c73aed2fb21d83036f1cba6d2698e9bc74bdd9a",
      "tree": "c659d546e5d9ed6edbadbf746e8f06895abf28fd",
      "parents": [
        "878b63709b3ab7a5c2bf072f2d8c12f500ee440e"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Sat Mar 11 18:42:55 2017 -0800"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed Mar 15 15:20:01 2017 +0000"
      },
      "message": "build files for processor-trace/libipt\n\nChange-Id: Ia38c5ca89ff7604aa500e71066e75faf369c78a3\n"
    },
    {
      "commit": "878b63709b3ab7a5c2bf072f2d8c12f500ee440e",
      "tree": "91d4aee1e14ef1d85981ba06749e5001641507de",
      "parents": [
        "038f1d261813d569f2f6261d24997729d738173c"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Sat Mar 11 18:07:44 2017 -0800"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed Mar 15 15:19:52 2017 +0000"
      },
      "message": "Fuchsia-local, checked in copy of intel-pt.h.\n\nChange-Id: Ieb930f70ac3aea332a7a44b69054c514d68b4f6d\n"
    },
    {
      "commit": "038f1d261813d569f2f6261d24997729d738173c",
      "tree": "7098fcf4e27b3e3211d17c0090cb5d69cb3add61",
      "parents": [
        "9d4ce5f804aef91aa2e1588c9ab97841a1b705f8"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Sat Mar 11 18:03:23 2017 -0800"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed Mar 15 15:19:38 2017 +0000"
      },
      "message": "New function pt_image_read_for_callback.\n\nChange-Id: I698b3085376bf8742d63c2880fa0b4e6261a42f0\n"
    },
    {
      "commit": "9d4ce5f804aef91aa2e1588c9ab97841a1b705f8",
      "tree": "abae417395f2075578c3bd6f45c4cf0c2311c112",
      "parents": [
        "a6ae7fb283a1ac3cf57ff4ee4a79bb0c49fade13"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Sat Mar 11 17:46:22 2017 -0800"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed Mar 15 15:19:22 2017 +0000"
      },
      "message": "rework pt_image_read_cold, pt_image_read\n\nThis cleans up using a callback vs not using a callback.\n\npt_image_read:\nIf sections haven\u0027t been loaded then punt to the callback immediately.\nOtherwise try to fetch the section, and if not mapped again punt\nto the callback.\n\npt_image_read_cold:\nOnly called if not using a callback, and when called the caller\nhas already moved the desired section to the front of the list.\n\nChange-Id: Ibff476acfa96f05b8a9ba526906ecae3ae9f7d09\n"
    },
    {
      "commit": "a6ae7fb283a1ac3cf57ff4ee4a79bb0c49fade13",
      "tree": "5a01f9052f37ae08c249b080b5d1bda8825d3427",
      "parents": [
        "32fb9c1d9701d8628a5091251e0e463e49e7df9f"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Sat Mar 11 17:19:40 2017 -0800"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Wed Mar 15 15:19:15 2017 +0000"
      },
      "message": "add pt_insn_get_cr3\n\nChange-Id: Ie8716eb3f46c6eea7cd400f6ffac7b7ddb2cf0ca\n"
    },
    {
      "commit": "32fb9c1d9701d8628a5091251e0e463e49e7df9f",
      "tree": "8551b333f1a53d2014e9528ba89136978cfdfb83",
      "parents": [
        "afbae2983b1978f1f1fe267bfc3fd24a7e41673a"
      ],
      "author": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Mon Mar 13 16:33:44 2017 -0700"
      },
      "committer": {
        "name": "Doug Evans",
        "email": "dje@google.com",
        "time": "Mon Mar 13 16:39:50 2017 -0700"
      },
      "message": "Add README.md for third_party/processor-trace.\n\nChange-Id: I30df39245a591e7672a9afd6ec9e0e6afe817e7d\n"
    },
    {
      "commit": "afbae2983b1978f1f1fe267bfc3fd24a7e41673a",
      "tree": "55a676383844df5bbc61e64bc237176afa0d5b69",
      "parents": [
        "ef493ab2dc882d7ab434b0e116e0d65680ed74ed"
      ],
      "author": {
        "name": "Tim Wiederhake",
        "email": "tim.wiederhake@intel.com",
        "time": "Wed Feb 15 17:14:49 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Feb 23 15:46:09 2017 +0100"
      },
      "message": "ptxed: use xed from github\n\nChange-Id: I8bf1574b1c7a92853c568c1710a7ee8ecb26b834\nSigned-off-by: Tim Wiederhake \u003ctim.wiederhake@intel.com\u003e\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "ef493ab2dc882d7ab434b0e116e0d65680ed74ed",
      "tree": "101fb00123460029c01c1058ab89c5eec9de7d86",
      "parents": [
        "622a135e511cdb9015c4e68f9cfc0494382ded70"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Feb 17 11:42:45 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Feb 20 09:06:36 2017 +0100"
      },
      "message": "libipt, ptunit: remove temporary files after closing\n\nIn ptunit-section, we create temporary files and remove them again by calling\nremove() on the filename while the file is still open.  This may cause remove()\nto fail on some systems.  Close the file first.\n\nChange-Id: Ie1ea517accbb95e2cbe76345bbdddb55d5865d11\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "622a135e511cdb9015c4e68f9cfc0494382ded70",
      "tree": "3da5f9183eb859215632a62ba078624c41aedbdc",
      "parents": [
        "a7ce1901909ae80c419e74757ba8b8ccc35b94ed"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Feb 17 11:17:12 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Feb 20 09:06:36 2017 +0100"
      },
      "message": "ptunit: destroy only initialized test fixtures\n\nDo not call a fixture\u0027s destructor if initialization failed.\n\nThis avoids issues with destroying not-yet-initialized fields.  We rather leak\nalready-initialized fields.  The initializer is really expected to destroy those\nbefore reporting the fail.  But that doesn\u0027t really matter for our tests.\n\nChange-Id: I5bb1af5e50a4f7a42576d7d1bf4a0af22ee1e885\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "a7ce1901909ae80c419e74757ba8b8ccc35b94ed",
      "tree": "7dfd7382c079f39e663b484fa39a46034d3a2283",
      "parents": [
        "dbe0d48cb88ed148b96fd278be70a606065feb1b"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Feb 17 14:43:52 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Feb 20 09:06:36 2017 +0100"
      },
      "message": "libipt, ptunit: reduce block cache size for unit tests\n\nReduce the size of the block cache used in ptunit-block_cache to 65K entries.\n\nChange-Id: I7d6f936243038fc2e891dd5211c14aa89a325186\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "dbe0d48cb88ed148b96fd278be70a606065feb1b",
      "tree": "5c642b29274f1f60d1aa695deba08101c014b3d4",
      "parents": [
        "9ff8f5c817f6afd01c0003b6ff818e5558ec5e3e"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Jan 27 10:03:35 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Feb 02 13:42:56 2017 +0100"
      },
      "message": "libipt: use sysconf(_SC_PAGESIZE) instead of PAGE_SIZE\n\nThis fixes #11.\n\nChange-Id: I45a62dbb10ea84e5e408532ff996b2028d85e93b\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "9ff8f5c817f6afd01c0003b6ff818e5558ec5e3e",
      "tree": "4e0255c12fe0afdf6fab75ab21b80ad0372a5a72",
      "parents": [
        "30d9ff46d6d9f830e667adb40340b4c17bbe7e4b"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 31 16:31:22 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Feb 02 13:42:55 2017 +0100"
      },
      "message": "libipt: do not include stdio.h in pt_decoder_function.h\n\nChange-Id: I6aac5ae1afc4e0c1cd3f42f6a92e9ed22101d537\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "30d9ff46d6d9f830e667adb40340b4c17bbe7e4b",
      "tree": "69e31076a957ff0ede1dc84f3c69193d576cbb2a",
      "parents": [
        "bfb059bb34f190c97ce7e1301ae8cc8737fe9088"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 31 11:43:40 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Feb 02 13:42:55 2017 +0100"
      },
      "message": "libipt: do not include stdlib.h in intel-pt.h\n\nRemove the stdlib.h include from intel-pt.h.  It isn\u0027t really necessary.\nInclude stdlib.h where we actually need it.\n\nThis fixes #10.\n\nChange-Id: Id08b0cd10729312e9b62ba2c33a60329f8657aca\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "bfb059bb34f190c97ce7e1301ae8cc8737fe9088",
      "tree": "de074dff778500c582686ad46e14ae3f056ac0f2",
      "parents": [
        "6a5fd7fce48a993bf952779a1288f3caafbce8e9"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 25 12:14:07 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Feb 01 13:29:46 2017 +0100"
      },
      "message": "libipt: add pt_insn_asid() and pt_blk_asid()\n\nAdd new API functions to query the current address-space identifier.\n\nChange-Id: Ia997d91c6a0627ce50fbc5d0d92363cca4665aed\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "6a5fd7fce48a993bf952779a1288f3caafbce8e9",
      "tree": "eaf3f9c9dc552e0de80196be1f292bf57fa26527",
      "parents": [
        "4e17ce5ce8ba9e9aa8dd9c1b7e724e9cdfb82ca2"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:16:09 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 13:47:11 2017 +0100"
      },
      "message": "version: bump minor version number\n\nChanges:\n  - add a new block decoder layer\n  - add a new image section cache and image section identifiers\n  - add version macros to intel-pt.h\n  - shrink or split existing image sections on overlap\n  - add decoder-specific configuration flags\n  - classify INT, INT1, INT3, and INTO as far calls\n  - classify VMLAUNCH/VMRESUME as far call and VMCALL as far return\n  - improve instruction length decode performance\n  - fix an issue with instructions overlapping image section boundaries\n  - fix an off-by-one end of trace indication\n  - fix a bug with TMA for low MTC frequencies\n  - ptunit:\n    - avoid using mktempname\n    - fix leaking of temporary files\n  - ptdump:\n    - fix an issue with \u0027:\u0027 in filenames\n  - ptxed:\n    - allow an offset or range for raw binary files (--raw)\n    - add --stat:insn and --stat:block to count instructions and blocks\n    - add --block:show-blocks to print blocks\n    - add --time to print the estimated TSC at each instruction\n    - add --check to check instruction decode and classification against XED\n    - fix an issue with \u0027:\u0027 in filenames\n    - fix a bug with --stat without --quiet\n  - pttc:\n    - fix a few memory leaks\n\nChange-Id: Ie810479b6a73fb8743efec56b686a53d8b4bec7d\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "4e17ce5ce8ba9e9aa8dd9c1b7e724e9cdfb82ca2",
      "tree": "638af355c35e5fb1e7aafda19df12592be617bea",
      "parents": [
        "b14c2f6d748364826810d2d90de154188dd23918"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Nov 08 11:40:57 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 13:47:09 2017 +0100"
      },
      "message": "libipt: fix doxygen-style comment indication\n\nThe comment on struct pt_event.variant.enabled.ip lacks the leading ** marking\nit as a doxygen comment.  Add it.\n\nChange-Id: I233f75eec69fd302cdfa99ac36ba3ec4a19d5f40\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "b14c2f6d748364826810d2d90de154188dd23918",
      "tree": "7eecc58a95c908d161f0c653109c345fab2992c1",
      "parents": [
        "e30ffc3045ec605784031b3168d183b99f50370d"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Jan 09 13:59:11 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:35 2017 +0100"
      },
      "message": "script, test: run ptxed with --check\n\nChange-Id: I02cabf7737ef4ff5be113ba3ded21b0ae8308fa8\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "e30ffc3045ec605784031b3168d183b99f50370d",
      "tree": "71ddbe777476a6b472a2ed7fb25683bd87233bba",
      "parents": [
        "4c22e95f71bf23f6943c920a83cceb6c516c09e4"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Dec 20 13:44:42 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:35 2017 +0100"
      },
      "message": "ptxed: check instructions\n\nAdd a new option --check that performs some checks.\n\nIf --insn-decoder is specified, we check that:\n\n  - XED can decode each instruction\n  - an instruction\u0027s class matches XED\u0027s categorization\n\nIf --block-decoder is specified, we check that:\n\n  - XED can decode each instruction\n  - we reach the block\u0027s end IP\n  - the last instruction\u0027s class (if available) matches XED\u0027s categorization\n\nThe --check option can be combined with --quiet to only print error messages.\n\nChange-Id: I2730384f9257469cb7401eeff4e4a717ecadd5dc\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "4c22e95f71bf23f6943c920a83cceb6c516c09e4",
      "tree": "a95ae242a2c680054f46e3c872adb30d82cd6fb6",
      "parents": [
        "28c196563337c3edb2bf1b4f74f1b3c5ab838483"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Jan 13 11:55:48 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:34 2017 +0100"
      },
      "message": "ptxed, block: do not modify the block while printing\n\nWhen we print a block, we update block.ninsn and block.ip in order to get the IP\nfor reporting decode errors right.  This has been addressed in the previous\npatch so we can now stop updating block.\n\nChange-Id: Ieffa51dfc5006c015dafe6278e3718d495ccccb6\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "28c196563337c3edb2bf1b4f74f1b3c5ab838483",
      "tree": "ac661ca073bfa570851bc5d4f82fd3a6a2cfb79a",
      "parents": [
        "8fc0dda38777bad2ba1d1552c2adf34e62a2d156"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Jan 13 10:41:51 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:34 2017 +0100"
      },
      "message": "ptxed, block: determine error ip\n\nWhen diagnosing block decode or control-flow reconstruction errors, we report\n\"block.ip + block.ninsn\" as IP, where the latter is omitted if it is zero.\n\nChange this to use the current IP while printing for diagnosing control-flow\nreconstruction errors and block.end_ip or the next IP for diagnosing block\ndecode errors depending on the erro type.\n\nThis improves error reporting when --quiet is specified and further frees us\nfrom having to update block.ip and block.ninsn during printing.\n\nChange-Id: I906bdd18411e092019f19de40bc7bd51162fa225\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "8fc0dda38777bad2ba1d1552c2adf34e62a2d156",
      "tree": "b32133bb777e095f159a521542399479d476b3dd",
      "parents": [
        "d6300fec7f662e2db367af6269cd22c25065b532"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Jan 13 14:28:20 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:34 2017 +0100"
      },
      "message": "ptxed, block: fetch an instruction after printing its IP\n\nIn case of errors when trying to fetch an instruction, ptxed will print the\nerror without the IP of the instruction it failed to fetch.  Reorder the code to\nfirst print the optional offset and time and the IP.\n\nChange-Id: Ic5ee512eb55577e0ab12d88611613b8fc6579b23\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "d6300fec7f662e2db367af6269cd22c25065b532",
      "tree": "d826738ed0715ed8eea30562eda9f70455033ac1",
      "parents": [
        "d712eadc051b966b4fd0f78aa0a00d5bfc377bae"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Jan 13 14:25:15 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:34 2017 +0100"
      },
      "message": "ptxed, block: extract fetching an instruction\n\nExtract the code for fetching an instruction from a block into a separate\nfunction.  We will need it in a few more places.\n\nChange-Id: Ibe676184f37f8328a4b684ff7d13a6d38fe8aa82\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "d712eadc051b966b4fd0f78aa0a00d5bfc377bae",
      "tree": "45fa08291587daed199ab07e11c8f257c9439ca6",
      "parents": [
        "05a98e2231279a75c8d3ed1567845e4f610e2641"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Dec 20 11:37:51 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:34 2017 +0100"
      },
      "message": "libipt, block: provide instruction class of last instruction if available\n\nIn most cases the block decoder knows the instruction class of the instruction\nthat ended the block.  Provide it to save our callers the effort of decoding the\ninstruction in some cases.\n\nIf it doesn\u0027t know the instruction class, set it to ptic_error and leave it to\nour callers to decide whether they need to decode the last instruction.\n\nChange-Id: I4174b628377635ccce0d5d8a8ebe71853592782c\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "05a98e2231279a75c8d3ed1567845e4f610e2641",
      "tree": "5de8ac6838bc07b727bdf2db70e216183fba7aba",
      "parents": [
        "c63ca1de7b8ae5852f3f158bf6711b707d1ecbe3"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Dec 20 15:54:01 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:33 2017 +0100"
      },
      "message": "libipt: classify VMX instruction from VM\u0027s perspective\n\nWe classify VMLAUNCH/VMRESUME as far call and VMCALL as far return.  This is\nfrom a VMM\u0027s perspective that is calling into guests.\n\nThis is the opposite of how we handle OS calls where we treat SYSENTER as far\ncall and SYSEXIT as far return.\n\nChange the VMX classification to align the two, i.e. classify VMLAUNCH/VMRESUME\nas far return and VMCALL as far call.\n\nChange-Id: I1a914d6c26a5807f820038390cfa3c0847b84071\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "c63ca1de7b8ae5852f3f158bf6711b707d1ecbe3",
      "tree": "5ce9b3f38eb96ab84bb7ea43d91623c96e8b67c8",
      "parents": [
        "8642a937fc665114f49f88944e6eef98935f4f88"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Jan 05 09:57:18 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:33 2017 +0100"
      },
      "message": "libipt: classify software interrupts as far branches\n\nSoftware interrupts (INT, INT1, INT3, INTO) are used for software breakpoints\nand for system calls.  The former are typically patched in and removed again\nbefore trace decode.  The latter remain in the code.  They are currently\nclassified as \u0027other\u0027.\n\nClassify software interrupts as far calls similar to SYSCALL and SYSENTER.\n\nChange-Id: I8aedaa8bded0215e04c3b797445ffc866700d6c9\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "8642a937fc665114f49f88944e6eef98935f4f88",
      "tree": "2d447ed95cfb7bead6b071539a309ed88c3708d4",
      "parents": [
        "ad53ceb1343c938bb8482c3369186efd030ed9d8"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 04 18:12:35 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 18 11:08:33 2017 +0100"
      },
      "message": "libipt: software interrupt handling\n\nSoftware interrupts receive FUP(CLIP) + TIP(BLIP?)\n\nWe can not reliably determine whether the FUP/TIP belongs to the software\ninterrupt or to an asynchronous interrupt that was taken before the instruction.\n\nTo distinguish the two cases we would need to read ahead but that may require\ndecoding an unknown amount of code (in the kernel or hypervisor or even in\ndifferent processes) until we return either to CLIP if it was an asynchronous\ninterrupt or to NLIP (or even to a later IP) if it wasn\u0027t.\n\nInstead, we assume that it was an asynchronous interrupt.  Control appears to\nflow from before the software interrupt instruction to the interrupt handler and\nback after the instruction.\n\nThis is wrong most of the time.  But it is predictably wrong and it avoids the\ncase where we incorrectly assume a synchronous transfer and get out of sync when\nwe see the FUP/TIP for the software interrupt.\n\nUpdate our tests to show the correct trace and the incorrect control flow.\n\nLater patches may add heuristics that read ahead a little bit.\n\nChange-Id: I17849efe3d51d24ace5df00ddda8bd1573b11f7d\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "ad53ceb1343c938bb8482c3369186efd030ed9d8",
      "tree": "1262c990759cb2823aab69863cf44a1c46a6adcc",
      "parents": [
        "d56fe096388b9d5326ad819b138a2f7fac0541e6"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Jan 16 13:18:14 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 17 08:56:26 2017 +0100"
      },
      "message": "ptxed: do not leak trace buffer\n\nWe leak the trace buffer allocated in load_pt().  Fix it.\n\nChange-Id: I2a3c35646442c65c2e364bb405be014bc0f2ab0a\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "d56fe096388b9d5326ad819b138a2f7fac0541e6",
      "tree": "802aaf25f3b62ce5a57363eaaaa731092b62fc74",
      "parents": [
        "61545ed54c11dcb426548abdcc1f77650c3a119a"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Jan 16 11:34:08 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 17 08:56:26 2017 +0100"
      },
      "message": "pttd: fix memory leak in p_alloc()\n\nIn p_alloc(), we allocate p-\u003ept_labels, yet we forget to free it again in\np_free().  Fix it.\n\nChange-Id: Iab6dda8a03e26708722e88952a31ba0cd680d75a\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "61545ed54c11dcb426548abdcc1f77650c3a119a",
      "tree": "3e50883fa51354dcb66d26fd10e5b586cf53f5c8",
      "parents": [
        "044eba48b58026d67cf2b4c73076529ce57584cc"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Jan 16 11:29:47 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 17 08:56:26 2017 +0100"
      },
      "message": "pttd: fix memory leak in yasm_alloc()\n\nIn yasm_alloc(), we allocate y-\u003efileroot, yet we forget to free it again in\nyasm_free().  Fix it.\n\nChange-Id: Ibd68836602d7bfccbe2c15ef0cfe33b807827cf8\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "044eba48b58026d67cf2b4c73076529ce57584cc",
      "tree": "91d21b03af50837a4fffb2ce20cb1255b5bc07c2",
      "parents": [
        "88ec725e7720901e48a6a29be4ce4d26240ff50c"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Dec 21 11:50:06 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 04 15:09:25 2017 +0100"
      },
      "message": "ptdump: running out of trace is not an error\n\nWhen synchronizing onto the trace stream, either initially or after a packet\ndecode error, ptdump diagnoses a -pte_eos return as a sync error.\n\nStop doing that.\n\nChange-Id: I75edbb0ed08dfda7568589bfae845bb13d14b8dc\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "88ec725e7720901e48a6a29be4ce4d26240ff50c",
      "tree": "c46381a32b094d61f2bc67aa4a76edc412c61651",
      "parents": [
        "d087f8111e545c9ea8b5c575ea8e6c0ff1dff25b"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Dec 19 15:46:34 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jan 04 15:06:30 2017 +0100"
      },
      "message": "ptxed: print time\n\nAdd a new option\n\n    --time\n\nto print the current time between (optional) offset and instruction address.\n\nJust like the offset, the time may be ahead sometimes since the underlying\ndecoder is reading ahead to the next query-relevant packet.\n\nChange-Id: Ide2f1c4ab83b73ed9fc0604df67ff1a2f33ef2f7\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "d087f8111e545c9ea8b5c575ea8e6c0ff1dff25b",
      "tree": "6f62f106c5d940fde4da8878b34f75a7b4d6d404",
      "parents": [
        "90a1c89d6dc1022f5f4bd35641a7dc867bf90adf"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 03 10:51:40 2017 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jan 03 11:21:12 2017 +0100"
      },
      "message": "all: happy new year\n\nChange-Id: Ib557e360e8493a2cf4f2134ddf9a9e4e0b0c5564\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "90a1c89d6dc1022f5f4bd35641a7dc867bf90adf",
      "tree": "d24c6fe6f653c190240f2ba125b4ec0fa5c494c0",
      "parents": [
        "45f7ca6674defe984704e6e017332ff490e59cc1"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Nov 15 15:49:50 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Dec 01 15:38:26 2016 +0100"
      },
      "message": "libipt: add version macros to intel-pt.h\n\nAdd two new macros\n\n    LIBIPT_VERSION_MAJOR\n    LIBIPT_VERSION_MINOR\n\nderived from the corresponding cmake variables\n\n    PT_VERSION_MAJOR\n    PT_VERSION_MINOR\n\nand a third macro\n\n    LIBIPT_VERSION\n\nthat gives the entire version in a single integer constant.\n\nThis simplifies checking for new API bits.\n\nChange-Id: I0e212164d969ec94f79221b72f3eec88805db5af\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "45f7ca6674defe984704e6e017332ff490e59cc1",
      "tree": "1d8c05c564d171d1a356514e03bf16a2aa3c28e7",
      "parents": [
        "265223092ef15339aeb4f01cab900ca3b58be66a"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Sep 27 09:44:59 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Nov 24 13:13:15 2016 +0100"
      },
      "message": "ptxed: add --block:end-on-call option\n\nAdd a ptxed option for setting the end-on-call block decoder option.  This\nallows testing the latter.\n\nChange-Id: Ia01c448519035f5bb2e564a8d32f1bcca22860cf\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "265223092ef15339aeb4f01cab900ca3b58be66a",
      "tree": "80bd405c64846725bbd43d337c5b14a61f74fca8",
      "parents": [
        "a6a58fe46f9aed245bcdbce62d731ead073ff9d9"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Sep 27 09:34:48 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Nov 24 13:13:14 2016 +0100"
      },
      "message": "libipt, block: add end-on-call block decoder option\n\nAdd a new block decoder option to end a block after a call instruction.  This is\nuseful if you are interested in calls and rets so you only ever need to look at\nthe last intruction of a block - or the first, depending on your interest.\n\nChange-Id: I7f27e32a11492ea02abad4d032246d97acce33a0\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "a6a58fe46f9aed245bcdbce62d731ead073ff9d9",
      "tree": "7afe4bb699d1a8dab33f929449d0a05a25e13b3e",
      "parents": [
        "c406fae130d5cd2e7e5bc402d68d7187a087fd8a"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue May 19 15:44:43 2015 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Nov 24 13:13:14 2016 +0100"
      },
      "message": "libipt: add decoder-specific config flags\n\nReserve space for decoder-specific flags.\n\nChange-Id: I967b33b6dc372a96723fbe30868aa6c83290833d\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "c406fae130d5cd2e7e5bc402d68d7187a087fd8a",
      "tree": "c4a99d4fa9ad779240fce85a006f07ea82ac9db5",
      "parents": [
        "0e6b34c213cd180f3b04d5c1879032fe4b8d7d4d"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Nov 04 09:26:25 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Nov 09 12:57:29 2016 +0100"
      },
      "message": "libipt, block: proceed to event with trace\n\nThe block decoder does not use trace when trying to reach an event location.\nThis works fine for most events but may cause it to fail with -pte_bad_query in\nsome cases.\n\nFor example, a MODE.EXEC binds to the next TIP and takes effect at the TIP IP.\nIn order to reach that location, we need to proceed past the (far) branch that\ngenerated the TIP.\n\nChange-Id: Ia56c37ea95c5d4e99f723bbfc79e5565c0e909e0\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "0e6b34c213cd180f3b04d5c1879032fe4b8d7d4d",
      "tree": "006817cb92085dd1a7764463fff7db839c021b90",
      "parents": [
        "aceeb6553ca16b8267f189d752c7c1176ab9f2cd"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Oct 26 15:40:42 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Nov 04 13:39:35 2016 +0100"
      },
      "message": "ctest: test both insn and block decoder\n\nWhen using ctest to run PTT tests, run each test twice:\n  - once for the instruction flow decoder\n  - once for the block decoder.\n\nTo support parallel testing, we run them in separate subdirectories.\n\nChange-Id: Ie8d7fc1a6f631705d7e1631071d75b307aa49474\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "aceeb6553ca16b8267f189d752c7c1176ab9f2cd",
      "tree": "04accf77eda57f49d0d19b9a96a715d15e23275b",
      "parents": [
        "8300a9dd2029b925c07d869db477aaa691b32675"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 24 14:17:50 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 24 15:39:25 2016 +0200"
      },
      "message": "ptdump: split help printf\n\nThe help text is getting quite big.  Split the single printf() into one printf()\nper line of output.\n\nAlso print the output to stdout instead of stderr to align with ptxed.\n\nChange-Id: I5eed339d4b3a51ac2a82f3108128e8d900d25ad1\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "8300a9dd2029b925c07d869db477aaa691b32675",
      "tree": "74cc3ebcbda6dd60e8b26686ffc5cd746d471e39",
      "parents": [
        "da6f5a1021a866c1cb382c00bdc14a7ce22047eb"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 24 14:15:13 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 24 15:39:25 2016 +0200"
      },
      "message": "ptxed: split help printf\n\nThe help text is getting quite big.  Split the single printf() call into one\nprintf() per line of output.\n\nChange-Id: If9ef61075eff5bf28a393356a772623ae62831fa\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "da6f5a1021a866c1cb382c00bdc14a7ce22047eb",
      "tree": "f9ba852f9c84d7a30e86fab596b7c0f9fb59d50a",
      "parents": [
        "5a7d29a48e672cb71d3d6ead8d6639784fa496ef"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Sep 27 10:10:08 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:39 2016 +0200"
      },
      "message": "ptxed: show blocks\n\nAdd a new options --block:show-blocks to show blocks in the output.\n\nChange-Id: I81c5e6dec1fa1e0c32fba9f20152a4581b2414bc\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "5a7d29a48e672cb71d3d6ead8d6639784fa496ef",
      "tree": "da5f3d6ff1a41f94f7f39de250b46c52b05d0a7b",
      "parents": [
        "5fda43c951f424745a3617eda743adb4a8f32658"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Sep 27 10:02:51 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:39 2016 +0200"
      },
      "message": "ptxed: track number of blocks\n\nWhen using ptxed\u0027s --stat option with the block decoder, print the number of\nblocks in addition to the number of instructions.\n\nAlso add a new option --stat:blocks to select collecting the number of blocks.\n\nChange-Id: I59caf3692667318f23a1887a844042b561a338a5\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "5fda43c951f424745a3617eda743adb4a8f32658",
      "tree": "a382943db87b2f8132028921278061671a5836e2",
      "parents": [
        "02675fe9b0bd830104a5291119a5650cff48752e"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 20 15:31:07 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:39 2016 +0200"
      },
      "message": "test: add --stat:insn to linear trace tests\n\nThe tests test/src/linear-tip.ptt and test/src/linear-fup-tip_pgd.ptt use\nptxed\u0027s --stat option to avoid having to specify a rather big number of\naddresses for the expected output.\n\nAdd --stat:insn to not break the test when we add more statistics.\n\nChange-Id: I8d428ecb42f81cac98cfcb3052a4d7cb9c2e2cf6\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "02675fe9b0bd830104a5291119a5650cff48752e",
      "tree": "8a308a08d553c506a40b723c430f23254cd29a48",
      "parents": [
        "95acefe33ec6976e37c82ab949976b84653ca2b2"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 20 15:05:27 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:38 2016 +0200"
      },
      "message": "ptxed: add --stat:insn option\n\nAdd an option to select printing the number of instructions with the --stat\noption.  This is just what it does today with or without --stat:insn.\n\nFuture patches will add other statistics so this option can be used to select a\nsubset of statistics to be printed.\n\nChange-Id: I154b0745d05bccbcc1d8b1226e732bcc9f9c1fd9\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "95acefe33ec6976e37c82ab949976b84653ca2b2",
      "tree": "014002df4bc0bff09ac8063aa774d8d5bd8682b4",
      "parents": [
        "fe13c34ab6ffba51b59120ef75bc1a4ee049d1d4"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 10:21:23 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:38 2016 +0200"
      },
      "message": "ptxed: only compute stats when requested\n\nStatistics are currently computed whether or not --stat is specified.  The\noption only affects printing statistics at the end.\n\nDo not compute stats if we don\u0027t want to print them.\n\nChange-Id: I77e8d6ab4be60b62e706714e6429d1759b83eb44\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "fe13c34ab6ffba51b59120ef75bc1a4ee049d1d4",
      "tree": "fdb196136cc3b4fe3e40656d15cf6312fd53c2a9",
      "parents": [
        "6f1c06b1d508b763708abcfd41e50ac1303419ef"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 17 16:48:28 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:38 2016 +0200"
      },
      "message": "libipt, block: bound block cache filling recursion\n\nWe fill the block cache by proceeding one instruction and recursively calling\npt_blk_proceed_no_event_fill_cache() until we find a block cache entry or the\nblock fills up.  On the way back from the recursion, we fill in entries for the\ninstructions we skipped that didn\u0027t have a block cache entry, yet.\n\nThis recursion is bounded by the maximum allowed number of instructions in a\nblock.  This bound is too high and may lead to stack overflows for large\nsequences of instructions.  Add an artificial lower bound to prevent the latter.\n\nWhen we reach that bound, we insert a trampoline block cache entry to the next\ninstruction.  This may cause unnecessary extra block cache jumps, especially if\nwe stop close to a decision point.\n\nWe could try to replace those artificial trampoline entries with entries for the\nreal decision point once we reach it.  Given that we inserted the trampoline\nafter a long sequence of linear code, we will further insert a fair amount of\nfurther trampolines on our way back due to block cache entry overflows (the\nninsn field).  Such a fixup would remove at most one hop for the long code\nsequence.  It really only makes sense if we have other entry points much closer\nto the decision point.  A quick hack didn\u0027t show any improvement so I\u0027m not\ndoing it.  It remains an option should we find such cases in the future.\n\nChange-Id: I04b81ba36500cebb7f5346daab899ead1826c5cd\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "6f1c06b1d508b763708abcfd41e50ac1303419ef",
      "tree": "d22abd05451b395b62247ea37b9c0d4bf96bc0a6",
      "parents": [
        "cdc95cd20958fc7c2555cc9a1f001752cf0b7982"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 17 15:58:34 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:38 2016 +0200"
      },
      "message": "libipt, block: do not mix cache fill and cache use\n\nWhen filling the cache, we recursively call pt_blk_proceed_cached() to make use\nof the cache after proceeding a single instruction.\n\nStop doing that.  Instead, check if there is a cache entry for the next IP and,\nif not, recursively call pt_blk_proceed_fill_cache().\n\nThere shouldn\u0027t be any functional change but this new version will allow us to\nbound the recursion more easily.\n\nChange-Id: I6f479179c452d26e573d6922c8168e473b213759\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "cdc95cd20958fc7c2555cc9a1f001752cf0b7982",
      "tree": "3c197e6184c899e3897f65038034d875535a4196",
      "parents": [
        "3d64832cdc017938ab35a646a802dcd3763fbfe0"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 17 14:39:24 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:38 2016 +0200"
      },
      "message": "libipt, block: turn event processing into iteration\n\nTo process events, we recursively call pt_blk_proceed_event() from the\nindividual pt_blk_proceed_\u003cevent\u003e() functions via pt_blk_proceed() until we run\nout of events and proceed with pt_blk_proceed_no_event() (or until the event\nends the block).\n\nThe idea was to allow the compiler to turn those recursive calls into tail calls\nand thus the entire event processing into a series of jumps.\n\nIf that tail call optimization does not happen, for exmple in debug mode, we\nmight overflow the call stack on some trace inputs.  In the case of leading TSX\nevents, for example, the block decoder would crash after a sequence of ~40.000\nMODE.TSX packets given an 8KB stack.  I\u0027m omitting the test as it is quite big.\n\nTurn the recursion into iteration to avoid a stack overflow.\n\nChange-Id: I44cbffc3636f81d74ee0268b4a5ed54f62909fce\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "3d64832cdc017938ab35a646a802dcd3763fbfe0",
      "tree": "037cb68e2e3819efe618ba12839b5510853964fb",
      "parents": [
        "d411a0c6f0b7d8a9bfe22807235a4919ab16435a"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Oct 17 13:11:38 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Oct 21 09:19:37 2016 +0200"
      },
      "message": "libipt, block: turn trailing event processing into iteration\n\nTo process trailing events, we recursively call pt_blk_process_trailing_events()\nfrom the individual pt_blk_process_trailing_\u003cevent\u003e() functions until we either\nrun out of events or decide to postpone processing of the next event.\n\nThe idea was to allow the compiler to turn those recursive calls into tail calls\nand thus the entire event processing into a series of jumps.\n\nIf that tail call optimization does not happen, for exmple in debug mode, we\nmight overflow the call stack on some trace inputs.  In the case of trailing TSX\nevents, for example, the block decoder would crash after a sequence of ~80.000\nMODE.TSX packets given an 8KB stack.  I\u0027m omitting the test as it is quite big.\n\nTurn the recursion into iteration to avoid a stack overflow.\n\nChange-Id: I92683ce0255770ba924074e573fa796de240d181\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "d411a0c6f0b7d8a9bfe22807235a4919ab16435a",
      "tree": "b4f5918386302e44022681262f886a856a0d3deb",
      "parents": [
        "7343f24d49f4f4f1c670e69a2a7cef449260ec3e"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Oct 18 14:43:43 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Oct 18 16:45:01 2016 +0200"
      },
      "message": "libipt: add missing @ escape\n\nChange-Id: Ia25ec87c424e0506af4867bcfebbe9ff5151ad3d\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "7343f24d49f4f4f1c670e69a2a7cef449260ec3e",
      "tree": "63c004c4441e0fdd929bb76048fc2634b8820dc0",
      "parents": [
        "95a1da0f1d2aabc5d7e746ab6cb9125eaaa2ed6b"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Jul 14 14:00:18 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Oct 18 16:45:01 2016 +0200"
      },
      "message": "doc: fix pt_insn_next() arguments in examples\n\nThe pt_insn_next() function takes an additional size argument that is missing\nin code examples in doc/howto_libipt.md.  Add it.\n\nChange-Id: Ibb1226a79b6605b481778a5af440789d8c05b86a\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "95a1da0f1d2aabc5d7e746ab6cb9125eaaa2ed6b",
      "tree": "87021d238b5d56628f2a41863db76cbbd0c093f5",
      "parents": [
        "43715326e35c38729869f190fbae575a7d9949f7"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 15:30:06 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:43:02 2016 +0200"
      },
      "message": "libipt, ptxed: test truncated instructions\n\nNow that we have everything in place, we can add a test involving an instruction\nthat crosses section boundaries.\n\nChange-Id: Id48f08e397d8dd58250c6eeac58be715ff1e5254\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "43715326e35c38729869f190fbae575a7d9949f7",
      "tree": "22f4894502ab7de51b5190829aa367e4e76791ed",
      "parents": [
        "93208d387bb7ee2d716b5559c9af905a70591b8c"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 13:53:52 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:43:01 2016 +0200"
      },
      "message": "script: move ptxed option for loading the test binary\n\nMove the --raw option to load the test binary in the ptxed options list before\nany additional ptxed options specified in the test itself.\n\nThis allows the test binary to be partially or completely overwritten by the\ntest.\n\nChange-Id: I1e910e773e616649fea523156d19e5cdba983b10\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "93208d387bb7ee2d716b5559c9af905a70591b8c",
      "tree": "7fe613e97cc5414e53d6a035fefcc65bd21e212b",
      "parents": [
        "327d82b40f05fc874dcd2999c4209f1fad42ced6"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Oct 05 09:38:18 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:43:01 2016 +0200"
      },
      "message": "ptxed: fix load_raw() error values\n\nOn error, load_raw() returns 1, yet its caller checks for \u003c 0 to detect errors.\nStick to that convention and adjust load_raw().\n\nChange-Id: I17992fe01b205907d179766e3fa0e3c3b867eb7a\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "327d82b40f05fc874dcd2999c4209f1fad42ced6",
      "tree": "f314290cacd7fcc986e0ac4fcd66651239c345fc",
      "parents": [
        "a67f4122c22dd44fc83e0f2d32d06e8894d229b7"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 15:08:20 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:43:01 2016 +0200"
      },
      "message": "ptxed: allow optional offset or range for raw binary files\n\nPtxed\u0027s --raw option takes a filename and a base address and loads the contents\nof the former at the latter.\n\nExtend this to further allow an optional file offset or file range to be\nspecified.  The base address is still mandatory.\n\nThis allows us to load parts of a test binary at different virtual addresses.\nWe may use this to create (identical) overlaps and thus split the test binary\ninto multiple image sections at arbitrary offsets.\n\nChange-Id: I15093b66d9889e737d11ead58cf2a40579d67f4c\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "a67f4122c22dd44fc83e0f2d32d06e8894d229b7",
      "tree": "ae428b6e2c4b18a227d239db800fcb526f2d38e8",
      "parents": [
        "eeb6b18096fa7da7477a17fabfb59f577412c6b8"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 19 13:29:19 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:43:00 2016 +0200"
      },
      "message": "ptxed: split pt file argument processing and file load\n\nWhen specifying the trace file using the --pt option, an optional offset or\nrange can be appended separated by \u0027:\u0027.\n\nSplit the processing of those optional arguments and the loading of the trace\nfrom the specified file.\n\nChange-Id: I67b08629114bd97e1ae39cc41ad7cc28f2d4918b\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "eeb6b18096fa7da7477a17fabfb59f577412c6b8",
      "tree": "603e455cc8d18f3c81ca0173ea787cc271c84c3d",
      "parents": [
        "e22737efb8901433f537435cb328a91488e83581"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 19 09:38:42 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:43:00 2016 +0200"
      },
      "message": "ptdump: split file argument processing and file loading\n\nThe filename argument may optionally be followed by an offset or range argument.\nProcess those optional arguments in a separate function and pass the result to\nthe function loading the file.\n\nChange-Id: I4c99737d73b2e687eee857f4ba7682a654dbd9e0\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "e22737efb8901433f537435cb328a91488e83581",
      "tree": "c3e7a59d1bbbcf73457fd3feeff8c21e0f1a9858",
      "parents": [
        "539f9b9a274013077510319b971e06cd03b8b3ba"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 11:37:17 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:59 2016 +0200"
      },
      "message": "ptxed: support truncated blocks\n\nA block of instructions may be marked truncated if the last instruction in the\nblock can not be read entirely from the block\u0027s section.  It is instead provided\nin the block itself.\n\nUse the memory provided in the block in that case.\n\nOur test system needs a few changes before we can write a test for this.\n\nChange-Id: Ic9fcec2d32a908b13c8531ff2f6c0823241afefe\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "539f9b9a274013077510319b971e06cd03b8b3ba",
      "tree": "c7c377634570ba8ea878d663a88a7e6a14ca878b",
      "parents": [
        "2daaf661216e7edf35d05c680148db6b98b84df9"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 10:43:51 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:59 2016 +0200"
      },
      "message": "libipt, block: handle instructions overlapping sections\n\nWhen adding image sections that overlap with existing image sections, we may end\nup with instructions that are split between two (or more) image sections.  Since\nmemory reads stop at image section boundaries, instruction decode will fail with\n-pte_bad_insn for those instructions.\n\nIssue additional memory reads for the remaining bytes and try to decode the\ninstruction again until we are either able to decode it correctly or fail to\nread more bytes.\n\nSince isid and IP no longer suffice to read the instruction\u0027s memory, we provide\nthe instruction\u0027s size and raw bytes as we do in struct pt_insn.  We mark the\nblock as truncated to indicate that.  Such an instruction ends a block so only\nthe last instruction of a block may be truncated.\n\nChange-Id: Ia78a49f28b2745be59e5e16dc4fc25a87f07ebb4\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "2daaf661216e7edf35d05c680148db6b98b84df9",
      "tree": "84955c71e17e021c2830d11c669553114eeb8e47",
      "parents": [
        "af427c84fb56cc76a11d7e1774d529949935bfc2"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 10:49:45 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:59 2016 +0200"
      },
      "message": "libipt, block: add missing null checks\n\nIn pt_blk_proceed_no_event_cached(), we dereference the decoder and block\narguments.  Add NULL checks for them.\n\nChange-Id: Ifca3c482ac9e3ac794e3cd875e0a24077766795f\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "af427c84fb56cc76a11d7e1774d529949935bfc2",
      "tree": "6ac153caffc876ce213dd73bb4f4c01015c36f26",
      "parents": [
        "ce3cb9cff10ae2f6ef266943bde919cc74e1826a"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 09:04:24 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:58 2016 +0200"
      },
      "message": "libipt, block: use pt_insn_decode() for handling SKD022\n\nWhen checking for SKD022, we need to decode an instruction at the event\u0027s IP.\nUse pt_insn_decode() for that to support instructions crossing section\nboundaries.\n\nChange-Id: Ideea9068f8a1c64b6706faf9f349a3ad044574ef\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "ce3cb9cff10ae2f6ef266943bde919cc74e1826a",
      "tree": "3536eaeb3142e7cdfc28c0a6289f378b7aff1e17",
      "parents": [
        "8290b8312555aa9ae0591911e8f4a71d7931f07c"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Sep 23 14:44:43 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:57 2016 +0200"
      },
      "message": "libipt, block: replace pt_blk_ip_is_reachable()\n\nReplace pt_blk_ip_is_reachable() with pt_insn_range_is_contiguous().\n\nChange-Id: I564bd1329a9ec53c1a85256d2268c0e888546714\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "8290b8312555aa9ae0591911e8f4a71d7931f07c",
      "tree": "ca05d5cad05082df5c3633a2870f944fb0e42f74",
      "parents": [
        "e0eabe51eff6321100e5d67e5ccb0d6f4dad099c"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Sep 23 14:40:29 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:57 2016 +0200"
      },
      "message": "libipt, insn: replace pt_ip_is_ahead()\n\nReplace pt_ip_is_ahead() with pt_insn_range_is_contiguous().\n\nChange-Id: Ibed0d80b6be445a1a8f8248b9fc8d63fd5207abf\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "e0eabe51eff6321100e5d67e5ccb0d6f4dad099c",
      "tree": "6ef5632b9502b153778fa2e6062d9392bad959de",
      "parents": [
        "fda2dd410b21ef67707b3c7e603060a92be0e8d3"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Sep 23 14:38:21 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:56 2016 +0200"
      },
      "message": "libipt, insn: add pt_insn_range_is_contiguous()\n\nAdd a function to check for a contiguous range of instructions, in the sense\nthat we can reach the last instruction in the range from the first without using\ntrace.\n\nThe instructions are given by their IPs.\n\nChange-Id: Ia4adf35803c67471811eea2aefd7ff67efa23aa0\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "fda2dd410b21ef67707b3c7e603060a92be0e8d3",
      "tree": "104958282214bdaa4f9669156eaba0ce354c2e83",
      "parents": [
        "bae76ba896f34836c42977d52d8174876b83cb6b"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Sep 23 13:42:27 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:56 2016 +0200"
      },
      "message": "libipt: move decode_insn() into pt_insn.c\n\nMove decode_insn() to decode a single instruction given an IP and an image into\npt_insn.c so it can be reused by the block decoder.  Update the comment.\n\nChange-Id: Ic1a0f0686bbfd66e4c909734c69397efa1ba4f84\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "bae76ba896f34836c42977d52d8174876b83cb6b",
      "tree": "332c5dc823d1c7342320465ef3e1e6b6fa0490c2",
      "parents": [
        "58084f696f4940e6862b1a5daae2e233a0e75b61"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Sep 21 11:30:36 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:55 2016 +0200"
      },
      "message": "libipt, insn: retry instruction decode\n\nWhen adding image sections that overlap with existing image sections, we may end\nup with instructions that are split between two (or more) image sections.  Since\nmemory reads stop at image section boundaries, instruction decode will fail with\n-pte_bad_insn for those instructions.\n\nIssue additional memory reads for the remaining bytes and try to decode the\ninstruction again until we are either able to decode it correctly or fail to\nread more bytes.\n\nWe report the isid corresponding to the first byte of the instruction and mark\nthe instruction as truncated.\n\nThis only covers the instruction flow decoder.  The block decoder needs more\nwork in order to handle this case.\n\nChange-Id: I31b39fbdd917cfcc5565a26f12507488e2332eb8\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "58084f696f4940e6862b1a5daae2e233a0e75b61",
      "tree": "536932e8411a79b0f7ec203c6ef6b7651df0a041",
      "parents": [
        "1841a67b470848ce2f0dba62d82face2f3f9e866"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Sep 21 10:43:46 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:55 2016 +0200"
      },
      "message": "libipt, insn: use decode_insn() for decoding instructions\n\nChange all functions that need to decode instructions to use decode_insn() for\nboth reading memory and the actual instruction decode.\n\nChange-Id: I9765780b363dd65576d1d090e39759064adbab1a\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "1841a67b470848ce2f0dba62d82face2f3f9e866",
      "tree": "2c1ab33b9aa4519b3530f56bb385f5c4014c2aea",
      "parents": [
        "800bd5c9f3197399e33928bc1d14ba5b6ad4a503"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Sep 21 10:36:05 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Oct 13 08:42:55 2016 +0200"
      },
      "message": "libipt, insn: remove decode_insn() dependency on the decoder\n\nReplace the decoder parameter in decode_insn() with new parameters for the image\nto read memory from and the asid to use.\n\nThis allows decode_insn() to be used for decoding instructions at arbitrary IPs.\n\nChange-Id: I16aea95e150bfd46aede182f9e229b61b34ffeab\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "800bd5c9f3197399e33928bc1d14ba5b6ad4a503",
      "tree": "db323e4ee04b817bab7b0ce0cd0c3a1b4bf9791f",
      "parents": [
        "1da9d265a7cd6819044cc224d361fbce9d8aa1b8"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 26 11:50:59 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Sep 27 11:48:26 2016 +0200"
      },
      "message": "ptxed: fix --stat without --quiet\n\nWhen printing a block, ptxed modifies the block\u0027s ninsn field in order to get\nerror diagnostics right.\n\nWhen --stat is used without --quiet, it alway reports zero instructions.\n\nFix it by updating the statistics before printing a block, so we count the\noriginal number of instructions.\n\nChange-Id: I9c728edd8b103a667cf8b42471c6ead4c863ba0f\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "1da9d265a7cd6819044cc224d361fbce9d8aa1b8",
      "tree": "fd9cffdef4a308529ffdbc9538656d620cf0a057",
      "parents": [
        "fc499682cfc26c1541b87ab8346d3260154d38ec"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 05 16:41:19 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 12 14:36:09 2016 +0200"
      },
      "message": "libipt, time: don\u0027t store MTC offset\n\nAt TMA, we store the CTC bits below the MTC range in time-\u003emtc_offset and the\nCTC bits in the MTC range in time-\u003ectc.\n\nThe latter is used to compute last_ctc at the first MTC after TMA.\nThe former is subtracted from the CTC delta between last and current CTC.\n\nWe might as well add the former to last_ctc before computing the CTC delta.\nThis allows us to merge time-\u003emtc_offset into time-\u003ectc.\n\nChange-Id: Ib01b89a8ffa4796975fb7f26c8182a3d42096fcc\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "fc499682cfc26c1541b87ab8346d3260154d38ec",
      "tree": "2e69cda5c4dc36d62c1b249f7e9d24c324e8c619",
      "parents": [
        "9b14c7a6c2d55c3a1f79f8e30c71bd0f8dad8e36"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 05 16:26:53 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Sep 12 14:36:06 2016 +0200"
      },
      "message": "libipt, time: fix TMA handling for low MTC frequencies\n\nWhen the MTC frequency is low, TMA does not provide the full CTC value.  We\nestimate a CTC value based on the TMA\u0027s CTC field size.\n\nThe current version assumes that TMA does not provide any bits in the MTC range.\nThis is wrong.  The TMA may provide some but not all bits that an MTC would\nprovide.\n\nGeneralize it by filling in the missing bits when processing the next MTC.  This\nassumes that we\u0027re not dropping MTC packets around TMA.  At least not more than\nTMA provides bits for.\n\nChange-Id: I0ee8c83b674fb12a9e10cb5736c8daab3c9f6870\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "9b14c7a6c2d55c3a1f79f8e30c71bd0f8dad8e36",
      "tree": "7cc240e52e7465a8274f3becb38cc86d9194af46",
      "parents": [
        "4a6f06a849e9033d1e07e74325bb359dc8ad2155"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Sep 08 15:26:43 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Sep 08 17:07:28 2016 +0200"
      },
      "message": "libipt, man: fix \"Cannot find source file: pt_blk_get_image.3.md\"\n\nThe pt_blk_get_image() and pt_blk_set_image() functions are described in\ndoc/man/pt_insn_get_image.3.md.\n\nThe corresponding CMakeLists.txt lists both the alias and a separate file.\nRemove the latter.\n\nThis fixes #9.\n\nChange-Id: I154d73cb125c11309662eff67faef6eb04d3f0bf\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "4a6f06a849e9033d1e07e74325bb359dc8ad2155",
      "tree": "5b723954148beffa5cf2f71eeb007296dfcc962f",
      "parents": [
        "f2b36e4141b06bccdcb5ea65f39a4596dc11e71d"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Aug 10 11:13:05 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:51 2016 +0200"
      },
      "message": "libipt, block: cache the current section\n\nThe block decoder needs to find and map the section containing the block\u0027s start\nIP in the current address-space on every call to pt_blk_next().  The image\nmaintains an LRU cache so finding the desired section is typically fast.\n\nThe operation still requires one additional pt_section_get() and one additional\npt_section_map() to ensure that the section is not unmapped or destroyed while\nthe block decoder uses it.  Plus the corresponding pt_section_unmap() and\npt_section_put() at the end of pt_blk_next().\n\nCache the current section across pt_blk_next() calls to avoid this overhead.\n\nWe validate that a pt_image_find() would return the cached section before using\nit.  This check is much cheaper, though, as it does not require any additional\nget/put or map/unmap.\n\nChange-Id: I50ee5e549db0b2ad816c4b5825ae6802503e8bf8\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "f2b36e4141b06bccdcb5ea65f39a4596dc11e71d",
      "tree": "257e519ba35538d1f671d62a534b544be3a0e7da",
      "parents": [
        "257b016781806207c5b6e1107065287ff73a704c"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Aug 10 12:59:11 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:51 2016 +0200"
      },
      "message": "libipt, image: validate an image section\n\nValidate that a given section would be returned by an image lookup.\n\nThis allows image users who want to cache image sections provided by\npt_image_find() to check if their cached section would still be returned by\nanother call to pt_image_find().\n\nFor performance reasons we allow sporadic validation fails.  They will require\nthe user to re-fetch the cached section with another call to pt_image_find(),\nwhich causes a small loss of performance but is otherwise harmless.\n\nChange-Id: I674e08969c2a29dc41e289b0faec1f5d09f27175\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "257b016781806207c5b6e1107065287ff73a704c",
      "tree": "bb6a730c62e9d9523761669fdd237c0e389db2f1",
      "parents": [
        "bb8d95b2a7aac8592f8317d66146d01eff580f3c"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Wed Jul 27 14:38:47 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:51 2016 +0200"
      },
      "message": "libipt: use the block cache\n\nUse the block cache to speed up block decode for the no-event flow.  This is\ntypically the most heavily used flow.\n\nThe cache can be used for ip-based event flows but this requires a little bit\nmore work and is much less effective.\n\nChange-Id: I28d3f2e45802dd8e17ad57119f88794474a0ebbd\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "bb8d95b2a7aac8592f8317d66146d01eff580f3c",
      "tree": "7ffb49a6ed8dbfc94bb0c88fb7179ffdb6cdd937",
      "parents": [
        "64d62f7ea5eae5337f4c602ba481e5d130c9d5ff"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jul 26 15:01:34 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:51 2016 +0200"
      },
      "message": "libipt, image: find an image section\n\nAdd a new function pt_image_find() to find an image section by virtual address\nand address-space identifier.  The caller is responsible for putting the\nprovided image section after use.\n\nChange-Id: I01882f4464cf91bc77446ec0528a8d10a5cc47f0\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "64d62f7ea5eae5337f4c602ba481e5d130c9d5ff",
      "tree": "f84f9dd1a64978d55b7a9eaa6631351e4b72c203",
      "parents": [
        "a5e4a6409a3e137a226047d8678df60557c75db2"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Feb 29 10:44:27 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:51 2016 +0200"
      },
      "message": "libipt: allow block caching to be disabled\n\nAdd a flag to control the allocation of a block cache when the section is mapped\nnext time.\n\nChange-Id: Ia456053250247c6eee3f5bff49d2a7ae78d782de\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "a5e4a6409a3e137a226047d8678df60557c75db2",
      "tree": "50891a56557a6e47337f21c1eb0e32a40b44100f",
      "parents": [
        "6d4b8784ca00b5995de265b1fb953ca0a5a741a7"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jul 26 13:28:02 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:50 2016 +0200"
      },
      "message": "libipt: add a block cache to struct pt_section\n\nAdd an optional block cache to struct pt_section.  The cache is implicitly\ncreated when the section is mapped and implicitly unmapped when the section is\ndestroyed.\n\nCache users need to keep the section mapped as long as they are using the cache.\n\nChange-Id: I3f9c586ff62cdaf272c2b339710558122248b28a\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "6d4b8784ca00b5995de265b1fb953ca0a5a741a7",
      "tree": "738ac817d89156c101f75bf946a948fda64c6692",
      "parents": [
        "b8a0748c2d64eb3250eb32e45fd2ec1a7eb9356e"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Jul 26 11:50:10 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:50 2016 +0200"
      },
      "message": "libipt: block cache\n\nAdd a block cache to speed up block decode.\n\nChange-Id: I2b76d104d564b6473120ca2aaa58b2c33b62c0e0\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "b8a0748c2d64eb3250eb32e45fd2ec1a7eb9356e",
      "tree": "7d2a21f2218ef27ffb2974bd28fbd88168d305b7",
      "parents": [
        "ac49748694710b6abfb45f6704577bb626440c19"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 04 11:15:08 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:50 2016 +0200"
      },
      "message": "script: do not check for tools upfront in test.bash\n\nThe test.bash script checks whether the necessary tools are all available and\nfails if one or more are not before executing any test.\n\nThis prevents the -g, -d, and -x options to be used for passing additional\narguments to the pttc, ptdump, and ptxed tool.\n\nRemove the check.  This still causes tests to fail if one of the tools is not\navailble but with a different error message.  If test.bash is called with more\nthan one test file, there will be one or more error messages per test.\n\nChange-Id: I62f62cb546f1814ccba9078411107d39cd156a68\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "ac49748694710b6abfb45f6704577bb626440c19",
      "tree": "9fd61dd16e6a67e986fb5b2c19393654d59cd0e6",
      "parents": [
        "57d5847d179a91ab3be11dc0254a19169691fdd8"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Jul 15 13:55:41 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:50 2016 +0200"
      },
      "message": "ptxed: use block decoder\n\nAdd new options\n\n  --insn-decoder\n  --block-decoder\n\nto select the libipt decoder to be used.  The default is the new block decoder.\n\nChange-Id: I2e21982c51d845eec4302a24120a419a1c2abbce\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "57d5847d179a91ab3be11dc0254a19169691fdd8",
      "tree": "cece9e54445d80fb061b2562c7df5a1dce9cb3dd",
      "parents": [
        "58e45f6f1baa7ce4795441ec568180c5f8f28156"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Jul 11 11:42:30 2016 +0200"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:50 2016 +0200"
      },
      "message": "libipt: block decoder\n\nAdd a new API to iterate over blocks of instructions.\n\nChange-Id: I3f01db2b3bde87fe6211af9ba7c077705f7892b3\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "58e45f6f1baa7ce4795441ec568180c5f8f28156",
      "tree": "e27bcc4735044da87a365f10fa97c51f6b99bcf2",
      "parents": [
        "bf26637e1fbce7ad95e5d104c72eddc7a1d45705"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Feb 16 16:21:36 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:49 2016 +0200"
      },
      "message": "libipt, ild: remove length field in struct pt_ild\n\nReturn the length of a successfully decoded instruction instead of storing it\nin pt_ild.\n\nChange-Id: I52cad82f345de88d3ce3d0d35e33f790ec6abe78\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "bf26637e1fbce7ad95e5d104c72eddc7a1d45705",
      "tree": "548a8bb96b69d10688a44e5691a4d910c46da1ad",
      "parents": [
        "1ad511dda2c0507de0bd9a767593979f0f8e2f60"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Feb 16 16:13:26 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:49 2016 +0200"
      },
      "message": "libipt, ild, insn: store displacement in pt_insn_ext\n\nInstead of storing the branch target in struct pt_insn_ext, we store the branch\ndisplacement.\n\nChange-Id: Ie93d74c045f34238592e2ae01f62f073e597c84c\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "1ad511dda2c0507de0bd9a767593979f0f8e2f60",
      "tree": "011d210f200372ecd4863b2284cc1d9fdfc39f9c",
      "parents": [
        "b392b091b0ee758f8fe76ef423c293779eca121d"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Feb 16 15:59:17 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:49 2016 +0200"
      },
      "message": "libipt, ild, insn: merge instruction length decode and decode\n\nMerge the two functions\n\n    pt_instruction_length_decode()\n    pt_instruction_decode()\n\ninto a single function\n\n    pt_ild_decode()\n\nThis patch establishes the interface and moves the boilerplate code for calling\nthe two decode functions into pt_ild.c.\n\nChange-Id: If2f69177d30ca52034662c86fce594435d263cee\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "b392b091b0ee758f8fe76ef423c293779eca121d",
      "tree": "4e76f47587cee9b5bfaf34a75ab0bbe4443c1619",
      "parents": [
        "d56408b709dd12f01cdda2378ac6dfe64f2ef0c9"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Feb 16 15:27:11 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:49 2016 +0200"
      },
      "message": "libipt, ild: do not indicate instruction relevance\n\nInstruction decode indicates whether the decoded instruction is relevant for us\nusing a positive return value.  This is ignored.  Stop doing it.\n\nChange-Id: I25cc3309d58c864f9d0858d139f47c130907c1f3\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    },
    {
      "commit": "d56408b709dd12f01cdda2378ac6dfe64f2ef0c9",
      "tree": "4264b3a32bcf49718350bac2577b1b726bcffe6f",
      "parents": [
        "3d75f65d084e933d1b522465f42e057f2e63fe9d"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Feb 16 15:04:44 2016 +0100"
      },
      "committer": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Thu Aug 11 08:19:48 2016 +0200"
      },
      "message": "libipt, ild, insn: merge instruction decode and classification\n\nInstruction decode provides a fine-grain classification in struct pt_ild that\nis translated into a coarser instruction class and into a newly introduced\nstruct pt_insn_ext.\n\nMerge this post-processing step into instruction decode.\n\nChange-Id: I86d776937ed5dd83ea2fe9bb20992d27266619c3\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\n"
    }
  ],
  "next": "3d75f65d084e933d1b522465f42e057f2e63fe9d"
}
