Re: Cast "const char *" pointers to "char *" to avoid compiler warnings.
Christophe Lyon <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAKdteOYU+JUAudk+-PuQbxwLXR_m62JwPPaw5xCAKn2uHnaPGA@mail.gmail.com> |
On Wed, 10 Oct 2018 at 11:22, Corinna Vinschen <[email protected]> wrote: > > On Oct 2 11:10, Christophe Lyon wrote: > > On Tue, 2 Oct 2018 at 00:50, Craig Howland <[email protected]> wrote: > > > > > > On 10/01/2018 05:33 PM, Christophe Lyon wrote: > > > > Hi, > > > > > > > > GCC complains that some assignments loose the const-ness of several > > > > data. This small patch adds explicit (char *) casts, but I'm not > > > > familiar enough with what newlib does with these to be sure that they > > > > are not modified. Maybe the proper fix would be to declare the > > > > destinations as "const"? > > > > > > > > Christophe > > > If I understand what you're saying properly, it amounts to saying that you did > > > not verify whether the GCC warnings about discarding const are valid or not, yet > > > you are suppressing them. Is this a proper understanding? If so, it seems like > > > these proposed patches are a bad idea, as they might be hiding a real problem, > > > or changing the wrong thing. (In a very quick look at locale.c, for example, > > > locale can definitely be written to--it is definitely not const. This implies > > > that the const on new_locale is what is wrong.) > > > > I did have this "very quick look at locale.c" before writing the > > patch, and not adding > > the cast at the assignment point means removing "const" from __loadlocale() > > prototype: > > char *__loadlocale (struct __locale_t *loc, int category, const char > > *new_locale) > > which in turn has a significant impact on the callers which I hope > > people familiar > > with this area can confirm, or not. > > The bug was, in fact, to define the third parameter as const, given it > gets potentially overwritten. None of the incoming values is const > anyway. I pushed a patch. > Thanks. However, when building for aarch64, I'm still seeing: newlib/libc/ctype/ctype_.c:179:16: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] And I think my patch (or something similar) is still needed for jp2uc.c ? Christophe > > Corinna > > -- > Corinna Vinschen > Cygwin Maintainer > Red Hat