Hi, > I'm thinking it's more likely a glibc bug, as I fail to see an apparent reason > why WCHAR_MIN/MAX are defined different on each of these platforms. It > probably has to be reassigned to eglibc, but I'm cross-posting this to the > eglibc maintainers first.
I think too. wchar_t is not handled in cpp. WCHAR_MAX becomes -1. I updated patch of local-eabi-wchar.diff. # This header was included by #444580. Best regards, Nobuhiro -- Nobuhiro Iwamatsu iwamatsu at {nigauri.org / debian.org} GPG ID: 40AD1FA6
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=444580 Unlike other architectures, on Arm EABI, wchar_t is "unsigned int". thus the default glibc definitions are incorrect: #define __WCHAR_MIN (-2147483647 - 1) #define __WCHAR_MAX (2147483647) This causes miscompilation of atleast libidn, and possibly other packages that use gnulib tests that check the correctness of wchar_t. The attached adds a eabi specific bits.h. --- ports/sysdeps/arm/eabi/bits/wchar.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) --- /dev/null +++ b/ports/sysdeps/arm/eabi/bits/wchar.h @@ -0,0 +1,26 @@ +/* wchar_t type related definitions. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _BITS_WCHAR_H +#define _BITS_WCHAR_H 1 + +#define __WCHAR_MIN ( 0 ) +#define __WCHAR_MAX ( 4294967295 ) + +#endif /* bits/wchar.h */