How to check custom "malloc"?

Hi all,

I’m doing embedded programming and want to use clang to do some static analyze with the code. One problem I’m facing is we use custom memory allocater in the project, namely “rt_malloc” etc. Is there any way to make clang check such calls just like normal malloc without writing my own plugin?

I’ve checked cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp and I know I could substitute “malloc” with “rt_malloc” and compile that file as so libs. But I think it’s an overkill. Is there anyway to tell clang that “rt_malloc” is just an alias of “malloc”?

Hello,

You can use the "ownership" attributes to annotate your functions. I can't find documentation for theses attributes, but there is a discussion about it at:

http://stackoverflow.com/questions/16285498/is-there-an-equivalent-to-attribute-ns-returns-retained-for-a-mallocd-po

And you can also have a look at the file testing theses attributes at http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/malloc-annotations.c?view=markup

As stats in the StackOverflow discussion, you may have to enable this check explicitly by passing "-Xclang -analyzer-checker=alpha.unix.MallocWithAnnotations" to clang when invoking the static analyzer.

Hello,

You can use the "ownership" attributes to annotate your functions. I can't
find documentation for theses attributes, but there is a discussion about
it at:

http://stackoverflow.com/questions/16285498/is-there-an-equivalent-to-attribute-ns-returns-retained-for-a-mallocd-po

And you can also have a look at the file testing theses attributes at
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/malloc-annotations.c?view=markup

As stats in the StackOverflow discussion, you may have to enable this
check explicitly by passing "-Xclang
-analyzer-checker=alpha.unix.MallocWithAnnotations" to clang when invoking
the static analyzer.

Thank you very much! It works like a charm.