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 naddy@mips.inka.de
No comments:
Post a Comment