gcc50: local mod to support kernel printf formats
authorJohn Marino <draco@marino.st>
Tue, 10 Feb 2015 22:42:37 +0000 (23:42 +0100)
committerJohn Marino <draco@marino.st>
Wed, 11 Feb 2015 00:17:49 +0000 (01:17 +0100)
The diff from gcc47 patched without issues (only line offsets).

contrib/gcc-5.0/README.DRAGONFLY
contrib/gcc-5.0/gcc/c-family/c-format.c

index 3ff6c38..906945d 100644 (file)
@@ -14,6 +14,6 @@ The file README.DELETED contains a list of deleted files and directories.
 
 The following files have been patched (* planned)
 =================================================
-* gcc/c-family/c-format.c 
+  gcc/c-family/c-format.c
   gcc/gcc.c
 * gcc/tree-inline.c
index faaca09..6a88c24 100644 (file)
@@ -606,6 +606,9 @@ static const format_flag_pair strfmon_flag_pairs[] =
 };
 
 
+static const format_char_info dfly_ext_char_info =
+{ NULL,  1, STD_EXT, { T89_C,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "",      "cR", NULL };
+
 static const format_char_info print_char_table[] =
 {
   /* C89 conversion specifiers.  */
@@ -626,6 +629,14 @@ static const format_char_info print_char_table[] =
   { "S",   1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "R",  NULL },
   /* GNU conversion specifiers.  */
   { "m",   0, STD_EXT, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "",   NULL },
+  /* BSD conversion specifiers.  */
+  /* DragonFly kernel extensions (src/sys/kern/subr_prf.c).
+     The format %b is supported to decode error registers.
+     Its usage is:     printf("reg=%b\n", regval, "<base><arg>*");
+     which produces:   reg=3<BITTWO,BITONE>
+   */
+  { "b",   0, STD_EXT, { T89_I,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "",   &dfly_ext_char_info },
+  { "ry",  0, STD_EXT, { T89_I,  BADLEN,   BADLEN,   T89_L,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp0 +#",   "i",  NULL },
   { NULL,  0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
 };
 
@@ -807,6 +818,8 @@ static const format_char_info time_char_table[] =
   /* GNU conversion specifiers.  */
   { "kls",             0, STD_EXT, NOLENGTHS, "-_0Ow",  "",   NULL },
   { "P",               0, STD_EXT, NOLENGTHS, "",       "",   NULL },
+  /* DragonFly/FreeBSD conversion specifiers. */
+  { "+",               0, STD_EXT, NOLENGTHS, "E",      "3",  NULL },
   { NULL,              0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
 };