aboutsummaryrefslogtreecommitdiff
path: root/ext2load/loader.c
diff options
context:
space:
mode:
authorGuido Guenther <agx@sigxcpu.org>2007-11-21 14:53:41 +0100
committerGuido Guenther <agx@sigxcpu.org>2007-11-21 14:53:41 +0100
commitc7954f669e8f957c58779bdb58c8f11284fea514 (patch)
tree267151011794785d45635d761b8c2a6bd56f6e4e /ext2load/loader.c
parent61e05a2b6342b9b899c07641961ac486a6d91d86 (diff)
LoadProgramSegments64: add casts to unsigned long so the address and size for .bss is calculated correctly
Diffstat (limited to 'ext2load/loader.c')
-rw-r--r--ext2load/loader.c14
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;