38 lines
1.7 KiB
Plaintext
38 lines
1.7 KiB
Plaintext
- The %b printf extension in the kernel is not fixed to a int type. On sparc64
|
|
there are various %llb formats. Adjust the code to handle the length specifiers
|
|
and type check like it is used by the regular case.
|
|
|
|
Index: tools/clang/lib/AST/FormatString.cpp
|
|
--- tools/clang/lib/AST/FormatString.cpp.orig
|
|
+++ tools/clang/lib/AST/FormatString.cpp
|
|
@@ -759,6 +759,10 @@ bool FormatSpecifier::hasValidLengthModifier(const Tar
|
|
case ConversionSpecifier::XArg:
|
|
case ConversionSpecifier::nArg:
|
|
return true;
|
|
+ case ConversionSpecifier::FreeBSDbArg:
|
|
+ return Target.getTriple().isOSFreeBSD() ||
|
|
+ Target.getTriple().isPS4() ||
|
|
+ Target.getTriple().isOSOpenBSD();
|
|
case ConversionSpecifier::FreeBSDrArg:
|
|
case ConversionSpecifier::FreeBSDyArg:
|
|
return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS4();
|
|
@@ -794,6 +798,10 @@ bool FormatSpecifier::hasValidLengthModifier(const Tar
|
|
case ConversionSpecifier::ScanListArg:
|
|
case ConversionSpecifier::ZArg:
|
|
return true;
|
|
+ case ConversionSpecifier::FreeBSDbArg:
|
|
+ return Target.getTriple().isOSFreeBSD() ||
|
|
+ Target.getTriple().isPS4() ||
|
|
+ Target.getTriple().isOSOpenBSD();
|
|
case ConversionSpecifier::FreeBSDrArg:
|
|
case ConversionSpecifier::FreeBSDyArg:
|
|
return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS4();
|
|
@@ -953,6 +961,7 @@ bool FormatSpecifier::hasStandardLengthConversionCombi
|
|
case ConversionSpecifier::uArg:
|
|
case ConversionSpecifier::xArg:
|
|
case ConversionSpecifier::XArg:
|
|
+ case ConversionSpecifier::FreeBSDbArg:
|
|
return false;
|
|
default:
|
|
return true;
|