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. Index: patches/patch-gcc_ada_cstreams_c =================================================================== 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