Browse Source

add tlsdesc support for i386

master
Rich Felker 12 years ago
parent
commit
4e0b4a5de7
  1. 2
      arch/i386/reloc.h
  2. 27
      src/ldso/i386/tlsdesc.s

2
arch/i386/reloc.h

@ -26,6 +26,8 @@ static int remap_rel(int type)
return REL_TPOFF;
case R_386_TLS_TPOFF32:
return REL_TPOFF_NEG;
case R_386_TLS_DESC:
return REL_TLSDESC;
}
return 0;
}

27
src/ldso/i386/tlsdesc.s

@ -0,0 +1,27 @@
.text
.global __tlsdesc_static
.type __tlsdesc_static,@function
__tlsdesc_static:
mov 4(%eax),%eax
ret
.global __tlsdesc_dynamic
.type __tlsdesc_dynamic,@function
__tlsdesc_dynamic:
mov 4(%eax),%eax
push %edx
mov %gs:4,%edx
push %ecx
mov (%eax),%ecx
cmp %ecx,(%edx)
jc 1f
mov 4(%eax),%eax
add (%edx,%ecx,4),%eax
2: pop %ecx
sub %gs:0,%eax
pop %edx
ret
1: push %eax
call __tls_get_addr
pop %ecx
jmp 2b
Loading…
Cancel
Save