]> granicus.if.org Git - clang/commitdiff
[HWASan] Update HWASan assembly snippet in the docs
authorAlex Shlyapnikov <alekseys@google.com>
Tue, 24 Apr 2018 17:41:48 +0000 (17:41 +0000)
committerAlex Shlyapnikov <alekseys@google.com>
Tue, 24 Apr 2018 17:41:48 +0000 (17:41 +0000)
Summary: To complement https://reviews.llvm.org/D45840

Reviewers: eugenis

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D45996

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@330745 91177308-0d34-0410-b5e6-96231b3b80d8

docs/HardwareAssistedAddressSanitizerDesign.rst

index 06e5a435e9e69a8cef45cfb856a28f6e55b053f4..2578914376ae09ff8c54b6fdc0d89cf75ccabf4b 100644 (file)
@@ -52,15 +52,16 @@ verifies the tags. Currently, the following sequence is used:
   // int foo(int *a) { return *a; }
   // clang -O2 --target=aarch64-linux -fsanitize=hwaddress -c load.c
   foo:
-       0:      08 dc 44 d3     ubfx    x8, x0, #4, #52  // shadow address
-       4:      08 01 40 39     ldrb    w8, [x8]         // load shadow
-       8:      09 fc 78 d3     lsr     x9, x0, #56      // address tag
-       c:      3f 01 08 6b     cmp     w9, w8           // compare tags
-      10:      61 00 00 54     b.ne    #12              // jump on mismatch
-      14:      00 00 40 b9     ldr     w0, [x0]         // original load
-      18:      c0 03 5f d6     ret
-      1c:      40 20 21 d4     brk     #0x902           // trap
-
+       0:      08 00 00 90     adrp    x8, 0 <__hwasan_shadow>
+       4:      08 01 40 f9     ldr     x8, [x8]         // shadow base (to be resolved by the loader)
+       8:      09 dc 44 d3     ubfx    x9, x0, #4, #52  // shadow offset
+       c:      28 69 68 38     ldrb    w8, [x9, x8]     // load shadow tag
+      10:      09 fc 78 d3     lsr     x9, x0, #56      // extract address tag
+      14:      3f 01 08 6b     cmp     w9, w8           // compare tags
+      18:      61 00 00 54     b.ne    24               // jump on mismatch
+      1c:      00 00 40 b9     ldr     w0, [x0]         // original load
+      20:      c0 03 5f d6     ret
+      24:      40 20 21 d4     brk     #0x902           // trap
 
 Alternatively, memory accesses are prefixed with a function call.