aboutsummaryrefslogtreecommitdiff
path: root/stdio-common/printf.h
diff options
context:
space:
mode:
authorCarlos Eduardo Seo <carlos.seo@arm.com>2022-07-07 18:46:43 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2022-10-27 14:46:55 +0100
commitcfa623ce10c5d1319f3a8345930a5044b3471e57 (patch)
tree68382f4197a30fe1b1e124b9a39391673c861df6 /stdio-common/printf.h
parentc6827cd8b558a4fa191ad285bde4a17efdd758db (diff)
downloadglibc-cfa623ce10c5d1319f3a8345930a5044b3471e57.tar
glibc-cfa623ce10c5d1319f3a8345930a5044b3471e57.tar.gz
glibc-cfa623ce10c5d1319f3a8345930a5044b3471e57.tar.bz2
glibc-cfa623ce10c5d1319f3a8345930a5044b3471e57.zip
cheri: stdio-common: add support for printing CHERI capabilities
This adds a new modifier %#p for printing capability information according to the CHERI C Programming guide: https://github.com/CTSRD-CHERI/cheri-c-programming/wiki/Displaying-Capabilities A %#p option in printf will display: <address> [<permissions>,<base>-<top>] (<attr>) * address: Virtual address of capability displayed as a hexadecimal value with a 0x prefix. * permissions: Zero or more of the following characters: r: LOAD permission w: STORE permission x: EXECUTE permission R: LOAD_CAP permission W: STORE_CAP permission E: EXECUTIVE permission (Morello only) * base: Lower bound of capability displayed as a hexadecimal value with a 0x prefix. * top: Upper bound of capability plus 1 displayed as a hexadecimal value with a 0x prefix. * attr: Zero or more of the following comma-separated attributes. If none of the attributes are present, this field is omitted (along with the enclosing parentheses/brackets). invalid: Capability's tag is clear. sentry: Capability is a sealed entry. sealed: Capability is sealed with a type other than the sealed entry object type. A %p option in printf will display the capability value (address) normally.
Diffstat (limited to 'stdio-common/printf.h')
-rw-r--r--stdio-common/printf.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/stdio-common/printf.h b/stdio-common/printf.h
index 46993e031e..815dc95779 100644
--- a/stdio-common/printf.h
+++ b/stdio-common/printf.h
@@ -50,7 +50,8 @@ struct printf_info
unsigned int i18n:1; /* I flag. */
unsigned int is_binary128:1; /* Floating-point argument is ABI-compatible
with IEC 60559 binary128. */
- unsigned int __pad:3; /* Unused so far. */
+ unsigned int is_cap:1; /* CHERI capability. */
+ unsigned int __pad:2; /* Unused so far. */
unsigned short int user; /* Bits for user-installed modifiers. */
wchar_t pad; /* Padding character. */
};