diff --git a/src/packer.cpp b/src/packer.cpp index f9c6034f..760eaf63 100644 --- a/src/packer.cpp +++ b/src/packer.cpp @@ -1055,6 +1055,14 @@ char const *Packer::getIdentstr(unsigned *size, int small) } } +void Packer::createLinker(const void *pdata, int plen, int pinfo) +{ + if (getFormat() < 128) + linker = new Linker(pdata, plen, pinfo); // little endian + else + linker = new BeLinker(pdata, plen, pinfo); // big endian +} + void Packer::initLoader(const void *pdata, int plen, int pinfo, int small) { if (pinfo < 0) @@ -1064,10 +1072,7 @@ void Packer::initLoader(const void *pdata, int plen, int pinfo, int small) } delete linker; linker = NULL; - if (getFormat() < 128) - linker = new Linker(pdata, plen, pinfo); // little endian - else - linker = new BeLinker(pdata, plen, pinfo); // big endian + createLinker(pdata, plen, pinfo); unsigned size; char const * const ident = getIdentstr(&size, small); diff --git a/src/packer.h b/src/packer.h index f09c9ba7..4c8373a6 100644 --- a/src/packer.h +++ b/src/packer.h @@ -271,6 +271,7 @@ protected: protected: // linker Linker *linker; + virtual void createLinker(const void *pdata, int plen, int pinfo); private: // private to checkPatch()