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:
Axel Dörfler 2003-01-12 16:54:38 +00:00
parent 2a2cf1b8f5
commit 077020137d
1 changed files with 36 additions and 40 deletions

View File

@ -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;