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.