diff --git a/src/kernel/apps/rld/arch/x86/rldreloc.inc b/src/kernel/apps/rld/arch/x86/rldreloc.inc index c1a25f0bd0..f63df9b770 100644 --- a/src/kernel/apps/rld/arch/x86/rldreloc.inc +++ b/src/kernel/apps/rld/arch/x86/rldreloc.inc @@ -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;