On 2019/07/22 22:05, Christian Weisgerber wrote: > Mark Patruck: > > > lang/gcc always fails with the following error on amd64 -current (~6 hours > > old) > > > > ------------------------ > > Check for missing set procedures in body > > OK > > > > All tests completed successfully, no errors detected > > > > raised ADA.IO_EXCEPTIONS.USE_ERROR : sinfo.h: No such file or directory > > The problem is in libgnat and triggered by the recent change to > make realpath() POSIX-ly correct. > > In libgnat/s-fileio.adb, the System.File_IO Open function calls > full_name() on all pathnames, including when creating files that > don't exist yet. > > full_name() maps to __gnat_full_name(). > > In cstreams.c, __gnat_full_name() calls realpath(). > > Upstream doesn't notice because... > > /* Use realpath function which resolves links and references to . and .. > on those Unix systems that support it. Note that GNU/Linux provides it > but > cannot handle more than 5 symbolic links in a full name, so we use the > getcwd approach instead. */ > > ... Linux uses a different code path. > > The trivial patch below makes us use that same codepath. Unfortunately, > it also requires building a new adastrap (on a system without the > realpath change). > > With the new adastrap, gcc/8 will then build fine on -current.
BTW I am building a new adastrap with this on i386. Will also need hppa/mips64/macppc. It might be worth adding a comment to the Makefile explaining what's needed in case someone wants to work on updating arches currently stuck with adastrap from old GCC versions later (building on 6.5 will be easiest, I guess) > RCS file: patches/patch-gcc_ada_cstreams_c > diff -N patches/patch-gcc_ada_cstreams_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-gcc_ada_cstreams_c 22 Jul 2019 19:58:35 -0000 > @@ -0,0 +1,17 @@ > +$OpenBSD$ > + > +System.File_IO.Open calls full_name() for Create. Use getcwd() approach > +instead of realpath() since the latter fails if the file doesn't exist. > + > +Index: gcc/ada/cstreams.c > +--- gcc/ada/cstreams.c.orig > ++++ gcc/ada/cstreams.c > +@@ -190,7 +190,7 @@ __gnat_full_name (char *nam, char *buffer) > + *p = '\\'; > + } > + > +-#elif defined (__FreeBSD__) || defined (__DragonFly__) || defined > (__OpenBSD__) > ++#elif defined (__FreeBSD__) || defined (__DragonFly__) > + > + /* Use realpath function which resolves links and references to . and .. > + on those Unix systems that support it. Note that GNU/Linux provides it > but > -- > Christian "naddy" Weisgerber na...@mips.inka.de >