If a panic function is in user code, is the analyzer smart enough to figure out that function never returns by looking at the code (ie all branches lead to _exit() or another panic function)?
If not, I think this should be added. (Obviously this doesn't work for library panic functions...) -Alexei On Tue, Feb 17, 2009 at 12:52 PM, Ted Kremenek <[email protected]> wrote: > > On Feb 17, 2009, at 9:49 AM, Ben Laurie wrote: > >>> Hi Ben, >>> >>> The analyzer knows that all functions with the 'noreturn' attribute >>> don't >>> >>> return. What does the assert macro expand to on FreeBSD? >>> >>> The problem is that __assert does not have noreturn set on FreeBSD. >>> I'm in the process of getting that fixed - but as an apprentice >>> FreeBSD committer that's probably harder for me than anyone else, so >>> it may take a while :-) >>> >>> In the meantime, I think the right answer is for me to patch >>> /usr/include/assert.h. >>> >>> __assert isn't the only "panic" function that isn't marked with >>> noreturn. >>> Since it occurs so frequently, I can just add it to the list of >>> hard-coded >>> functions that the analyzer knows about. >> >> I wondered if such a thing existed. Where is it? > > It's this hackish blob of code in GRExprEngine.cpp. Search for > "panic". Eventually this code will get reworked to be less hackish, > but we will always have to maintain a list of some of these functions > somewhere. > > I just added "_assert" to that list: > > http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090216/012556.html > > It joins the ranks of functions such as _assert_rtn, _assert_fail, > dtrace_assfail and friends. > _______________________________________________ > cfe-dev mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
