This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH] ctype: Fix bitfield types on 16-bit targets
- From: Sebastian Huber <sebastian dot huber at embedded-brains dot de>
- To: newlib at sourceware dot org
- Date: Fri, 20 Jul 2018 13:07:16 +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 <sebastian.huber@embedded-brains.de>
---
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 <wctype.h>
+#include <stdint.h>
#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 <wctype.h>
+#include <stdint.h>
//#include <errno.h>
#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"
--
2.13.7