1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

Start work on updating p_tos.

This commit is contained in:
Markus F.X.J. Oberhumer 2006-08-29 23:46:21 +02:00
parent 2007fe5f49
commit f009fe1f63
2 changed files with 20 additions and 0 deletions

View File

@ -419,6 +419,8 @@ void PackTos::pack(OutputFile *fo)
const unsigned i_sym = ih.fh_sym;
const unsigned i_bss = ih.fh_bss;
symbols.reset();
// read file
const unsigned isize = file_size - i_sym;
ibuf.alloc(isize);

View File

@ -75,6 +75,24 @@ protected:
tos_header_t ih, oh;
struct LinkerSymbols
{
enum { LOOP_UNKNOWN, LOOP_SUBQ_L, LOOP_SUBQ_W, LOOP_DBRA };
// before linker->relocate()
unsigned loop1_count; int loop1_mode;
unsigned loop2_count; int loop2_mode;
unsigned loop3_count; int loop3_mode;
// after linker->relocate()
unsigned copy_to_stack_len;
unsigned flush_cache_rts_offset;
unsigned clear_bss_size_p4;
unsigned clear_dirty_stack_len;
// FIXME: up11 etc.
void reset() { memset(this, 0, sizeof(*this)); }
};
LinkerSymbols symbols;
protected:
unsigned patch_d_subq(void *l, int llen, int, unsigned, const char*);
unsigned patch_d_loop(void *l, int llen, int, unsigned, const char*, const char*);