Displaying 20 results from an estimated 400 matches similar to: "[MTE] Tagging Globals"
2020 Jul 15
2
[MTE] Tagging Globals
Thanks for the update, Phillips.
Yes, please add me, Stephen and Ana (CCed) to Phabricator reviews.
Zhaoshi
From: Mitch Phillips <mitchp at google.com>
Sent: Tuesday, July 14, 2020 19:10
To: Zhaoshi Zheng <zhaoshiz at quicinc.com>
Cc: llvm-dev at lists.llvm.org; Stephen Long <steplong at quicinc.com>
Subject: [EXT] Re: [llvm-dev] [MTE] Tagging Globals
Hi Zhaoshi,
Currently
2020 Jul 15
2
[MTE] Tagging Globals
Not at this stage -- no.
On Wed, Jul 15, 2020 at 3:23 PM Zhaoshi Zheng <zhaoshiz at quicinc.com> wrote:
> Mitch,
>
>
>
> I forgot to ask: do you have any timeline on sharing it through
> Phabricator?
>
>
>
> Thanks,
>
> Zhaoshi
>
>
>
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> *On Behalf Of *Zhaoshi
> Zheng via llvm-dev
2020 Sep 17
4
[MTE] Globals Tagging - Discussion
Hi folks,
ARM v8.5 introduces the Memory Tagging Extension (MTE), a hardware that
allows for detection of memory safety bugs (buffer overflows,
use-after-free, etc) with low overhead. So far, MTE support is implemented
in the Scudo hardened allocator (compiler-rt/lib/scudo/standalone) for
heap, and stack allocation is implemented in LLVM/Clang behind
-fsanitize=memtag
2020 Sep 18
2
[MTE] Globals Tagging - Discussion
Hi David,
Does the tagging of these hidden symbols only protect against RW
> primitives without a similar ldg? If I knew the address of the hidden
> symbol I could presumably use the same sequence, but I think I'm
> stretching what memory tagging is supposed to protect against.
I might be missing your point here - but don't forget that the local
globals are always PC-relative
2020 Sep 21
2
[MTE] Globals Tagging - Discussion
> I might be missing your point here - but don't forget that the local globals are always PC-relative direct loads/stores.
I did forget! Thanks for clarifying, now I understand.
On Fri, 18 Sep 2020 at 20:51, Evgenii Stepanov <eugenis at google.com> wrote:
>
>
>
> On Fri, Sep 18, 2020 at 12:18 PM Mitch Phillips via llvm-dev <llvm-dev at lists.llvm.org> wrote:
2020 Oct 09
3
[MTE] Globals Tagging - Discussion
>
> note: these bits are not really reserved for os or processor
> specific use in ELF. in practice they are processor specific
> so it will be STO_AARCH64_TAGGED.
>
Correct.
note2: undefined symbol references will need correct marking
> too if objects may get copy relocated into the main exe and
> linkers should check if definitions match references.
Yep - at this point I
2020 May 01
2
MTE -- discussion on Exception unwinding ABI
Hi everyone,
I believe the ABI for exception unwinding on a stack tagged with MTE
needs to be clarified -- hopefully we can start the discussion here?
(Please feel free to add people to the thread that you think would be
interested).
I'll outline some possible approaches that I think seem good below, I
know Evgenii and Peter have done a lot of investigation in this area for
HWASAN, so
2014 Oct 28
2
[LLVMdev] Storing values in global variables
Hello,
I have written a pass that works nicely if I use it with the opt tool,
as proposed by the "Writing an LLVM Pass" tutorial. Now I want to
execute this pass directly when clang is executed. I use the technique
described here:
http://homes.cs.washington.edu/~asampson/blog/clangpass.html. The pass
is loaded and executed, when I run clang with the right command line.
But clang
2020 Jun 01
3
Aarch64: unaligned access despite -mstrict-align
Hi,
I experienced a crash in code compiled with Clang 10.0.0 due to a
misaligned 64-bit data access. The (ARMv8) CPU is configured with SCTL.A
== 1 (alignment check enable). With SCTLR.A == 0 the code runs as expected.
After some investigation I came up with the following reproducer:
---8<-------8<-------8<-------8<-------8<-------8<-------8<-------
$ cat test.c
extern char
2020 Mar 16
2
Enable Safe Stack for Baremetal?
Hello,
I'm assessing the work required to enable Safe Stack for a bare metal target.
Looking at compiler-rt/lib/safestack/, the current implementation depends on thread support for mutex & storing unsafe stack pointer.
It also need several system calls: gettid, tgkill, mmap, munmap, mprotect.
Our target doesn't has all underlying support it needs. My question is: what's the
2006 Sep 15
1
what does Height represent?
hi--
I am new to R and try to use R cluster my binary data. I use
hierarchical clustering
plot (hclust (dist(x,method="binary"),method="average"),cex=0.1)
I end up with a cluster Dendrogram. On the left of my dendrogram, there
is scale called Height from 0.0 to 1.0.
I don't understand what does Height represent. If the Height represents
the distance scale between two
2020 Nov 10
0
[MTE] Globals Tagging - Discussion
* Mitch Phillips <mitchp at google.com> [2020-10-09 13:17:06 -0700]:
>
> > static int a[8];
> > static int *p = a - 5;
> > ...
> > p[10] = 1;
> > should work (even if it's not valid in c it can be valid as
> > a c extension or written in asm, so ELF should support it).
>
>
> IMO this is exactly the kind of thing that MTE is trying
2019 Jul 26
2
Stackmap offset computation on AArch64
Hi all,
I am trying to implement statepoints for the AArch64 target and I’m running into the issue where the following bitcode:
define i32 addrspace(1)* @test(i32 addrspace(1)* %ptr) gc "statepoint-example" {
entry:
call token (i64, i32, i1 ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_i1f(i64 0, i32 0, i1 ()* @foo, i32 0, i32 0, i32 0, i32 0, i32 addrspace(1)* %ptr)
ret
2020 Jun 11
2
Issue with __attribute__((constructor)) and -Os -fno-common
Hi,
I think that Clang erroneously discards a function annotated with
__attribute__((constructor)) when flags -Os -fno-common are given. Test
case below.
What do you think?
Thanks.
----8<--------8<--------8<--------8<--------8<--------8<--------
$ cat ctor.c
int val;
static void __attribute__((constructor)) init_fn(void)
{
val = 1;
}
int main(int argc, char *argv[])
2019 Jun 30
6
[hexagon][PowerPC] code regression (sub-optimal code) on LLVM 9 when generating hardware loops, and the "llvm.uadd" intrinsic.
Hi All,
The following code :
void hexagon2( int *a, int *res )
{
int i = 100;
while ( i-- ) {
*res++ = *a++;
}
}
gets compiled as a sub-optimal Software loop on LLVM 9.0 instead of a Hardware loop, whereas it was compiled as a Hardware Loop in LLVM 7.0.
This is the final assembly code generated by LLVM 9.0 :
.text
.file "main.c"
.globl hexagon2 // --
2020 Jun 22
3
Hardware ASan Generating Unknown Instruction
Hi,
I am trying to execute a simple hello world program compiled like so:
path/to/compiled/clang -o test --target=aarch64-linux-gnu
-march=armv8.5-a -fsanitize=hwaddress
--sysroot=/usr/aarch64-linux-gnu/
-L/usr/lib/gcc/aarch64-linux-gnu/10.1.0/ -g test.c
However, when I look at the disassembly, there is an unknown
instruction listed at 0x2d51c:
000000000002d4c0 main:
2d4c0: ff c3 00 d1
2018 Sep 20
3
Comparing Clang and GCC: only clang stores updated value in each iteration.
Hi,
I have a benchmark (mcf) that is currently slower when compiled with
clang compared to gcc 8 (~10%). It seems that a hot loop has a few
differences, where one interesting one is that while clang stores an
incremented value in each iteration, gcc waits and just stores the final
value just once after the loop. The value is a global variable.
I wonder if this is something clang does not do
2020 Jun 12
2
Issue with __attribute__((constructor)) and -Os -fno-common
On 6/11/20 11:25 PM, James Y Knight wrote:
> The global constructor was removed by setting the initial value of "val" to
> 1 instead of 0. So, the behavior of this program is preserved. Doesn't look
> like erroneous behavior.
OK, my example is too simplified indeed. Please consider the following
instead:
int val;
static void __attribute__((constructor)) init_fn(void)
{
2016 Jun 29
2
avx512 JIT backend generates wrong code on <4 x float>
Hi!
When compiling the attached module with the JIT engine on an Intel KNL I
see wrong code getting emitted. I attach a complete exploit program
which shows the bug in LLVM 3.8. It loads and JIT compiles the module
and prints the assembler. I stumbled on this since the result of an
actual calculation was wrong. So, it's not only the text version of the
assembler also the machine
2020 Jun 01
2
Aarch64: unaligned access despite -mstrict-align
Sorry, quick message to ignore what I wrote before, I got myself confused (probably you too),
With a recent trunk build I get this:
f:
adrp x8, g
ldr x8, [x8, :lo12:g]
mov w2, #16
mov x1, x0
mov x0, x8
b memcmp
This looks more correct, and I need to look a bit more into this (and how clang 10.0.0 behaves).