From 519fa55df78cfee6e5b4d96995c52a2f062edc55 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Sat, 18 Nov 2006 20:54:10 +0100 Subject: [PATCH] ps1/exe: fill pad.code section with zeros. --- src/linker.cpp | 2 +- src/p_ps1.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/linker.cpp b/src/linker.cpp index 4fae5d78..bc9d4cdd 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -386,8 +386,8 @@ int ElfLinker::addLoader(const char *sname) } memcpy(output + outputlen, section->input, section->size); section->output = output + outputlen; + //printf("section added: 0x%04x %3d %s\n", outputlen, section->size, section->name); outputlen += section->size; - //printf("section added: %s\n", sect); if (head) { diff --git a/src/p_ps1.cpp b/src/p_ps1.cpp index b209bc52..8bab03f1 100644 --- a/src/p_ps1.cpp +++ b/src/p_ps1.cpp @@ -345,7 +345,9 @@ void PackPs1::buildLoader(const Filter *) initLoader(nrv_loader, sizeof(nrv_loader)); pad_code = ALIGN_GAP((ph.c_len + (isCon ? sz_lcpr : 0)), 4); - linker->addSection("pad.code", &pad_code, pad_code, 0); + assert(pad_code < 4); + static const unsigned char pad_buffer[4] = { 0, 0, 0, 0 }; + linker->addSection("pad.code", pad_buffer, pad_code, 0); if (isCon) { @@ -533,8 +535,6 @@ void PackPs1::pack(OutputFile *fo) oh.bs_ptr = oh.bs_len = 0; const int lsize = getLoaderSize(); - MemBuffer loader(lsize); - memcpy(loader, getLoader(), lsize); unsigned filelen = ALIGN_UP(ih.tx_len, 4); @@ -614,6 +614,9 @@ void PackPs1::pack(OutputFile *fo) } linker->relocate(); + //linker->dumpSymbols(); + MemBuffer loader(lsize); + assert(lsize == getLoaderSize()); memcpy(loader, getLoader(), lsize); patchPackHeader(loader, lsize);