diff options
author | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2003-07-22 15:41:59 +0000 |
---|---|---|
committer | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2003-07-22 15:41:59 +0000 |
commit | c3228f12381fe247c089a315455beced163f88e0 (patch) | |
tree | b99844b4d7586619066e3d0b5182e567fdc4ee8a /gdb/dwarf2expr.c | |
parent | b41b1f95b76030c2f695d94485afab9212a20a06 (diff) | |
download | gdb-c3228f12381fe247c089a315455beced163f88e0.zip gdb-c3228f12381fe247c089a315455beced163f88e0.tar.gz gdb-c3228f12381fe247c089a315455beced163f88e0.tar.bz2 |
2003-07-22 Elena Zannoni <ezannoni@redhat.com>
* findvar.c (read_var_value): Remove case for thread local storage
variables. It is now entirely handled by the dwarf2 location
expression code.
* printcmd.c (address_info): Ditto.
* symtab.h (address_class): Remove LOC_THREAD_LOCAL_STATIC
enumeration value.
(struct symbol): Remove objfile field, which was used by
LOC_THREAD_LOCAL_STATIC only.
* dwarf2read.c (decode_locdesc): Remove is_thread_local variable.
* dwarf2loc.h (struct dwarf2_loclist_baton): Add comment about
usage of objfile pointer.
* dwarf2loc.c (locexpr_describe_location): Add case to handle
thread local variables.
Add include of objfiles.h.
* dwarf2expr.c (execute_stack_op): Add comments about thread local
storage variables.
* Makefile.in (dwarf2loc.o): Update dependencies.
Diffstat (limited to 'gdb/dwarf2expr.c')
-rw-r--r-- | gdb/dwarf2expr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c index aa391eb..3d1523b 100644 --- a/gdb/dwarf2expr.c +++ b/gdb/dwarf2expr.c @@ -641,6 +641,14 @@ execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr, break; case DW_OP_GNU_push_tls_address: + /* Variable is at a constant offset in the thread-local + storage block into the objfile for the current thread and + the dynamic linker module containing this expression. Here + we return returns the offset from that base. The top of the + stack has the offset from the beginning of the thread + control block at which the variable is located. Nothing + should follow this operator, so the top of stack would be + returned. */ result = dwarf_expr_fetch (ctx, 0); dwarf_expr_pop (ctx); result = (ctx->get_tls_address) (ctx->baton, result); |