On Wed, May 13, 2020 at 03:58:30PM +0200, Marco Elver wrote:
> On Wed, 13 May 2020 at 15:24, Peter Zijlstra <pet...@infradead.org> wrote:
> >
> > On Wed, May 13, 2020 at 03:15:55PM +0200, Marco Elver wrote:
> > > So far so good, except: both __no_sanitize_or_inline and
> > > __no_kcsan_or_inline *do* avoid KCSAN instrumenting plain accesses, it
> > > just doesn't avoid explicit kcsan_check calls, like those in
> > > READ/WRITE_ONCE if KCSAN is enabled for the compilation unit. That's
> > > just because macros won't be redefined just for __no_sanitize
> > > functions. Similarly, READ_ONCE_NOCHECK does work as expected, and its
> > > access is unchecked.
> > >
> > > This will have the expected result:
> > > __no_sanitize_or_inline void foo(void) { x++; } // no data races reported
> > >
> > > This will not work as expected:
> > > __no_sanitize_or_inline void foo(void) { READ_ONCE(x); }  // data
> > > races are reported
> > >
> > > All this could be fixed if GCC devs would finally take my patch to
> > > make -fsanitize=thread distinguish volatile [1], but then we have to
> > > wait ~years for the new compilers to reach us. So please don't hold
> > > your breath for this one any time soon.
> > > [1] https://gcc.gnu.org/pipermail/gcc-patches/2020-April/544452.html
> >
> > Right, but that does not address the much larger issue of the attribute
> > vs inline tranwreck :/
> 
> Could you check if Clang is equally broken for you? I think GCC and
> Clang have differing behaviour on this. No idea what it takes to fix
> GCC though.

So I have some good and some maybe not so good news.

Given the patch below (on top of tglx's entry-v5-the-rest tag); I did
find that I could actually build alternative.o for gcc-{8,9,10} and
indeed clang-10. Any earlier gcc (I tried, 5,6,7) does not build:

../arch/x86/include/asm/ptrace.h:126:28: error: inlining failed in call to 
always_inline ‘user_mode’: function attribute mismatch

I dumped the poke_int3_handler output using objdump, find the attached
files.

It looks like clang-10 doesn't want to turn UBSAN off :/ The GCC files
look OK, no funny calls in those.

(the config has KASAN/UBSAN on, it looks like KCSAN and KASAN are
mutually exclusive)

---

diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 77c83833d91e..06d8db612efc 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -990,7 +990,7 @@ static __always_inline int patch_cmp(const void *key, const 
void *elt)
        return 0;
 }
 
