aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h1
-rw-r--r--contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp2
-rw-r--r--contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp5
3 files changed, 7 insertions, 1 deletions
diff --git a/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h b/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
index 60cf041c9a5e..08200d35bf1f 100644
--- a/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
+++ b/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h
@@ -147,6 +147,7 @@ public:
// FreeBSD specific specifiers
bArg,
DArg,
+ rArg,
// GlibC specific specifiers.
PrintErrno, // 'm'
diff --git a/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp b/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
index 388b9d34a238..e57258ece198 100644
--- a/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
+++ b/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
@@ -423,6 +423,7 @@ bool FormatSpecifier::hasValidLengthModifier() const {
case ConversionSpecifier::xArg:
case ConversionSpecifier::XArg:
case ConversionSpecifier::nArg:
+ case ConversionSpecifier::rArg:
return true;
default:
return false;
@@ -448,6 +449,7 @@ bool FormatSpecifier::hasValidLengthModifier() const {
case ConversionSpecifier::nArg:
case ConversionSpecifier::cArg:
case ConversionSpecifier::sArg:
+ case ConversionSpecifier::rArg:
return true;
default:
return false;
diff --git a/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp b/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
index 10589e64f0bc..1e9601a95f4d 100644
--- a/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
+++ b/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
@@ -195,7 +195,7 @@ static PrintfSpecifierResult ParsePrintfSpecifier(FormatStringHandler &H,
case 'm': k = ConversionSpecifier::PrintErrno; break;
// FreeBSD format extensions
case 'b': if (FormatExtensions) k = ConversionSpecifier::bArg; break; /* check for int and then char * */
- case 'r': if (FormatExtensions) k = ConversionSpecifier::xArg; break;
+ case 'r': if (FormatExtensions) k = ConversionSpecifier::rArg; break;
case 'y': if (FormatExtensions) k = ConversionSpecifier::iArg; break;
case 'D': if (FormatExtensions) k = ConversionSpecifier::DArg; break; /* check for u_char * pointer and a char * string */
}
@@ -279,6 +279,7 @@ const char *ConversionSpecifier::toString() const {
// FreeBSD specific specifiers.
case bArg: return "b";
case DArg: return "D";
+ case rArg: return "r";
// GlibC specific specifiers.
case PrintErrno: return "m";
@@ -491,6 +492,7 @@ bool PrintfSpecifier::hasValidPlusPrefix() const {
case ConversionSpecifier::GArg:
case ConversionSpecifier::aArg:
case ConversionSpecifier::AArg:
+ case ConversionSpecifier::rArg:
return true;
default:
@@ -514,6 +516,7 @@ bool PrintfSpecifier::hasValidAlternativeForm() const {
case ConversionSpecifier::FArg:
case ConversionSpecifier::gArg:
case ConversionSpecifier::GArg:
+ case ConversionSpecifier::rArg:
return true;
default: