> Date: Sun, 28 Apr 2013 11:52:47 +0200 (CEST)
> From: Stefan Fritsch <[email protected]>
>
> 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;
>