diff options
author | Guido Guenther <agx@sigxcpu.org> | 2007-11-21 14:53:41 +0100 |
---|---|---|
committer | Guido Guenther <agx@sigxcpu.org> | 2007-11-21 14:53:41 +0100 |
commit | c7954f669e8f957c58779bdb58c8f11284fea514 (patch) | |
tree | 267151011794785d45635d761b8c2a6bd56f6e4e /ext2load | |
parent | 61e05a2b6342b9b899c07641961ac486a6d91d86 (diff) |
LoadProgramSegments64: add casts to unsigned long so the address and size for .bss is calculated correctly
Diffstat (limited to 'ext2load')
-rw-r--r-- | ext2load/loader.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/ext2load/loader.c b/ext2load/loader.c index 45d1988..f8036e9 100644 --- a/ext2load/loader.c +++ b/ext2load/loader.c @@ -245,7 +245,7 @@ int LoadProgramSegments64(ext2_file_t file, Elf_Ehdr * header, void *segments) int loaded = 0; Elf64_Phdr* segment=(Elf64_Phdr*)segments; errcode_t status; - size_t size; + unsigned long size; is64=1; printf("Loading 64-bit executable\n\r"); @@ -271,7 +271,7 @@ int LoadProgramSegments64(ext2_file_t file, Elf_Ehdr * header, void *segments) arc_do_progress = 1; status = ext2fs_file_read(file, - (void *) (KSEG0ADDR( + (void *) (KSEG0ADDR((ULONG) segment->p_vaddr)), segment->p_filesz, NULL); arc_do_progress = 0; @@ -280,15 +280,15 @@ int LoadProgramSegments64(ext2_file_t file, Elf_Ehdr * header, void *segments) Fatal("Cannot read program segment\n\r"); } - size = segment->p_memsz - segment->p_filesz; + size = (ULONG)segment->p_memsz - (ULONG)segment->p_filesz; if (size > 0) { printf ("Zeroing memory at 0x%lx, size = 0x%lx\n\r", - (KSEG0ADDR(segment->p_vaddr + - segment->p_filesz)), size); + (KSEG0ADDR((ULONG)segment->p_vaddr + + (ULONG)segment->p_filesz)), size); memset((void *) - (KSEG0ADDR(segment-> - p_vaddr + segment->p_filesz)), 0, size); + (KSEG0ADDR((ULONG)segment->p_vaddr + + (ULONG)segment->p_filesz)), 0, size); } loaded = 1; |