version 1.23, 1999/11/07 00:21:13 |
version 1.24, 1999/12/08 08:47:10 |
Line 171 _rtld_relocate_nonplt_object(obj, rela, |
|
Line 171 _rtld_relocate_nonplt_object(obj, rela, |
|
case R_TYPE(NONE): |
case R_TYPE(NONE): |
break; |
break; |
|
|
#if defined(__i386__) || defined(__m68k__) |
#if defined(__i386__) |
case R_TYPE(GOT32): |
case R_TYPE(GOT32): |
|
|
def = _rtld_find_symdef(_rtld_objlist, rela->r_info, NULL, obj, |
def = _rtld_find_symdef(_rtld_objlist, rela->r_info, NULL, obj, |
Line 217 _rtld_relocate_nonplt_object(obj, rela, |
|
Line 217 _rtld_relocate_nonplt_object(obj, rela, |
|
defobj->strtab + def->st_name, obj->path, |
defobj->strtab + def->st_name, obj->path, |
(void *)*where, defobj->path)); |
(void *)*where, defobj->path)); |
break; |
break; |
#endif /* __i386__ || __m68k__ */ |
#endif /* __i386__ */ |
|
|
|
#if defined(__m68k__) |
|
case R_TYPE(GOT32): |
|
def = _rtld_find_symdef(_rtld_objlist, rela->r_info, NULL, obj, |
|
&defobj, false); |
|
if (def == NULL) |
|
return -1; |
|
|
|
tmp = (Elf_Addr)(defobj->relocbase + def->st_value + |
|
rela->r_addend); |
|
if (*where != tmp) |
|
*where = tmp; |
|
rdbg(dodebug, ("GOT32 %s in %s --> %p in %s", |
|
defobj->strtab + def->st_name, obj->path, |
|
(void *)*where, defobj->path)); |
|
break; |
|
|
|
case R_TYPE(PC32): |
|
def = _rtld_find_symdef(_rtld_objlist, rela->r_info, NULL, obj, |
|
&defobj, false); |
|
if (def == NULL) |
|
return -1; |
|
|
|
tmp = (Elf_Addr)(defobj->relocbase + def->st_value + |
|
rela->r_addend) - (Elf_Addr)where; |
|
if (*where != tmp) |
|
*where = tmp; |
|
rdbg(dodebug, ("PC32 %s in %s --> %p in %s", |
|
defobj->strtab + def->st_name, obj->path, |
|
(void *)*where, defobj->path)); |
|
break; |
|
|
|
case R_TYPE(32): |
|
def = _rtld_find_symdef(_rtld_objlist, rela->r_info, NULL, obj, |
|
&defobj, false); |
|
if (def == NULL) |
|
return -1; |
|
|
|
tmp = (Elf_Addr)(defobj->relocbase + def->st_value + |
|
rela->r_addend); |
|
if (*where != tmp) |
|
*where = tmp; |
|
rdbg(dodebug, ("32 %s in %s --> %p in %s", |
|
defobj->strtab + def->st_name, obj->path, |
|
(void *)*where, defobj->path)); |
|
break; |
|
#endif /* __m68k__ */ |
|
|
#if defined(__alpha__) |
#if defined(__alpha__) |
case R_TYPE(REFQUAD): |
case R_TYPE(REFQUAD): |