-int noinstr poke_int3_handler(struct pt_regs *regs)
+int noinstr __no_kcsan __no_sanitize_address __no_sanitize_undefined 
poke_int3_handler(struct pt_regs *regs)
 {
        struct bp_patching_desc *desc;
        struct text_poke_loc *tp;
diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h
index 2cb42d8bdedc..5e83aada6553 100644
--- a/include/linux/compiler-clang.h
+++ b/include/linux/compiler-clang.h
@@ -15,6 +15,13 @@
 /* all clang versions usable with the kernel support KASAN ABI version 5 */
 #define KASAN_ABI_VERSION 5
 
+#if __has_feature(undefined_sanitizer)
+#define __no_sanitize_undefined \
+               __attribute__((no_sanitize("undefined")))
+#else
+#define __no_sanitize_undefined
+#endif
+
 #if __has_feature(address_sanitizer) || __has_feature(hwaddress_sanitizer)
 /* Emulate GCC's __SANITIZE_ADDRESS__ flag */
 #define __SANITIZE_ADDRESS__
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 7dd4e0349ef3..8196a121a78e 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -138,6 +138,12 @@
 #define KASAN_ABI_VERSION 3
 #endif
 
+#if __has_attribute(__no_sanitize_undefined__)
+#define __no_sanitize_undefined __attribute__((no_sanitize_undefined))
+#else
+#define __no_sanitize_undefined
+#endif
+
 #if __has_attribute(__no_sanitize_address__)
 #define __no_sanitize_address __attribute__((no_sanitize_address))
 #else



0000 0000000000000000 <poke_int3_handler>:
0000    0:      f6 87 88 00 00 00 03    testb  $0x3,0x88(%rdi)
0007    7:      75 5d                   jne    66 <poke_int3_handler+0x66>
0009    9:      48 8b 35 00 00 00 00    mov    0x0(%rip),%rsi        # 10 
<poke_int3_handler+0x10>
000c                    c: R_X86_64_PC32        .bss+0x105c
0010   10:      48 85 f6                test   %rsi,%rsi
0013   13:      74 51                   je     66 <poke_int3_handler+0x66>
0015   15:      8b 46 0c                mov    0xc(%rsi),%eax
0018   18:      48 8d 56 0c             lea    0xc(%rsi),%rdx
001c   1c:      85 c0                   test   %eax,%eax
001e   1e:      74 46                   je     66 <poke_int3_handler+0x66>
0020   20:      8d 48 01                lea    0x1(%rax),%ecx
0023   23:      f0 0f b1 4e 0c          lock cmpxchg %ecx,0xc(%rsi)
0028   28:      75 2d                   jne    57 <poke_int3_handler+0x57>
002a   2a:      48 8b 97 80 00 00 00    mov    0x80(%rdi),%rdx
0031   31:      48 63 46 08             movslq 0x8(%rsi),%rax
0035   35:      48 8b 0e                mov    (%rsi),%rcx
0038   38:      4c 8d 42 ff             lea    -0x1(%rdx),%r8
003c   3c:      83 f8 01                cmp    $0x1,%eax
003f   3f:      7f 28                   jg     69 <poke_int3_handler+0x69>
0041   41:      4c 63 09                movslq (%rcx),%r9
0044   44:      31 c0                   xor    %eax,%eax
0046   46:      49 81 c1 00 00 00 00    add    $0x0,%r9
0049                    49: R_X86_64_32S        _stext
004d   4d:      4d 39 c8                cmp    %r9,%r8
0050   50:      74 48                   je     9a <poke_int3_handler+0x9a>
0052   52:      f0 ff 4e 0c             lock decl 0xc(%rsi)
0056   56:      c3                      retq   
0057   57:      85 c0                   test   %eax,%eax
0059   59:      74 0b                   je     66 <poke_int3_handler+0x66>
005b   5b:      8d 48 01                lea    0x1(%rax),%ecx
005e   5e:      f0 0f b1 0a             lock cmpxchg %ecx,(%rdx)
0062   62:      74 c6                   je     2a <poke_int3_handler+0x2a>
0064   64:      eb f1                   jmp    57 <poke_int3_handler+0x57>
0066   66:      31 c0                   xor    %eax,%eax
0068   68:      c3                      retq   
0069   69:      49 89 cb                mov    %rcx,%r11
006c   6c:      49 89 c2                mov    %rax,%r10
006f   6f:      49 d1 ea                shr    %r10
0072   72:      4c 89 d1                mov    %r10,%rcx
0075   75:      48 c1 e1 04             shl    $0x4,%rcx
0079   79:      4c 01 d9                add    %r11,%rcx
007c   7c:      4c 63 09                movslq (%rcx),%r9
007f   7f:      49 81 c1 00 00 00 00    add    $0x0,%r9
0082                    82: R_X86_64_32S        _stext
0086   86:      4d 39 c8                cmp    %r9,%r8
0089   89:      0f 82 95 00 00 00       jb     124 <poke_int3_handler+0x124>
008f   8f:      0f 87 84 00 00 00       ja     119 <poke_int3_handler+0x119>
0095   95:      48 85 c9                test   %rcx,%rcx
0098   98:      74 29                   je     c3 <poke_int3_handler+0xc3>
009a   9a:      0f b6 41 08             movzbl 0x8(%rcx),%eax
009e   9e:      44 8d 48 34             lea    0x34(%rax),%r9d
00a2   a2:      41 80 f9 1f             cmp    $0x1f,%r9b
00a6   a6:      76 02                   jbe    aa <poke_int3_handler+0xaa>
00a8   a8:      0f 0b                   ud2    
00aa   aa:      45 0f b6 c9             movzbl %r9b,%r9d
00ae   ae:      4d 0f be 89 00 00 00    movsbq 0x0(%r9),%r9
00b5   b5:      00 
00b2                    b2: R_X86_64_32S        .rodata+0x620
00b6   b6:      4d 01 c8                add    %r9,%r8
00b9   b9:      3c e8                   cmp    $0xe8,%al
00bb   bb:      74 2a                   je     e7 <poke_int3_handler+0xe7>
00bd   bd:      77 08                   ja     c7 <poke_int3_handler+0xc7>
00bf   bf:      3c cc                   cmp    $0xcc,%al
00c1   c1:      75 e5                   jne    a8 <poke_int3_handler+0xa8>
00c3   c3:      31 c0                   xor    %eax,%eax
00c5   c5:      eb 8b                   jmp    52 <poke_int3_handler+0x52>
00c7   c7:      3c e9                   cmp    $0xe9,%al
00c9   c9:      74 04                   je     cf <poke_int3_handler+0xcf>
00cb   cb:      3c eb                   cmp    $0xeb,%al
00cd   cd:      75 d9                   jne    a8 <poke_int3_handler+0xa8>
00cf   cf:      4c 63 49 04             movslq 0x4(%rcx),%r9
00d3   d3:      b8 01 00 00 00          mov    $0x1,%eax
00d8   d8:      4d 01 c8                add    %r9,%r8
00db   db:      4c 89 87 80 00 00 00    mov    %r8,0x80(%rdi)
00e2   e2:      e9 6b ff ff ff          jmpq   52 <poke_int3_handler+0x52>
00e7   e7:      4c 63 49 04             movslq 0x4(%rcx),%r9
00eb   eb:      48 8b 87 98 00 00 00    mov    0x98(%rdi),%rax
00f2   f2:      48 83 c2 04             add    $0x4,%rdx
00f6   f6:      48 8d 48 f8             lea    -0x8(%rax),%rcx
00fa   fa:      4d 01 c8                add    %r9,%r8
00fd   fd:      48 89 8f 98 00 00 00    mov    %rcx,0x98(%rdi)
0104  104:      48 89 50 f8             mov    %rdx,-0x8(%rax)
0108  108:      b8 01 00 00 00          mov    $0x1,%eax
010d  10d:      4c 89 87 80 00 00 00    mov    %r8,0x80(%rdi)
0114  114:      e9 39 ff ff ff          jmpq   52 <poke_int3_handler+0x52>
0119  119:      4c 8d 50 ff             lea    -0x1(%rax),%r10
011d  11d:      4c 8d 59 10             lea    0x10(%rcx),%r11
0121  121:      49 d1 ea                shr    %r10
0124  124:      4c 89 d0                mov    %r10,%rax
0127  127:      4d 85 d2                test   %r10,%r10
012a  12a:      0f 85 3c ff ff ff       jne    6c <poke_int3_handler+0x6c>
0130  130:      e9 1d ff ff ff          jmpq   52 <poke_int3_handler+0x52>
0000 0000000000000000 <poke_int3_handler>:
0000    0:      f6 87 88 00 00 00 03    testb  $0x3,0x88(%rdi)
0007    7:      75 4d                   jne    56 <poke_int3_handler+0x56>
0009    9:      48 8b 15 00 00 00 00    mov    0x0(%rip),%rdx        # 10 
<poke_int3_handler+0x10>
000c                    c: R_X86_64_PC32        .bss+0x105c
0010   10:      48 85 d2                test   %rdx,%rdx
0013   13:      74 41                   je     56 <poke_int3_handler+0x56>
0015   15:      8b 42 0c                mov    0xc(%rdx),%eax
0018   18:      48 8d 4a 0c             lea    0xc(%rdx),%rcx
001c   1c:      85 c0                   test   %eax,%eax
001e   1e:      74 36                   je     56 <poke_int3_handler+0x56>
0020   20:      8d 70 01                lea    0x1(%rax),%esi
0023   23:      f0 0f b1 31             lock cmpxchg %esi,(%rcx)
0027   27:      75 f3                   jne    1c <poke_int3_handler+0x1c>
0029   29:      4c 8b 8f 80 00 00 00    mov    0x80(%rdi),%r9
0030   30:      48 63 42 08             movslq 0x8(%rdx),%rax
0034   34:      48 8b 32                mov    (%rdx),%rsi
0037   37:      49 8d 49 ff             lea    -0x1(%r9),%rcx
003b   3b:      83 f8 01                cmp    $0x1,%eax
003e   3e:      7f 19                   jg     59 <poke_int3_handler+0x59>
0040   40:      4c 63 06                movslq (%rsi),%r8
0043   43:      31 c0                   xor    %eax,%eax
0045   45:      49 81 c0 00 00 00 00    add    $0x0,%r8
0048                    48: R_X86_64_32S        _stext
004c   4c:      4c 39 c1                cmp    %r8,%rcx
004f   4f:      74 39                   je     8a <poke_int3_handler+0x8a>
0051   51:      f0 ff 4a 0c             lock decl 0xc(%rdx)
0055   55:      c3                      retq   
0056   56:      31 c0                   xor    %eax,%eax
0058   58:      c3                      retq   
0059   59:      49 89 f3                mov    %rsi,%r11
005c   5c:      49 89 c2                mov    %rax,%r10
005f   5f:      49 d1 ea                shr    %r10
0062   62:      4c 89 d6                mov    %r10,%rsi
0065   65:      48 c1 e6 04             shl    $0x4,%rsi
0069   69:      4c 01 de                add    %r11,%rsi
006c   6c:      4c 63 06                movslq (%rsi),%r8
006f   6f:      49 81 c0 00 00 00 00    add    $0x0,%r8
0072                    72: R_X86_64_32S        _stext
0076   76:      4c 39 c1                cmp    %r8,%rcx
0079   79:      0f 82 a2 00 00 00       jb     121 <poke_int3_handler+0x121>
007f   7f:      0f 87 83 00 00 00       ja     108 <poke_int3_handler+0x108>
0085   85:      48 85 f6                test   %rsi,%rsi
0088   88:      74 45                   je     cf <poke_int3_handler+0xcf>
008a   8a:      0f b6 46 08             movzbl 0x8(%rsi),%eax
008e   8e:      44 8d 40 34             lea    0x34(%rax),%r8d
0092   92:      41 80 f8 1f             cmp    $0x1f,%r8b
0096   96:      76 02                   jbe    9a <poke_int3_handler+0x9a>
0098   98:      0f 0b                   ud2    
009a   9a:      45 0f b6 c0             movzbl %r8b,%r8d
009e   9e:      4d 0f be 80 00 00 00    movsbq 0x0(%r8),%r8
00a5   a5:      00 
00a2                    a2: R_X86_64_32S        .rodata+0x620
00a6   a6:      4c 01 c1                add    %r8,%rcx
00a9   a9:      3c e8                   cmp    $0xe8,%al
00ab   ab:      74 29                   je     d6 <poke_int3_handler+0xd6>
00ad   ad:      76 1c                   jbe    cb <poke_int3_handler+0xcb>
00af   af:      83 e0 fd                and    $0xfffffffd,%eax
00b2   b2:      3c e9                   cmp    $0xe9,%al
00b4   b4:      75 e2                   jne    98 <poke_int3_handler+0x98>
00b6   b6:      48 63 46 04             movslq 0x4(%rsi),%rax
00ba   ba:      48 01 c1                add    %rax,%rcx
00bd   bd:      b8 01 00 00 00          mov    $0x1,%eax
00c2   c2:      48 89 8f 80 00 00 00    mov    %rcx,0x80(%rdi)
00c9   c9:      eb 86                   jmp    51 <poke_int3_handler+0x51>
00cb   cb:      3c cc                   cmp    $0xcc,%al
00cd   cd:      75 c9                   jne    98 <poke_int3_handler+0x98>
00cf   cf:      31 c0                   xor    %eax,%eax
00d1   d1:      e9 7b ff ff ff          jmpq   51 <poke_int3_handler+0x51>
00d6   d6:      48 63 46 04             movslq 0x4(%rsi),%rax
00da   da:      49 83 c1 04             add    $0x4,%r9
00de   de:      48 01 c1                add    %rax,%rcx
00e1   e1:      48 8b 87 98 00 00 00    mov    0x98(%rdi),%rax
00e8   e8:      48 8d 70 f8             lea    -0x8(%rax),%rsi
00ec   ec:      48 89 b7 98 00 00 00    mov    %rsi,0x98(%rdi)
00f3   f3:      4c 89 48 f8             mov    %r9,-0x8(%rax)
00f7   f7:      b8 01 00 00 00          mov    $0x1,%eax
00fc   fc:      48 89 8f 80 00 00 00    mov    %rcx,0x80(%rdi)
0103  103:      e9 49 ff ff ff          jmpq   51 <poke_int3_handler+0x51>
0108  108:      48 83 e8 01             sub    $0x1,%rax
010c  10c:      4c 8d 5e 10             lea    0x10(%rsi),%r11
0110  110:      48 d1 e8                shr    %rax
0113  113:      48 85 c0                test   %rax,%rax
0116  116:      0f 85 40 ff ff ff       jne    5c <poke_int3_handler+0x5c>
011c  11c:      e9 30 ff ff ff          jmpq   51 <poke_int3_handler+0x51>
0121  121:      4c 89 d0                mov    %r10,%rax
0124  124:      eb ed                   jmp    113 <poke_int3_handler+0x113>
0000 0000000000000000 <poke_int3_handler>:
0000    0:      f6 87 88 00 00 00 03    testb  $0x3,0x88(%rdi)
0007    7:      75 4d                   jne    56 <poke_int3_handler+0x56>
0009    9:      48 8b 15 00 00 00 00    mov    0x0(%rip),%rdx        # 10 
<poke_int3_handler+0x10>
000c                    c: R_X86_64_PC32        .bss+0x105c
0010   10:      48 85 d2                test   %rdx,%rdx
0013   13:      74 41                   je     56 <poke_int3_handler+0x56>
0015   15:      8b 42 0c                mov    0xc(%rdx),%eax
0018   18:      48 8d 4a 0c             lea    0xc(%rdx),%rcx
001c   1c:      85 c0                   test   %eax,%eax
001e   1e:      74 36                   je     56 <poke_int3_handler+0x56>
0020   20:      8d 70 01                lea    0x1(%rax),%esi
0023   23:      f0 0f b1 31             lock cmpxchg %esi,(%rcx)
0027   27:      75 f3                   jne    1c <poke_int3_handler+0x1c>
0029   29:      4c 8b 8f 80 00 00 00    mov    0x80(%rdi),%r9
0030   30:      48 63 42 08             movslq 0x8(%rdx),%rax
0034   34:      48 8b 32                mov    (%rdx),%rsi
0037   37:      49 8d 49 ff             lea    -0x1(%r9),%rcx
003b   3b:      83 f8 01                cmp    $0x1,%eax
003e   3e:      7f 19                   jg     59 <poke_int3_handler+0x59>
0040   40:      4c 63 06                movslq (%rsi),%r8
0043   43:      31 c0                   xor    %eax,%eax
0045   45:      49 81 c0 00 00 00 00    add    $0x0,%r8
0048                    48: R_X86_64_32S        _stext
004c   4c:      4c 39 c1                cmp    %r8,%rcx
004f   4f:      74 39                   je     8a <poke_int3_handler+0x8a>
0051   51:      f0 ff 4a 0c             lock decl 0xc(%rdx)
0055   55:      c3                      retq   
0056   56:      31 c0                   xor    %eax,%eax
0058   58:      c3                      retq   
0059   59:      49 89 f3                mov    %rsi,%r11
005c   5c:      49 89 c2                mov    %rax,%r10
005f   5f:      49 d1 ea                shr    %r10
0062   62:      4c 89 d6                mov    %r10,%rsi
0065   65:      48 c1 e6 04             shl    $0x4,%rsi
0069   69:      4c 01 de                add    %r11,%rsi
006c   6c:      4c 63 06                movslq (%rsi),%r8
006f   6f:      49 81 c0 00 00 00 00    add    $0x0,%r8
0072                    72: R_X86_64_32S        _stext
0076   76:      4c 39 c1                cmp    %r8,%rcx
0079   79:      0f 82 a2 00 00 00       jb     121 <poke_int3_handler+0x121>
007f   7f:      0f 87 83 00 00 00       ja     108 <poke_int3_handler+0x108>
0085   85:      48 85 f6                test   %rsi,%rsi
0088   88:      74 45                   je     cf <poke_int3_handler+0xcf>
008a   8a:      0f b6 46 08             movzbl 0x8(%rsi),%eax
008e   8e:      44 8d 40 34             lea    0x34(%rax),%r8d
0092   92:      41 80 f8 1f             cmp    $0x1f,%r8b
0096   96:      76 02                   jbe    9a <poke_int3_handler+0x9a>
0098   98:      0f 0b                   ud2    
009a   9a:      45 0f b6 c0             movzbl %r8b,%r8d
009e   9e:      4d 0f be 80 00 00 00    movsbq 0x0(%r8),%r8
00a5   a5:      00 
00a2                    a2: R_X86_64_32S        .rodata+0x620
00a6   a6:      4c 01 c1                add    %r8,%rcx
00a9   a9:      3c e8                   cmp    $0xe8,%al
00ab   ab:      74 29                   je     d6 <poke_int3_handler+0xd6>
00ad   ad:      76 1c                   jbe    cb <poke_int3_handler+0xcb>
00af   af:      83 e0 fd                and    $0xfffffffd,%eax
00b2   b2:      3c e9                   cmp    $0xe9,%al
00b4   b4:      75 e2                   jne    98 <poke_int3_handler+0x98>
00b6   b6:      48 63 46 04             movslq 0x4(%rsi),%rax
00ba   ba:      48 01 c1                add    %rax,%rcx
00bd   bd:      b8 01 00 00 00          mov    $0x1,%eax
00c2   c2:      48 89 8f 80 00 00 00    mov    %rcx,0x80(%rdi)
00c9   c9:      eb 86                   jmp    51 <poke_int3_handler+0x51>
00cb   cb:      3c cc                   cmp    $0xcc,%al
00cd   cd:      75 c9                   jne    98 <poke_int3_handler+0x98>
00cf   cf:      31 c0                   xor    %eax,%eax
00d1   d1:      e9 7b ff ff ff          jmpq   51 <poke_int3_handler+0x51>
00d6   d6:      48 63 46 04             movslq 0x4(%rsi),%rax
00da   da:      49 83 c1 04             add    $0x4,%r9
00de   de:      48 01 c1                add    %rax,%rcx
00e1   e1:      48 8b 87 98 00 00 00    mov    0x98(%rdi),%rax
00e8   e8:      48 8d 70 f8             lea    -0x8(%rax),%rsi
00ec   ec:      48 89 b7 98 00 00 00    mov    %rsi,0x98(%rdi)
00f3   f3:      4c 89 48 f8             mov    %r9,-0x8(%rax)
00f7   f7:      b8 01 00 00 00          mov    $0x1,%eax
00fc   fc:      48 89 8f 80 00 00 00    mov    %rcx,0x80(%rdi)
0103  103:      e9 49 ff ff ff          jmpq   51 <poke_int3_handler+0x51>
0108  108:      48 83 e8 01             sub    $0x1,%rax
010c  10c:      4c 8d 5e 10             lea    0x10(%rsi),%r11
0110  110:      48 d1 e8                shr    %rax
0113  113:      48 85 c0                test   %rax,%rax
0116  116:      0f 85 40 ff ff ff       jne    5c <poke_int3_handler+0x5c>
011c  11c:      e9 30 ff ff ff          jmpq   51 <poke_int3_handler+0x51>
0121  121:      4c 89 d0                mov    %r10,%rax
0124  124:      eb ed                   jmp    113 <poke_int3_handler+0x113>
0000 0000000000000000 <poke_int3_handler>:
0000    0:      55                      push   %rbp
0001    1:      48 89 e5                mov    %rsp,%rbp
0004    4:      41 57                   push   %r15
0006    6:      41 56                   push   %r14
0008    8:      41 55                   push   %r13
000a    a:      41 54                   push   %r12
000c    c:      53                      push   %rbx
000d    d:      45 31 ff                xor    %r15d,%r15d
0010   10:      f6 87 88 00 00 00 03    testb  $0x3,0x88(%rdi)
0017   17:      0f 85 3a 01 00 00       jne    157 <poke_int3_handler+0x157>
001d   1d:      4c 8b 2d 00 00 00 00    mov    0x0(%rip),%r13        # 24 
<poke_int3_handler+0x24>
0020                    20: R_X86_64_PC32       .bss+0x4
0024   24:      4d 85 ed                test   %r13,%r13
0027   27:      0f 84 2a 01 00 00       je     157 <poke_int3_handler+0x157>
002d   2d:      45 8b 65 0c             mov    0xc(%r13),%r12d
0031   31:      45 85 e4                test   %r12d,%r12d
0034   34:      0f 84 1d 01 00 00       je     157 <poke_int3_handler+0x157>
003a   3a:      49 89 fe                mov    %rdi,%r14
003d   3d:      0f 1f 00                nopl   (%rax)
0040   40:      41 8d 4c 24 01          lea    0x1(%r12),%ecx
0045   45:      31 db                   xor    %ebx,%ebx
0047   47:      44 89 e0                mov    %r12d,%eax
004a   4a:      f0 41 0f b1 4d 0c       lock cmpxchg %ecx,0xc(%r13)
0050   50:      0f 94 c3                sete   %bl
0053   53:      41 89 c4                mov    %eax,%r12d
0056   56:      80 fb 01                cmp    $0x1,%bl
0059   59:      77 0e                   ja     69 <poke_int3_handler+0x69>
005b   5b:      84 db                   test   %bl,%bl
005d   5d:      75 2c                   jne    8b <poke_int3_handler+0x8b>
005f   5f:      45 85 e4                test   %r12d,%r12d
0062   62:      75 dc                   jne    40 <poke_int3_handler+0x40>
0064   64:      e9 ee 00 00 00          jmpq   157 <poke_int3_handler+0x157>
0069   69:      48 c7 c7 00 00 00 00    mov    $0x0,%rdi
006c                    6c: R_X86_64_32S        .data+0x160
0070   70:      48 89 de                mov    %rbx,%rsi
0073   73:      e8 00 00 00 00          callq  78 <poke_int3_handler+0x78>
0074                    74: R_X86_64_PLT32      
__ubsan_handle_load_invalid_value-0x4
0078   78:      48 c7 c7 00 00 00 00    mov    $0x0,%rdi
007b                    7b: R_X86_64_32S        .data+0x180
007f   7f:      48 89 de                mov    %rbx,%rsi
0082   82:      e8 00 00 00 00          callq  87 <poke_int3_handler+0x87>
0083                    83: R_X86_64_PLT32      
__ubsan_handle_load_invalid_value-0x4
0087   87:      84 db                   test   %bl,%bl
0089   89:      74 d4                   je     5f <poke_int3_handler+0x5f>
008b   8b:      49 8b 86 80 00 00 00    mov    0x80(%r14),%rax
0092   92:      48 83 c0 ff             add    $0xffffffffffffffff,%rax
0096   96:      41 83 7d 08 02          cmpl   $0x2,0x8(%r13)
009b   9b:      0f 8d c4 00 00 00       jge    165 <poke_int3_handler+0x165>
00a1   a1:      49 8b 4d 00             mov    0x0(%r13),%rcx
00a5   a5:      48 63 11                movslq (%rcx),%rdx
00a8   a8:      48 8d 92 00 00 00 00    lea    0x0(%rdx),%rdx
00ab                    ab: R_X86_64_32S        _stext
00af   af:      45 31 ff                xor    %r15d,%r15d
00b2   b2:      48 39 c2                cmp    %rax,%rdx
00b5   b5:      0f 85 97 00 00 00       jne    152 <poke_int3_handler+0x152>
00bb   bb:      8a 59 08                mov    0x8(%rcx),%bl
00be   be:      31 d2                   xor    %edx,%edx
00c0   c0:      80 fb e8                cmp    $0xe8,%bl
00c3   c3:      7f 0c                   jg     d1 <poke_int3_handler+0xd1>
00c5   c5:      80 fb cc                cmp    $0xcc,%bl
00c8   c8:      74 1f                   je     e9 <poke_int3_handler+0xe9>
00ca   ca:      80 fb e8                cmp    $0xe8,%bl
00cd   cd:      74 13                   je     e2 <poke_int3_handler+0xe2>
00cf   cf:      eb 1d                   jmp    ee <poke_int3_handler+0xee>
00d1   d1:      80 fb e9                cmp    $0xe9,%bl
00d4   d4:      74 0c                   je     e2 <poke_int3_handler+0xe2>
00d6   d6:      80 fb eb                cmp    $0xeb,%bl
00d9   d9:      75 13                   jne    ee <poke_int3_handler+0xee>
00db   db:      ba 02 00 00 00          mov    $0x2,%edx
00e0   e0:      eb 0c                   jmp    ee <poke_int3_handler+0xee>
00e2   e2:      ba 05 00 00 00          mov    $0x5,%edx
00e7   e7:      eb 05                   jmp    ee <poke_int3_handler+0xee>
00e9   e9:      ba 01 00 00 00          mov    $0x1,%edx
00ee   ee:      48 01 d0                add    %rdx,%rax
00f1   f1:      8a 51 08                mov    0x8(%rcx),%dl
00f4   f4:      80 fa e8                cmp    $0xe8,%dl
00f7   f7:      7f 3b                   jg     134 <poke_int3_handler+0x134>
00f9   f9:      45 31 ff                xor    %r15d,%r15d
00fc   fc:      80 fa cc                cmp    $0xcc,%dl
00ff   ff:      74 51                   je     152 <poke_int3_handler+0x152>
0101  101:      80 fa e8                cmp    $0xe8,%dl
0104  104:      0f 85 b1 00 00 00       jne    1bb <poke_int3_handler+0x1bb>
010a  10a:      48 63 49 04             movslq 0x4(%rcx),%rcx
010e  10e:      48 01 c1                add    %rax,%rcx
0111  111:      49 8b 86 80 00 00 00    mov    0x80(%r14),%rax
0118  118:      49 8b 96 98 00 00 00    mov    0x98(%r14),%rdx
011f  11f:      48 83 c0 04             add    $0x4,%rax
0123  123:      48 8d 72 f8             lea    -0x8(%rdx),%rsi
0127  127:      49 89 b6 98 00 00 00    mov    %rsi,0x98(%r14)
012e  12e:      48 89 42 f8             mov    %rax,-0x8(%rdx)
0132  132:      eb 11                   jmp    145 <poke_int3_handler+0x145>
0134  134:      80 fa e9                cmp    $0xe9,%dl
0137  137:      74 05                   je     13e <poke_int3_handler+0x13e>
0139  139:      80 fa eb                cmp    $0xeb,%dl
013c  13c:      75 7d                   jne    1bb <poke_int3_handler+0x1bb>
013e  13e:      48 63 49 04             movslq 0x4(%rcx),%rcx
0142  142:      48 01 c1                add    %rax,%rcx
0145  145:      49 89 8e 80 00 00 00    mov    %rcx,0x80(%r14)
014c  14c:      41 bf 01 00 00 00       mov    $0x1,%r15d
0152  152:      f0 41 ff 4d 0c          lock decl 0xc(%r13)
0157  157:      44 89 f8                mov    %r15d,%eax
015a  15a:      5b                      pop    %rbx
015b  15b:      41 5c                   pop    %r12
015d  15d:      41 5d                   pop    %r13
015f  15f:      41 5e                   pop    %r14
0161  161:      41 5f                   pop    %r15
0163  163:      5d                      pop    %rbp
0164  164:      c3                      retq   
0165  165:      49 63 55 08             movslq 0x8(%r13),%rdx
0169  169:      45 31 ff                xor    %r15d,%r15d
016c  16c:      48 85 d2                test   %rdx,%rdx
016f  16f:      74 e1                   je     152 <poke_int3_handler+0x152>
0171  171:      49 8b 4d 00             mov    0x0(%r13),%rcx
0175  175:      eb 05                   jmp    17c <poke_int3_handler+0x17c>
0177  177:      48 d1 ea                shr    %rdx
017a  17a:      74 d6                   je     152 <poke_int3_handler+0x152>
017c  17c:      48 89 d6                mov    %rdx,%rsi
017f  17f:      48 83 e6 fe             and    $0xfffffffffffffffe,%rsi
0183  183:      48 63 3c f1             movslq (%rcx,%rsi,8),%rdi
0187  187:      48 8d bf 00 00 00 00    lea    0x0(%rdi),%rdi
018a                    18a: R_X86_64_32S       _stext
018e  18e:      48 39 c7                cmp    %rax,%rdi
0191  191:      77 e4                   ja     177 <poke_int3_handler+0x177>
0193  193:      48 8d 0c f1             lea    (%rcx,%rsi,8),%rcx
0197  197:      48 63 31                movslq (%rcx),%rsi
019a  19a:      48 8d b6 00 00 00 00    lea    0x0(%rsi),%rsi
019d                    19d: R_X86_64_32S       _stext
01a1  1a1:      48 39 c6                cmp    %rax,%rsi
01a4  1a4:      73 0a                   jae    1b0 <poke_int3_handler+0x1b0>
01a6  1a6:      48 83 c1 10             add    $0x10,%rcx
01aa  1aa:      48 83 c2 ff             add    $0xffffffffffffffff,%rdx
01ae  1ae:      eb c7                   jmp    177 <poke_int3_handler+0x177>
01b0  1b0:      48 85 c9                test   %rcx,%rcx
01b3  1b3:      0f 85 02 ff ff ff       jne    bb <poke_int3_handler+0xbb>
01b9  1b9:      eb 97                   jmp    152 <poke_int3_handler+0x152>
01bb  1bb:      0f 0b                   ud2    
01bd  1bd:      48 c7 c7 00 00 00 00    mov    $0x0,%rdi
01c0                    1c0: R_X86_64_32S       .data+0xc0
01c4  1c4:      e8 00 00 00 00          callq  1c9 <int3_selftest>
01c5                    1c5: R_X86_64_PLT32     
__ubsan_handle_builtin_unreachable-0x4

Reply via email to