modptr3.c
up: index
prev: modptr2a.c
next: modptr4.c
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
#include "capprint.h"
int main()
{
int n = 42;
uintptr_t ip;
ip =(uintptr_t) &n;
fprintf(stderr,"Original:\t%" PTR_FMT "\n", sptr((void*)ip));
/* set lower bit */
ip |= 1;
fprintf(stderr,"Set:\t\t%" PTR_FMT "\n", sptr((void*)ip));
/* clear lower bit */
ip &= ~1;
fprintf(stderr,"Clear:\t\t%" PTR_FMT "\n", sptr((void*)ip));
int *p = (int*)ip;
fprintf(stderr,"Value: %d\n", *p);
}
Experimental data (what does this mean?)
cerberus-cheri-no-pnvi
cerberus-cheri-revocation-no-pnvi
cerberus-cheri-cornucopia-no-pnvi Original: (@disabled, 0xffffe710 [rwRW,0xffffe710-0xffffe714])
Set: (@disabled, 0xffffe711 [rwRW,0xffffe710-0xffffe714])
Clear: (@disabled, 0xffffe710 [rwRW,0xffffe710-0xffffe714])
Value: 42
cerberus-cheri
cerberus-cheri-revocation
cerberus-cheri-cornucopia Original: (@83, 0xffffe710 [rwRW,0xffffe710-0xffffe714])
Set: (@83, 0xffffe711 [rwRW,0xffffe710-0xffffe714])
Clear: (@83, 0xffffe710 [rwRW,0xffffe710-0xffffe714])
Value: 42
clang-riscv-O3-bounds-subobject-safe Original: 0x3fffdfff1c [rwRW,0x3fffdfff1c-0x3fffdfff20]
Set: 0x3fffdfff1d [rwRW,0x3fffdfff1c-0x3fffdfff20]
Clear: 0x3fffdfff1c [rwRW,0x3fffdfff1c-0x3fffdfff20]
Value: 42
clang-riscv-O3-bounds-conservative Original: 0x3fffdfff0c [rwRW,0x3fffdfff0c-0x3fffdfff10]
Set: 0x3fffdfff0d [rwRW,0x3fffdfff0c-0x3fffdfff10]
Clear: 0x3fffdfff0c [rwRW,0x3fffdfff0c-0x3fffdfff10]
Value: 42
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 Original: 0x3fffdfff6c [rwRW,0x3fffdfff6c-0x3fffdfff70]
Set: 0x3fffdfff6d [rwRW,0x3fffdfff6c-0x3fffdfff70]
Clear: 0x3fffdfff6c [rwRW,0x3fffdfff6c-0x3fffdfff70]
Value: 42
clang-morello-O3-bounds-subobject-safe Original: 0xfffffff7feec [rwRW,0xfffffff7feec-0xfffffff7fef0]
Set: 0xfffffff7feed [rwRW,0xfffffff7feec-0xfffffff7fef0]
Clear: 0xfffffff7feec [rwRW,0xfffffff7feec-0xfffffff7fef0]
Value: 42
clang-morello-O3-bounds-conservative Original: 0xfffffff7ff0c [rwRW,0xfffffff7ff0c-0xfffffff7ff10]
Set: 0xfffffff7ff0d [rwRW,0xfffffff7ff0c-0xfffffff7ff10]
Clear: 0xfffffff7ff0c [rwRW,0xfffffff7ff0c-0xfffffff7ff10]
Value: 42
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 Original: 0xfffffff7ff5c [rwRW,0xfffffff7ff5c-0xfffffff7ff60]
Set: 0xfffffff7ff5d [rwRW,0xfffffff7ff5c-0xfffffff7ff60]
Clear: 0xfffffff7ff5c [rwRW,0xfffffff7ff5c-0xfffffff7ff60]
Value: 42
gcc-morello-O3 Original: 0x7fffffdc [rwRW,0x7fffffdc-0x7fffffe0]
Set: 0x7fffffdd [rwRW,0x7fffffdc-0x7fffffe0]
Clear: 0x7fffffdc [rwRW,0x7fffffdc-0x7fffffe0]
Value: 42
gcc-morello-O0 Original: 0x7fffffbc [rwRW,0x7fffffbc-0x7fffffc0]
Set: 0x7fffffbd [rwRW,0x7fffffbc-0x7fffffc0]
Clear: 0x7fffffbc [rwRW,0x7fffffbc-0x7fffffc0]
Value: 42