/branches/dynload/uspace/lib/rtld/arch/ia32/_link.ld.in |
---|
6,7 → 6,7 |
} |
SECTIONS { |
. = 0x1000; |
. = 0x40001000; |
.init ALIGN(0x1000) : SUBALIGN(0x1000) { |
*(.init); |
/branches/dynload/uspace/lib/rtld/arch/ia32/src/runtime.c |
---|
58,20 → 58,20 |
void __attribute__ ((__regparm__ (1))) |
*___tls_get_addr(tls_index *ti); |
void __attribute__ ((__regparm__ (1))) |
*___tls_get_addr(tls_index *ti) |
{ |
size_t tls_size; |
uint8_t *tls; |
//void __attribute__ ((__regparm__ (1))) |
// *___tls_get_addr(tls_index *ti) |
//{ |
// size_t tls_size; |
// uint8_t *tls; |
// |
// /* Calculate size of TLS block */ |
// tls_size = ALIGN_UP(&_tbss_end - &_tdata_start, &_tls_alignment); |
// |
// /* The TLS block is just before TCB */ |
// tls = (uint8_t *)__tcb_get() - tls_size; |
// |
// return tls + ti->ti_offset; |
//} |
/* Calculate size of TLS block */ |
tls_size = ALIGN_UP(&_tbss_end - &_tdata_start, &_tls_alignment); |
/* The TLS block is just before TCB */ |
tls = (uint8_t *)__tcb_get() - tls_size; |
return tls + ti->ti_offset; |
} |
/** @} |
*/ |
/branches/dynload/uspace/lib/rtld/arch/ia32/src/bootstrap.c |
---|
105,7 → 105,7 |
rel_entries = 0; |
jmp_rel_table = 0; |
jmp_rel_entries = 0; |
/* |
i = 0; |
while (dynamic[i].d_tag != 0) { |
dptr = (void *)(dynamic[i].d_un.d_val + bias); |
114,9 → 114,9 |
switch (dynamic[i].d_tag) { |
case DT_PLTRELSZ: jmp_rel_entries = dval/8; break; |
case DT_JMPREL: jmp_rel_table = dptr; break; |
case DT_PLTGOT: |
case DT_PLTGOT:*/ |
/* GOT address */ |
got = dptr; break; |
/*got = dptr; break; |
case DT_SYMTAB: sym_table = dptr; break; |
case DT_REL: rel_table = dptr; break; |
case DT_RELSZ: rel_entries = dval / 8; break; |
125,7 → 125,7 |
++i; |
} |
*/ |
// kputint(1); |
// kputint((unsigned)sym_table); |
// kputint((unsigned)rel_table); |
133,7 → 133,7 |
/* Now relocate all our dynsyms */ |
// kputint(-1); |
/* |
for (i=0; i<rel_entries; i++) { |
kputint(i); |
r_offset = rel_table[i].r_offset; |
174,9 → 174,9 |
break; |
} |
} |
*/ |
kputint(-1); |
/* |
for (i=0; i<jmp_rel_entries; i++) { |
kputint(i); |
r_offset = jmp_rel_table[i].r_offset; |
217,7 → 217,7 |
break; |
} |
} |
*/ |
kputint(-1); |
kputint(0x42); |