mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
c8693053f8
GDB currently doesn't build on 32-bit Solaris: * On Solaris 11.4/x86: In file included from /usr/include/sys/procfs.h:26, from /vol/src/gnu/gdb/hg/master/dist/gdb/i386-sol2-nat.c:24: /usr/include/sys/old_procfs.h:31:2: error: #error "Cannot use procfs in the large file compilation environment" #error "Cannot use procfs in the large file compilation environment" ^~~~~ * On Solaris 11.3/x86 there are several more instances of this. The interaction between procfs and large-file support historically has been a royal mess on Solaris: * There are two versions of the procfs interface: ** The old ioctl-based /proc, deprecated and not used any longer in either gdb or binutils. ** The `new' (introduced in Solaris 2.6, 1997) structured /proc. * There are two headers one can possibly include: ** <procfs.h> which only provides the structured /proc, definining _STRUCTURED_PROC=1 and then including ... ** <sys/procfs.h> which defaults to _STRUCTURED_PROC=0, the ioctl-based /proc, but provides structured /proc if _STRUCTURED_PROC == 1. * procfs and the large-file environment didn't go well together: ** Until Solaris 11.3, <sys/procfs.h> would always #error in 32-bit compilations when the large-file environment was active (_FILE_OFFSET_BITS == 64). ** In both Solaris 11.4 and Illumos, this restriction was lifted for structured /proc. So one has to be careful always to define _STRUCTURED_PROC=1 when testing for or using <sys/procfs.h> on Solaris. As the errors above show, this isn't always the case in binutils-gdb right now. Also one may need to disable large-file support for 32-bit compilations on Solaris. config/largefile.m4 meant to do this by wrapping the AC_SYS_LARGEFILE autoconf macro with appropriate checks, yielding ACX_LARGEFILE. Unfortunately the macro doesn't always succeed because it neglects the _STRUCTURED_PROC part. To make things even worse, since GCC 9 g++ predefines _FILE_OFFSET_BITS=64 on Solaris. So even if largefile.m4 deciced not to enable large-file support, this has no effect, breaking the gdb build. This patch addresses all this as follows: * All tests for the <sys/procfs.h> header are made with _STRUCTURED_PROC=1, the definition going into the various config.h files instead of having to make them (and sometimes failing) in the affected sources. * To cope with the g++ predefine of _FILE_OFFSET_BITS=64, -U_FILE_OFFSET_BITS is added to various *_CPPFLAGS variables. It had been far easier to have just #undef _FILE_OFFSET_BITS in config.h, but unfortunately such a construct in config.in is commented by config.status irrespective of indentation and whitespace if large-file support is disabled. I found no way around this and putting the #undef in several global headers for bfd, binutils, ld, and gdb seemed way more invasive. * Last, the applicability check in largefile.m4 was modified only to disable largefile support if really needed. To do so, it checks if <sys/procfs.h> compiles with _FILE_OFFSET_BITS=64 defined. If it doesn't, the disabling only happens if gdb exists in-tree and isn't disabled, otherwise (building binutils from a tarball), there's no conflict. What initially confused me was the check for $plugins here, which originally caused the disabling not to take place. Since AC_PLUGINGS does enable plugin support if <dlfcn.h> exists (which it does on Solaris), the disabling never happened. I could find no explanation why the linker plugin needs large-file support but thought it would be enough if gld and GCC's lto-plugin agreed on the _FILE_OFFSET_BITS value. Unfortunately, that's not enough: lto-plugin uses the simple-object interface from libiberty, which includes off_t arguments. So to fully disable large-file support would mean also disabling it in libiberty and its users: gcc and libstdc++-v3. This seems highly undesirable, so I decided to disable the linker plugin instead if large-file support won't work. The patch allows binutils+gdb to build on i386-pc-solaris2.11 (both Solaris 11.3 and 11.4, using GCC 9.3.0 which is the worst case due to predefined _FILE_OFFSET_BITS=64). Also regtested on amd64-pc-solaris2.11 (again on Solaris 11.3 and 11.4), x86_64-pc-linux-gnu and i686-pc-linux-gnu. config: * 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. bfd: * bfd.m4 (BFD_SYS_PROCFS_H): New macro. (BFD_HAVE_SYS_PROCFS_TYPE): Require BFD_SYS_PROCFS_H. Don't define _STRUCTURED_PROC. (BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Likewise. * elf.c [HAVE_SYS_PROCFS_H] (_STRUCTURED_PROC): Don't define. * configure.ac: Use BFD_SYS_PROCFS_H to check for <sys/procfs.h>. * configure, config.in: Regenerate. * Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * Makefile.in, doc/Makefile.in: Regenerate. binutils: * Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * Makefile.in, doc/Makefile.in: Regenerate. * configure: Regenerate. gas: * Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * Makefile.in, doc/Makefile.in: Regenerate. * configure: Regenerate. gdb: * proc-api.c (_STRUCTURED_PROC): Don't define. * proc-events.c: Likewise. * proc-flags.c: Likewise. * proc-why.c: Likewise. * procfs.c: Likewise. * Makefile.in (INTERNAL_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * configure, config.in: Regenerate. gdbserver: * configure, config.in: Regenerate. gdbsupport: * Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * common.m4 (GDB_AC_COMMON): Use BFD_SYS_PROCFS_H to check for <sys/procfs.h>. * Makefile.in: Regenerate. * configure, config.in: Regenerate. gnulib: * configure.ac: Run ACX_LARGEFILE before gl_EARLY. * configure: Regenerate. gprof: * Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * Makefile.in: Regenerate. * configure: Regenerate. ld: * Makefile.am (AM_CPPFLAGS): Add LARGEFILE_CPPFLAGS. * Makefile.in: Regenerate. * configure: Regenerate.
422 lines
11 KiB
Plaintext
422 lines
11 KiB
Plaintext
/* config.in. Generated from configure.ac by autoheader. */
|
|
|
|
/* Check that config.h is #included before system headers
|
|
(this works only for glibc, but that should be enough). */
|
|
#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
|
|
# error config.h must be #included before system headers
|
|
#endif
|
|
#define __CONFIG_H__ 1
|
|
|
|
/* Name of host specific core header file to include in elf.c. */
|
|
#undef CORE_HEADER
|
|
|
|
/* Define to 1 if you want to enable -z separate-code in ELF linker by
|
|
default. */
|
|
#undef DEFAULT_LD_Z_SEPARATE_CODE
|
|
|
|
/* Define to 1 if translation of program messages to the user's native
|
|
language is requested. */
|
|
#undef ENABLE_NLS
|
|
|
|
/* Define to 1 if you have the <alloca.h> header file. */
|
|
#undef HAVE_ALLOCA_H
|
|
|
|
/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_ASPRINTF
|
|
|
|
/* Define to 1 if you have the declaration of `basename', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_BASENAME
|
|
|
|
/* Define to 1 if you have the declaration of `ffs', and to 0 if you don't. */
|
|
#undef HAVE_DECL_FFS
|
|
|
|
/* Define to 1 if you have the declaration of `free', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_FREE
|
|
|
|
/* Define to 1 if you have the declaration of `fseeko', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_FSEEKO
|
|
|
|
/* Define to 1 if you have the declaration of `fseeko64', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_FSEEKO64
|
|
|
|
/* Define to 1 if you have the declaration of `ftello', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_FTELLO
|
|
|
|
/* Define to 1 if you have the declaration of `ftello64', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_FTELLO64
|
|
|
|
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_GETENV
|
|
|
|
/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_MALLOC
|
|
|
|
/* Define to 1 if you have the declaration of `realloc', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_REALLOC
|
|
|
|
/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_SNPRINTF
|
|
|
|
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_STPCPY
|
|
|
|
/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_STRNLEN
|
|
|
|
/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
|
|
*/
|
|
#undef HAVE_DECL_STRSTR
|
|
|
|
/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_VASPRINTF
|
|
|
|
/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_VSNPRINTF
|
|
|
|
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
|
|
*/
|
|
#undef HAVE_DIRENT_H
|
|
|
|
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
#undef HAVE_DLFCN_H
|
|
|
|
/* Define to 1 if you have the `fcntl' function. */
|
|
#undef HAVE_FCNTL
|
|
|
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
|
#undef HAVE_FCNTL_H
|
|
|
|
/* Define to 1 if you have the `fdopen' function. */
|
|
#undef HAVE_FDOPEN
|
|
|
|
/* Define to 1 if you have the `fileno' function. */
|
|
#undef HAVE_FILENO
|
|
|
|
/* Define to 1 if you have the `fls' function. */
|
|
#undef HAVE_FLS
|
|
|
|
/* Define to 1 if you have the `fopen64' function. */
|
|
#undef HAVE_FOPEN64
|
|
|
|
/* Define to 1 if you have the `fseeko' function. */
|
|
#undef HAVE_FSEEKO
|
|
|
|
/* Define to 1 if you have the `fseeko64' function. */
|
|
#undef HAVE_FSEEKO64
|
|
|
|
/* Define to 1 if you have the `ftello' function. */
|
|
#undef HAVE_FTELLO
|
|
|
|
/* Define to 1 if you have the `ftello64' function. */
|
|
#undef HAVE_FTELLO64
|
|
|
|
/* Define to 1 if you have the `getgid' function. */
|
|
#undef HAVE_GETGID
|
|
|
|
/* Define to 1 if you have the `getpagesize' function. */
|
|
#undef HAVE_GETPAGESIZE
|
|
|
|
/* Define to 1 if you have the `getrlimit' function. */
|
|
#undef HAVE_GETRLIMIT
|
|
|
|
/* Define to 1 if you have the `getuid' function. */
|
|
#undef HAVE_GETUID
|
|
|
|
/* Define if your compiler supports hidden visibility. */
|
|
#undef HAVE_HIDDEN
|
|
|
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
#undef HAVE_INTTYPES_H
|
|
|
|
/* Define to 1 if the system has the type `long double'. */
|
|
#undef HAVE_LONG_DOUBLE
|
|
|
|
/* Define to 1 if the system has the type `long long'. */
|
|
#undef HAVE_LONG_LONG
|
|
|
|
/* Define if <sys/procfs.h> has lwpstatus_t. */
|
|
#undef HAVE_LWPSTATUS_T
|
|
|
|
/* Define if <sys/procfs.h> has lwpstatus_t.pr_context. */
|
|
#undef HAVE_LWPSTATUS_T_PR_CONTEXT
|
|
|
|
/* Define if <sys/procfs.h> has lwpstatus_t.pr_fpreg. */
|
|
#undef HAVE_LWPSTATUS_T_PR_FPREG
|
|
|
|
/* Define if <sys/procfs.h> has lwpstatus_t.pr_reg. */
|
|
#undef HAVE_LWPSTATUS_T_PR_REG
|
|
|
|
/* Define if <sys/procfs.h> has lwpxstatus_t. */
|
|
#undef HAVE_LWPXSTATUS_T
|
|
|
|
/* Define to 1 if you have the `madvise' function. */
|
|
#undef HAVE_MADVISE
|
|
|
|
/* Define to 1 if you have the <memory.h> header file. */
|
|
#undef HAVE_MEMORY_H
|
|
|
|
/* Define to 1 if you have a working `mmap' system call. */
|
|
#undef HAVE_MMAP
|
|
|
|
/* Define to 1 if you have the `mprotect' function. */
|
|
#undef HAVE_MPROTECT
|
|
|
|
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
|
|
#undef HAVE_NDIR_H
|
|
|
|
/* Define if <sys/procfs.h> has prpsinfo32_t. */
|
|
#undef HAVE_PRPSINFO32_T
|
|
|
|
/* Define if <sys/procfs.h> has prpsinfo32_t.pr_pid. */
|
|
#undef HAVE_PRPSINFO32_T_PR_PID
|
|
|
|
/* Define if <sys/procfs.h> has prpsinfo_t. */
|
|
#undef HAVE_PRPSINFO_T
|
|
|
|
/* Define if <sys/procfs.h> has prpsinfo_t.pr_pid. */
|
|
#undef HAVE_PRPSINFO_T_PR_PID
|
|
|
|
/* Define if <sys/procfs.h> has prstatus32_t. */
|
|
#undef HAVE_PRSTATUS32_T
|
|
|
|
/* Define if <sys/procfs.h> has prstatus32_t.pr_who. */
|
|
#undef HAVE_PRSTATUS32_T_PR_WHO
|
|
|
|
/* Define if <sys/procfs.h> has prstatus_t. */
|
|
#undef HAVE_PRSTATUS_T
|
|
|
|
/* Define if <sys/procfs.h> has prstatus_t.pr_who. */
|
|
#undef HAVE_PRSTATUS_T_PR_WHO
|
|
|
|
/* Define if <sys/procfs.h> has psinfo32_t. */
|
|
#undef HAVE_PSINFO32_T
|
|
|
|
/* Define if <sys/procfs.h> has psinfo32_t.pr_pid. */
|
|
#undef HAVE_PSINFO32_T_PR_PID
|
|
|
|
/* Define if <sys/procfs.h> has psinfo_t. */
|
|
#undef HAVE_PSINFO_T
|
|
|
|
/* Define if <sys/procfs.h> has psinfo_t.pr_pid. */
|
|
#undef HAVE_PSINFO_T_PR_PID
|
|
|
|
/* Define if <sys/procfs.h> has pstatus32_t. */
|
|
#undef HAVE_PSTATUS32_T
|
|
|
|
/* Define if <sys/procfs.h> has pstatus_t. */
|
|
#undef HAVE_PSTATUS_T
|
|
|
|
/* Define if <sys/procfs.h> has pxstatus_t. */
|
|
#undef HAVE_PXSTATUS_T
|
|
|
|
/* Define to 1 if you have the `setitimer' function. */
|
|
#undef HAVE_SETITIMER
|
|
|
|
/* Define to 1 if you have the <stddef.h> header file. */
|
|
#undef HAVE_STDDEF_H
|
|
|
|
/* Define to 1 if you have the <stdint.h> header file. */
|
|
#undef HAVE_STDINT_H
|
|
|
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
#undef HAVE_STDLIB_H
|
|
|
|
/* Define to 1 if you have the <strings.h> header file. */
|
|
#undef HAVE_STRINGS_H
|
|
|
|
/* Define to 1 if you have the <string.h> header file. */
|
|
#undef HAVE_STRING_H
|
|
|
|
/* Define to 1 if you have the `strtoull' function. */
|
|
#undef HAVE_STRTOULL
|
|
|
|
/* Define if struct core_dumpx has member c_impl */
|
|
#undef HAVE_ST_C_IMPL
|
|
|
|
/* Define to 1 if you have the `sysconf' function. */
|
|
#undef HAVE_SYSCONF
|
|
|
|
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
|
|
*/
|
|
#undef HAVE_SYS_DIR_H
|
|
|
|
/* Define to 1 if you have the <sys/file.h> header file. */
|
|
#undef HAVE_SYS_FILE_H
|
|
|
|
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
|
|
*/
|
|
#undef HAVE_SYS_NDIR_H
|
|
|
|
/* Define to 1 if you have the <sys/param.h> header file. */
|
|
#undef HAVE_SYS_PARAM_H
|
|
|
|
/* Define to 1 if you have the <sys/procfs.h> header file. */
|
|
#undef HAVE_SYS_PROCFS_H
|
|
|
|
/* Define to 1 if you have the <sys/resource.h> header file. */
|
|
#undef HAVE_SYS_RESOURCE_H
|
|
|
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
#undef HAVE_SYS_STAT_H
|
|
|
|
/* Define to 1 if you have the <sys/time.h> header file. */
|
|
#undef HAVE_SYS_TIME_H
|
|
|
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
#undef HAVE_SYS_TYPES_H
|
|
|
|
/* Define to 1 if you have the <time.h> header file. */
|
|
#undef HAVE_TIME_H
|
|
|
|
/* Define to 1 if you have the <unistd.h> header file. */
|
|
#undef HAVE_UNISTD_H
|
|
|
|
/* Define to 1 if you have the <wchar.h> header file. */
|
|
#undef HAVE_WCHAR_H
|
|
|
|
/* Define to 1 if you have the <wctype.h> header file. */
|
|
#undef HAVE_WCTYPE_H
|
|
|
|
/* Define if <sys/procfs.h> has win32_pstatus_t. */
|
|
#undef HAVE_WIN32_PSTATUS_T
|
|
|
|
/* Define to 1 if you have the <windows.h> header file. */
|
|
#undef HAVE_WINDOWS_H
|
|
|
|
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
|
*/
|
|
#undef LT_OBJDIR
|
|
|
|
/* Name of package */
|
|
#undef PACKAGE
|
|
|
|
/* Define to the address where bug reports for this package should be sent. */
|
|
#undef PACKAGE_BUGREPORT
|
|
|
|
/* Define to the full name of this package. */
|
|
#undef PACKAGE_NAME
|
|
|
|
/* Define to the full name and version of this package. */
|
|
#undef PACKAGE_STRING
|
|
|
|
/* Define to the one symbol short name of this package. */
|
|
#undef PACKAGE_TARNAME
|
|
|
|
/* Define to the home page for this package. */
|
|
#undef PACKAGE_URL
|
|
|
|
/* Define to the version of this package. */
|
|
#undef PACKAGE_VERSION
|
|
|
|
/* The size of `char', as computed by sizeof. */
|
|
#undef SIZEOF_CHAR
|
|
|
|
/* The size of `int', as computed by sizeof. */
|
|
#undef SIZEOF_INT
|
|
|
|
/* The size of `long', as computed by sizeof. */
|
|
#undef SIZEOF_LONG
|
|
|
|
/* The size of `long long', as computed by sizeof. */
|
|
#undef SIZEOF_LONG_LONG
|
|
|
|
/* The size of `off_t', as computed by sizeof. */
|
|
#undef SIZEOF_OFF_T
|
|
|
|
/* The size of `short', as computed by sizeof. */
|
|
#undef SIZEOF_SHORT
|
|
|
|
/* The size of `void *', as computed by sizeof. */
|
|
#undef SIZEOF_VOID_P
|
|
|
|
/* Define to 1 if you have the ANSI C header files. */
|
|
#undef STDC_HEADERS
|
|
|
|
/* Define if you can safely include both <string.h> and <strings.h>. */
|
|
#undef STRING_WITH_STRINGS
|
|
|
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
|
#undef TIME_WITH_SYS_TIME
|
|
|
|
/* Name of host specific header file to include in trad-core.c. */
|
|
#undef TRAD_HEADER
|
|
|
|
/* Define if 64-bit archives should always be used. */
|
|
#undef USE_64_BIT_ARCHIVE
|
|
|
|
/* Use b modifier when opening binary files? */
|
|
#undef USE_BINARY_FOPEN
|
|
|
|
/* Define if we should use leading underscore on 64 bit mingw targets */
|
|
#undef USE_MINGW64_LEADING_UNDERSCORES
|
|
|
|
/* Use mmap if it's available? */
|
|
#undef USE_MMAP
|
|
|
|
/* Define if we should default to creating read-only plt entries */
|
|
#undef USE_SECUREPLT
|
|
|
|
/* Enable extensions on AIX 3, Interix. */
|
|
#ifndef _ALL_SOURCE
|
|
# undef _ALL_SOURCE
|
|
#endif
|
|
/* Enable GNU extensions on systems that have them. */
|
|
#ifndef _GNU_SOURCE
|
|
# undef _GNU_SOURCE
|
|
#endif
|
|
/* Enable threading extensions on Solaris. */
|
|
#ifndef _POSIX_PTHREAD_SEMANTICS
|
|
# undef _POSIX_PTHREAD_SEMANTICS
|
|
#endif
|
|
/* Enable extensions on HP NonStop. */
|
|
#ifndef _TANDEM_SOURCE
|
|
# undef _TANDEM_SOURCE
|
|
#endif
|
|
/* Enable general extensions on Solaris. */
|
|
#ifndef __EXTENSIONS__
|
|
# undef __EXTENSIONS__
|
|
#endif
|
|
|
|
|
|
/* Version number of package */
|
|
#undef VERSION
|
|
|
|
/* Enable large inode numbers on Mac OS X 10.5. */
|
|
#ifndef _DARWIN_USE_64_BIT_INODE
|
|
# define _DARWIN_USE_64_BIT_INODE 1
|
|
#endif
|
|
|
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
|
#undef _FILE_OFFSET_BITS
|
|
|
|
/* Define for large files, on AIX-style hosts. */
|
|
#undef _LARGE_FILES
|
|
|
|
/* Define to 1 if on MINIX. */
|
|
#undef _MINIX
|
|
|
|
/* Define to 2 if the system does not provide POSIX.1 features except with
|
|
this defined. */
|
|
#undef _POSIX_1_SOURCE
|
|
|
|
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
|
#undef _POSIX_SOURCE
|
|
|
|
/* Use structured /proc on Solaris. */
|
|
#undef _STRUCTURED_PROC
|