> Date: Sun, 28 Apr 2013 11:52:47 +0200 (CEST) > From: Stefan Fritsch <s...@sfritsch.de> > > On Sun, 21 Apr 2013, Stefan Fritsch wrote: > > On Sunday 21 April 2013, Philip Guenther wrote: > >> Maybe this should be handled the bool bits in <sys/types.h>, > >> wrapping them in #ifdef _KERNEL ? > > > > #ifdef _KERNEL is fine with me. > > OK for the patch below?
Just drop the <sys/types.h> ptrdiff_t bit completely please. I don't think it should be used in the kernel; there always is a more appropriate kernel type to use. > --- a/gnu/gcc/gcc/c-format.c > +++ b/gnu/gcc/gcc/c-format.c > @@ -325,6 +325,7 @@ static const format_length_info kprintf_length_specs[] = > { "l", FMT_LEN_l, STD_C89, "ll", FMT_LEN_ll, STD_C9L }, > { "q", FMT_LEN_ll, STD_EXT, NULL, 0, 0 }, > { "z", FMT_LEN_z, STD_C99, NULL, 0, 0 }, > + { "t", FMT_LEN_t, STD_C99, NULL, 0, 0 }, > { NULL, 0, 0, NULL, 0, 0 } > }; > > @@ -552,9 +553,9 @@ static const format_char_info asm_fprintf_char_table[] = > static const format_char_info kprint_char_table[] = > { > /* C89 conversion specifiers. */ > - { "di", 0, STD_C89, { T89_I, BADLEN, T89_S, T89_L, T9L_LL, BADLEN, > T99_SST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +'I", "i", NULL > }, > - { "oxX", 0, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, BADLEN, > T99_ST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0#", "i", NULL > }, > - { "u", 0, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, BADLEN, > T99_ST, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0'I", "i", NULL > }, > + { "di", 0, STD_C89, { T89_I, BADLEN, T89_S, T89_L, T9L_LL, BADLEN, > T99_SST, T99_PD, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0 +'I", "i", NULL > }, > + { "oxX", 0, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, BADLEN, > T99_ST, T99_UPD, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0#", "i", > NULL }, > + { "u", 0, STD_C89, { T89_UI, BADLEN, T89_US, T89_UL, T9L_ULL, BADLEN, > T99_ST, T99_UPD, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0'I", "i", > NULL }, > { "c", 0, STD_C89, { T89_I, BADLEN, BADLEN, BADLEN, BADLEN, > BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-w", > "", NULL }, > { "s", 1, STD_C89, { T89_C, BADLEN, BADLEN, BADLEN, BADLEN, > BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp", > "cR", NULL }, > { "p", 1, STD_C89, { T89_V, BADLEN, BADLEN, T89_UL, T9L_LL, > BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }, "-wp0", > "c", NULL }, > --- a/sys/kern/subr_prf.c > +++ b/sys/kern/subr_prf.c > @@ -842,6 +842,9 @@ reswitch: switch (ch) { > size = 1; > sign = '\0'; > break; > + case 't': > + /* assume ptrdiff_t is long */ > + /* FALLTHROUGH */ > case 'D': > flags |= LONGINT; > /*FALLTHROUGH*/ > --- a/sys/sys/types.h > +++ b/sys/sys/types.h > @@ -177,6 +177,13 @@ typedef __clockid_t clockid_t; > typedef __size_t size_t; > #endif > > +#ifdef _KERNEL > +#ifndef _PTRDIFF_T_DEFINED_ > +#define _PTRDIFF_T_DEFINED_ > +typedef __ptrdiff_t ptrdiff_t; > +#endif > +#endif > + > #ifndef _SSIZE_T_DEFINED_ > #define _SSIZE_T_DEFINED_ > typedef __ssize_t ssize_t; >