Skip to content

Limitations

Nuthan Munaiah edited this page Oct 6, 2020 · 2 revisions

Introduction

The known limitations in the implementation of the various Samaritan services are documented here.

parser

The replacement of clang with srcml as the source code parser in the parser service introduced the limitations enumerated below.

No Macro Expansion

In the code snippet below, the macro SAY(message) is used to add declarations of say_hello() and say_hi() at preprocessor time. While clang expands macros when parsing the file, srcml does not. As a result, parsing the snippet show below using clang identifies three functions (say_hello@6:6, say_hi@7:7, and main@10:14) but srcml identifies one function (main@10:14).

 1 #include<stdio.h>
 2 
 3 #define SAY(message) \
 4     void say_ ## message()
 5 
 6 SAY(hello);
 7 SAY(hi);
 8 
 9 
10 int main()
11 {
12     printf("hello world!!!\n");
13     return 0;
14 }
Clone this wiki locally