aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Buettner <kevinb@redhat.com>2025-04-23 21:39:29 -0700
committerKevin Buettner <kevinb@redhat.com>2025-04-24 09:54:42 -0700
commit15b409211de9c1107904dc1c0bd246b61b386c42 (patch)
tree58fd1bb5b2686f9b81ccd62f9c4c27ceea562578
parent8cd01ac4809b102a6fde8ffc25c5e4e5d4ff1c66 (diff)
downloadbinutils-15b409211de9c1107904dc1c0bd246b61b386c42.zip
binutils-15b409211de9c1107904dc1c0bd246b61b386c42.tar.gz
binutils-15b409211de9c1107904dc1c0bd246b61b386c42.tar.bz2
Delete disabled i386 internal TLS support
As mentioned in the previous commit, this commit deletes the disabled code which could be used to implement internal TLS support for the i386 target. Tested-By: Luis Machado <luis.machado@arm.com> Approved-By: Luis Machado <luis.machado@arm.com>
-rw-r--r--gdb/i386-linux-tdep.c46
1 files changed, 0 insertions, 46 deletions
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 7ad3acb..4b05cc6 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -1237,47 +1237,6 @@ i386_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
return closure_;
}
-#if 0
-/* Disabled because fetching I386_GSBASE_REGNUM causes an internal
- error. */
-
-#include "svr4-tls-tdep.h"
-
-/* Fetch and return the TLS DTV (dynamic thread vector) address for PTID.
- Throw a suitable TLS error if something goes wrong. */
-
-static CORE_ADDR
-i386_linux_get_tls_dtv_addr (struct gdbarch *gdbarch, ptid_t ptid,
- enum svr4_tls_libc libc)
-{
- /* On i386, the thread pointer is found in the gsbase register. */
- regcache *regcache
- = get_thread_arch_regcache (current_inferior (), ptid, gdbarch);
- target_fetch_registers (regcache, I386_GSBASE_REGNUM);
- ULONGEST gsbase;
- if (regcache->cooked_read (I386_GSBASE_REGNUM, &gsbase) != REG_VALID)
- throw_error (TLS_GENERIC_ERROR, _("Unable to fetch thread pointer"));
-
- /* The thread pointer (gsbase) points at the TCB (thread control
- block). The first two members of this struct are both pointers,
- where the first will be a pointer to the TCB (i.e. it points at
- itself) and the second will be a pointer to the DTV (dynamic
- thread vector). There are many other fields too, but the one
- we care about here is the DTV pointer. Compute the address
- of the DTV pointer, fetch it, and convert it to an address. */
- CORE_ADDR dtv_ptr_addr
- = gsbase + gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
- gdb::byte_vector buf (gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT);
- if (target_read_memory (dtv_ptr_addr, buf.data (), buf.size ()) != 0)
- throw_error (TLS_GENERIC_ERROR, _("Unable to fetch DTV address"));
-
- const struct builtin_type *builtin = builtin_type (gdbarch);
- CORE_ADDR dtv_addr = gdbarch_pointer_to_address
- (gdbarch, builtin->builtin_data_ptr, buf.data ());
- return dtv_addr;
-}
-#endif
-
static void
i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
@@ -1513,11 +1472,6 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* Enable TLS support. */
set_gdbarch_fetch_tls_load_module_address (gdbarch,
svr4_fetch_objfile_link_map);
-#if 0
- set_gdbarch_get_thread_local_address (gdbarch,
- svr4_tls_get_thread_local_address);
- svr4_tls_register_tls_methods (info, gdbarch, i386_linux_get_tls_dtv_addr);
-#endif
/* Core file support. */
set_gdbarch_iterate_over_regset_sections