Skip to content

Commit 2fa2c21

Browse files
[llvm][docs] MemTagSanitizer is only supported on AArch64 Android (#120545)
``` $ ./bin/clang /tmp/test.c -o /tmp/test.o -target aarch64-linux -march=armv8+memtag -fsanitize=memtag-stack clang: error: unsupported option '-fsanitize=memtag*' for target 'aarch64-unknown-linux' ``` But this works: ``` $ ./bin/clang /tmp/test.c -o /tmp/test.o --target=aarch64-linux-android -march=armv8+memtag -fsanitize=memtag-stack ``` Due to this check in Clang: https://github.com/llvm/llvm-project/blob/2210da3b823ccf21fc634c858827c9f12c864b51/clang/lib/Driver/ToolChains/CommonArgs.cpp#L1651 Likely because the required notes and dynamic loader support only exist for Android. You can get around this, sort of, by not linking the file. However this means you have to provide your own way of loading it, so it doesn't change the statement that this feature is Android only. #64692 also confirms that the intent is to only support Android at this time. And while I'm here, suggest an additive set of flags that can also be used.
1 parent 0b5b09b commit 2fa2c21

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

llvm/docs/MemTagSanitizer.rst

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,15 @@ memory bugs.
2828
Usage
2929
=====
3030

31-
Compile and link your program with ``-fsanitize=memtag`` flag. This
32-
will only work when targeting AArch64 with MemTag extension. One
33-
possible way to achieve that is to add ``-target
34-
aarch64-linux -march=armv8+memtag`` to compilation flags.
31+
Compile and link your program with the ``-fsanitize=memtag`` flag. This
32+
will only work when targeting AArch64 Android with the memory tagging extension.
33+
One possible way to achieve that is to add ``--target=aarch64-linux-android -march=armv8+memtag``
34+
to your compilation flags.
35+
36+
Note that doing this will override existing flags of the same type. Assuming that
37+
you are already targeting AArch64 Android, an alternative is to add
38+
``-Xclang -target-feature -Xclang +mte`` to your compilation flags. This
39+
adds the memory tagging feature, without changing anything else.
3540

3641
Implementation
3742
==============

0 commit comments

Comments
 (0)