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/mem.cpp b/src/mem.cpp index 9b704b1c..63a467d1 100644 --- a/src/mem.cpp +++ b/src/mem.cpp @@ -209,6 +209,8 @@ void MemBuffer::alloc(unsigned size) } else b = p ; + + //fill(0, b_size, (rand() & 0xff) | 1); // debug } 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); diff --git a/src/p_wcle.cpp b/src/p_wcle.cpp index 7b1f7bba..365cf71d 100644 --- a/src/p_wcle.cpp +++ b/src/p_wcle.cpp @@ -450,7 +450,9 @@ void PackWcle::encodeImage(const Filter *ft) buildLoader(ft); ibuf.dealloc(); - soimage = (ph.c_len + 3) &~ 3; + soimage = ph.c_len; + while (soimage & 3) + oimage[RESERVED + soimage++] = 0; }