Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Elena Zannoni <ezannoni@redhat.com>
To: gdb@sources.redhat.com
Subject: What to do with info addr and location expressions
Date: Fri, 18 Jul 2003 14:54:00 -0000	[thread overview]
Message-ID: <16152.3014.959070.885970@localhost.redhat.com> (raw)


I was looking at the tls tests, and was trying to understand why
Michael was seeing failures and I wasn't. I discovered that I was
testing the old RH gdb version which was based on a snapshot taken
befor the dwarf2loc* and dwarf2expr* files where introduced.

Turns out that we lost a whole lot of information in the 'info address'
command.

Before the change:

(gdb) info address a_thread_local
Symbol "a_thread_local" is a thread-local variable at offset 0 in the thread-local storage for `/usr/src/redhat/BUILD/gdb+dejagnu-20021129-build/gdb/testsuite/gdb.threads/tls'.
(gdb) info address another_thread_local
Symbol "another_thread_local" is a thread-local variable at offset 4 in the thread-local storage for `/usr/src/redhat/BUILD/gdb+dejagnu-20021129-build/gdb/testsuite/gdb.threads/tls'.



after the change:


(gdb) info address a_thread_local
Symbol "a_thread_local" is a variable with complex or multiple locations (DWARF2).
(gdb) info address another_thread_local
Symbol "another_thread_local" is a variable with complex or multiple locations (DWARF2).


Seems to me like a regression because we have lost some information. 


Is there any way to fix this? I.e. is there any way to recalculate the
values as part of info address? Could info address call
locexpr_read_variable or a variant of it? I always found info address
quite useful.


For the particular case at hand one could "cheat" and do like it was
done before, where, upon reading the value from the top of the stack
(which for the DW_GNU_push_tls_address case is the offset), such value
would be saved in the SYMBOL_VALUE field. If it was there, info
address would be able to access it. The offset is not changing over
time.

BTW, when this changes were checked in, a few things used by TLS
weren't cleaned up properly, like the global is_thread_local and the
enum value LOC_THREAD_LOCAL_STATIC, with the cases in printcmd.c and
findvar.c.


elena



             reply	other threads:[~2003-07-18 14:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-18 14:54 Elena Zannoni [this message]
2003-07-18 15:30 ` Daniel Jacobowitz
2003-07-18 15:50   ` Andrew Cagney
2003-07-21 11:14     ` Nick Clifton
2003-07-21 17:54       ` Jim Blandy
2003-07-21 19:12         ` Andrew Cagney
2003-07-21 20:07         ` Nick Clifton
2003-07-21 20:14           ` Daniel Berlin
2003-07-21 20:35             ` Doug Evans
2003-07-21 20:33           ` Andrew Cagney
2003-07-21 20:45             ` DJ Delorie
2003-07-22  9:20               ` Nick Clifton
2003-07-22 13:26                 ` DJ Delorie
2003-07-22 15:33                   ` Nick Clifton
2003-07-22 15:39                     ` Daniel Jacobowitz
2003-07-18 16:01   ` Elena Zannoni
2003-07-18 16:11     ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=16152.3014.959070.885970@localhost.redhat.com \
    --to=ezannoni@redhat.com \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox