From 46ba1675c457324b0eeef4670a09101ef3f34c50 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 20 Jul 2018 13:04:56 +0200 Subject: [PATCH] ctype: Fix bitfield types on 16-bit targets This prevents errors like this: newlib/libc/ctype/categories.c:6:3: error: width of 'first' exceeds its type unsigned int first: 24; ^ Signed-off-by: Sebastian Huber --- newlib/libc/ctype/categories.c | 5 +++-- newlib/libc/ctype/towctrans_l.c | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/newlib/libc/ctype/categories.c b/newlib/libc/ctype/categories.c index c237324ec..85328ef2e 100644 --- a/newlib/libc/ctype/categories.c +++ b/newlib/libc/ctype/categories.c @@ -1,10 +1,11 @@ #include +#include #include "categories.h" struct _category { enum category cat: 8; - unsigned int first: 24; - unsigned short delta; + uint_least32_t first: 24; + uint_least16_t delta; } __attribute__((packed)); static const struct _category categories[] = { diff --git a/newlib/libc/ctype/towctrans_l.c b/newlib/libc/ctype/towctrans_l.c index 9759cf7bc..42085ac78 100644 --- a/newlib/libc/ctype/towctrans_l.c +++ b/newlib/libc/ctype/towctrans_l.c @@ -1,6 +1,7 @@ /* Modified (m) 2017 Thomas Wolff: revise Unicode and locale/wchar handling */ #include <_ansi.h> #include +#include //#include #include "local.h" @@ -35,10 +36,10 @@ enum {TO1, TOLO, TOUP, TOBOTH}; enum {EVENCAP, ODDCAP}; static struct caseconv_entry { - unsigned int first: 21; - unsigned short diff: 8; - unsigned char mode: 2; - int delta: 17; + uint_least32_t first: 21; + uint_least8_t diff: 8; + uint_least8_t mode: 2; + uint_least32_t delta: 17; } __attribute__ ((packed)) caseconv_table [] = { #include "caseconv.t"