Changeset 08c9f7d in mainline
- Timestamp:
- 2009-06-16T20:09:52Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0471786
- Parents:
- a624cbfd
- Location:
- uspace/srv/loader
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/loader/arch/ia32/ia32.s
ra624cbfd r08c9f7d 47 47 pop %ebp 48 48 49 jmp %eax49 jmp *%eax -
uspace/srv/loader/elf_load.c
ra624cbfd r08c9f7d 75 75 76 76 /** Read until the buffer is read in its entirety. */ 77 static int my_read(int fd, char*buf, size_t len)77 static int my_read(int fd, void *buf, size_t len) 78 78 { 79 79 int cnt = 0; … … 332 332 uintptr_t bias; 333 333 uintptr_t base; 334 void *seg_ptr; 335 uintptr_t seg_addr; 334 336 size_t mem_sz; 335 337 int rc; 336 338 337 DPRINTF("Load segment at addr 0x%x, size 0x%x\n", entry->p_vaddr,338 entry->p_memsz);339 340 339 bias = elf->bias; 340 341 seg_addr = entry->p_vaddr + bias; 342 seg_ptr = (void *) seg_addr; 343 344 DPRINTF("Load segment at addr 0x%x, size 0x%x\n", seg_addr, 345 entry->p_memsz); 341 346 342 347 if (entry->p_align > 1) { 343 348 if ((entry->p_offset % entry->p_align) != 344 ( entry->p_vaddr % entry->p_align)) {349 (seg_addr % entry->p_align)) { 345 350 DPRINTF("Align check 1 failed offset%%align=%d, " 346 351 "vaddr%%align=%d\n", 347 352 entry->p_offset % entry->p_align, 348 entry->p_vaddr % entry->p_align353 seg_addr % entry->p_align 349 354 ); 350 355 return EE_INVALID; … … 365 370 mem_sz = entry->p_memsz + (entry->p_vaddr - base); 366 371 367 DPRINTF("Map to p_vaddr=0x%x-0x%x.\n", entry->p_vaddr + bias,372 DPRINTF("Map to seg_addr=0x%x-0x%x.\n", seg_addr, 368 373 entry->p_vaddr + bias + ALIGN_UP(entry->p_memsz, PAGE_SIZE)); 369 374 … … 380 385 381 386 DPRINTF("as_area_create(0x%lx, 0x%x, %d) -> 0x%lx\n", 382 entry->p_vaddr+bias, entry->p_memsz, flags, (uintptr_t)a);387 base + bias, mem_sz, flags, (uintptr_t)a); 383 388 384 389 /* … … 400 405 401 406 left = entry->p_filesz; 402 dp = (uint8_t *)(entry->p_vaddr + bias);407 dp = seg_ptr; 403 408 404 409 while (left > 0) { … … 417 422 } 418 423 419 rc = as_area_change_flags( (uint8_t *)entry->p_vaddr + bias, flags);424 rc = as_area_change_flags(seg_ptr, flags); 420 425 if (rc != 0) { 421 426 DPRINTF("Failed to set memory area flags.\n"); … … 425 430 if (flags & AS_AREA_EXEC) { 426 431 /* Enforce SMC coherence for the segment */ 427 if (smc_coherence( entry->p_vaddr + bias, entry->p_filesz))432 if (smc_coherence(seg_ptr, entry->p_filesz)) 428 433 return EE_MEMORY; 429 434 } -
uspace/srv/loader/main.c
ra624cbfd r08c9f7d 80 80 static int filc = 0; 81 81 /** Preset files vector */ 82 static char**filv = NULL;82 static fdi_node_t **filv = NULL; 83 83 /** Buffer holding all preset files */ 84 84 static fdi_node_t *fil_buf = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.