Excerpts from Marc Aurèle La France's message of Mai 16, 2022 11:34 pm:
> On Sun, 15 May 2022, Iain Buclaw wrote:
>> Excerpts from Marc Aurèle La France's message of Mai 12, 2022 10:29 pm:
> 
>>> No compiler has any business rejecting files for the sole crime of
>>> being symlinked to.  The following applies, modulo patch fuzz, to the
>>> 9, 10 and 11 series of compilers.
> 
>>> Given my use of shadow trees, this bug attempted to prevent me from
>>> building 12.1.0.  The D-based gdc in 12.1.0 and up does not exhibit
>>> this quirky behaviour.
> 
>> Thanks, I've checked upstream and see the following change:
> 
>> https://github.com/dlang/dmd/pull/11836/commits/ebda81e44fd0ca4b247a1860d9bef411c41c16cb
> 
>> It should be fine to just backport that.
> 
> Thanks for the pointer.
> 
> I ended up with the three slightly different diffs below, one each for
> the 9, 10 and 11 branches.  Each was rebuilt using 8.5.0, then used to
> rebuild 12.1.0.  All of this ran smoothly without complaint, although I
> wouldn't want to do this on a 486...
> 
> Thanks again and have a great day.
> 
> Marc.
> 
> Signed-off-by: Marc Aurèle La France <t...@tuyoix.net>
> 
> For GCC 9   ----------  8< ----------
> 
> diff -aNpRruz -X /etc/diff.excludes gcc-9.4.0/gcc/d/dmd/root/filename.c 
> devel-9.4.0/gcc/d/dmd/root/filename.c
> --- gcc-9.4.0/gcc/d/dmd/root/filename.c       2021-06-01 01:53:04.716474774 
> -0600
> +++ devel-9.4.0/gcc/d/dmd/root/filename.c     2022-05-15 15:02:49.995441507 
> -0600
> @@ -475,53 +475,7 @@ const char *FileName::safeSearchPath(Strings *path, 
> const char *name)
> 
>      return FileName::searchPath(path, name, false);
>  #elif POSIX
> -    /* Even with realpath(), we must check for // and disallow it
> -     */
> -    for (const char *p = name; *p; p++)
> -    {
> -        char c = *p;
> -        if (c == '/' && p[1] == '/')
> -        {
> -            return NULL;
> -        }
> -    }

I'd keep this check in, otherwise removing/replacing only the `if
(path)` branch looks OK to me.

Iain.

Reply via email to