mirror of
https://github.com/upx/upx.git
synced 2025-08-11 22:52:30 +08:00
all: rename win32/arm back to wince/arm
This commit is contained in:
4
NEWS
4
NEWS
@ -152,7 +152,7 @@ Changes in 2.92 beta (23 Jan 2007):
|
||||
|
||||
Changes in 2.91 beta (29 Nov 2006):
|
||||
* assorted bug fixes
|
||||
* win32/arm: fix "missing" icon & version info resource problem for WinCE 5
|
||||
* wince/arm: fix "missing" icon & version info resource problem for WinCE 5
|
||||
* win32/pe & arm/pe: added option --compress-icons=3 to compress all icons
|
||||
|
||||
Changes in 2.90 beta (08 Oct 2006):
|
||||
@ -206,7 +206,7 @@ Changes in 1.95 beta (09 Apr 2006):
|
||||
* win32/pe: really worked around R6002 runtime errors
|
||||
|
||||
Changes in 1.94 beta (11 Mar 2006):
|
||||
* new format: added support for win32/arm (ARM executables running on WinCE)
|
||||
* new format: added support for wince/arm (ARM executables running on WinCE)
|
||||
* new format: added support for linux elf/amd64
|
||||
* new format: added support for linux elf/ppc32
|
||||
* new format: added support for mach/ppc32 (Apple Mac OS X)
|
||||
|
@ -539,7 +539,7 @@ constexpr bool string_ge(const char *a, const char *b) {
|
||||
#define UPX_F_PS1_EXE 18
|
||||
#define UPX_F_VMLINUX_i386 19
|
||||
#define UPX_F_LINUX_ELFI_i386 20
|
||||
#define UPX_F_W32PE_ARM 21
|
||||
#define UPX_F_WINCE_ARM 21 // Windows CE
|
||||
#define UPX_F_LINUX_ELF64_AMD64 22
|
||||
#define UPX_F_LINUX_ELF32_ARM 23
|
||||
#define UPX_F_BSD_i386 24
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* p_w32pe_arm.cpp --
|
||||
/* p_wince_arm.cpp --
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -30,25 +30,25 @@
|
||||
#include "filter.h"
|
||||
#include "packer.h"
|
||||
#include "pefile.h"
|
||||
#include "p_w32pe_arm.h"
|
||||
#include "p_wince_arm.h"
|
||||
#include "linker.h"
|
||||
|
||||
static const CLANG_FORMAT_DUMMY_STATEMENT
|
||||
#include "stub/arm.v4a-win32.pe.h"
|
||||
#include "stub/arm.v4a-wince.pe.h"
|
||||
static const CLANG_FORMAT_DUMMY_STATEMENT
|
||||
#include "stub/arm.v4t-win32.pe.h"
|
||||
#include "stub/arm.v4t-wince.pe.h"
|
||||
|
||||
/*************************************************************************
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
PackW32PeArm::PackW32PeArm(InputFile *f) : super(f) {}
|
||||
PackWinCeArm::PackWinCeArm(InputFile *f) : super(f) {}
|
||||
|
||||
PackW32PeArm::~PackW32PeArm() {}
|
||||
PackWinCeArm::~PackWinCeArm() {}
|
||||
|
||||
Linker *PackW32PeArm::newLinker() const { return new ElfLinkerArmLE; }
|
||||
Linker *PackWinCeArm::newLinker() const { return new ElfLinkerArmLE; }
|
||||
|
||||
const int *PackW32PeArm::getCompressionMethods(int method, int level) const {
|
||||
const int *PackWinCeArm::getCompressionMethods(int method, int level) const {
|
||||
static const int m_all[] = {M_NRV2B_8, M_NRV2E_8, M_LZMA, M_END};
|
||||
static const int m_lzma[] = {M_LZMA, M_END};
|
||||
static const int m_nrv2b[] = {M_NRV2B_8, M_END};
|
||||
@ -68,7 +68,7 @@ const int *PackW32PeArm::getCompressionMethods(int method, int level) const {
|
||||
return m_nrv2e;
|
||||
}
|
||||
|
||||
const int *PackW32PeArm::getFilters() const {
|
||||
const int *PackWinCeArm::getFilters() const {
|
||||
static const int filters[] = {0x50, FT_END};
|
||||
return filters;
|
||||
}
|
||||
@ -77,7 +77,7 @@ const int *PackW32PeArm::getFilters() const {
|
||||
// import handling
|
||||
**************************************************************************/
|
||||
|
||||
void PackW32PeArm::processImports2(unsigned myimport, unsigned iat_off) // pass 2
|
||||
void PackWinCeArm::processImports2(unsigned myimport, unsigned iat_off) // pass 2
|
||||
{
|
||||
PeFile::processImports2(myimport, iat_off);
|
||||
|
||||
@ -89,7 +89,7 @@ void PackW32PeArm::processImports2(unsigned myimport, unsigned iat_off) // pass
|
||||
}
|
||||
}
|
||||
|
||||
void PackW32PeArm::addStubImports() {
|
||||
void PackWinCeArm::addStubImports() {
|
||||
// the order of procedure names below should match the
|
||||
// assumptions of the assembly stubs
|
||||
// WARNING! these names are sorted alphanumerically by the ImportLinker
|
||||
@ -98,12 +98,12 @@ void PackW32PeArm::addStubImports() {
|
||||
addKernelImport("LoadLibraryW");
|
||||
}
|
||||
|
||||
void PackW32PeArm::processTls(Interval *) // pass 1
|
||||
void PackWinCeArm::processTls(Interval *) // pass 1
|
||||
{
|
||||
if ((sotls = ALIGN_UP(IDSIZE(PEDIR_TLS), 4u)) == 0)
|
||||
return;
|
||||
|
||||
// never should happen on win32/arm
|
||||
// never should happen on wince/arm
|
||||
throwCantPack("Static TLS entries found. Send a report please.");
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@ void PackW32PeArm::processTls(Interval *) // pass 1
|
||||
// pack
|
||||
**************************************************************************/
|
||||
|
||||
bool PackW32PeArm::canPack() {
|
||||
bool PackWinCeArm::canPack() {
|
||||
if (!readFileHeader())
|
||||
return false;
|
||||
if (ih.cpu != IMAGE_FILE_MACHINE_ARM && ih.cpu != IMAGE_FILE_MACHINE_THUMB)
|
||||
@ -121,9 +121,9 @@ bool PackW32PeArm::canPack() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void PackW32PeArm::buildLoader(const Filter *ft) {
|
||||
const unsigned char *loader = use_thumb_stub ? stub_arm_v4t_win32_pe : stub_arm_v4a_win32_pe;
|
||||
unsigned size = use_thumb_stub ? sizeof(stub_arm_v4t_win32_pe) : sizeof(stub_arm_v4a_win32_pe);
|
||||
void PackWinCeArm::buildLoader(const Filter *ft) {
|
||||
const unsigned char *loader = use_thumb_stub ? stub_arm_v4t_wince_pe : stub_arm_v4a_wince_pe;
|
||||
unsigned size = use_thumb_stub ? sizeof(stub_arm_v4t_wince_pe) : sizeof(stub_arm_v4a_wince_pe);
|
||||
|
||||
// prepare loader
|
||||
initLoader(loader, size);
|
||||
@ -162,7 +162,7 @@ void PackW32PeArm::buildLoader(const Filter *ft) {
|
||||
addLoader("IDENTSTR,UPX1HEAD");
|
||||
}
|
||||
|
||||
bool PackW32PeArm::needForceOption() const {
|
||||
bool PackWinCeArm::needForceOption() const {
|
||||
// return true if we need `--force` to pack this file
|
||||
bool r = false;
|
||||
r |= (ih.opthdrsize != 0xe0);
|
||||
@ -174,7 +174,7 @@ bool PackW32PeArm::needForceOption() const {
|
||||
return r;
|
||||
}
|
||||
|
||||
void PackW32PeArm::callCompressWithFilters(Filter &ft, int filter_strategy, unsigned ih_codebase) {
|
||||
void PackWinCeArm::callCompressWithFilters(Filter &ft, int filter_strategy, unsigned ih_codebase) {
|
||||
// limit stack size needed for runtime decompression
|
||||
upx_compress_config_t cconf;
|
||||
cconf.reset();
|
||||
@ -182,7 +182,7 @@ void PackW32PeArm::callCompressWithFilters(Filter &ft, int filter_strategy, unsi
|
||||
compressWithFilters(&ft, 2048, &cconf, filter_strategy, ih_codebase, rvamin, 0, nullptr, 0);
|
||||
}
|
||||
|
||||
void PackW32PeArm::addNewRelocations(Reloc &rel, unsigned upxsection) {
|
||||
void PackWinCeArm::addNewRelocations(Reloc &rel, unsigned upxsection) {
|
||||
static const char *const symbols_to_relocate[] = {"ONAM", "BIMP", "BREL", "FIBE",
|
||||
"FIBS", "ENTR", "DST0", "SRC0"};
|
||||
for (unsigned s2r = 0; s2r < TABLESIZE(symbols_to_relocate); s2r++) {
|
||||
@ -192,11 +192,11 @@ void PackW32PeArm::addNewRelocations(Reloc &rel, unsigned upxsection) {
|
||||
}
|
||||
}
|
||||
|
||||
unsigned PackW32PeArm::getProcessImportParam(unsigned upxsection) {
|
||||
unsigned PackWinCeArm::getProcessImportParam(unsigned upxsection) {
|
||||
return linker->getSymbolOffset("IATT") + upxsection;
|
||||
}
|
||||
|
||||
void PackW32PeArm::defineSymbols(unsigned ncsection, unsigned, unsigned, unsigned ic,
|
||||
void PackWinCeArm::defineSymbols(unsigned ncsection, unsigned, unsigned, unsigned ic,
|
||||
unsigned s1addr) {
|
||||
const unsigned onam = ncsection + soxrelocs + ih.imagebase;
|
||||
linker->defineSymbol("start_of_dll_names", onam);
|
||||
@ -212,13 +212,13 @@ void PackW32PeArm::defineSymbols(unsigned ncsection, unsigned, unsigned, unsigne
|
||||
defineDecompressorSymbols();
|
||||
}
|
||||
|
||||
void PackW32PeArm::setOhDataBase(const pe_section_t *osection) { oh.database = osection[2].vaddr; }
|
||||
void PackWinCeArm::setOhDataBase(const pe_section_t *osection) { oh.database = osection[2].vaddr; }
|
||||
|
||||
void PackW32PeArm::setOhHeaderSize(const pe_section_t *osection) {
|
||||
void PackWinCeArm::setOhHeaderSize(const pe_section_t *osection) {
|
||||
oh.headersize = osection[1].rawdataptr;
|
||||
}
|
||||
|
||||
void PackW32PeArm::pack(OutputFile *fo) {
|
||||
void PackWinCeArm::pack(OutputFile *fo) {
|
||||
super::pack0(fo, (1u << IMAGE_SUBSYSTEM_WINDOWS_CE_GUI), 0x10000, true);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* p_w32pe_arm.h --
|
||||
/* p_wince_arm.h --
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -31,15 +31,15 @@
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
class PackW32PeArm final : public PeFile32 {
|
||||
class PackWinCeArm final : public PeFile32 {
|
||||
typedef PeFile32 super;
|
||||
|
||||
public:
|
||||
PackW32PeArm(InputFile *f);
|
||||
virtual ~PackW32PeArm();
|
||||
virtual int getFormat() const override { return UPX_F_W32PE_ARM; }
|
||||
virtual const char *getName() const override { return "win32/arm"; }
|
||||
virtual const char *getFullName(const options_t *) const override { return "arm-win32.pe"; }
|
||||
PackWinCeArm(InputFile *f);
|
||||
virtual ~PackWinCeArm();
|
||||
virtual int getFormat() const override { return UPX_F_WINCE_ARM; }
|
||||
virtual const char *getName() const override { return "wince/arm"; }
|
||||
virtual const char *getFullName(const options_t *) const override { return "arm-wince.pe"; }
|
||||
virtual const int *getCompressionMethods(int method, int level) const override;
|
||||
virtual const int *getFilters() const override;
|
||||
virtual void defineFilterSymbols(const Filter *) override {}
|
@ -49,10 +49,10 @@
|
||||
#include "p_tos.h"
|
||||
#include "p_vmlinx.h"
|
||||
#include "p_vmlinz.h"
|
||||
#include "p_w32pe_arm.h"
|
||||
#include "p_w32pe_i386.h"
|
||||
#include "p_w64pe_amd64.h"
|
||||
#include "p_w64pe_arm64.h"
|
||||
#include "p_wince_arm.h"
|
||||
#include "p_wcle.h"
|
||||
|
||||
/*************************************************************************
|
||||
@ -161,7 +161,7 @@ Packer *PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
||||
D(PackW64PeAmd64);
|
||||
D(PackW32PeI386);
|
||||
}
|
||||
D(PackW32PeArm);
|
||||
D(PackWinCeArm);
|
||||
// D(PackW64PeArm64EC); // NOT YET IMPLEMENTED
|
||||
// D(PackW64PeArm64); // NOT YET IMPLEMENTED
|
||||
D(PackExe);
|
||||
|
@ -2275,7 +2275,7 @@ void PeFile::pack0(OutputFile *fo, ht &ih, ht &oh, unsigned subsystem_mask,
|
||||
// section 0 : bss
|
||||
// 1 : [ident + header] + packed_data + unpacker + tls + loadconf
|
||||
// 2 : not compressed data
|
||||
// 3 : resource data -- win32/arm 5 needs a new section for this
|
||||
// 3 : resource data -- wince/arm 5 needs a new section for this
|
||||
|
||||
// the last section should start with the resource data, because lots of lame
|
||||
// windoze codes assume that resources starts on the beginning of a section
|
||||
@ -2963,14 +2963,14 @@ void PeFile32::pack0(OutputFile *fo, unsigned subsystem_mask, upx_uint64_t defau
|
||||
}
|
||||
|
||||
void PeFile32::unpack(OutputFile *fo) {
|
||||
bool set_oft = getFormat() == UPX_F_W32PE_ARM;
|
||||
bool set_oft = getFormat() == UPX_F_WINCE_ARM;
|
||||
unpack0<pe_header_t, LE32>(fo, ih, oh, 1U << 31, set_oft);
|
||||
}
|
||||
|
||||
int PeFile32::canUnpack() {
|
||||
if (!canPack()) // this calls readFileHeader() and readPeHeader()
|
||||
return false;
|
||||
return canUnpack0(getFormat() == UPX_F_W32PE_ARM ? 4 : 3, ih.objects, ih.entry, sizeof(ih));
|
||||
return canUnpack0(getFormat() == UPX_F_WINCE_ARM ? 4 : 3, ih.objects, ih.entry, sizeof(ih));
|
||||
}
|
||||
|
||||
unsigned PeFile32::processImports() // pass 1
|
||||
|
@ -211,13 +211,14 @@ protected:
|
||||
unsigned tryremove(unsigned, unsigned);
|
||||
|
||||
enum {
|
||||
IMAGE_FILE_MACHINE_UNKNOWN = 0x0,
|
||||
IMAGE_FILE_MACHINE_UNKNOWN = 0,
|
||||
IMAGE_FILE_MACHINE_AMD64 = 0x8664, // win64/pe (amd64)
|
||||
IMAGE_FILE_MACHINE_ARM = 0x1c0, // win32/arm
|
||||
IMAGE_FILE_MACHINE_ARM = 0x01c0, // wince/arm (Windows CE)
|
||||
IMAGE_FILE_MACHINE_ARM64 = 0xaa64, // win64/arm64
|
||||
IMAGE_FILE_MACHINE_ARM64EC = 0xa641, // win64/arm64ec
|
||||
IMAGE_FILE_MACHINE_I386 = 0x14c, // win32/pe (i386)
|
||||
IMAGE_FILE_MACHINE_THUMB = 0x1c2, // win32/arm
|
||||
IMAGE_FILE_MACHINE_ARMNT = 0x01c4, // win32/arm
|
||||
IMAGE_FILE_MACHINE_I386 = 0x014c, // win32/pe (i386)
|
||||
IMAGE_FILE_MACHINE_THUMB = 0x01c2, // wince/arm (Windows CE)
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -64,8 +64,8 @@ STUBS += amd64-linux.shlib-init.h
|
||||
STUBS += amd64-win64.pe.h
|
||||
STUBS += arm.v4a-linux.elf-entry.h
|
||||
STUBS += arm.v4a-linux.elf-fold.h
|
||||
STUBS += arm.v4a-win32.pe.h
|
||||
STUBS += arm.v4t-win32.pe.h
|
||||
STUBS += arm.v4a-wince.pe.h
|
||||
STUBS += arm.v4t-wince.pe.h
|
||||
STUBS += arm.v5a-darwin.macho-entry.h
|
||||
STUBS += arm.v5a-darwin.macho-fold.h
|
||||
STUBS += arm.v5a-linux.elf-entry.h
|
||||
@ -764,23 +764,23 @@ armeb.v5a-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // arm.v4a-win32.pe (arm.v4a)
|
||||
# // arm.v4t-win32.pe (arm.v4t)
|
||||
# // arm.v4a-wince.pe (arm.v4a)
|
||||
# // arm.v4t-wince.pe (arm.v4t)
|
||||
# ************************************************************************/
|
||||
|
||||
# info: we use the tc settings from arm.v4a-linux.elf
|
||||
arm.v4a-win32.pe.h : tc_list = arm.v4a-linux.elf default
|
||||
arm.v4t-win32.pe.h : tc_list = arm.v4a-linux.elf default
|
||||
arm.v4a-win32.pe.h : tc_bfdname = elf32-littlearm
|
||||
arm.v4t-win32.pe.h : tc_bfdname = elf32-littlearm
|
||||
arm.v4t-win32.pe.h : tc_objdump_disasm_options = -M force-thumb
|
||||
arm.v4a-wince.pe.h : tc_list = arm.v4a-linux.elf default
|
||||
arm.v4t-wince.pe.h : tc_list = arm.v4a-linux.elf default
|
||||
arm.v4a-wince.pe.h : tc_bfdname = elf32-littlearm
|
||||
arm.v4t-wince.pe.h : tc_bfdname = elf32-littlearm
|
||||
arm.v4t-wince.pe.h : tc_objdump_disasm_options = -M force-thumb
|
||||
|
||||
arm.v4a-win32.pe.h : $(srcdir)/src/$$T.S
|
||||
arm.v4a-wince.pe.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -march=armv4 -c $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
||||
arm.v4t-win32.pe.h : $(srcdir)/src/$$T.S
|
||||
arm.v4t-wince.pe.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -march=armv4t -c $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* arm.v4a-win32.pe.h
|
||||
created from arm.v4a-win32.pe.bin, 14676 (0x3954) bytes
|
||||
/* arm.v4a-wince.pe.h
|
||||
created from arm.v4a-wince.pe.bin, 14676 (0x3954) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -31,11 +31,11 @@
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_ARM_V4A_WIN32_PE_SIZE 14676
|
||||
#define STUB_ARM_V4A_WIN32_PE_ADLER32 0x3e1886fc
|
||||
#define STUB_ARM_V4A_WIN32_PE_CRC32 0x3d92a84f
|
||||
#define STUB_ARM_V4A_WINCE_PE_SIZE 14676
|
||||
#define STUB_ARM_V4A_WINCE_PE_ADLER32 0x3e1886fc
|
||||
#define STUB_ARM_V4A_WINCE_PE_CRC32 0x3d92a84f
|
||||
|
||||
unsigned char stub_arm_v4a_win32_pe[14676] = {
|
||||
unsigned char stub_arm_v4a_wince_pe[14676] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0, 40, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 156, 15, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
@ -1,5 +1,5 @@
|
||||
/* arm.v4t-win32.pe.h
|
||||
created from arm.v4t-win32.pe.bin, 6742 (0x1a56) bytes
|
||||
/* arm.v4t-wince.pe.h
|
||||
created from arm.v4t-wince.pe.bin, 6742 (0x1a56) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -31,11 +31,11 @@
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_ARM_V4T_WIN32_PE_SIZE 6742
|
||||
#define STUB_ARM_V4T_WIN32_PE_ADLER32 0xd74653e1
|
||||
#define STUB_ARM_V4T_WIN32_PE_CRC32 0xbafe943f
|
||||
#define STUB_ARM_V4T_WINCE_PE_SIZE 6742
|
||||
#define STUB_ARM_V4T_WINCE_PE_ADLER32 0xd74653e1
|
||||
#define STUB_ARM_V4T_WINCE_PE_CRC32 0xbafe943f
|
||||
|
||||
unsigned char stub_arm_v4t_win32_pe[6742] = {
|
||||
unsigned char stub_arm_v4t_wince_pe[6742] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0, 40, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 132, 11, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
|
@ -1,4 +1,4 @@
|
||||
/* arm.v4a-win32.pe.S -- ARM/PE decompressor assembly startup (arm mode)
|
||||
/* arm.v4a-wince.pe.S -- ARM/PE decompressor assembly startup (arm mode)
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* arm.v4t-win32.pe.S -- ARM/PE decompressor assembly startup (thumb mode)
|
||||
/* arm.v4t-wince.pe.S -- ARM/PE decompressor assembly startup (thumb mode)
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
Reference in New Issue
Block a user