From b598afedd1c3b24705794fde0b2bd2ecf5b0c53b Mon Sep 17 00:00:00 2001 From: John Marino Date: Tue, 10 Feb 2015 23:42:37 +0100 Subject: [PATCH] gcc50: local mod to support kernel printf formats The diff from gcc47 patched without issues (only line offsets). --- contrib/gcc-5.0/README.DRAGONFLY | 2 +- contrib/gcc-5.0/gcc/c-family/c-format.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/contrib/gcc-5.0/README.DRAGONFLY b/contrib/gcc-5.0/README.DRAGONFLY index 3ff6c387d5..906945d705 100644 --- a/contrib/gcc-5.0/README.DRAGONFLY +++ b/contrib/gcc-5.0/README.DRAGONFLY @@ -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 diff --git a/contrib/gcc-5.0/gcc/c-family/c-format.c b/contrib/gcc-5.0/gcc/c-family/c-format.c index faaca09307..6a88c240f3 100644 --- a/contrib/gcc-5.0/gcc/c-family/c-format.c +++ b/contrib/gcc-5.0/gcc/c-family/c-format.c @@ -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, "*"); + which produces: reg=3 + */ + { "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 } }; -- 2.41.0