Add new command line option -fsanitize-memtag-mode with three possible values: - sync (default) - async - asymm This allows the user to select the fault conveyance model when using MTE instructions for their applications.
This option is not (sanity checked) processed in GCC at all currently. If bad args / unsupported args are passed, ld will complain. TBD: - This option is not checked / processed in GCC at all currently. - asymm is not specified in Memtag ABI... - clang has -fsanitize-memtag-mode=<value> Sets default MTE mode to 'sync' (default) or 'async' gcc/ChangeLog: * doc/invoke.texi: Document -fsanitize-memtag-mode. --- [New in RFC V2] --- gcc/doc/invoke.texi | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index de651183a703..b33585430e6a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -18032,6 +18032,18 @@ Use Memory Tagging Extension instructions instead of instrumentation to allow the detection of memory errors. This option is available only on those AArch64 architectures that support Memory Tagging Extensions. +@opindex -fsanitize-memtag-mode +@item -fsanitize-memtag-mode=@r{[}sync@r{|}async@r{|}asymm@r{]} +Control the fault conveyance model of MTE instructions. Mismatched logical and +allocation tags are detected during a load/store operation. In @code{sync} +mode, exceptions are precise, providing the exact instruction where the fault +occurred, and the exact faulting address. The @code{aysnc} mode allows +imprecise detection that a fault has occurred, at the benefit of increased +performance over the synchronous mode. The @code{asymm} mode provides +synchronous checking on memory reads, and asynchronous checking of memory +writes. The selection of fault conveyance model does not alter code +generation. + @opindex fsanitize=pointer-compare @item -fsanitize=pointer-compare Instrument comparison operation (<, <=, >, >=) with pointer operands. -- 2.43.0