aboutsummaryrefslogtreecommitdiff
path: root/gdb/printcmd.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2008-12-02 14:51:01 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2008-12-02 14:51:01 +0000
commite0740f779c1471fbc565ceedae93dea09bc0eadf (patch)
tree2a5d38d0d285c60457f1be35f6b5ef641c863e8f /gdb/printcmd.c
parentc29235ac9f1b955c3f4c89c5c8bc4ea4d4f80ae1 (diff)
downloadfsf-binutils-gdb-e0740f779c1471fbc565ceedae93dea09bc0eadf.zip
fsf-binutils-gdb-e0740f779c1471fbc565ceedae93dea09bc0eadf.tar.gz
fsf-binutils-gdb-e0740f779c1471fbc565ceedae93dea09bc0eadf.tar.bz2
gdb/
Fix resolving external references to TLS variables. * findvar.c: Include `objfiles.h'. (read_var_value <LOC_UNRESOLVED>): New variable `obj_section'. Handle SEC_THREAD_LOCAL variables. * printcmd.c (address_info <LOC_UNRESOLVED>): Handle SEC_THREAD_LOCAL variables. gdb/testsuite/ Test resolving external references to TLS variables. * gdb.threads/tls.exp: New tests to examine A_THREAD_LOCAL and FILE2_THREAD_LOCAL. (testfile2, srcfile2): New variables. * gdb.threads/tls.c (file2_thread_local) (function_referencing_file2_thread_local): New. * gdb.threads/tls2.c: New file.
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r--gdb/printcmd.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 81638fb..6d6b915 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -1241,16 +1241,25 @@ address_info (char *exp, int from_tty)
else
{
section = SYMBOL_OBJ_SECTION (msym);
- printf_filtered (_("static storage at address "));
load_addr = SYMBOL_VALUE_ADDRESS (msym);
- fputs_filtered (paddress (load_addr), gdb_stdout);
- if (section_is_overlay (section))
+
+ if (section
+ && (section->the_bfd_section->flags & SEC_THREAD_LOCAL) != 0)
+ printf_filtered (_("a thread-local variable at offset %s "
+ "in the thread-local storage for `%s'"),
+ paddr_nz (load_addr), section->objfile->name);
+ else
{
- load_addr = overlay_unmapped_address (load_addr, section);
- printf_filtered (_(",\n -- loaded at "));
+ printf_filtered (_("static storage at address "));
fputs_filtered (paddress (load_addr), gdb_stdout);
- printf_filtered (_(" in overlay section %s"),
- section->the_bfd_section->name);
+ if (section_is_overlay (section))
+ {
+ load_addr = overlay_unmapped_address (load_addr, section);
+ printf_filtered (_(",\n -- loaded at "));
+ fputs_filtered (paddress (load_addr), gdb_stdout);
+ printf_filtered (_(" in overlay section %s"),
+ section->the_bfd_section->name);
+ }
}
}
}