================ @@ -39,10 +39,15 @@ namespace { // Name of the "errno" variable. // FIXME: Is there a system where it is not called "errno" but is a variable? const char *ErrnoVarName = "errno"; + // Names of functions that return a location of the "errno" value. // FIXME: Are there other similar function names? -const char *ErrnoLocationFuncNames[] = {"__errno_location", "___errno", - "__errno", "_errno", "__error"}; +CallDescriptionSet ErrnoLocationCalls{ + {CDM::SimpleFunc, {"__errno_location"}, 0, 0}, + {CDM::SimpleFunc, {"___errno"}, 0, 0}, + {CDM::SimpleFunc, {"__errno"}, 0, 0}, + {CDM::SimpleFunc, {"_errno"}, 0, 0}, + {CDM::SimpleFunc, {"__error"}, 0, 0}}; ---------------- NagyDonat wrote:
I updated them to `CLibrary` because it's slightly better for this usecase (it won't match functions within a user-defined C++ namespace). By the way, note that the `CLibrary` matching mode intentionally **doesn't check whether the function was declared within a system header**, because "being in a system header" is a very fragile property -- consider e.g. a case when somebody tries to submit a preprocessed source file for bug reproduction and the declaration becomes part of the (tweaked, minified) source file. I also suspect that there might be some unusual/internal functions (like these ones) whose declaration has no location, so it isn't in a system header... https://github.com/llvm/llvm-project/pull/91531 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits