In the General Dynamic model, TLS variables are referenced by :
r0 = add(r24, #x@GDGOT) // R_HEX_GD_GOT... call x@GDPLT // R_HEX_GD_PLT_B22_PCREL
The linker must rebind the call x@GDPLT to call __tls_get_addr in order to dereference the tls variable.
The method Hexagon uses is similar to 32-bit SPARC.
The thunking code was very useful since it modeled what I needed to do. I would have liked to have been able to add the symbol in HexagonTLSSymbolUpdate if it was found to be needed. When I tried that the dynamic symbol table entry was not correct.