| #ifndef TSAN_IGNORE_H__ |
| #define TSAN_IGNORE_H__ |
| |
| #include "common_util.h" |
| |
| // A triple of patterns to ignore a function, an object file and a source file |
| // by their names. |
| struct IgnoreTriple { |
| string fun; |
| string obj; |
| string file; |
| |
| IgnoreTriple(string ifun, string iobj, string ifile) : fun(ifun) { |
| obj = ConvertToPlatformIndependentPath(iobj); |
| file = ConvertToPlatformIndependentPath(ifile); |
| CHECK(!((ifun == "*") && (iobj == "*") && (ifile == "*"))); |
| } |
| }; |
| |
| struct IgnoreObj : public IgnoreTriple { |
| IgnoreObj(string obj) : IgnoreTriple("*", obj, "*") {} |
| }; |
| |
| struct IgnoreFun : public IgnoreTriple { |
| IgnoreFun(string fun) : IgnoreTriple(fun, "*", "*") {} |
| }; |
| |
| struct IgnoreFile : public IgnoreTriple { |
| IgnoreFile(string file) : IgnoreTriple("*", "*", file) {} |
| }; |
| |
| struct IgnoreLists { |
| vector<IgnoreTriple> ignores; |
| vector<IgnoreTriple> ignores_r; |
| vector<IgnoreTriple> ignores_hist; |
| }; |
| |
| extern IgnoreLists *g_ignore_lists; |
| extern vector<string> *g_ignore_obj; |
| |
| extern IgnoreLists *g_white_lists; |
| |
| void ReadIgnoresFromString(const string& ignoreString, |
| IgnoreLists* ignoreLists); |
| |
| bool TripleVectorMatchKnown(const vector<IgnoreTriple>& v, |
| const string& fun, |
| const string& obj, |
| const string& file); |
| |
| bool StringVectorMatch(const vector<string>& v, const string& obj); |
| |
| #endif |