This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Update newlib so that it passes libc++'s tests


On 12/20/2013 01:43 PM, Jeff Johnston wrote:
FWIW, I'm willing to wait if you guys are close to consensus on patch.  Otherwise, my intention
was to make the snapshot today.

My opinion is, if you can make it as good or better than it was and you can achieve the libc++
criteria, then fix the exceptions later.  It is a minor issue to add a macro in sys/config.h for
any platforms that don't have their compiler setting __WCHAR_MIN__ / __WCHAR_MAX__ and don't want
the logic below.

-- Jeff J.

----- Original Message -----
From: "JF Bastien" <jfb@chromium.org>
To: "Craig Howland" <howland@lgsinnovations.com>, "Joseph S. Myers" <joseph@codesourcery.com>
Cc: newlib@sourceware.org
Sent: Thursday, December 19, 2013 11:23:31 AM
Subject: Re: [PATCH] Update newlib so that it passes libc++'s tests

There is a better way than guessing, but it is ugly:  add a configure-time
check that determines what the value is and puts it into the generated
newlib.h (in a manner analogous to how _LDBL_EQ_DBL is, for example).
...The present wchar.h is broken in this manner already for WCHAR_MAX, so it
might not be unreasonable to do this for wchar.h now and follow up with a
fix for the existing MAX issue.  It probably is not good, however, to add
the breakage to stdint.h.
I assume you mean the "u" suffix Joseph also pointed out? I indeed
inadvertently carried it over from the previous wchar.h, but I don't
mind fixing it in this patch since (at Joel Sherrill's request) this
change probably won't land before the newlib release.
No, I was referring to the breakage of making the assumption when you don't know. (I was assuming the fix that Joseph pointed out.) The idea was to apply the patch now only to wchar.h--an improvement over what is there now, but still with the issue of a possibly-incorrect fallback value--but to not make the addition to stdint.h. At a future time, do the config mess and then add to stdint.h. This is just a thought to avoid introducing an issue to stdint.h. If this does not achieve the goal of fixing the libc++ test, then I tend to agree with Jeff as to it's being an improvement worth doing, even if it could use a (complicated) cleanup.

So make stdint.h and wchar.h:

#ifndef WCHAR_MIN
#ifdef __WCHAR_MIN__
#define WCHAR_MIN __WCHAR_MIN__
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
#define WCHAR_MIN (0 + L'\0')
#else
#define WCHAR_MIN (-0x7fffffff - 1 + L'\0')
#endif
#endif

#ifndef WCHAR_MAX
#ifdef __WCHAR_MAX__
#define WCHAR_MAX __WCHAR_MAX__
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
#define WCHAR_MAX (0xffffffffu + L'\0')
#else
#define WCHAR_MAX (0x7fffffff + L'\0')
#endif


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]