Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2997 → Rev 2998

/branches/dynload/uspace/lib/rtld/arch/ppc32/src/reloc.c
83,7 → 83,6
{
uint32_t *plt;
uint32_t *_plt_ent;
int i;
 
plt = m->dyn.plt_got;
if (!plt) {
191,12 → 190,7
printf("dest name: '%s'\n", dest->dyn.soname);
printf("dest bias: 0x%x\n", dest->bias);
if (sym_def) {
if (sym_def->st_shndx == SHN_ABS) {
/* Do not add bias to absolute symbols */
sym_addr = sym_def->st_value;
} else {
sym_addr = sym_def->st_value + dest->bias;
}
sym_addr = symbol_get_addr(sym_def, dest);
printf("symbol definition found, addr=0x%x\n", sym_addr);
} else {
printf("symbol definition not found\n");
214,7 → 208,7
while(1);
}
//_plt_table[pidx] = sym_addr;
plt[18+2*pidx] = _b(sym_addr, &plt[18+2*pidx]);
plt[18+2*pidx] = _b((void *)sym_addr, &plt[18+2*pidx]);
break;
 
case R_PPC_ADDR32:
/branches/dynload/uspace/lib/rtld/arch/ppc32/src/bootstrap.c
229,12 → 229,12
// r_ptr should point to a plt entry...
uint32_t pidx = (r_ptr - _plt_ent) / 2;
if (pidx >= plt_n) {
kputint(0xee00ee0ee00);
kputint(0xee00ee00);
while(1);
}
// _plt_table[pidx] = sym_addr;
// kputint(pidx);
plt[18+2*pidx] = _b(sym_addr, &plt[18+2*pidx]);
plt[18+2*pidx] = _b((void *)sym_addr, &plt[18+2*pidx]);
// kputint(&plt[18]);
// kputint(plt[18]);
// while(1);
/branches/dynload/uspace/lib/rtld/arch/ia32/src/reloc.c
99,12 → 99,7
// printf("dest name: '%s'\n", dest->dyn.soname);
// printf("dest bias: 0x%x\n", dest->bias);
if (sym_def) {
if (sym_def->st_shndx == SHN_ABS) {
/* Do not add bias to absolute symbols */
sym_addr = sym_def->st_value;
} else {
sym_addr = sym_def->st_value + dest->bias;
}
sym_addr = symbol_get_addr(sym_def, dest);
// printf("symbol definition found, addr=0x%x\n", sym_addr);
} else {
printf("symbol definition not found\n");