Intel PT: Address filtering not working. (cc me)

From: Muhammad Usman Nadeem
Date: Thu Oct 13 2016 - 00:05:44 EST


Usage: sudo perf record -e intel_pt//u --filter='filter 0x400000 /
0x1000 @./a.out' ./a.out 123

a.out is my program (for loop, call using function pointer and use of
longjump) and 123 is the argument.

Output: [ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.171 MB perf.data ]


Output contains mostly MTC packets and no TNT or TIP packets.

I am on the latest mainline version of kernel (b67be92) and perf
version perf version 4.8.gb67be9.

What could be the problem?
I am using it wrong?

Thanks
#include <iostream>
#include <setjmp.h>
jmp_buf go;
int foo()
{
return 5;
}
int bar()
{
longjmp(go,1);
return 6;
}

int main(int argc, char* argv[])
{
bool jumped = false;
int (*ptr) ();
// if arg then long jump
if (argc != 2)
{
ptr = foo;
} else {
ptr = bar;
}

for (int i = 0; i < 50000000; ++i)
{
++i;
--i;
}
setjmp(go);

if (!jumped)
{
jumped = true;
ptr();
} else {
std::cout << "AFTER long jump." << std::endl;
}
return 0;
}

Attachment: a.out
Description: Binary data