fixed wrong COFF size calculations in load_driver and load_library

git-svn-id: svn://kolibrios.org@206 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge) 2006-11-03 15:19:15 +00:00
parent 3eda462807
commit 7c1c3a07a8
3 changed files with 13 additions and 10 deletions

View File

@ -403,6 +403,7 @@ struc COFF_SECTION
.NumLinenum dw ?
.Characteristics dd ?
}
COFF_SECTION_SIZE equ 40
struc COFF_RELOC
{ .VirtualAddress dd ?

View File

@ -523,6 +523,8 @@ proc load_file stdcall, file_name:dword
test eax, eax
jnz .fail
mov eax, [file_size]
stdcall kernel_alloc, [file_size]
mov [file], eax
@ -674,7 +676,7 @@ proc fix_coff_relocs stdcall, coff:dword, sec:dword, sym:dword
dec ecx
jnz .next_reloc
.next:
add [sec], 40
add [sec], COFF_SECTION_SIZE
dec [n_sec]
jnz .fix_sec
.exit:
@ -709,7 +711,7 @@ proc load_driver stdcall, file_name:dword
add ebx, [edx+CFS.SizeOfRawData]
add ebx, 15
and ebx, not 15
add edx, 18
add edx, COFF_SECTION_SIZE
dec ecx
jnz @B
mov [img_size], ebx
@ -747,7 +749,7 @@ proc load_driver stdcall, file_name:dword
.next:
add edi, 15
and edi, not 15
add eax, 40
add eax, COFF_SECTION_SIZE
dec ebx
jnz @B
@ -835,7 +837,7 @@ proc load_library stdcall, file_name:dword
add ebx, [edx+CFS.SizeOfRawData]
add ebx, 15
and ebx, not 15
add edx, 18
add edx, COFF_SECTION_SIZE
dec ecx
jnz @B
mov [img_size], ebx
@ -867,7 +869,7 @@ proc load_library stdcall, file_name:dword
.next:
add edi, 15-new_app_base
and edi, not 15
add eax, 40
add eax, COFF_SECTION_SIZE
dec ebx
jnz @B
@ -894,7 +896,7 @@ proc load_library stdcall, file_name:dword
lea eax, [edx+20]
@@:
add [eax+CFS.VirtualAddress], edi ;patch user space offset
add eax, 40
add eax, COFF_SECTION_SIZE
dec ebx
jnz @B

View File

@ -257,8 +257,8 @@ proc alloc_kernel_space stdcall, size:dword
cli
mov eax, [size]
add eax, 0xFFF
and eax, 0xFFFFF000;
add eax, 4095
and eax, not 4095
mov [size], eax
cmp eax, [heap_free]
ja .error
@ -499,8 +499,8 @@ proc kernel_alloc stdcall, size:dword
endl
mov eax, [size]
add eax, 0xFFF
and eax, 0xFFFFF000;
add eax, 4095
and eax, not 4095;
mov [size], eax
and eax, eax
jz .error