)]}'
{
  "commit": "fbcdc06c238be4fd6da7fb9bff4dd4c7f749ae07",
  "tree": "598c9896e3396c675c8bef02487ba53ec2cfbeeb",
  "parents": [
    "66e4999f343f85116cf2dda137cc0f31ac793ce6"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Sun Aug 17 15:22:22 2025 -0700"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Wed Aug 20 13:53:32 2025 -0700"
  },
  "message": "i386: Add GLIBC_ABI_GNU_TLS version dependency\n\nOn Linux/i386, programs and shared libraries compiled with\n-mtls-dialect\u003dgnu may fail silently at run-time against glibc without\nthe GNU TLS run-time fix for:\n\nhttps://sourceware.org/bugzilla/show_bug.cgi?id\u003d32996\n\nThe glibc version tag, GLIBC_ABI_GNU_TLS, has been added to indicate\nthat glibc has the working GNU TLS run-time:\n\ncommit ed1b7a5a489ab555a27fad9c101ebe2e1c1ba881\nAuthor: H.J. Lu \u003chjl.tools@gmail.com\u003e\nDate:   Mon Jul 28 12:16:11 2025 -0700\n\n    i386: Add GLIBC_ABI_GNU_TLS version [BZ #33221]\n\nAdd the --gnu-tls-tag option to x86-64 ELF linker to add the\nGLIBC_ABI_GNU_TLS version dependency in output programs and shared\nlibraries when linking against glibc if input relocatable object files\ncall ___tls_get_addr.  The output will fail to load and run at run-time\nagainst glibc which doesn\u0027t define the GLIBC_ABI_GNU_TLS version.\n\nAdd the --enable-gnu-tls-tag configure option to enable --gnu-tls-tag\nby default.  If unspecified, linker will add the GLIBC_ABI_GNU_TLS\nversion dependency if input call ___tls_get_addr and libc.so defines\nthe GLIBC_ABI_GNU2_TLS version.\n\nbfd/\n\n\tPR ld/33287\n\t* elf-linker-x86.h (elf_linker_x86_params): Add\n\tgnu_tls_version_tag.\n\t* elf32-i386.c (elf_backend_add_glibc_version_dependency): Add\n\tGLIBC_ABI_GNU_TLS support.\n\t* elfxx-x86.c (_bfd_x86_elf_link_check_relocs): Set\n\thas_tls_get_addr_call to 1 if ___tls_get_addr is used.\n\t* elfxx-x86.h (elf_x86_link_hash_table): Add has_tls_get_addr_call.\n\nld/\n\n\tPR ld/33287\n\t* Mention --gnu-tls-tag, --no-gnu-tls-tag and --enable-gnu-tls-tag.\n\t* config.in: Regenerated.\n\t* configure: Likewise.\n\t* configure.ac: Add --enable-gnu-tls-tag.\n\t* ld.texi: Document --gnu-tls-tag and --enable-gnu-tls-tag.\n\t* ldlex.h (option_values): Add OPTION_GNU_TLS_VERSION_TAG and\n\tOPTION_NO_GNU_TLS_VERSION_TAG.\n\t* emultempl/elf-i386-glibc.em (elf_i386_glibc_before_parse):\n\tInitialize params.gnu_tls_version_tag.\n\t(PARSE_AND_LIST_LONGOPTS_386): New.\n\t(PARSE_AND_LIST_OPTIONS_386): Likewise.\n\t(PARSE_AND_LIST_ARGS_CASES_386): Likewise.\n\t(PARSE_AND_LIST_LONGOPTS): Append $PARSE_AND_LIST_LONGOPTS_386.\n\t(PARSE_AND_LIST_OPTIONS): Append $PARSE_AND_LIST_OPTIONS_386.\n\t(PARSE_AND_LIST_ARGS_CASES): Append\n\t$PARSE_AND_LIST_ARGS_CASES_386.\n\t* testsuite/ld-i386/gnu-tls-1.s: Likewise.\n\t* testsuite/ld-i386/gnu-tls-1a.rd: Likewise.\n\t* testsuite/ld-i386/gnu-tls-1b.rd: Likewise.\n\t* testsuite/ld-i386/i386.exp: Run PR ld/33287 tests.\n\nSigned-off-by: H.J. Lu \u003chjl.tools@gmail.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fe322152e1400ac1c173cab1596b4a74e9b2493b",
      "old_mode": 33188,
      "old_path": "bfd/elf-linker-x86.h",
      "new_id": "cdd739e572ad5290fb9afdf13f2a5de98d6e4c7b",
      "new_mode": 33188,
      "new_path": "bfd/elf-linker-x86.h"
    },
    {
      "type": "modify",
      "old_id": "9d06f1494cf43e413f349310b30ee1c603fe2a52",
      "old_mode": 33188,
      "old_path": "bfd/elf32-i386.c",
      "new_id": "657563f2f4f4f8ae614c5b2865fbfbd7a83b1da9",
      "new_mode": 33188,
      "new_path": "bfd/elf32-i386.c"
    },
    {
      "type": "modify",
      "old_id": "e2c61b85fc628654d4da08cfa90b8fbc47cdcdc9",
      "old_mode": 33188,
      "old_path": "bfd/elfxx-x86.c",
      "new_id": "3de48397e7862bd20e72e4e7555aa8b5131affa7",
      "new_mode": 33188,
      "new_path": "bfd/elfxx-x86.c"
    },
    {
      "type": "modify",
      "old_id": "791a2a2592f4a07eaa71f946baf566309eff8e7b",
      "old_mode": 33188,
      "old_path": "bfd/elfxx-x86.h",
      "new_id": "2a28987f20811acf7c70fb4feba2cdbdbe95c0d0",
      "new_mode": 33188,
      "new_path": "bfd/elfxx-x86.h"
    },
    {
      "type": "modify",
      "old_id": "bacabc8440e376b21fbc97c9dd9b8a5b00bd02d4",
      "old_mode": 33188,
      "old_path": "ld/NEWS",
      "new_id": "8794e8835226d6cb215a7263e78abefbad5ca6e6",
      "new_mode": 33188,
      "new_path": "ld/NEWS"
    },
    {
      "type": "modify",
      "old_id": "64dbc3e0c8838573ff9c2515351a7996f389b18e",
      "old_mode": 33188,
      "old_path": "ld/config.in",
      "new_id": "790efd336be489eba590a07101568a91d058a84d",
      "new_mode": 33188,
      "new_path": "ld/config.in"
    },
    {
      "type": "modify",
      "old_id": "6f1a3559964bdfd84b0929265e1e5a44f9c19799",
      "old_mode": 33261,
      "old_path": "ld/configure",
      "new_id": "fe23178cd294b4b5a9dcdf5981b970b4e932a03e",
      "new_mode": 33261,
      "new_path": "ld/configure"
    },
    {
      "type": "modify",
      "old_id": "4b9068a415e1b19cea393a8bd19e9ff86cf6cac8",
      "old_mode": 33188,
      "old_path": "ld/configure.ac",
      "new_id": "3e44e3361efb2aeb1f028c3659eafe6217ade559",
      "new_mode": 33188,
      "new_path": "ld/configure.ac"
    },
    {
      "type": "modify",
      "old_id": "547823750a49892bc01522e09cb2bd0921dbf7be",
      "old_mode": 33188,
      "old_path": "ld/emultempl/elf-i386-glibc.em",
      "new_id": "26a7296cf76afde56cf6e086fb389519f895e007",
      "new_mode": 33188,
      "new_path": "ld/emultempl/elf-i386-glibc.em"
    },
    {
      "type": "modify",
      "old_id": "0e13f7d8e35a3428e9a4eb4c2ed1dcf7458f04da",
      "old_mode": 33188,
      "old_path": "ld/ld.texi",
      "new_id": "cf750d15259e5b1748362da2b43097f81cab5170",
      "new_mode": 33188,
      "new_path": "ld/ld.texi"
    },
    {
      "type": "modify",
      "old_id": "020712df0e7355f5334315cc59ae21843de05709",
      "old_mode": 33188,
      "old_path": "ld/ldlex.h",
      "new_id": "24cac1cdfc0f4f5d19f2dc0f3bcab907537c631e",
      "new_mode": 33188,
      "new_path": "ld/ldlex.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "02ae207a9b5984955d6bd177168c5fcf14cc1553",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-i386/gnu-tls-1.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65d889de7d9e262673b47210f782c16aaaf50b89",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-i386/gnu-tls-1a.rd"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "02006e47da1952c5dc303117876dae3d33af7855",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-i386/gnu-tls-1b.rd"
    },
    {
      "type": "modify",
      "old_id": "622c06eefe7ebb61efa2257d86d695081931982e",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-i386/i386.exp",
      "new_id": "5b189ecb7f7f78b4e8fed073a9be7fd1cf7e0e62",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-i386/i386.exp"
    }
  ]
}
