Just cleanups, commented out unused code.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2435 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
2a2cf1b8f5
commit
077020137d
@ -4,9 +4,9 @@
|
||||
** Distributed under the terms of the NewOS License.
|
||||
*/
|
||||
|
||||
static
|
||||
int
|
||||
relocate_rel(image_t *image, struct Elf32_Rel *rel, int rel_len )
|
||||
|
||||
static int
|
||||
relocate_rel(image_t *image, struct Elf32_Rel *rel, int rel_len)
|
||||
{
|
||||
int i;
|
||||
struct Elf32_Sym *sym;
|
||||
@ -18,11 +18,11 @@ relocate_rel(image_t *image, struct Elf32_Rel *rel, int rel_len )
|
||||
# define A (*(P))
|
||||
# define B (image->regions[0].delta)
|
||||
|
||||
for(i = 0; i * (int)sizeof(struct Elf32_Rel) < rel_len; i++) {
|
||||
for (i = 0; i * (int)sizeof(struct Elf32_Rel) < rel_len; i++) {
|
||||
|
||||
unsigned type= ELF32_R_TYPE(rel[i].r_info);
|
||||
unsigned type = ELF32_R_TYPE(rel[i].r_info);
|
||||
|
||||
switch(ELF32_R_TYPE(rel[i].r_info)) {
|
||||
switch (ELF32_R_TYPE(rel[i].r_info)) {
|
||||
case R_386_32:
|
||||
case R_386_PC32:
|
||||
case R_386_GLOB_DAT:
|
||||
@ -35,41 +35,41 @@ relocate_rel(image_t *image, struct Elf32_Rel *rel, int rel_len )
|
||||
return vlErr;
|
||||
}
|
||||
}
|
||||
switch(type) {
|
||||
switch (type) {
|
||||
case R_386_NONE:
|
||||
continue;
|
||||
case R_386_32:
|
||||
final_val= S+A;
|
||||
final_val = S + A;
|
||||
break;
|
||||
case R_386_PC32:
|
||||
final_val=S+A-(addr)P;
|
||||
final_val = S + A - (addr)P;
|
||||
break;
|
||||
#if 0
|
||||
case R_386_GOT32:
|
||||
final_val= G+A;
|
||||
final_val = G + A;
|
||||
break;
|
||||
case R_386_PLT32:
|
||||
final_val= L+A-(addr)P;
|
||||
final_val = L + A - (addr)P;
|
||||
break;
|
||||
#endif
|
||||
case R_386_COPY:
|
||||
/* what ? */
|
||||
continue;
|
||||
case R_386_GLOB_DAT:
|
||||
final_val= S;
|
||||
final_val = S;
|
||||
break;
|
||||
case R_386_JMP_SLOT:
|
||||
final_val= S;
|
||||
final_val = S;
|
||||
break;
|
||||
case R_386_RELATIVE:
|
||||
final_val= B+A;
|
||||
final_val = B + A;
|
||||
break;
|
||||
#if 0
|
||||
case R_386_GOTOFF:
|
||||
final_val= S+A-GOT;
|
||||
final_val = S + A - GOT;
|
||||
break;
|
||||
case R_386_GOTPC:
|
||||
final_val= GOT+A-P;
|
||||
final_val = GOT + A - P;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
@ -77,55 +77,51 @@ relocate_rel(image_t *image, struct Elf32_Rel *rel, int rel_len )
|
||||
return ERR_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
*P= final_val;
|
||||
*P = final_val;
|
||||
}
|
||||
|
||||
# undef P
|
||||
# undef A
|
||||
# undef B
|
||||
|
||||
|
||||
return B_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* rldelf.c requires this function to be implemented on a per-cpu basis
|
||||
*/
|
||||
static
|
||||
bool
|
||||
static bool
|
||||
relocate_image(image_t *image)
|
||||
{
|
||||
int res = B_NO_ERROR;
|
||||
int i;
|
||||
status_t status = B_NO_ERROR;
|
||||
|
||||
if(image->flags & RFLAG_RELOCATED) {
|
||||
if (image->flags & RFLAG_RELOCATED)
|
||||
return true;
|
||||
}
|
||||
image->flags|= RFLAG_RELOCATED;
|
||||
|
||||
image->flags |= RFLAG_RELOCATED;
|
||||
|
||||
// deal with the rels first
|
||||
if(image->rel) {
|
||||
res= relocate_rel( image, image->rel, image->rel_len );
|
||||
|
||||
if(res) {
|
||||
if (image->rel) {
|
||||
status = relocate_rel(image, image->rel, image->rel_len);
|
||||
if (status)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(image->pltrel) {
|
||||
res= relocate_rel(image, image->pltrel, image->pltrel_len);
|
||||
|
||||
if(res) {
|
||||
if (image->pltrel) {
|
||||
status = relocate_rel(image, image->pltrel, image->pltrel_len);
|
||||
if (status)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(image->rela) {
|
||||
if (image->rela) {
|
||||
//int i;
|
||||
printf("RELA relocations not supported\n");
|
||||
return ERR_NOT_ALLOWED;
|
||||
for(i = 1; i * (int)sizeof(struct Elf32_Rela) < image->rela_len; i++) {
|
||||
printf("rela: type %d\n", ELF32_R_TYPE(image->rela[i].r_info));
|
||||
}
|
||||
return false;
|
||||
|
||||
//for (i = 1; i * (int)sizeof(struct Elf32_Rela) < image->rela_len; i++) {
|
||||
// printf("rela: type %d\n", ELF32_R_TYPE(image->rela[i].r_info));
|
||||
//}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user