[PATCH v6 0/1] RFC: Add <sys/tagged-address.h>
H.J. Lu
hjl.tools@gmail.com
Sun Aug 22 12:45:45 GMT 2021
Changes in v6:
1. Update and simplify the API by only exporting:
/* Set the mask for address bits used in address translation. Return 0
on success. Return -1 on error. */
extern int set_translated_address_mask (uintptr_t __mask);
/* Non-zero if constant address BITS is a valid tagged address bits. */
#define TRANSLATED_ADDRESS_VALID_BITS(BITS)
/* A mask for constant address BITS used in address translation. */
#define TRANSLATED_ADDRESS_MASK(BITS)
2. Properly use _Static_assert for C and static_assert for C++.
Changes in v5:
Add restrictions:
1. All bits between 0 and N - 1, where N is the number of tagged address
bits, are used in address translation.
2. All pointers participating in a pointer arithmetic operation should have
the same tag if they point to the same memory object so that pointer
equality operation can be performed on tagged pointers.
Changes in v4:
1. Document that the zero return value from get_tagged_address_bits
indicates that tag bits are not the highest bits in address.
2. Document that the zero value of TAGGED_ADDRESS_MASK indicates the
invalid address mask.
3. Add <bits/tagged-address-mask.h> to provide TAGGED_ADDRESS_MASK.
4. Add C++ support to TAGGED_ADDRESS_MASK.
Changes in v3:
1. set_tagged_address_mask can be only called once before main.
2. Add more tests.
---
By default, the number of the address bits used in address translation
is the number of address bits. But it can be changed by ARM Top-byte
Ignore (TBI) or Intel Linear Address Masking (LAM).
<sys/tagged-address.h> provides an API for tagged address manipulation.
H.J. Lu (1):
<sys/tagged-address.h>: An API for tagged address
NEWS | 2 +-
bits/tagged-address-mask.h | 47 ++++++++++++++++
bits/tagged-address-valid-bits.h | 28 ++++++++++
csu/libc-start.c | 3 +
elf/dl-support.c | 5 ++
include/sys/tagged-address.h | 18 ++++++
manual/Makefile | 3 +-
manual/ctype.texi | 2 +-
manual/memory.texi | 2 +-
manual/tagged-address.texi | 48 ++++++++++++++++
misc/Makefile | 40 ++++++++++++--
misc/Versions | 10 ++++
misc/set-translated-address-mask.c | 41 ++++++++++++++
misc/sys/tagged-address.h | 33 +++++++++++
misc/tagged-address.c | 50 +++++++++++++++++
misc/tst-tagged-address-1-static.c | 1 +
misc/tst-tagged-address-1.c | 55 +++++++++++++++++++
misc/tst-tagged-address-2-static.c | 1 +
misc/tst-tagged-address-2.c | 45 +++++++++++++++
misc/tst-tagged-address-3-static.c | 1 +
misc/tst-tagged-address-3.c | 48 ++++++++++++++++
misc/tst-tagged-address-4-static.c | 1 +
misc/tst-tagged-address-4.c | 36 ++++++++++++
misc/tst-tagged-address-5.c | 25 +++++++++
misc/tst-tagged-address-6.c | 34 ++++++++++++
misc/tst-tagged-address-7.c | 41 ++++++++++++++
misc/tst-tagged-address-mod-5.c | 47 ++++++++++++++++
misc/tst-tagged-address-mod-6.c | 34 ++++++++++++
misc/tst-tagged-address-mod-7.c | 35 ++++++++++++
sysdeps/generic/inline-tagged-address.h | 43 +++++++++++++++
sysdeps/generic/ldsodefs.h | 4 ++
sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
.../unix/sysv/linux/x86_64/64/libc.abilist | 1 +
.../unix/sysv/linux/x86_64/x32/libc.abilist | 1 +
34 files changed, 777 insertions(+), 9 deletions(-)
create mode 100644 bits/tagged-address-mask.h
create mode 100644 bits/tagged-address-valid-bits.h
create mode 100644 include/sys/tagged-address.h
create mode 100644 manual/tagged-address.texi
create mode 100644 misc/set-translated-address-mask.c
create mode 100644 misc/sys/tagged-address.h
create mode 100644 misc/tagged-address.c
create mode 100644 misc/tst-tagged-address-1-static.c
create mode 100644 misc/tst-tagged-address-1.c
create mode 100644 misc/tst-tagged-address-2-static.c
create mode 100644 misc/tst-tagged-address-2.c
create mode 100644 misc/tst-tagged-address-3-static.c
create mode 100644 misc/tst-tagged-address-3.c
create mode 100644 misc/tst-tagged-address-4-static.c
create mode 100644 misc/tst-tagged-address-4.c
create mode 100644 misc/tst-tagged-address-5.c
create mode 100644 misc/tst-tagged-address-6.c
create mode 100644 misc/tst-tagged-address-7.c
create mode 100644 misc/tst-tagged-address-mod-5.c
create mode 100644 misc/tst-tagged-address-mod-6.c
create mode 100644 misc/tst-tagged-address-mod-7.c
create mode 100644 sysdeps/generic/inline-tagged-address.h
--
2.31.1
More information about the Libc-alpha
mailing list