<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi <div><br></div><div>I try the shadow call stack in llvm.</div><div><br></div><div>clang -fsanitize=shadow-call-stack  ./test.c</div><div><br></div><div>test.c</div><div><div>#include<stdio.h></div><div><br></div><div>void A(){</div><div>        printf("A\n");</div><div>}</div><div><br></div><div>int main(){</div><div>        A();</div><div>        return 0;</div><div>}</div></div><div><br></div><div>And then produe weird code</div><div><br></div><div><div>0000000000400570 <main>:</div><div>  400570:       4c 8b 14 24             mov    r10,QWORD PTR [rsp]</div><div>  400574:       4d 31 db                xor    r11,r11</div><div>  400577:       65 49 83 03 08          add    QWORD PTR gs:[r11],0x8</div><div>  40057c:       65 4d 8b 1b             mov    r11,QWORD PTR gs:[r11]</div><div>  400580:       65 4d 89 13             mov    QWORD PTR gs:[r11],r10</div></div><div><br></div><div>at 0x400577 the program crashes</div><div><br></div><div>because  r11 is 0 after  0x400574 .</div><div><br></div><div>I wonder that shadow call stack in llvm 7 is ok now? </div><div><br></div><div>Thank you.</div><div><br></div><div><br></div><div><br></div><div><br></div></div></div></div></div>