Example: ip2.c

up: index
prev: ip1.c
next: align1.c

    #include <stdint.h>
    #include <stdio.h>
    #include "capprint.h"
    
    int main()
    {
        int x=0;
    
        int *p0 = &x;
        uintptr_t ip0 = (uintptr_t)p0;
        int *p1 = (int*)ip0;
        
        fprintf(stderr,"p0: %" PTR_FMT "\n", sptr((void*)p0));
        fprintf(stderr,"p1: %" PTR_FMT "\n", sptr((void*)p1));
    }

Experimental data (what does this mean?)

cerberus-cheri-no-pnvi
cerberus-cheri-revocation-no-pnvi
cerberus-cheri-cornucopia-no-pnvi
 p0: (@disabled, 0xffffe720 [rwRW,0xffffe720-0xffffe724])
p1: (@disabled, 0xffffe720 [rwRW,0xffffe720-0xffffe724])
 
cerberus-cheri
cerberus-cheri-revocation
cerberus-cheri-cornucopia
 p0: (@81, 0xffffe720 [rwRW,0xffffe720-0xffffe724])
p1: (@81, 0xffffe720 [rwRW,0xffffe720-0xffffe724])
 
clang-riscv-O3-bounds-subobject-safe p0: 0x3fffdfff2c [rwRW,0x3fffdfff2c-0x3fffdfff30]
p1: 0x3fffdfff2c [rwRW,0x3fffdfff2c-0x3fffdfff30]
 
clang-riscv-O3-bounds-conservative p0: 0x3fffdfff3c [rwRW,0x3fffdfff3c-0x3fffdfff40]
p1: 0x3fffdfff3c [rwRW,0x3fffdfff3c-0x3fffdfff40]
 
clang-riscv-O0-bounds-conservative
clang-riscv-O0-bounds-references-only
clang-riscv-O0-bounds-subobject-safe
clang-riscv-O0-bounds-aggressive
clang-riscv-O0-bounds-very-aggressive
clang-riscv-O0-bounds-everywhere-unsafe
 p0: 0x3fffdfff6c [rwRW,0x3fffdfff6c-0x3fffdfff70]
p1: 0x3fffdfff6c [rwRW,0x3fffdfff6c-0x3fffdfff70]
 
clang-morello-O3-bounds-subobject-safe p0: 0xfffffff7fefc [rwRW,0xfffffff7fefc-0xfffffff7ff00]
p1: 0xfffffff7fefc [rwRW,0xfffffff7fefc-0xfffffff7ff00]
 
clang-morello-O3-bounds-conservative p0: 0xfffffff7ff2c [rwRW,0xfffffff7ff2c-0xfffffff7ff30]
p1: 0xfffffff7ff2c [rwRW,0xfffffff7ff2c-0xfffffff7ff30]
 
clang-morello-O0-bounds-conservative
clang-morello-O0-bounds-references-only
clang-morello-O0-bounds-subobject-safe
clang-morello-O0-bounds-aggressive
clang-morello-O0-bounds-very-aggressive
clang-morello-O0-bounds-everywhere-unsafe
 p0: 0xfffffff7ff5c [rwRW,0xfffffff7ff5c-0xfffffff7ff60]
p1: 0xfffffff7ff5c [rwRW,0xfffffff7ff5c-0xfffffff7ff60]
 
gcc-morello-O3 p0: 0x7fffffdc [rwRW,0x7fffffdc-0x7fffffe0]
p1: 0x7fffffdc [rwRW,0x7fffffdc-0x7fffffe0]
 
gcc-morello-O0 p0: 0x7fffffac [rwRW,0x7fffffac-0x7fffffb0]
p1: 0x7fffffac [rwRW,0x7fffffac-0x7fffffb0]