.section .tbss,"awT",@nobits .global tls_gd .align 4 .type tls_gd, #object .size tls_gd, 4 tls_gd: .skip 4 .global tls_ld .align 4 .type tls_ld, #object .size tls_ld, 4 tls_ld: .skip 4 .global tls_ie .align 4 .type tls_ie, #object .size tls_ie, 4 tls_ie: .skip 4 .section ".text" .LLGETPC0: retl add %o7, %l7, %l7 .align 4 .global foo .type foo, #function .proc 0104 foo: save %sp, -160, %sp sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7 call .LLGETPC0 add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7 nop;nop;nop;nop /* GD -> IE with global variable not defined in executable */ sethi %tgd_hi22(sG1), %g1 add %g1, %tgd_lo10(sG1), %g1 add %l7, %g1, %o0, %tgd_add(sG1) call __tls_get_addr, %tgd_call(sG1) nop nop;nop;nop;nop /* GD -> LE with global variable defined in executable */ sethi %tgd_hi22(tls_gd), %g1 add %g1, %tgd_lo10(tls_gd), %g1 add %l7, %g1, %o0, %tgd_add(tls_gd) call __tls_get_addr, %tgd_call(tls_gd) nop nop;nop;nop;nop /* LD -> LE with global variable defined in executable */ sethi %tldm_hi22(tls_ld), %g1 add %g1, %tldm_lo10(tls_ld), %g1 add %l7, %g1, %o0, %tldm_add(tls_ld) call __tls_get_addr, %tldm_call(tls_ld) nop sethi %tldo_hix22(tls_ld), %g1 xor %g1, %tldo_lox10(tls_ld), %g1 add %o0, %g1, %g1, %tldo_add(tls_ld) nop;nop;nop;nop /* IE -> LE with global variable defined in executable */ sethi %tie_hi22(tls_ie), %g1 add %g1, %tie_lo10(tls_ie), %g1 ldx [%l7 + %g1], %g1, %tie_ldx(tls_ie) add %g7, %g1, %g1, %tie_add(tls_ie) nop;nop;nop;nop ret restore