From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 038243858D28 for ; Fri, 8 Apr 2022 18:19:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 038243858D28 Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-373-Ql79V_vhPg68qBHNePz9xg-1; Fri, 08 Apr 2022 14:19:47 -0400 X-MC-Unique: Ql79V_vhPg68qBHNePz9xg-1 Received: by mail-qv1-f72.google.com with SMTP id fw9-20020a056214238900b0043522aa5b81so9965273qvb.21 for ; Fri, 08 Apr 2022 11:19:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=gAYcb5dvdvOCtnJvGCXJVAWr8sz0qqFNQgqx8UvhFM8=; b=IiQ2PN3Rq/Ui4Hc8Pkm8UXND4/0N4zVBxmB4F3A6qF+XTlrNiYctmAKEcLeCN5t0WP MH93r30FzfI0c8PUtBGRkAXg8u2EA0BzEjglONt1MHT+Whgmvm/5MbcbQGu8N/FB4eof jy7PjBTw8qsSc6C36nl9J2d1Awh3NMgQs7GpONv/d7qmzlQnLyMJV+Hah4VeXa3KyNX8 sRIXppbShv6hy2IZAjUe5ELHz/5Zj9nkGy6NopIsrAwwB8HqvStfhq9SoJnGPqoEVpDm 2DTBIK5GTOf8F3ZyYKQTjKmAmqY5ydVVibXtpnndll6gtke9btXJkV7LrHXoFumqNkez IaGQ== X-Gm-Message-State: AOAM533zrSIP0Y4wsaZMicyXsMkx2T638AUaVabMBaO0+2qiULQHt//w Eb+MjCwTmh58uvTLFt1Qey8+6JzJU4ijQvkOvFUA5kY0Zj5IX6BNjuTdal0om5cZLaU788qZxmn bYOUb9oo= X-Received: by 2002:a05:620a:2848:b0:67d:35de:bb5b with SMTP id h8-20020a05620a284800b0067d35debb5bmr13732304qkp.499.1649441986607; Fri, 08 Apr 2022 11:19:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxS+0tv86FSXo1MKKw3LFBE+e/gS5IbbrJLVWJueYh3WXN+4O2dYePJMzdjqjVaEuCJCWRWrg== X-Received: by 2002:a05:620a:2848:b0:67d:35de:bb5b with SMTP id h8-20020a05620a284800b0067d35debb5bmr13732288qkp.499.1649441986161; Fri, 08 Apr 2022 11:19:46 -0700 (PDT) Received: from t14s.localdomain (c-73-69-212-193.hsd1.ma.comcast.net. [73.69.212.193]) by smtp.gmail.com with ESMTPSA id s2-20020a05620a030200b00699fd74a5b8sm3324227qkm.17.2022.04.08.11.19.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Apr 2022 11:19:45 -0700 (PDT) Message-ID: Subject: Re: GSoC: Working on the static analyzer From: David Malcolm To: Mir Immad Cc: gcc@gcc.gnu.org Date: Fri, 08 Apr 2022 14:19:44 -0400 In-Reply-To: References: <4eec5fa69b9daedcec5361c2cc18df7f1ef397af.camel@redhat.com> <2cc1022a7d7bc2b00ceac2175ada29554d961bff.camel@redhat.com> User-Agent: Evolution 3.38.4 (3.38.4-1.fc33) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.0 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2022 18:19:52 -0000 On Mon, 2022-04-04 at 21:46 +0530, Mir Immad wrote: > Hi David, > > Sorry for such late reply. I've been busy with classes and exams. > > As the contributor applications are opening, I would like to put > forward a > proposal for a medium project for extending the static analyzer to work > with POSIX file descriptor APIs. As evident in this thread, I've been > interested in this project for quite some time, and have in fact > written > some proof-of-concept code. I'm pretty much familiar with the parts of > the > code base  which are relevant for this project and am confident in > completing it in given time frame. > > Do you have any inputs on how to start writing the proposal? Should I > start > by reading the past year proposals? You should read: https://gcc.gnu.org/wiki/SummerOfCode#Before_you_apply https://gcc.gnu.org/wiki/SummerOfCode#Application Beyond the stuff listed there, what I'm hoping to see from a successful candidate is: (a) that they already know enough C/C++ to be able to work with the project (b) some level of understanding of the subject area Patches to the project itself are probably the most direct way to demonstrate both of these, and IIRC you've already sent some proof-of- concept code, so your proposal should contain links to those. Links to code you've written is also helpful (class projects, etc), or to if you've done any papers/theses, etc Hope this is helpful Dave > > Regards, > > Immad MIr > > > On Mon, Feb 14, 2022 at 4:35 AM David Malcolm > wrote: > > > On Sun, 2022-02-13 at 17:57 -0500, David Malcolm wrote: > > > On Sun, 2022-02-13 at 21:16 +0530, Mir Immad wrote: > > > > Hi, > > > > > > > > I wanted some clarification on bifurcating the exploded graph at > > > > call > > > > to > > > > open(). > > > > Should the analyzer warn for code like this "when open fails" > > > > (like > > > > strchr > > > > does when  'strchr' returns NULL) > > > > > > > > int fd = open("NOFILE", O_RDONLY); > > > > write(fd, "a", 1); > > > > > > > > because of the bad file descriptor. > > > > unless it is written like this: > > > > if (!errno) > > > >   write(fd, "a", 1); > > > > > > "open" returns a non-negative integer on success, and returns -1 > > > and > > > sets errno on an error.  As I understand it, errno is never cleared > > > > "modified" would be a better word than "cleared" here, sorry > > > > Dave > > > > > unless an error occurs, so errno could already be set due to a > > > prior > > > failure.  Hence I believe the correct way to write such code is to > > > check fd for being -1, rather than checking errno. > > > > > > It's probably best to bifurcate the state at the open call, into > > > "success" and "failure" outcomes, so that we can track that the > > > caller > > > "owns" the filedescriptor on success, and thus we can complain > > > about > > > fd > > > leaks on paths that discard the value without closing it. > > > > > > We can then warn if we see -1 passed as the fd value into "write", > > > since that implies that the open call failed.  If we bifurcate the > > > state at the open call, then for: > > > > > > int fd = open("NOFILE", O_RDONLY); > > > write(fd, "a", 1); > > > > > > we'd have the execution paths: > > > > > > (a) "when 'open' succeeds" (setting fd to a conjured_svalue >=0, > > > and > > > setting sm-state on that value) > > > > > > (b) "when 'open' fails" (setting fd to -1, and errno to a > > > conjured_svalue known to be nonzero) > > > > > > and at the call to "write" on path (b) we see the -1 passed to it, > > > and > > > can complain accordingly. > > > > > > I'm not sure if we also want to track that the file was O_RDONLY > > > (which > > > suggests that the "write" should fail), but that would be a nice > > > bonus. > > > > > > Hope this is helpful > > > Dave > > > > > > > > > > > > > > > > > Thank you. > > > > > > > > On Tue, Feb 1, 2022 at 8:28 PM Mir Immad > > > > wrote: > > > > > > > > > I worked around the leak detection and also handled the case > > > > > where > > > > > the fd > > > > > is not saved. I wonder why sm-file hasn't implemented it yet. > > > > > I'm > > > > > attaching > > > > > a text file with analyzer warnings. I'm still on gcc-11.2.0, > > > > > will > > > > > move to > > > > > v12 next thing. > > > > > > > > > > > I wonder if it's worth checking for attempts to write to a fd > > > > > > that > > > > > > was > > > > > > opened with O_RDONLY, or the converse? > > > > > > > > > > Yes, it does not make sense to warn for write on read-only > > > > > closed > > > > > fd > > > > > or > > > > > converse. But, it does make sense to warn for write operation > > > > > on > > > > > valid > > > > > read-only fd. For this, we might have to analyze calls to the > > > > > open() > > > > > carefully -- get the literal value of the second argument to > > > > > the > > > > > call > > > > > and > > > > > do bit-mask decomposition on it to find if O_RDONLY or O_WRONLY > > > > > are > > > > > in it. > > > > > We might have to maintain separate vectors for these and check > > > > > for > > > > > them in > > > > > calls to write and read -- warn if write is being called on > > > > > read- > > > > > only > > > > > fd > > > > > and converse. How do we equate them? Does gimple store unique > > > > > ids > > > > > for > > > > > each > > > > > tree? or something like SAME_TREE? Just thinking out loud. > > > > > > > > > > > how much state does it make sense to track for a fd? > > > > > Sorry, I didnt get it. Do you mean how may states I'm using? > > > > > unchecked, > > > > > closed, null and leak_by_not_saved (for the call-tree that does > > > > > not > > > > > have a > > > > > lhs). > > > > > > > > > > > Also, at some point, we're going to have to handle "errno" - > > > > > > but > > > > > > given > > > > > > that might be somewhat fiddly it's OK to defer that until > > > > > > you're > > > > > > more > > > > > > familiar with the code > > > > > > > > > > I'm looking forward to figure it out. > > > > > > > > > > Thank you. > > > > > > > > > > > > > > > On Sat, Jan 29, 2022 at 11:09 PM David Malcolm < > > > > > dmalcolm@redhat.com> > > > > > wrote: > > > > > > > > > > > On Sat, 2022-01-29 at 20:22 +0530, Mir Immad wrote: > > > > > > > Thank you for the detailed information. > > > > > > > > > > > > > > I've been looking into the integer posix  file descriptor > > > > > > > APIs > > > > > > > and I > > > > > > > decided to write proof-of-concept  checker for them. (not > > > > > > > caring > > > > > > > about > > > > > > > errno). The checker tracks the fd returned by open(), warns > > > > > > > if > > > > > > > dup() > > > > > > > is > > > > > > > called with closed fd otherwise tracks the fd returned by > > > > > > > dup(), > > > > > > > it > > > > > > > also > > > > > > > warns if read() and write() functions were called on closed > > > > > > > fd. > > > > > > > I'm > > > > > > > attaching a text file that lists some c sources and > > > > > > > warnings > > > > > > > by > > > > > > > the > > > > > > > static > > > > > > > analyzer. I've used the diagnostic meta-data from sm-file. > > > > > > > Is > > > > > > > this > > > > > > > something that could also be added to the analyzer? > > > > > > > > > > > > This looks great, and very promising as both new > > > > > > functionality > > > > > > for > > > > > > GCC > > > > > > 13, and as a GSoC 2022 project. > > > > > > > > > > > > BTW, it looks like you're working with GCC 11, but the > > > > > > analyzer > > > > > > has > > > > > > changed quite a bit on trunk for GCC 12, so it's worth trying > > > > > > to > > > > > > track > > > > > > trunk. > > > > > > > > > > > > I wonder if it's worth checking for attempts to write to a fd > > > > > > that > > > > > > was > > > > > > opened with O_RDONLY, or the converse?  (I'm not sure, just > > > > > > thinking > > > > > > aloud - how much state does it make sense to track for a > > > > > > fd?). > > > > > > > > > > > > Also, at some point, we're going to have to handle "errno" - > > > > > > but > > > > > > given > > > > > > that might be somewhat fiddly it's OK to defer that until > > > > > > you're > > > > > > more > > > > > > familiar with the code. > > > > > > > > > > > > > > > > > > > > About the fd leak, that's the next thing I'll try to get > > > > > > > working. > > > > > > > Since > > > > > > > you've mentioned that it could be a GSoC project, this is > > > > > > > what > > > > > > > I'm > > > > > > > going to > > > > > > > focus on. > > > > > > > > > > > > Excellent. > > > > > > > > > > > > Let me know (via this mailing list) if you have any > > > > > > questions. > > > > > > > > > > > > Thanks > > > > > > Dave > > > > > > > > > > > > > > > > > > > > Regards. > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Jan 26, 2022 at 7:56 PM David Malcolm < > > > > > > > dmalcolm@redhat.com> > > > > > > > wrote: > > > > > > > > > > > > > > > On Mon, 2022-01-24 at 01:41 +0530, Mir Immad wrote: > > > > > > > > > Hi, sir. > > > > > > > > > > > > > > > > > > I've been trying to understand the static analyzer's > > > > > > > > > code. I > > > > > > > > > spent most > > > > > > > > > of > > > > > > > > > my time learning the state machine's API. I learned how > > > > > > > > > state > > > > > > > > > machine's > > > > > > > > > on_stmt is supposed to "recognize" specific functions > > > > > > > > > and > > > > > > > > > how > > > > > > > > > on_transition > > > > > > > > > takes a specific tree from one state to another, and > > > > > > > > > how > > > > > > > > > the > > > > > > > > > captured > > > > > > > > > states are used by pending_diagnostics to report the > > > > > > > > > errors. > > > > > > > > > Furthermore, I > > > > > > > > > was able to create a dummy checker that mimicked the > > > > > > > > > behaviour of > > > > > > > > > sm- > > > > > > > > > file's > > > > > > > > > double_fclose and compile GCC with these changes. Is > > > > > > > > > this > > > > > > > > > the > > > > > > > > > right way > > > > > > > > > of > > > > > > > > > learning? > > > > > > > > > > > > > > > > This sounds great. > > > > > > > > > > > > > > > > > > > > > > > > > > As you've mentioned on the projects page that you would > > > > > > > > > like > > > > > > > > > to > > > > > > > > > add > > > > > > > > > more > > > > > > > > > support for some POSIX APIs. Can you please write (or > > > > > > > > > refer > > > > > > > > > me to > > > > > > > > > a) a > > > > > > > > > simple C program that uses such an API (and also what > > > > > > > > > the > > > > > > > > > analyzer > > > > > > > > > should > > > > > > > > > have done) so that I can attempt to add such a checker > > > > > > > > > to > > > > > > > > > the > > > > > > > > > analyzer. > > > > > > > > > > > > > > > > A couple of project ideas: > > > > > > > > > > > > > > > > (i) treat data coming from a network connection as > > > > > > > > tainted, > > > > > > > > by > > > > > > > > somehow > > > > > > > > teaching the analyzer about networking APIs.  Ideally: > > > > > > > > look > > > > > > > > at > > > > > > > > some > > > > > > > > subset of historical CVEs involving network-facing > > > > > > > > attacks > > > > > > > > on > > > > > > > > user- > > > > > > > > space daemons, and find a way to detect them in the > > > > > > > > analyzer > > > > > > > > (need > > > > > > > > to > > > > > > > > find a way to mark the incoming data as tainted, so that > > > > > > > > the > > > > > > > > analyer > > > > > > > > "know" about the trust boundary - that the incoming data > > > > > > > > needs > > > > > > > > to > > > > > > > > be > > > > > > > > sanitized and treated with extra caution; see > > > > > > > > > > https://gcc.gnu.org/pipermail/gcc-patches/2021-November/584372.html > > > > > > > > for my attempts to do this for the Linux kernel). > > > > > > > > > > > > > > > > Obviously this is potentially a huge project, so maybe > > > > > > > > just > > > > > > > > picking > > > > > > > > a > > > > > > > > tiny subset and getting that working as a proof-of- > > > > > > > > concept > > > > > > > > would be > > > > > > > > a > > > > > > > > good GSoC project.  Maybe find an old CVE that someone > > > > > > > > has > > > > > > > > written > > > > > > > > a > > > > > > > > good write-up for, and think about "how could GCC/- > > > > > > > > fanalyzer > > > > > > > > have > > > > > > > > spotted it?" > > > > > > > > > > > > > > > > (ii) add leak-detection for POSIX file descriptors: i.e. > > > > > > > > the > > > > > > > > integer > > > > > > > > values returned by "open", "dup", etc.  It would be good > > > > > > > > to > > > > > > > > have a > > > > > > > > check that the user's code doesn't leak these values e.g. > > > > > > > > on > > > > > > > > error- > > > > > > > > handling paths, by failing to close a file-descriptor > > > > > > > > (and > > > > > > > > not > > > > > > > > storing > > > > > > > > it anywhere).  I think that much of this could be done by > > > > > > > > analogy > > > > > > > > with > > > > > > > > the sm-file.cc code. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Also, I didn't realize the complexity of adding SARIF > > > > > > > > > when I > > > > > > > > > mentioned > > > > > > > > > it. > > > > > > > > > I'd rather work on adding more checkers. > > > > > > > > > > > > > > > > Fair enough. > > > > > > > > > > > > > > > > Hope this above is constructive. > > > > > > > > > > > > > > > > Dave > > > > > > > > > > > > > > > > > > > > > > > > > > Regards. > > > > > > > > > > > > > > > > > > Mir Immad > > > > > > > > > > > > > > > > > > On Sun, Jan 23, 2022, 11:04 PM Mir Immad < > > > > > > > > > mirimnan017@gmail.com> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Hi Sir, > > > > > > > > > > > > > > > > > > > > I've been trying to understand the static analyzer's > > > > > > > > > > code. > > > > > > > > > > I > > > > > > > > > > spent > > > > > > > > > > most of > > > > > > > > > > my time learning the state machine's API. I learned > > > > > > > > > > how > > > > > > > > > > state > > > > > > > > > > machine's > > > > > > > > > > on_stmt is supposed to "recognize" specific functions > > > > > > > > > > and > > > > > > > > > > takes > > > > > > > > > > a > > > > > > > > > > specific > > > > > > > > > > tree from one state to another, and how the captured > > > > > > > > > > states > > > > > > > > > > are > > > > > > > > > > used > > > > > > > > > > by > > > > > > > > > > pending_diagnostics to report the errors. > > > > > > > > > > Furthermore, > > > > > > > > > > I > > > > > > > > > > was > > > > > > > > > > able to > > > > > > > > > > create > > > > > > > > > > a dummy checker that mimicked the behaviour of sm- > > > > > > > > > > file's > > > > > > > > > > double_fclose and > > > > > > > > > > compile GCC with these changes. Is this the right way > > > > > > > > > > of > > > > > > > > > > learning? > > > > > > > > > > > > > > > > > > > > As you've mentioned on the projects page that you > > > > > > > > > > would > > > > > > > > > > like to > > > > > > > > > > add > > > > > > > > > > more > > > > > > > > > > support for some POSIX APIs. Can you please write (or > > > > > > > > > > refer > > > > > > > > > > me > > > > > > > > > > to a) > > > > > > > > > > a > > > > > > > > > > simple C program that uses such an API (and also what > > > > > > > > > > the > > > > > > > > > > analyzer > > > > > > > > > > should > > > > > > > > > > have done) so that I can attempt to add such a > > > > > > > > > > checker > > > > > > > > > > to > > > > > > > > > > the > > > > > > > > > > analyzer. > > > > > > > > > > > > > > > > > > > > Also, I didn't realize the complexity of adding SARIF > > > > > > > > > > when > > > > > > > > > > I > > > > > > > > > > mentioned it. > > > > > > > > > > I'd rather work on adding more checkers. > > > > > > > > > > > > > > > > > > > > Regards. > > > > > > > > > > Mir Immad > > > > > > > > > > > > > > > > > > > > On Mon, Jan 17, 2022 at 5:41 AM David Malcolm < > > > > > > > > > > dmalcolm@redhat.com> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > On Fri, 2022-01-14 at 22:15 +0530, Mir Immad wrote: > > > > > > > > > > > > HI David, > > > > > > > > > > > > I've been tinkering with the static analyzer for > > > > > > > > > > > > the > > > > > > > > > > > > last > > > > > > > > > > > > few > > > > > > > > > > > > days. I > > > > > > > > > > > > find > > > > > > > > > > > > the project of adding SARIF output to the > > > > > > > > > > > > analyzer > > > > > > > > > > > > intresting. > > > > > > > > > > > > I'm > > > > > > > > > > > > writing > > > > > > > > > > > > this to let you know that I'm trying to learn the > > > > > > > > > > > > codebase. > > > > > > > > > > > > Thank you. > > > > > > > > > > > > > > > > > > > > > > Excellent. > > > > > > > > > > > > > > > > > > > > > > BTW, I think adding SARIF output would involve > > > > > > > > > > > working > > > > > > > > > > > more > > > > > > > > > > > with > > > > > > > > > > > GCC's > > > > > > > > > > > diagnostics subsystem than with the static > > > > > > > > > > > analyzer, > > > > > > > > > > > since > > > > > > > > > > > (in > > > > > > > > > > > theory) > > > > > > > > > > > all of the static analyzer's output is passing > > > > > > > > > > > through > > > > > > > > > > > the > > > > > > > > > > > diagnostics > > > > > > > > > > > subsystem - though the static analyzer is probably > > > > > > > > > > > the > > > > > > > > > > > only > > > > > > > > > > > GCC > > > > > > > > > > > component generating diagnostic paths. > > > > > > > > > > > > > > > > > > > > > > I'm happy to mentor such a project as I maintain > > > > > > > > > > > both > > > > > > > > > > > subsystems > > > > > > > > > > > and > > > > > > > > > > > SARIF output would benefit both - but it would be > > > > > > > > > > > rather > > > > > > > > > > > tangential > > > > > > > > > > > to > > > > > > > > > > > the analyzer - so if you had specifically wanted to > > > > > > > > > > > be > > > > > > > > > > > working on > > > > > > > > > > > the > > > > > > > > > > > guts of the analyzer itself, you may want to pick a > > > > > > > > > > > different > > > > > > > > > > > subproject. > > > > > > > > > > > > > > > > > > > > > > The SARIF standard is rather long and complicated, > > > > > > > > > > > and we > > > > > > > > > > > would > > > > > > > > > > > want to > > > > > > > > > > > be compatible with clang's implementation. > > > > > > > > > > > > > > > > > > > > > > It would be very cool if gcc could also accept > > > > > > > > > > > SARIF > > > > > > > > > > > files as > > > > > > > > > > > an > > > > > > > > > > > *input* format, and emit them as diagnostics; that > > > > > > > > > > > might > > > > > > > > > > > help > > > > > > > > > > > with > > > > > > > > > > > debugging SARIF output.   (I have a old patch for > > > > > > > > > > > adding > > > > > > > > > > > JSON > > > > > > > > > > > parsing > > > > > > > > > > > support to GCC that could be used as a starting > > > > > > > > > > > point > > > > > > > > > > > for > > > > > > > > > > > this). > > > > > > > > > > > > > > > > > > > > > > Hope the above makes sense > > > > > > > > > > > Dave > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Jan 11, 2022, 7:09 PM David Malcolm < > > > > > > > > > > > > dmalcolm@redhat.com> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, 2022-01-11 at 11:03 +0530, Mir Immad > > > > > > > > > > > > > via > > > > > > > > > > > > > Gcc > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > Hi everyone, > > > > > > > > > > > > > > > > > > > > > > > > > > Hi, and welcome. > > > > > > > > > > > > > > > > > > > > > > > > > > > I intend to work on the static analyzer. Are > > > > > > > > > > > > > > these > > > > > > > > > > > > > > documents > > > > > > > > > > > > > > enough to > > > > > > > > > > > > > > get > > > > > > > > > > > > > > started: > > > > > > > > > > > > > > https://gcc.gnu.org/onlinedocs/gccint and > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://gcc.gnu.org/onlinedocs/gccint/Analyzer-Internals.html#Analyzer-Internals > > > > > > > > > > > > > > > > > > > > > > > > > > Yes. > > > > > > > > > > > > > > > > > > > > > > > > > > There are also some high-level notes here: > > > > > > > > > > > > > > > > > > > > > > > > > > https://gcc.gnu.org/wiki/DavidMalcolm/StaticAnalyzer > > > > > > > > > > > > > > > > > > > > > > > > > > Also, given that the analyzer is part of GCC, > > > > > > > > > > > > > the > > > > > > > > > > > > > more > > > > > > > > > > > > > general > > > > > > > > > > > > > introductions to hacking on GCC will be useful. > > > > > > > > > > > > > > > > > > > > > > > > > > I recommend creating a trivial C source file > > > > > > > > > > > > > with > > > > > > > > > > > > > a > > > > > > > > > > > > > bug > > > > > > > > > > > > > in it > > > > > > > > > > > > > (e.g. > > > > > > > > > > > > > a > > > > > > > > > > > > > 3-line function with a use-after-free), and > > > > > > > > > > > > > stepping > > > > > > > > > > > > > through > > > > > > > > > > > > > the > > > > > > > > > > > > > analyzer to get a sense of how it works. > > > > > > > > > > > > > > > > > > > > > > > > > > Hope this is helpful; don't hesitate to ask > > > > > > > > > > > > > questions. > > > > > > > > > > > > > Dave > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >