<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Apple Color Emoji";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Deep,<o:p></o:p></p>
<p class="MsoNormal">Thanks for the linking all the resources! Yes, I meant Clang Static Analyzer by clang-sa. I’ll give it a try!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Ali<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Deep Majumder <deep.majumder2019@gmail.com><br>
<b>Date: </b>Tuesday, May 4, 2021 at 10:49 AM<br>
<b>To: </b>Nathan Sidwell <nathan@acm.org><br>
<b>Cc: </b>Ali Shuja Siddiqui (alissidd) <alissidd@cisco.com>, cfe-dev <cfe-dev@lists.llvm.org><br>
<b>Subject: </b>Re: [cfe-dev] clang and clang-sa do not detect uninitialized variable<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">Hi Ali,<o:p></o:p></p>
<div>
<p class="MsoNormal">By clang-sa if you mean the Clang Static Analyser, then you need to add a checker for that. You may want to look up the "Static Analyser Checker in 24 hrs talk"  (1) and also Artem Dergachev's LLVM conf talk (2). Also the CSA book will
 also probably help (3). <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If you do make the checker, then we would love to have it as a patch
<span style="font-family:"Apple Color Emoji"">😀</span>.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Warm regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Deep<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">1) <a href="https://m.youtube.com/watch?v=kdxlsP5QVPw&t=1956s" target="_blank">
https://m.youtube.com/watch?v=kdxlsP5QVPw&t=1956s</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">2) <span style="font-family:"Arial",sans-serif"><a href="https://m.youtube.com/watch?v=g0Mqx1niUi0&t=1545s" target="_blank">https://m.youtube.com/watch?v=g0Mqx1niUi0&t=1545s</a></span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">3) <a href="https://www.youtube.com/redirect?event=comments&redir_token=QUFFLUhqbFU4TThJZk9jRktXYUJkWHRlTFUtclUzUE1Yd3xBQ3Jtc0traDFjNnBuTlhaQ1lpaV9TV3pIRjFVUzN1MkRtRjVKY3RYNkdZWHREcU10emFkNEJHcThVWlVIZWNxT2NEcVh3RU1CVFo4Uy1mbWFIZ1NUazZnN1lzSkFjSlI0OG1SWWNTT3FJMEpEQnRyZnBoOXNabw&q=https%3A%2F%2Fgithub.com%2FhaoNoQ%2Fclang-analyzer-guide%2Freleases%2Fdownload%2Fv0.1%2Fclang-analyzer-guide-v0.1.pdf" target="_blank">
https://www.youtube.com/redirect?event=comments&redir_token=QUFFLUhqbFU4TThJZk9jRktXYUJkWHRlTFUtclUzUE1Yd3xBQ3Jtc0traDFjNnBuTlhaQ1lpaV9TV3pIRjFVUzN1MkRtRjVKY3RYNkdZWHREcU10emFkNEJHcThVWlVIZWNxT2NEcVh3RU1CVFo4Uy1mbWFIZ1NUazZnN1lzSkFjSlI0OG1SWWNTT3FJMEpEQnRyZnBoOXNabw&q=https%3A%2F%2Fgithub.com%2FhaoNoQ%2Fclang-analyzer-guide%2Freleases%2Fdownload%2Fv0.1%2Fclang-analyzer-guide-v0.1.pdf</a><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, 4 May, 2021, 8:05 pm Nathan Sidwell via cfe-dev, <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">On 5/4/21 10:30 AM, Ali Shuja Siddiqui (alissidd) wrote:<br>
> Hi Nathan,<br>
> <br>
> Thanks for the reply. Can you please elaborate on how to let clang-sa to <br>
> learn about printf? I tried using CTU analysis [1], but I’m unsure how <br>
> to add mappings for libc functions.<br>
<br>
Sorry, I don't know.  I don't know if clang/llvm have support for <br>
knowing about various builtin functions the standard library provides. <br>
It must have some (like say abs and sqrt).  If it knew about printf, it <br>
could provide diagnostics when the variadic args do not match the format <br>
string, for instance.<br>
<br>
nathan<br>
<br>
> Thanks,<br>
> <br>
> Ali<br>
> <br>
> [1] <a href="https://clang.llvm.org/docs/analyzer/user-docs/CrossTranslationUnit.html" target="_blank">
https://clang.llvm.org/docs/analyzer/user-docs/CrossTranslationUnit.html</a><br>
> <br>
> *From: *Nathan Sidwell <<a href="mailto:nathanmsidwell@gmail.com" target="_blank">nathanmsidwell@gmail.com</a>> on behalf of Nathan
<br>
> Sidwell <<a href="mailto:nathan@acm.org" target="_blank">nathan@acm.org</a>><br>
> *Date: *Friday, April 30, 2021 at 9:00 AM<br>
> *To: *Ali Shuja Siddiqui (alissidd) <<a href="mailto:alissidd@cisco.com" target="_blank">alissidd@cisco.com</a>>,
<br>
> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a> <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>><br>
> *Subject: *Re: [cfe-dev] clang and clang-sa do not detect uninitialized <br>
> variable<br>
> <br>
> On 4/29/21 4:41 PM, Ali Shuja Siddiqui (alissidd) via cfe-dev wrote:<br>
>  > Hello,<br>
>  ><br>
>  > With the following code<br>
>  ><br>
>  > //-------------------------<br>
>  ><br>
>  > #include <stdio.h><br>
>  ><br>
>  > extern int t;<br>
>  ><br>
>  > void use_b (int *b){<br>
>  ><br>
>  >      printf("%p\n",b);<br>
>  ><br>
>  > }<br>
>  ><br>
>  > void func(){<br>
>  ><br>
>  >      int b;<br>
>  ><br>
>  >      use_b(&b);<br>
>  ><br>
>  >      if (b)<br>
>  ><br>
>  >          b+=33;<br>
>  ><br>
>  > }<br>
>  ><br>
>  > //---------------------------<br>
>  ><br>
>  > Running clang -Wuninitialized or running clang –analyze, I don’t see any<br>
>  > warning for uninitialized variables. However, if I change the code to:<br>
>  ><br>
>  > //----------------------<br>
>  ><br>
>  > #include <stdio.h><br>
>  ><br>
>  > extern int t;<br>
>  ><br>
>  > void use_b (int *b){<br>
>  ><br>
>  >      if (t==5)<br>
>  ><br>
>  >          return;<br>
>  ><br>
>  >      printf("%p\n",b);<br>
>  ><br>
>  > }<br>
>  ><br>
>  > void func(){<br>
>  ><br>
>  >      int b;<br>
>  ><br>
>  >      use_b(&b);<br>
>  ><br>
>  >      if (b)<br>
>  ><br>
>  >          b+=33;<br>
>  ><br>
>  > }<br>
>  ><br>
>  > //--------------------<br>
>  ><br>
>  > I do see this warning with the static analyzer:<br>
>  ><br>
>  > sa_try.c:13:9: warning: Branch condition evaluates to a garbage value<br>
>  > [core.uninitialized.Branch]<br>
>  ><br>
>  >      if (b)<br>
>  ><br>
>  >          ^<br>
>  ><br>
>  > 1 warning generated.<br>
>  ><br>
>  > My question is why am I not getting any warning for the first case? Is<br>
>  > it being considered that printf is updating the value of b in some way?<br>
> <br>
> Presuming it has no knowledge of printf's semantics, then yes.  that<br>
> function could write through the pointer (and indeed would, if 'b' was<br>
> an output parameter).<br>
> <br>
> It could learn that printf doesn't do that (except for %n).<br>
> <br>
> nathan<br>
> <br>
> <br>
> nathan<br>
> -- <br>
> Nathan Sidwell<br>
> <br>
<br>
<br>
-- <br>
Nathan Sidwell<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</body>
</html>