The following patch improves handling of largefile support with procfs on 32-bit Solaris. It has already been approved and installed for binutils-gdb in the thread starting at
[PATCH] Unify Solaris procfs and largefile handling https://sourceware.org/pipermail/gdb-patches/2020-June/169977.html I'm syncing the config/largefile.m4 part to gcc now which is the master for config. Since ACX_LARGEFILE isn't used anywhere in the gcc tree, I'm installing it as obvious. [Or rather: I meant to and failed: remote: *** ChangeLog format failed: remote: ERR: first line should start with a tab, an asterisk and a space:" Sync from binutils-gdb." remote: ERR: additional author must be indented with one tab and four spaces:" 2020-07-30 Rainer Orth <r...@cebitec.uni-bielefeld.de>" remote: ERR: first line should start with a tab, an asterisk and a space:" 2020-07-30 Rainer Orth <r...@cebitec.uni-bielefeld.de>" remote: remote: Please see: https://gcc.gnu.org/codingconventions.html#ChangeLogs remote: abort: git remote error: refs/heads/master failed to update How am I supposed to install a ChangeLog entry like the one below? The format is analogous to the one used for backports. Martin?] Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2020-09-08 Rainer Orth <r...@cebitec.uni-bielefeld.de> config: Sync from binutils-gdb. 2020-07-30 Rainer Orth <r...@cebitec.uni-bielefeld.de> * largefile.m4 (ACX_LARGEFILE) <sparc-*-solaris*|i?86-*-solaris*>: Check for <sys/procfs.h> incompatilibity with large-file support on Solaris. Only disable large-file support and perhaps plugins if needed. Set, substitute LARGEFILE_CPPFLAGS if so.
# HG changeset patch # Parent 9631429b03ab5d025fee1443d88e46caa38dbd23 config: Sync largefile.m4 from binutils-gdb diff --git a/config/largefile.m4 b/config/largefile.m4 --- a/config/largefile.m4 +++ b/config/largefile.m4 @@ -1,5 +1,5 @@ # This macro wraps AC_SYS_LARGEFILE with one exception for Solaris. -# PR 9992/binutils: We have to replicate everywhere the behaviour of +# PR binutils/9992: We have to replicate everywhere the behaviour of # bfd's configure script so that all the directories agree on the size # of structures used to describe files. @@ -16,17 +16,38 @@ AC_REQUIRE([AC_CANONICAL_TARGET]) AC_PLUGINS case "${host}" in -changequote(,)dnl - sparc-*-solaris*|i[3-7]86-*-solaris*) -changequote([,])dnl - # On native 32bit sparc and ia32 solaris, large-file and procfs support - # are mutually exclusive; and without procfs support, the bfd/ elf module - # cannot provide certain routines such as elfcore_write_prpsinfo - # or elfcore_write_prstatus. So unless the user explicitly requested - # large-file support through the --enable-largefile switch, disable - # large-file support in favor of procfs support. - test "${target}" = "${host}" -a "x$plugins" = xno \ - && : ${enable_largefile="no"} + sparc-*-solaris*|i?86-*-solaris*) + # On native 32-bit Solaris/SPARC and x86, large-file and procfs support + # were mutually exclusive until Solaris 11.3. Without procfs support, + # the bfd/ elf module cannot provide certain routines such as + # elfcore_write_prpsinfo or elfcore_write_prstatus. So unless the user + # explicitly requested large-file support through the + # --enable-largefile switch, disable large-file support in favor of + # procfs support. + # + # Check if <sys/procfs.h> is incompatible with large-file support. + AC_TRY_COMPILE([#define _FILE_OFFSET_BITS 64 +#define _STRUCTURED_PROC 1 +#include <sys/procfs.h>], , acx_cv_procfs_lfs=yes, acx_cv_procfs_lfs=no) + # + # Forcefully disable large-file support only if necessary, gdb is in + # tree and enabled. + if test "${target}" = "${host}" -a "$acx_cv_procfs_lfs" = no \ + -a -d $srcdir/../gdb -a "$enable_gdb" != no; then + : ${enable_largefile="no"} + if test "$plugins" = yes; then + AC_MSG_WARN([ +plugin support disabled; require large-file support which is incompatible with GDB.]) + plugins=no + fi + fi + # + # Explicitly undef _FILE_OFFSET_BITS if enable_largefile=no for the + # benefit of g++ 9+ which predefines it on Solaris. + if test "$enable_largefile" = no; then + LARGEFILE_CPPFLAGS="-U_FILE_OFFSET_BITS" + AC_SUBST(LARGEFILE_CPPFLAGS) + fi ;; esac