Changeset 24608
- Timestamp:
- 03/27/08 09:46:52 (8 months ago)
- Location:
- haiku/trunk/src/system/boot/loader
- Files:
-
- 2 modified
Legend:
- Unmodified
- Added
- Removed
-
haiku/trunk/src/system/boot/loader/elf.cpp
r15756 r24608 1 /* 2 ** Copyright 2002-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.3 ** Distributed under the terms of the HaikuLicense.4 */1 /* 2 * Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 5 6 6 … … 58 58 switch (d[i].d_tag) { 59 59 case DT_HASH: 60 // image->symhash = (uint32 *)(d[i].d_un.d_ptr + image->text_region.delta);61 break;62 60 case DT_STRTAB: 63 // image->strtab = (char *)(d[i].d_un.d_ptr + image->text_region.delta);64 61 break; 65 62 case DT_SYMTAB: 66 image->syms = (struct Elf32_Sym *)(d[i].d_un.d_ptr + image->text_region.delta); 63 image->syms = (struct Elf32_Sym *)(d[i].d_un.d_ptr 64 + image->text_region.delta); 67 65 break; 68 66 case DT_REL: 69 image->rel = (struct Elf32_Rel *)(d[i].d_un.d_ptr + image->text_region.delta); 67 image->rel = (struct Elf32_Rel *)(d[i].d_un.d_ptr 68 + image->text_region.delta); 70 69 break; 71 70 case DT_RELSZ: … … 73 72 break; 74 73 case DT_RELA: 75 image->rela = (struct Elf32_Rela *)(d[i].d_un.d_ptr + image->text_region.delta); 74 image->rela = (struct Elf32_Rela *)(d[i].d_un.d_ptr 75 + image->text_region.delta); 76 76 break; 77 77 case DT_RELASZ: … … 79 79 break; 80 80 case DT_JMPREL: 81 image->pltrel = (struct Elf32_Rel *)(d[i].d_un.d_ptr + image->text_region.delta); 81 image->pltrel = (struct Elf32_Rel *)(d[i].d_un.d_ptr 82 + image->text_region.delta); 82 83 break; 83 84 case DT_PLTRELSZ: … … 94 95 95 96 // lets make sure we found all the required sections 96 // if (!image->symhash || !image->syms || !image->strtab) 97 if (/* !image->symhash ||*/ !image->syms /*|| !image->strtab*/) 97 if (image->syms == NULL) 98 98 return B_ERROR; 99 99 … … 141 141 142 142 // read in symbol table 143 symbolTable = (Elf32_Sym *)kernel_args_malloc(size = sectionHeaders[i].sh_size); 143 symbolTable = (Elf32_Sym *)kernel_args_malloc( 144 size = sectionHeaders[i].sh_size); 144 145 if (symbolTable == NULL) { 145 146 status = B_NO_MEMORY; … … 147 148 } 148 149 149 length = read_pos(fd, sectionHeaders[i].sh_offset, symbolTable, size); 150 length = read_pos(fd, sectionHeaders[i].sh_offset, symbolTable, 151 size); 150 152 if (length < size) { 151 153 TRACE(("error reading in symbol table\n")); … … 271 273 272 274 region->start = ROUNDOWN(header.p_vaddr, B_PAGE_SIZE); 273 region->size = ROUNDUP(header.p_memsz + (header.p_vaddr % B_PAGE_SIZE), B_PAGE_SIZE); 275 region->size = ROUNDUP(header.p_memsz + (header.p_vaddr % B_PAGE_SIZE), 276 B_PAGE_SIZE); 274 277 region->delta = -region->start; 275 278 … … 339 342 340 343 length = read_pos(fd, header.p_offset, 341 (void *)(region->start + (header.p_vaddr % B_PAGE_SIZE)), header.p_filesz); 344 (void *)(region->start + (header.p_vaddr % B_PAGE_SIZE)), 345 header.p_filesz); 342 346 if (length < (ssize_t)header.p_filesz) { 343 347 status = B_BAD_DATA; … … 346 350 } 347 351 348 // clear anything above the file size (that may also contain the BSS area) 352 // Clear anything above the file size (that may also contain the BSS 353 // area) 349 354 350 355 uint32 offset = (header.p_vaddr % B_PAGE_SIZE) + header.p_filesz; … … 371 376 372 377 error2: 373 if (image->text_region.start != NULL)378 if (image->text_region.start != 0) 374 379 platform_free_region((void *)image->text_region.start, totalSize); 375 380 error1: -
haiku/trunk/src/system/boot/loader/vfs.cpp
r21611 r24608 1 1 /* 2 * Copyright 2003-200 6, Axel Dörfler, axeld@pinc-software.de.2 * Copyright 2003-2008, Axel Dörfler, axeld@pinc-software.de. 3 3 * Distributed under the terms of the MIT License. 4 4 */ … … 538 538 } 539 539 540 return NULL;540 return B_ENTRY_NOT_FOUND; 541 541 } 542 542
