https://sourceware.org/bugzilla/show_bug.cgi?id=29292

--- Comment #4 from Rainer Orth <ro at CeBiTec dot Uni-Bielefeld.DE> ---
> --- Comment #3 from Nick Alcock <nick.alcock at oracle dot com> ---
Thanks for the update.

> Mixed mmap() and read() from the same fd is absolutely nonportable (or at the
> very least delicate and breaks frequently, as seen here) and we should not be
> doing it. Unfortunately with a temporary file this is hard to avoid... I had
> hoped the msync() would fix this, and until now it seemed to.

I'd have expected that, too.  This all worked even on Solaris 11.3, so
the breakage is (relatively) recent.

> I wonder if dupping the fd would help, but I suspect not. I'll see if I can
> thrash about and find some way to do this without rewriting all the
> header-writing code I'm in the middle of literally deleting on another branch
> anyway!

Given the plans you lined out, I don't think this is worth the trouble.
The following snippet in libctf/configure.ac did the trick for me
without affecting any code:

diff --git a/libctf/configure.ac b/libctf/configure.ac
--- a/libctf/configure.ac
+++ b/libctf/configure.ac
@@ -65,6 +65,13 @@ AM_MAINTAINER_MODE
 AM_INSTALL_LIBBFD
 ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_libctf_warn_cflags])

+case "${host}" in
+  # PR libctf/29292
+  # libctf's use of mmap doesn't work on Solaris 11.4, so disable it.
+  *-*-solaris*)
+    ac_cv_func_mmap_fixed_mapped=no
+  ;;
+esac
 GCC_AC_FUNC_MMAP
 # Needed for BFD capability checks.
 AC_SEARCH_LIBS(dlsym, dl)

This might even be acceptable for 2.45.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to