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

--- Comment #1 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <h...@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fbcdc06c238be4fd6da7fb9bff4dd4c7f749ae07

commit fbcdc06c238be4fd6da7fb9bff4dd4c7f749ae07
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Sun Aug 17 15:22:22 2025 -0700

    i386: Add GLIBC_ABI_GNU_TLS version dependency

    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.to...@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.to...@gmail.com>

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

Reply via email to