Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2965 → Rev 2966

/branches/dynload/uspace/lib/rtld/include/elf_dyn.h
69,6 → 69,37
typedef struct elf32_rela elf_rela_t;
#endif
 
/*
* Dynamic array tags
*/
#define DT_NULL 0
#define DT_NEEDED 1
#define DT_PLTRELSZ 2
#define DT_PLTGOT 3
#define DT_HASH 4
#define DT_STRTAB 5
#define DT_SYMTAB 6
#define DT_RELA 7
#define DT_RELASZ 8
#define DT_RELAENT 9
#define DT_STRSZ 10
#define DT_SYMENT 11
#define DT_INIT 12
#define DT_FINI 13
#define DT_SONAME 14
#define DT_RPATH 15
#define DT_SYMBOLIC 16
#define DT_REL 17
#define DT_RELSZ 18
#define DT_RELENT 19
#define DT_PLTREL 20
#define DT_DEBUG 21
#define DT_TEXTREL 22
#define DT_JMPREL 23
#define DT_BIND_NOW 24
#define DT_LOPROC 0x70000000
#define DT_HIPROC 0x7fffffff
 
#endif
 
/** @}
/branches/dynload/uspace/lib/rtld/arch/ia32/src/bootstrap.c
106,14 → 106,14
dval = dynamic[i].d_un.d_val;
 
switch (dynamic[i].d_tag) {
case 2/* DT_PLTRELSZ */: jmp_rel_entries = dval/8; break;
case 23/* DT_JMPREL */: jmp_rel_table = dptr; break;
case 3 /* DT_PLTGOT */:
case DT_PLTRELSZ: jmp_rel_entries = dval/8; break;
case DT_JMPREL: jmp_rel_table = dptr; break;
case DT_PLTGOT:
/* GOT address */
got = dptr; break;
case 6 /* DT_SYMTAB */ : sym_table = dptr; break;
case 17 /* DT_REL */ : rel_table = dptr; break;
case 18 /* DT_RELSZ */ : rel_entries = dval / 8; break;
case DT_SYMTAB: sym_table = dptr; break;
case DT_REL: rel_table = dptr; break;
case DT_RELSZ: rel_entries = dval / 8; break;
default: break;
}
 
139,8 → 139,8
kputint(r_offset);
 
switch (rel_type) {
case 6: /* R_386_GLOB_DAT */
case 7: /* R_386_JUMP_SLOT */
case R_386_GLOB_DAT:
case R_386_JUMP_SLOT:
kputint(16);
sym_idx = ELF32_R_SYM(r_info);
 
151,7 → 151,7
*(unsigned *)(r_offset+bias) = sym_addr;
break;
 
case 1: /* R_386_32 */
case R_386_32:
kputint(16);
sym_idx = ELF32_R_SYM(r_info);
 
162,7 → 162,7
*(unsigned *)(r_offset+bias) += sym_addr;
break;
case 8: /* R_386_RELATIVE */
case R_386_RELATIVE:
kputint(16);
*(unsigned *)(r_offset+bias) += bias;
break;
182,8 → 182,8
kputint(r_offset);
 
switch (rel_type) {
case 6: /* R_386_GLOB_DAT */
case 7: /* R_386_JUMP_SLOT */
case R_386_GLOB_DAT:
case R_386_JUMP_SLOT:
kputint(16);
sym_idx = ELF32_R_SYM(r_info);
 
194,7 → 194,7
*(unsigned *)(r_offset+bias) = sym_addr;
break;
 
case 1: /* R_386_32 */
case R_386_32:
kputint(16);
sym_idx = ELF32_R_SYM(r_info);
 
205,7 → 205,7
*(unsigned *)(r_offset+bias) += sym_addr;
break;
case 8: /* R_386_RELATIVE */
case R_386_RELATIVE:
kputint(16);
*(unsigned *)(r_offset+bias) += bias;
break;