From 4500c1d1a4628c26bfc73575a1ecb4552fd6181d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Moln=C3=A1r?= Date: Tue, 18 Jul 2006 13:44:44 +0200 Subject: [PATCH] lzma should be working again for most of the i386 formats --- src/p_djgpp2.cpp | 2 +- src/p_tmt.cpp | 2 +- src/p_vmlinx.cpp | 3 +-- src/p_vmlinz.cpp | 4 ++-- src/p_wcle.cpp | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/p_djgpp2.cpp b/src/p_djgpp2.cpp index ea9a5ca0..5f6dc296 100644 --- a/src/p_djgpp2.cpp +++ b/src/p_djgpp2.cpp @@ -346,7 +346,7 @@ void PackDjgpp2::pack(OutputFile *fo) linker->defineSymbol("original_entry", coff_hdr.a_entry); linker->defineSymbol("length_of_bss", ph.overlap_overhead / 4); - //patchDecompressor(loader, lsize); // FIXME + defineDecompressorSymbols(); assert(bss->vaddr == ((size + 0x1ff) &~ 0x1ff) + (text->vaddr &~ 0x1ff)); linker->defineSymbol("stack_for_lzma", bss->vaddr + bss->size); linker->defineSymbol("start_of_uncompressed", text->vaddr - hdrsize); diff --git a/src/p_tmt.cpp b/src/p_tmt.cpp index d28f1947..4f09532e 100644 --- a/src/p_tmt.cpp +++ b/src/p_tmt.cpp @@ -261,7 +261,7 @@ void PackTmt::pack(OutputFile *fo) // patch loader linker->defineSymbol("original_entry", ih.entry); defineFilterSymbols(linker, &ft); - // FIXME patchDecompressor(loader, lsize); + defineDecompressorSymbols(); linker->defineSymbol("bytes_to_copy", ph.c_len + d_len); linker->defineSymbol("copy_dest", ph.u_len + ph.overlap_overhead + d_len - 1); diff --git a/src/p_vmlinx.cpp b/src/p_vmlinx.cpp index 280e781b..f1dbf25f 100644 --- a/src/p_vmlinx.cpp +++ b/src/p_vmlinx.cpp @@ -253,10 +253,9 @@ void PackVmlinuxI386::pack(OutputFile *fo) if (0x40==(0xf0 & ft.id)) { linker->defineSymbol("filter_length", ph.u_len); // redefine } + defineDecompressorSymbols(); linker->relocate(); - // FIXME patchDecompressor(loader, lsize); - MemBuffer loader(lsize); memcpy(loader, getLoader(), lsize); patchPackHeader(loader, lsize); diff --git a/src/p_vmlinz.cpp b/src/p_vmlinz.cpp index fde4d0f8..8cc27df6 100644 --- a/src/p_vmlinz.cpp +++ b/src/p_vmlinz.cpp @@ -306,7 +306,7 @@ void PackVmlinuzI386::pack(OutputFile *fo) const unsigned lsize = getLoaderSize(); defineFilterSymbols(linker, &ft); - // FIXME patchDecompressor(loader, lsize); + defineDecompressorSymbols(); linker->defineSymbol("src_for_decompressor", zimage_offset + lsize); linker->defineSymbol("original_entry", kernel_entry); linker->defineSymbol("stack_offset", stack_offset_during_uncompression); @@ -418,7 +418,7 @@ void PackBvmlinuzI386::pack(OutputFile *fo) if (0x40==(0xf0 & ft.id)) { linker->defineSymbol("filter_length", ph.u_len); // redefine } - // FIXME patchDecompressor(loader, lsize); + defineDecompressorSymbols(); linker->defineSymbol("original_entry", kernel_entry); linker->defineSymbol("stack_offset", stack_offset_during_uncompression); linker->relocate(); diff --git a/src/p_wcle.cpp b/src/p_wcle.cpp index 952db89d..5718138d 100644 --- a/src/p_wcle.cpp +++ b/src/p_wcle.cpp @@ -548,7 +548,7 @@ void PackWcle::pack(OutputFile *fo) linker->defineSymbol("start_of_relocs", mps*pages); defineFilterSymbols(linker, &ft); linker->defineSymbol("filter_buffer_start", text_vaddr); - // FIXME patchDecompressor(loader, lsize); + defineDecompressorSymbols(); unsigned jpos = (((ph.c_len + 3) &~ 3) + d_len + 3) / 4; linker->defineSymbol("words_to_copy", jpos);