Dave Korn wrote:
> Hi all, and Ping! Alex :)
>
> Since the recent vta changes, libgomp build seems to be broken on at least
> some platforms that rely on tls emulation. All references to tls variables in
> the generated source are prefixed with "__emutls_v" by the action of
> get_emutls_object_name() in varasm.c, but the debug information ends up with a
> reference to the un-prefixed original version of the variable's name.
The problem appears to lie in the generation of the NOTE_VAR_LOCATION for a
local variable in the affected function:
> (gdb) call debug_tree(0x7fe190c0)
> <var_decl 0x7fe190c0 gomp_tls_data
> type <record_type 0x7fe7df90 gomp_thread asm_written type_0 BLK
> size <integer_cst 0x7fe2a8e0 constant 416>
> unit size <integer_cst 0x7fe87dc0 constant 52>
> align 32 symtab 2145789512 alias set 7 canonical type 0x7fe7df90
> fields <field_decl 0x7fe18ca0 fn type <pointer_type 0x7fda5e10>
> unsigned SI file /gnu/gcc/gcc/libgomp/libgomp.h line 327 col 10
> size <integer_cst 0x7fef0580 constant 32>
> unit size <integer_cst 0x7fef0320 constant 4>
> align 32 offset_align 128
> offset <integer_cst 0x7fef0340 constant 0>
> bit offset <integer_cst 0x7fef0b60 constant 0> context
> <record_type 0x7fe7df90 gomp_thread> chain <field_decl 0x7fe18d00 data>>
> context <translation_unit_decl 0x7fcac550 D.3329>
> pointer_to_this <pointer_type 0x7fe7e230> chain <type_decl 0x7fe7e000
> D.2396>>
> addressable used public external tls-local-exec BLK file
> /gnu/gcc/gcc/libgomp/libgomp.h line 361 col 36 size <integer_cst 0x7fe2a8e0
> 416> unit size <integer_cst 0x7fe87dc0 52>
> align 32
> (mem/s/c:BLK (symbol_ref:SI ("gomp_tls_data") [flags 0x42] <var_decl
> 0x7fe190c0 gomp_tls_data>) [7 gomp_tls_data+0 S52 A32]) chain <function_decl
> 0x7fdfb000 gomp_new_icv>>
> (gdb)
Notice that in this var_decl, the DECL_TLS_MODEL is "tls-local-exec", but
this is not reflected in the RTL, which has no tls model set in bits 3:5 of
the flags. I'm now about to start digging into where this note is created; as
before, if anyone has any pointers or theories, that would really help speed
me on my way.
cheers,
DaveK