Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 3690 → Rev 3689

/branches/dynload/uspace/lib/rtld/module.c
149,12 → 149,6
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,7 → 69,8
char *s_name;
elf_word bucket;
 
DPRINTF("def_find_in_module('%s', %s)\n", name, m->dyn.soname);
// module_name = m->dyn.soname;
DPRINTF("def_find_in_module('%s', %s)\n", name, module_name);
 
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-p)\n");
DPRINTF("fixup R_386_PC32 (b+v+a)\n");
*r_ptr += sym_addr - (uint32_t) r_ptr;
break;
 
/branches/dynload/uspace/lib/libtest/_link.ld.in
2,15 → 2,13
 
PHDRS {
text PT_LOAD FLAGS(5);
interp PT_INTERP;
data PT_LOAD FLAGS(6);
dynamic PT_DYNAMIC;
}
 
SECTIONS {
. = 0x1000 + SIZEOF_HEADERS;
. = 0x1000;
 
.init : {
.init ALIGN(0x1000) : SUBALIGN(0x1000) {
*(.init);
} :text
.text : {
19,7 → 17,7
*(.rodata*);
} :text
 
.rel.plt : {
.rel.plt ALIGN(0x1000) : {
*(.rel.plt);
}
/*
30,36 → 28,34
*(.rel.*);
} :text
 
.plt : {
.plt ALIGN(0x1000) : SUBALIGN(0x1000) {
*(.plt);
} :text
 
.dynamic : {
.dynamic ALIGN(0x1000) : {
*(.dynamic);
} :text :dynamic
} :text
 
.dynsym : {
.dynsym ALIGN(0x1000) : {
*(.dynsym);
} :text
 
.dynstr : {
.dynstr ALIGN(0x1000) : {
*(.dynstr);
} :text
 
. = . + 0x1000;
 
.data : {
.data ALIGN(0x1000) : SUBALIGN(0x1000) {
*(.data);
} :data
 
.data.rel : {
.data.rel ALIGN(0x1000) : {
*(.data.rel);
} :data
 
.got : {
.got ALIGN(0x1000) : SUBALIGN(0x1000) {
*(.got);
} :data
.got.plt : {
.got.plt ALIGN(0x1000) : SUBALIGN(0x1000) {
*(.got.plt);
} :data
 
67,7 → 63,7
*(COMMON);
*(.bss);
} :data
/*
 
.tdata : {
_tdata_start = .;
*(.tdata);
79,7 → 75,7
_tbss_end = .;
} :data
_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss));
*/
. = ALIGN(0x1000);
_heap = .;
}
/branches/dynload/uspace/lib/libc/shared/arch/ia32/_lib.ld.in
2,9 → 2,7
 
PHDRS {
text PT_LOAD FLAGS(5);
interp PT_INTERP;
data PT_LOAD FLAGS(6);
dynamic PT_DYNAMIC;
}
 
SECTIONS {
36,7 → 34,7
 
.dynamic : {
*(.dynamic);
} :text :dynamic
} :text
 
.dynsym : {
*(.dynsym);
/branches/dynload/uspace/lib/libc/shared/arch/ia32/_link.ld.in
5,7 → 5,6
text PT_LOAD FLAGS(5);
interp PT_INTERP;
data PT_LOAD FLAGS(6);
dynamic PT_DYNAMIC;
}
 
SECTIONS {
39,6 → 38,11
*(.plt);
} :text
 
 
.dynamic : {
*(.dynamic);
} :text
 
.dynsym : {
*(.dynsym);
} :text
49,10 → 53,6
 
. = . + 0x1000;
 
.dynamic : {
*(.dynamic);
} :data :dynamic
 
.data : {
*(.data);
} :data
/branches/dynload/uspace/srv/loader/elf_load.c
300,12 → 300,6
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:
463,6 → 457,11
}
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/loader/main.c
255,7 → 255,6
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/pci/libpci/Makefile
5,7 → 5,6
 
LIBC_PREFIX=$(shell cd ../../../lib/libc; pwd)
 
include ../../../Makefile.config
include $(LIBC_PREFIX)/Makefile.toolchain
 
LIBS = $(LIBC_PREFIX)/libc.a