Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 3689 → Rev 3690

/branches/dynload/uspace/lib/rtld/module.c
149,6 → 149,12
exit(1);
}
 
if (info.dynamic == NULL) {
printf("Error: '%s' is not a dynamically-linked object.\n",
name_buf);
exit(1);
}
 
/* Pending relocation. */
m->relocated = false;
 
/branches/dynload/uspace/lib/rtld/symbol.c
69,8 → 69,7
char *s_name;
elf_word bucket;
 
// module_name = m->dyn.soname;
DPRINTF("def_find_in_module('%s', %s)\n", name, module_name);
DPRINTF("def_find_in_module('%s', %s)\n", name, m->dyn.soname);
 
sym_table = m->dyn.sym_tab;
nbucket = m->dyn.hash[0];
/branches/dynload/uspace/lib/rtld/arch/ia32/src/reloc.c
124,7 → 124,7
break;
 
case R_386_PC32:
DPRINTF("fixup R_386_PC32 (b+v+a)\n");
DPRINTF("fixup R_386_PC32 (b+v+a-p)\n");
*r_ptr += sym_addr - (uint32_t) r_ptr;
break;
 
/branches/dynload/uspace/lib/libtest/_link.ld.in
2,13 → 2,15
 
PHDRS {
text PT_LOAD FLAGS(5);
interp PT_INTERP;
data PT_LOAD FLAGS(6);
dynamic PT_DYNAMIC;
}
 
SECTIONS {
. = 0x1000;
. = 0x1000 + SIZEOF_HEADERS;
 
.init ALIGN(0x1000) : SUBALIGN(0x1000) {
.init : {
*(.init);
} :text
.text : {
17,7 → 19,7
*(.rodata*);
} :text
 
.rel.plt ALIGN(0x1000) : {
.rel.plt : {
*(.rel.plt);
}
/*
28,34 → 30,36
*(.rel.*);
} :text
 
.plt ALIGN(0x1000) : SUBALIGN(0x1000) {
.plt : {
*(.plt);
} :text
 
.dynamic ALIGN(0x1000) : {
.dynamic : {
*(.dynamic);
} :text
} :text :dynamic
 
.dynsym ALIGN(0x1000) : {
.dynsym : {
*(.dynsym);
} :text
 
.dynstr ALIGN(0x1000) : {
.dynstr : {
*(.dynstr);
} :text
 
.data ALIGN(0x1000) : SUBALIGN(0x1000) {
. = . + 0x1000;
 
.data : {
*(.data);
} :data
 
.data.rel ALIGN(0x1000) : {
.data.rel : {
*(.data.rel);
} :data
 
.got ALIGN(0x1000) : SUBALIGN(0x1000) {
.got : {
*(.got);
} :data
.got.plt ALIGN(0x1000) : SUBALIGN(0x1000) {
.got.plt : {
*(.got.plt);
} :data
 
63,7 → 67,7
*(COMMON);
*(.bss);
} :data
 
/*
.tdata : {
_tdata_start = .;
*(.tdata);
75,7 → 79,7
_tbss_end = .;
} :data
_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss));
*/
. = ALIGN(0x1000);
_heap = .;
}
/branches/dynload/uspace/lib/libc/shared/arch/ia32/_link.ld.in
5,6 → 5,7
text PT_LOAD FLAGS(5);
interp PT_INTERP;
data PT_LOAD FLAGS(6);
dynamic PT_DYNAMIC;
}
 
SECTIONS {
38,11 → 39,6
*(.plt);
} :text
 
 
.dynamic : {
*(.dynamic);
} :text
 
.dynsym : {
*(.dynsym);
} :text
53,6 → 49,10
 
. = . + 0x1000;
 
.dynamic : {
*(.dynamic);
} :data :dynamic
 
.data : {
*(.data);
} :data
/branches/dynload/uspace/lib/libc/shared/arch/ia32/_lib.ld.in
2,7 → 2,9
 
PHDRS {
text PT_LOAD FLAGS(5);
interp PT_INTERP;
data PT_LOAD FLAGS(6);
dynamic PT_DYNAMIC;
}
 
SECTIONS {
34,7 → 36,7
 
.dynamic : {
*(.dynamic);
} :text
} :text :dynamic
 
.dynsym : {
*(.dynsym);
/branches/dynload/uspace/srv/loader/main.c
255,6 → 255,7
printf("Run interpreter.\n");
printf("entry point: 0x%lx\n", interp_info.entry);
printf("pcb address: 0x%lx\n", &pcb);
printf("prog dynamic: 0x%lx\n", prog_info.dynamic);
 
is_dyn_linked = true;
ipc_answer_0(rid, EOK);
/branches/dynload/uspace/srv/loader/elf_load.c
300,6 → 300,12
elf->info->interp = "/app/dload";
break;
case PT_DYNAMIC:
/* Record pointer to dynamic section into info structure */
elf->info->dynamic =
(void *)((uint8_t *)entry->p_vaddr + elf->bias);
printf("dynamic section found at 0x%x\n",
(uintptr_t)elf->info->dynamic);
break;
case PT_SHLIB:
case PT_NOTE:
case PT_LOPROC:
457,11 → 463,6
}
break;
case SHT_DYNAMIC:
/* Record pointer to dynamic section into info structure */
elf->info->dynamic =
(void *)((uint8_t *)entry->sh_addr + elf->bias);
printf("dynamic section found at 0x%x\n",
(uintptr_t)elf->info->dynamic);
break;
default:
break;
/branches/dynload/uspace/srv/pci/libpci/Makefile
5,6 → 5,7
 
LIBC_PREFIX=$(shell cd ../../../lib/libc; pwd)
 
include ../../../Makefile.config
include $(LIBC_PREFIX)/Makefile.toolchain
 
LIBS = $(LIBC_PREFIX)/libc.a