On Tue, Sep 01, 2020 at 04:01:42PM +0300, Martin Storsjö wrote:
> This fixes compilation of codepaths for dos-like filesystems
> with Clang. When built with clang, it treats C input files as C++
> when the compiler driver is invoked in C++ mode, triggering errors
> when the return value of strchr() on a pointer to const is assigned
> to a pointer to non-const variable.

Not really specific to clang, e.g. glibc does that in its headers too
as the C++ standard mandates that (and I guess mingw should do that too).

> This matches similar variables outside of the ifdefs for dos-like
> path handling.
> 
> 2020-09-01  Martin Storsjö  <mar...@martin.st>
> 
> gcc/Changelog:
>         * dwarf2out.c (file_name_acquire): Make a strchr return value
>         pointer to const.
> 
> libcpp/Changelog:
>         * files.c (remap_filename): Make a strchr return value pointer
>         to const.

LGTM.  And it is short enough not to need copyright assignment, so ok for
trunk.

> ---
>  gcc/dwarf2out.c | 2 +-
>  libcpp/files.c  | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
> index b6ab49bb548..4096c0c0d69 100644
> --- a/gcc/dwarf2out.c
> +++ b/gcc/dwarf2out.c
> @@ -12118,7 +12118,7 @@ file_name_acquire (dwarf_file_data **slot, 
> file_name_acquire_data *fnad)
>    f = strrchr (f, DIR_SEPARATOR);
>  #if defined (DIR_SEPARATOR_2)
>    {
> -    char *g = strrchr (fi->path, DIR_SEPARATOR_2);
> +    const char *g = strrchr (fi->path, DIR_SEPARATOR_2);
>  
>      if (g != NULL)
>        {
> diff --git a/libcpp/files.c b/libcpp/files.c
> index 3d48c38fc0a..b890b8ebf1e 100644
> --- a/libcpp/files.c
> +++ b/libcpp/files.c
> @@ -1693,7 +1693,7 @@ remap_filename (cpp_reader *pfile, _cpp_file *file)
>        p = strchr (fname, '/');
>  #ifdef HAVE_DOS_BASED_FILE_SYSTEM
>        {
> -     char *p2 = strchr (fname, '\\');
> +     const char *p2 = strchr (fname, '\\');
>       if (!p || (p > p2))
>         p = p2;
>        }
> -- 
> 2.17.1

        Jakub

Reply via email to