public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug debug/95841] New: Bad location expression for TLS variable
@ 2020-06-23 12:46 horsley1953 at gmail dot com
  0 siblings, 0 replies; only message in thread
From: horsley1953 at gmail dot com @ 2020-06-23 12:46 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95841

            Bug ID: 95841
           Summary: Bad location expression for TLS variable
           Product: gcc
           Version: 9.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: horsley1953 at gmail dot com
  Target Milestone: ---

In the debuginfo for glibc on fedora 31, I found a location list for a TLS
variable which makes no sense to me. Here is a dump of the DIE:

DIE (0x6d7af4): DW_TAG_compile_unit
   DIE (0x6e4831): DW_TAG_subprogram
      DIE (0x6e4854): DW_TAG_variable
         DW_AT_location(sec_offset) PCrange(0x7f1d329ba0f0-0x7f1d329ba129):
DW_OP_GNU_push_tls_address DW_OP_const8u 80
PCrange(0x7f1d329ba129-0x7f1d329ba1bb): DW_OP_reg6
PCrange(0x7f1d329ba1cb-0x7f1d329ba274): DW_OP_reg6
         DW_AT_name(strp) "replaced_arena"
         DW_AT_decl_column(data1) 0xa
         DW_AT_decl_file(data1) 0x1
         DW_AT_decl_line(data2) 0x2f7
         DW_AT_type(ref4) 0x6dc0ca
         DW_AT_GNU_locviews(sec_offset) 0x10b40e
Previous DIE: 0x6e4831
Next DIE: 0x6e4869

The location expression for the first range has the push_tls operator as the
first thing in the expression, but there is supposed to be a value on the stack
already. It is like the expression is backwards (the variable does appear to be
located at offset 80 in the TLS block).

This is on fedora 31 x86_64:

glibc-common-2.30-11.fc31.x86_64
glibc-2.30-11.fc31.x86_64
glibc-debuginfo-2.30-11.fc31.x86_64

If I compile my own test program with __thread variables, I see their location
expressions as I'd expect them with the constant first, then the push_tls
operator.

The variable above is in the get_free_list() function of arena.c in the malloc
code from glibc.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-06-23 12:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-23 12:46 [Bug debug/95841] New: Bad location expression for TLS variable horsley1953 at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).