1 | #include <asm/hwcap.h> |
2 | #include <asm/mman.h> |
3 | #include <sys/auxv.h> |
4 | #include <sys/mman.h> |
5 | #include <sys/prctl.h> |
6 | #include <unistd.h> |
7 | |
8 | int main(int argc, char const *argv[]) { |
9 | if (!(getauxval(AT_HWCAP2) & HWCAP2_MTE)) |
10 | return 1; |
11 | |
12 | int got = prctl(PR_SET_TAGGED_ADDR_CTRL, PR_TAGGED_ADDR_ENABLE, 0, 0, 0); |
13 | if (got) |
14 | return 1; |
15 | |
16 | void *the_page = mmap(addr: 0, len: sysconf(_SC_PAGESIZE), prot: PROT_MTE, |
17 | MAP_PRIVATE | MAP_ANONYMOUS, fd: -1, offset: 0); |
18 | if (the_page == MAP_FAILED) |
19 | return 1; |
20 | |
21 | return 0; // Set break point at this line. |
22 | } |
23 | |