Page MenuHomeFreeBSD

D11284.id29866.diff
No OneTemporary

D11284.id29866.diff

Index: contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
===================================================================
--- contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
+++ contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp
@@ -706,6 +706,7 @@
case ConversionSpecifier::XArg:
case ConversionSpecifier::nArg:
return true;
+ case ConversionSpecifier::FreeBSDbArg:
case ConversionSpecifier::FreeBSDrArg:
case ConversionSpecifier::FreeBSDyArg:
return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS4();
@@ -739,6 +740,7 @@
case ConversionSpecifier::ScanListArg:
case ConversionSpecifier::ZArg:
return true;
+ case ConversionSpecifier::FreeBSDbArg:
case ConversionSpecifier::FreeBSDrArg:
case ConversionSpecifier::FreeBSDyArg:
return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS4();
Index: contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
===================================================================
--- contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
+++ contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp
@@ -833,6 +833,7 @@
case ConversionSpecifier::FArg:
case ConversionSpecifier::gArg:
case ConversionSpecifier::GArg:
+ case ConversionSpecifier::FreeBSDbArg:
case ConversionSpecifier::FreeBSDrArg:
case ConversionSpecifier::FreeBSDyArg:
return true;
@@ -958,6 +959,7 @@
case ConversionSpecifier::gArg:
case ConversionSpecifier::GArg:
case ConversionSpecifier::sArg:
+ case ConversionSpecifier::FreeBSDbArg:
case ConversionSpecifier::FreeBSDrArg:
case ConversionSpecifier::FreeBSDyArg:
case ConversionSpecifier::PArg:
Index: sys/kern/subr_prf.c
===================================================================
--- sys/kern/subr_prf.c
+++ sys/kern/subr_prf.c
@@ -650,7 +650,7 @@
uintmax_t num;
int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
int cflag, hflag, jflag, tflag, zflag;
- int dwidth, upper;
+ int bconv, dwidth, upper;
char padc;
int stop = 0, retval = 0;
@@ -676,7 +676,7 @@
}
percent = fmt - 1;
qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
- sign = 0; dot = 0; dwidth = 0; upper = 0;
+ sign = 0; dot = 0; bconv = 0; dwidth = 0; upper = 0;
cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
reswitch: switch (ch = (u_char)*fmt++) {
case '.':
@@ -724,28 +724,9 @@
width = n;
goto reswitch;
case 'b':
- num = (u_int)va_arg(ap, int);
- p = va_arg(ap, char *);
- for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
- PCHAR(*q--);
-
- if (num == 0)
- break;
-
- for (tmp = 0; *p;) {
- n = *p++;
- if (num & (1 << (n - 1))) {
- PCHAR(tmp ? ',' : '<');
- for (; (n = *p) > ' '; ++p)
- PCHAR(n);
- tmp = 1;
- } else
- for (; *p > ' '; ++p)
- continue;
- }
- if (tmp)
- PCHAR('>');
- break;
+ ladjust = 1;
+ bconv = 1;
+ goto handle_nosign;
case 'c':
width -= 1;
@@ -883,6 +864,10 @@
num = (u_char)va_arg(ap, int);
else
num = va_arg(ap, u_int);
+ if (bconv) {
+ q = va_arg(ap, char *);
+ base = *q++;
+ }
goto number;
handle_sign:
if (jflag)
@@ -940,6 +925,26 @@
while (*p)
PCHAR(*p--);
+ if (bconv && num != 0) {
+ /* %b conversion flag format. */
+ tmp = retval;
+ while (*q) {
+ n = *q++;
+ if (num & (1 << (n - 1))) {
+ PCHAR(retval != tmp ?
+ ',' : '<');
+ for (; (n = *q) > ' '; ++q)
+ PCHAR(n);
+ } else
+ for (; *q > ' '; ++q)
+ continue;
+ }
+ if (retval != tmp) {
+ PCHAR('>');
+ width -= retval - tmp;
+ }
+ }
+
if (ladjust)
while (width-- > 0)
PCHAR(' ');

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 7, 3:12 AM (5 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31008029
Default Alt Text
D11284.id29866.diff (3 KB)

Event Timeline