mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-14 19:38:01 +08:00
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.
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user