mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
On Linux/i386, programs and shared libraries compiled with -mtls-dialect=gnu may fail silently at run-time against glibc without the GNU TLS run-time fix for: https://sourceware.org/bugzilla/show_bug.cgi?id=32996 The glibc version tag, GLIBC_ABI_GNU_TLS, has been added to indicate that glibc has the working GNU TLS run-time: commit ed1b7a5a489ab555a27fad9c101ebe2e1c1ba881 Author: H.J. Lu <hjl.tools@gmail.com> Date: Mon Jul 28 12:16:11 2025 -0700 i386: Add GLIBC_ABI_GNU_TLS version [BZ #33221] Add the --gnu-tls-tag option to x86-64 ELF linker to add the GLIBC_ABI_GNU_TLS version dependency in output programs and shared libraries when linking against glibc if input relocatable object files call ___tls_get_addr. The output will fail to load and run at run-time against glibc which doesn't define the GLIBC_ABI_GNU_TLS version. Add the --enable-gnu-tls-tag configure option to enable --gnu-tls-tag by default. If unspecified, linker will add the GLIBC_ABI_GNU_TLS version dependency if input call ___tls_get_addr and libc.so defines the GLIBC_ABI_GNU2_TLS version. bfd/ PR ld/33287 * elf-linker-x86.h (elf_linker_x86_params): Add gnu_tls_version_tag. * elf32-i386.c (elf_backend_add_glibc_version_dependency): Add GLIBC_ABI_GNU_TLS support. * elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Set has_tls_get_addr_call to 1 if ___tls_get_addr is used. * elfxx-x86.h (elf_x86_link_hash_table): Add has_tls_get_addr_call. ld/ PR ld/33287 * Mention --gnu-tls-tag, --no-gnu-tls-tag and --enable-gnu-tls-tag. * config.in: Regenerated. * configure: Likewise. * configure.ac: Add --enable-gnu-tls-tag. * ld.texi: Document --gnu-tls-tag and --enable-gnu-tls-tag. * ldlex.h (option_values): Add OPTION_GNU_TLS_VERSION_TAG and OPTION_NO_GNU_TLS_VERSION_TAG. * emultempl/elf-i386-glibc.em (elf_i386_glibc_before_parse): Initialize params.gnu_tls_version_tag. (PARSE_AND_LIST_LONGOPTS_386): New. (PARSE_AND_LIST_OPTIONS_386): Likewise. (PARSE_AND_LIST_ARGS_CASES_386): Likewise. (PARSE_AND_LIST_LONGOPTS): Append $PARSE_AND_LIST_LONGOPTS_386. (PARSE_AND_LIST_OPTIONS): Append $PARSE_AND_LIST_OPTIONS_386. (PARSE_AND_LIST_ARGS_CASES): Append $PARSE_AND_LIST_ARGS_CASES_386. * testsuite/ld-i386/gnu-tls-1.s: Likewise. * testsuite/ld-i386/gnu-tls-1a.rd: Likewise. * testsuite/ld-i386/gnu-tls-1b.rd: Likewise. * testsuite/ld-i386/i386.exp: Run PR ld/33287 tests. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
307 lines
8.4 KiB
Plaintext
307 lines
8.4 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
|
|
|
|
/* Default compression algorithm for --enable-compressed-debug-sections. */
|
|
#undef DEFAULT_COMPRESSED_DEBUG_ALGORITHM
|
|
|
|
/* Define to 1 if you want to emit gnu hash in the ELF linker by default. */
|
|
#undef DEFAULT_EMIT_GNU_HASH
|
|
|
|
/* Define to 1 if you want to emit sysv hash in the ELF linker by default. */
|
|
#undef DEFAULT_EMIT_SYSV_HASH
|
|
|
|
/* Define if you want compressed debug sections by default. */
|
|
#undef DEFAULT_FLAG_COMPRESS_DEBUG
|
|
|
|
/* Define to 1 if you want to turn executable stack warnings into errors by
|
|
default. */
|
|
#undef DEFAULT_LD_ERROR_EXECSTACK
|
|
|
|
/* Define to 1 if you want to turn executable segment warnings into errors by
|
|
default. */
|
|
#undef DEFAULT_LD_ERROR_RWX_SEGMENTS
|
|
|
|
/* Define to 0 if you want to disable the generation of an executable stack
|
|
when a .note-GNU-stack section is missing. */
|
|
#undef DEFAULT_LD_EXECSTACK
|
|
|
|
/* Define to 1 if you want to enable --gnu2-tls-tag in ELF i386/x86-64 linker
|
|
by default. */
|
|
#undef DEFAULT_LD_GNU2_TLS_TAG
|
|
|
|
/* Define to 1 if you want to enable --gnu-tls-tag in ELF i386 linker by
|
|
default. */
|
|
#undef DEFAULT_LD_GNU_TLS_TAG
|
|
|
|
/* Define to 1 if you want to enable --rosegment in the ELF linker by default.
|
|
*/
|
|
#undef DEFAULT_LD_ROSEGMENT
|
|
|
|
/* The default method for DT_TEXTREL check in ELF linker. */
|
|
#undef DEFAULT_LD_TEXTREL_CHECK
|
|
|
|
/* Define to 1 if DT_TEXTREL check is warning in ELF linker by default. */
|
|
#undef DEFAULT_LD_TEXTREL_CHECK_WARNING
|
|
|
|
/* Define to 1 if you want to enable --warn-execstack in ELF linker by
|
|
default. */
|
|
#undef DEFAULT_LD_WARN_EXECSTACK
|
|
|
|
/* Define to 0 if you want to disable --warn-rwx-segments in ELF linker by
|
|
default. */
|
|
#undef DEFAULT_LD_WARN_RWX_SEGMENTS
|
|
|
|
/* Define to 1 if you want to enable -z mark-plt in ELF x86-64 linker by
|
|
default. */
|
|
#undef DEFAULT_LD_Z_MARK_PLT
|
|
|
|
/* Define to 1 if you want to enable -z memory_seal in ELF linker by default.
|
|
*/
|
|
#undef DEFAULT_LD_Z_MEMORY_SEAL
|
|
|
|
/* Define to 1 if you want to enable -z relro in ELF linker by default. */
|
|
#undef DEFAULT_LD_Z_RELRO
|
|
|
|
/* 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 you want to set DT_RUNPATH instead of DT_RPATH by default.
|
|
*/
|
|
#undef DEFAULT_NEW_DTAGS
|
|
|
|
/* Define if you want run-time sanity checks. */
|
|
#undef ENABLE_CHECKING
|
|
|
|
/* Handle .ctf type-info sections */
|
|
#undef ENABLE_LIBCTF
|
|
|
|
/* Define to 1 if translation of program messages to the user's native
|
|
language is requested. */
|
|
#undef ENABLE_NLS
|
|
|
|
/* Additional extension a shared object might have. */
|
|
#undef EXTRA_SHLIB_EXTENSION
|
|
|
|
/* Define to choose default GOT handling scheme */
|
|
#undef GOT_HANDLING_DEFAULT
|
|
|
|
/* Define to 1 if you have the Mac OS X function
|
|
CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */
|
|
#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES
|
|
|
|
/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
|
|
the CoreFoundation framework. */
|
|
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
|
|
|
|
/* Define to 1 if you have the `close' function. */
|
|
#undef HAVE_CLOSE
|
|
|
|
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
|
*/
|
|
#undef HAVE_DCGETTEXT
|
|
|
|
/* Define to 1 if you have the declaration of `environ', and to 0 if you
|
|
don't. */
|
|
#undef HAVE_DECL_ENVIRON
|
|
|
|
/* Is the prototype for getopt in <unistd.h> in the expected format? */
|
|
#undef HAVE_DECL_GETOPT
|
|
|
|
/* 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 <dlfcn.h> header file. */
|
|
#undef HAVE_DLFCN_H
|
|
|
|
/* Define to 1 if you have the <elf-hints.h> header file. */
|
|
#undef HAVE_ELF_HINTS_H
|
|
|
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
|
#undef HAVE_FCNTL_H
|
|
|
|
/* Define to 1 if you have the `getpagesize' function. */
|
|
#undef HAVE_GETPAGESIZE
|
|
|
|
/* Define to 1 if you have the `getrusage' function. */
|
|
#undef HAVE_GETRUSAGE
|
|
|
|
/* Define if the GNU gettext() function is already present or preinstalled. */
|
|
#undef HAVE_GETTEXT
|
|
|
|
/* Define to 1 if you have the `glob' function. */
|
|
#undef HAVE_GLOB
|
|
|
|
/* Define if you have the iconv() function and it works. */
|
|
#undef HAVE_ICONV
|
|
|
|
/* Define .init_array/.fini_array sections are available and working. */
|
|
#undef HAVE_INITFINI_ARRAY
|
|
|
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
#undef HAVE_INTTYPES_H
|
|
|
|
/* The jansson library is to be used */
|
|
#undef HAVE_JANSSON
|
|
|
|
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
|
#undef HAVE_LC_MESSAGES
|
|
|
|
/* Define to 1 if you have the <limits.h> header file. */
|
|
#undef HAVE_LIMITS_H
|
|
|
|
/* Define to 1 if you have the `lseek' function. */
|
|
#undef HAVE_LSEEK
|
|
|
|
/* Define to 1 if you have the <memory.h> header file. */
|
|
#undef HAVE_MEMORY_H
|
|
|
|
/* Define to 1 if you have the `mkstemp' function. */
|
|
#undef HAVE_MKSTEMP
|
|
|
|
/* Define to 1 if you have a working `mmap' system call. */
|
|
#undef HAVE_MMAP
|
|
|
|
/* Define to 1 if you have the `open' function. */
|
|
#undef HAVE_OPEN
|
|
|
|
/* Define to 1 if you have the `realpath' function. */
|
|
#undef HAVE_REALPATH
|
|
|
|
/* 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 <sys/file.h> header file. */
|
|
#undef HAVE_SYS_FILE_H
|
|
|
|
/* Define to 1 if you have the <sys/mman.h> header file. */
|
|
#undef HAVE_SYS_MMAN_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/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 <unistd.h> header file. */
|
|
#undef HAVE_UNISTD_H
|
|
|
|
/* Define to 1 if you have the `waitpid' function. */
|
|
#undef HAVE_WAITPID
|
|
|
|
/* Define to 1 if you have the <windows.h> header file. */
|
|
#undef HAVE_WINDOWS_H
|
|
|
|
/* Define to 1 if zstd is enabled. */
|
|
#undef HAVE_ZSTD
|
|
|
|
/* 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
|
|
|
|
/* Define to 1 if you have the ANSI C header files. */
|
|
#undef STDC_HEADERS
|
|
|
|
/* Define to 1 if you want to support the --error-handling-script command line
|
|
option. */
|
|
#undef SUPPORT_ERROR_HANDLING_SCRIPT
|
|
|
|
/* Use b modifier when opening binary files? */
|
|
#undef USE_BINARY_FOPEN
|
|
|
|
/* 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
|
|
|
|
/* whether to use inline xxhash */
|
|
#undef WITH_XXHASH
|
|
|
|
/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
|
|
`char[]'. */
|
|
#undef YYTEXT_POINTER
|
|
|
|
/* 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
|