mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
UPX_F_MACH_i386 and skeleton stub. (Much of PackMachI386 is incomplete.)
This commit is contained in:
parent
8b1cc28783
commit
2132a28a17
|
@ -455,6 +455,7 @@ private:
|
|||
|
||||
#define UPX_F_VMLINUX_AMD64 27
|
||||
#define UPX_F_VMLINUX_ARM 28
|
||||
#define UPX_F_MACH_i386 29
|
||||
|
||||
#define UPX_F_PLAIN_TEXT 127
|
||||
|
||||
|
|
|
@ -254,6 +254,18 @@ unsigned PackMachBase<T>::find_SEGMENT_gap(
|
|||
return lo - hi;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void PackMachBase<T>::pack4(OutputFile *, Filter &)
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void PackMachBase<T>::pack3(OutputFile *, Filter &)
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void PackMachBase<T>::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
||||
{
|
||||
|
|
75
src/p_mach.h
75
src/p_mach.h
|
@ -48,6 +48,7 @@ struct Mach_fat_arch {
|
|||
|
||||
/*************************************************************************
|
||||
// Mach Mach Object executable; all structures are target-endian
|
||||
// 'otool' is the Mach analog of 'readelf' (convert executable file to ASCII).
|
||||
**************************************************************************/
|
||||
|
||||
namespace N_Mach {
|
||||
|
@ -165,10 +166,6 @@ struct Mach_ppc_thread_state
|
|||
}
|
||||
__attribute_packed;
|
||||
|
||||
} // namespace N_Mach
|
||||
|
||||
namespace N_Mach32 {
|
||||
|
||||
template <class TMachITypes>
|
||||
struct Mach_i386_thread_state
|
||||
{
|
||||
|
@ -183,6 +180,23 @@ struct Mach_i386_thread_state
|
|||
}
|
||||
__attribute_packed;
|
||||
|
||||
template <class TMachITypes>
|
||||
struct Mach_i386_new_thread_state
|
||||
{
|
||||
typedef typename TMachITypes::Word Word;
|
||||
|
||||
Word gs, fs, es, ds;
|
||||
Word edi, esi, ebp, esp;
|
||||
Word ebx, edx, ecx, eax;
|
||||
Word eip, cs, efl;
|
||||
Word uesp, ss;
|
||||
}
|
||||
__attribute_packed;
|
||||
|
||||
} // namespace N_Mach
|
||||
|
||||
namespace N_Mach32 {
|
||||
|
||||
} // namespace N_Mach32
|
||||
|
||||
namespace N_Mach64 {
|
||||
|
@ -230,6 +244,7 @@ struct MachClass_32
|
|||
typedef N_Mach::Mach_segment_command<MachITypes> Mach_segment_command;
|
||||
typedef N_Mach::Mach_section_command<MachITypes> Mach_section_command;
|
||||
typedef N_Mach::Mach_ppc_thread_state<MachITypes> Mach_ppc_thread_state;
|
||||
typedef N_Mach::Mach_i386_thread_state<MachITypes> Mach_i386_thread_state;
|
||||
};
|
||||
|
||||
template <class TP>
|
||||
|
@ -262,6 +277,7 @@ typedef N_Mach::MachClass_64<N_BELE_CTP::LEPolicy> MachClass_LE64;
|
|||
typedef MachClass_Host32::Mach_segment_command Mach32_segment_command;
|
||||
typedef MachClass_Host32::Mach_section_command Mach32_section_command;
|
||||
typedef MachClass_Host32::Mach_ppc_thread_state Mach_ppc_thread_state;
|
||||
typedef MachClass_Host32::Mach_i386_thread_state Mach_i386_thread_state;
|
||||
|
||||
typedef MachClass_Host64::Mach_segment_command Mach64_segment_command;
|
||||
typedef MachClass_Host64::Mach_section_command Mach64_section_command;
|
||||
|
@ -300,7 +316,7 @@ protected:
|
|||
typedef typename MachClass::Mach_section_command Mach_section_command;
|
||||
|
||||
public:
|
||||
PackMachBase(InputFile *f, unsigned, unsigned, unsigned);
|
||||
PackMachBase(InputFile *, unsigned t_flavor, unsigned ts_word_cnt, unsigned tc_size);
|
||||
virtual ~PackMachBase();
|
||||
virtual int getVersion() const { return 13; }
|
||||
|
||||
|
@ -317,7 +333,6 @@ public:
|
|||
virtual unsigned find_SEGMENT_gap(unsigned const k);
|
||||
|
||||
protected:
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void patchLoader();
|
||||
virtual void patchLoaderChecksum();
|
||||
virtual void updateLoader(OutputFile *);
|
||||
|
@ -354,12 +369,21 @@ class PackMachPPC32 : public PackMachBase<MachClass_BE32>
|
|||
typedef PackMachBase<MachClass_BE32> super;
|
||||
|
||||
public:
|
||||
PackMachPPC32(InputFile *f) : super(f, Mach_thread_command::PPC_THREAD_STATE,
|
||||
PackMachPPC32::PackMachPPC32(InputFile *f) : super(f,
|
||||
Mach_thread_command::PPC_THREAD_STATE,
|
||||
sizeof(Mach_ppc_thread_state)>>2, sizeof(threado)) { }
|
||||
virtual ~PackMachPPC32();
|
||||
|
||||
virtual int getFormat() const { return UPX_F_MACH_PPC32; }
|
||||
virtual const char *getName() const { return "Mach/ppc32"; }
|
||||
virtual const char *getFullName(const options_t *) const { return "powerpc-darwin.macho"; }
|
||||
|
||||
virtual acc_uint64l_t get_native64(const void *b) const { return get_be64(b); }
|
||||
virtual unsigned get_native32(const void *b) const { return get_be32(b); }
|
||||
virtual unsigned get_native16(const void *b) const { return get_be16(b); }
|
||||
virtual void set_native64(void *b, acc_uint64l_t v) const { set_be64(b, v); }
|
||||
virtual void set_native32(void *b, unsigned v) const { set_be32(b, v); }
|
||||
virtual void set_native16(void *b, unsigned v) const { set_be16(b, v); }
|
||||
|
||||
protected:
|
||||
virtual const int *getCompressionMethods(int method, int level) const;
|
||||
virtual const int *getFilters() const;
|
||||
|
@ -383,6 +407,41 @@ protected:
|
|||
__attribute_packed;
|
||||
};
|
||||
|
||||
class PackMachI386 : public PackMachBase<MachClass_LE32>
|
||||
{
|
||||
typedef PackMachBase<MachClass_LE32> super;
|
||||
|
||||
public:
|
||||
PackMachI386(InputFile *f) : super(f,
|
||||
(unsigned)Mach_thread_command::i386_THREAD_STATE,
|
||||
sizeof(Mach_i386_thread_state)>>2, sizeof(threado)) { }
|
||||
|
||||
virtual int getFormat() const { return UPX_F_MACH_i386; }
|
||||
virtual const char *getName() const { return "Mach/i386"; }
|
||||
virtual const char *getFullName(const options_t *) const { return "i386-darwin.macho"; }
|
||||
protected:
|
||||
virtual const int *getCompressionMethods(int method, int level) const;
|
||||
virtual const int *getFilters() const;
|
||||
|
||||
virtual void pack1_setup_threado(OutputFile *const fo);
|
||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
||||
virtual void pack4(OutputFile *, Filter &); // append PackHeader
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void buildLoader(const Filter *ft);
|
||||
|
||||
struct Mach_thread_command
|
||||
{
|
||||
LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
|
||||
LE32 cmdsize; /* total size of this command */
|
||||
LE32 flavor;
|
||||
LE32 count; /* sizeof(following_thread_state)/4 */
|
||||
Mach_i386_thread_state state;
|
||||
#define WANT_MACH_THREAD_ENUM
|
||||
#include "p_mach_enum.h"
|
||||
} threado
|
||||
__attribute_packed;
|
||||
};
|
||||
|
||||
#endif /* already included */
|
||||
|
||||
|
||||
|
|
|
@ -96,7 +96,9 @@
|
|||
#ifdef WANT_MACH_THREAD_ENUM /*{*/
|
||||
#undef WANT_MACH_THREAD_ENUM
|
||||
enum { // thread flavor
|
||||
PPC_THREAD_STATE = 1
|
||||
PPC_THREAD_STATE = 1,
|
||||
i386_THREAD_STATE = -1,
|
||||
i386_NEW_THREAD_STATE = 1,
|
||||
};
|
||||
#endif /*}*/
|
||||
|
||||
|
|
|
@ -65,6 +65,8 @@ STUBS += i386-bsd.elf-entry.h
|
|||
STUBS += i386-bsd.elf-fold.h
|
||||
STUBS += i386-bsd.elf.execve-entry.h
|
||||
STUBS += i386-bsd.elf.execve-fold.h
|
||||
STUBS += i386-darwin.macho-entry.h
|
||||
STUBS += i386-darwin.macho-fold.h
|
||||
STUBS += i386-openbsd.elf-fold.h
|
||||
STUBS += i386-dos32.djgpp2.h
|
||||
STUBS += i386-dos32.djgpp2-stubify.h
|
||||
|
@ -508,6 +510,34 @@ tmp/i386-bsd.elf.execve-upx_itoa.o : $(srcdir)/src/$$T.S
|
|||
$(call tc,f-objstrip,$@)
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // i386-darwin.macho
|
||||
# ************************************************************************/
|
||||
|
||||
# info: we use the tc settings from i386-linux.elf
|
||||
i386-darwin.macho%.h : tc_list = i386-linux.elf default
|
||||
i386-darwin.macho%.h : tc_bfdname = elf32-i386
|
||||
|
||||
i386-darwin.macho-entry.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
i386-darwin.macho-fold.h : tmp/$$T.o tmp/i386-darwin.macho-main.o
|
||||
$(call tc,ld) --no-warn-mismatch --strip-all --oformat binary -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
|
||||
chmod a-x tmp/$T.bin
|
||||
$(call tc,bin2h) tmp/$T.bin $@
|
||||
|
||||
tmp/i386-darwin.macho-fold.o : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c $< -o $@
|
||||
$(call tc,f-objstrip,$@)
|
||||
|
||||
tmp/i386-darwin.macho-main.o : $(srcdir)/src/$$T.c
|
||||
$(call tc,gcc) -c -Os $< -o $@
|
||||
$(call tc,f-objstrip,$@)
|
||||
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // i386-dos32.djgpp2
|
||||
# ************************************************************************/
|
||||
|
|
2382
src/stub/i386-darwin.macho-entry.h
Normal file
2382
src/stub/i386-darwin.macho-entry.h
Normal file
File diff suppressed because it is too large
Load Diff
95
src/stub/i386-darwin.macho-fold.h
Normal file
95
src/stub/i386-darwin.macho-fold.h
Normal file
|
@ -0,0 +1,95 @@
|
|||
/* i386-darwin.macho-fold.h
|
||||
created from i386-darwin.macho-fold.bin, 935 (0x3a7) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2007 Laszlo Molnar
|
||||
Copyright (C) 2000-2007 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_SIZE 935
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_ADLER32 0x6747c2dc
|
||||
#define STUB_I386_DARWIN_MACHO_FOLD_CRC32 0x3a5ab15f
|
||||
|
||||
unsigned char stub_i386_darwin_macho_fold[935] = {
|
||||
204,232,148, 2, 0, 0,255, 96, 40,204,106,153,204,106,197,204, /* 0x 0 */
|
||||
106, 1,204,106, 3,204,106, 5,106, 6,106, 74, 85,137,229, 87, /* 0x 10 */
|
||||
86,139,125, 8, 83,137,195, 57, 56,139,112, 4,115, 7,106,127, /* 0x 20 */
|
||||
232,218,255,255,255,133,255,116, 10,137,249,138, 6, 70,136, 2, /* 0x 30 */
|
||||
66,226,248, 1,123, 4, 41, 59,141,101,244, 91, 94, 95,201,195, /* 0x 40 */
|
||||
85,137,229, 87, 86,137,198, 83,137,211,131,236, 24,139, 69, 8, /* 0x 50 */
|
||||
139,125, 12,137, 69,220,131, 58, 0, 15,132,172, 0, 0, 0,141, /* 0x 60 */
|
||||
85,228,137,240,106, 12,232,161,255,255,255,139, 69,228, 90,133, /* 0x 70 */
|
||||
192,139, 77,232,117, 19,129,249, 85, 80, 88, 33,117, 15,131, 62, /* 0x 80 */
|
||||
0, 15,132,132, 0, 0, 0,235, 4,133,201,117, 7,106,127,232, /* 0x 90 */
|
||||
107,255,255,255, 57,193,119,245, 59, 3,119,241, 57,193,115, 76, /* 0x a0 */
|
||||
137, 69,224, 15,182, 69,236, 80,141, 69,224, 80,255,115, 4, 81, /* 0x b0 */
|
||||
255,118, 4,255, 85,220,131,196, 20,133,192,117,208,139, 85,224, /* 0x c0 */
|
||||
59, 85,228,117,200,138, 69,237,132,192,116, 22,133,255,116, 18, /* 0x d0 */
|
||||
15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4,255,215,131, /* 0x e0 */
|
||||
196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 12,139, 83, 4, 81, /* 0x f0 */
|
||||
137,240,232, 21,255,255,255, 88,139, 85,228,139, 3, 1, 83, 4, /* 0x 100 */
|
||||
41,208,133,192,137, 3,233, 78,255,255,255,141,101,244, 91, 94, /* 0x 110 */
|
||||
95,201,195, 85,137,229, 87, 86, 83,131,236, 48,137, 69,232,139, /* 0x 120 */
|
||||
69, 8,137, 85,228,139, 85, 12,199, 69,208, 0, 0, 0, 0,137, /* 0x 130 */
|
||||
69,224,139, 69, 20,137, 85,220,139, 85, 24,137, 69,216,139,117, /* 0x 140 */
|
||||
232,139, 69,232,137, 85,212, 49,210,131,198, 28,199, 69,204, 0, /* 0x 150 */
|
||||
0, 0, 0, 59, 80, 16, 15,131, 35, 1, 0, 0,139, 6,131,248, /* 0x 160 */
|
||||
1, 15,133,234, 0, 0, 0,139, 86, 24,139, 70, 28,139, 78, 36, /* 0x 170 */
|
||||
137,215, 1,208,137, 85,240,137, 69,200,137,208, 37,255, 15, 0, /* 0x 180 */
|
||||
0,137,203, 41,199, 1,195,137, 77,236,116, 55,139, 69,228, 3, /* 0x 190 */
|
||||
70, 32,133,201, 80,139, 69,220,117, 3,131,200,255,131,125,224, /* 0x 1a0 */
|
||||
0, 80,117, 9,133,201,184, 18, 0, 0, 0,117, 5,184, 18, 16, /* 0x 1b0 */
|
||||
0, 0, 80,106, 3, 83, 87,232, 64,254,255,255,131,196, 24, 57, /* 0x 1c0 */
|
||||
199,117, 88,131,125,224, 0,116, 36,131,126, 36, 0,116, 30,131, /* 0x 1d0 */
|
||||
126, 32, 0,117, 5,139, 85, 16,137, 58,255,117,212,255,117,216, /* 0x 1e0 */
|
||||
139, 69,224,141, 85,236,232, 85,254,255,255, 89, 88,137,216,141, /* 0x 1f0 */
|
||||
20, 31,247,216, 37,255, 15, 0, 0,137, 69,196,116, 8,137,193, /* 0x 200 */
|
||||
198, 2, 0, 66,226,250,133,219,116, 24,255,118, 44, 83, 87,232, /* 0x 210 */
|
||||
246,253,255,255,131,196, 12,133,192,116, 7,106,127,232,221,253, /* 0x 220 */
|
||||
255,255,139, 85,196,141, 4, 19,141, 28, 7, 59, 93,200,115, 59, /* 0x 230 */
|
||||
106, 0,106,255,104, 18, 16, 0, 0,255,118, 44, 41, 93,200,255, /* 0x 240 */
|
||||
117,200, 83,232,180,253,255,255,131,196, 24, 57,195,116, 28,235, /* 0x 250 */
|
||||
202,131,232, 4,131,248, 1,119, 18,131,126, 8,255,117, 12,131, /* 0x 260 */
|
||||
126, 12, 16,117, 6,141, 70, 16,137, 69,208,255, 69,204,139, 85, /* 0x 270 */
|
||||
232,139, 69,204, 3,118, 4, 59, 66, 16,233,215,254,255,255,139, /* 0x 280 */
|
||||
69,208,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83, /* 0x 290 */
|
||||
131,236, 32,199, 69,212, 0, 0, 0, 0,139, 85, 8,139, 69, 20, /* 0x 2a0 */
|
||||
139, 93, 24,137, 69,216,139,117, 16,141, 66, 24,137,117,232,137, /* 0x 2b0 */
|
||||
69,240,139, 69, 12,131,232, 24,137, 69,236,139, 66, 24,139, 85, /* 0x 2c0 */
|
||||
240,106, 0,137, 69,228,139, 69,236,137, 85,224,137, 69,220,141, /* 0x 2d0 */
|
||||
85,228,141, 69,236, 83,232,101,253,255,255,255,117, 28, 83, 49, /* 0x 2e0 */
|
||||
210,255,117, 32,141, 69,220,106,255, 80,137,240,232, 34,254,255, /* 0x 2f0 */
|
||||
255, 49,210,137,199,141, 70, 28,131,196, 28,139, 78, 16, 57,202, /* 0x 300 */
|
||||
15,131,135, 0, 0, 0,131, 56, 14,117,121, 3, 64, 8,106, 0, /* 0x 310 */
|
||||
106, 0, 80,232,237,252,255,255,131,196, 12,133,192,137,195,120, /* 0x 320 */
|
||||
21,255,117,212,255,117,216, 86, 83,232,203,252,255,255,131,196, /* 0x 330 */
|
||||
16, 57, 69,216,116, 15,106,127,232,194,252,255,255,139, 64, 8, /* 0x 340 */
|
||||
137, 69,212,235,220,129, 62,190,186,254,202,117, 23,141, 70, 8, /* 0x 350 */
|
||||
49,210,139, 78, 4, 57,202,115, 11,131, 56, 7,116,223, 66,131, /* 0x 360 */
|
||||
192, 20,235,241,106, 0,139, 85,212,106, 0,137,240,106, 0, 83, /* 0x 370 */
|
||||
106, 0,232,156,253,255,255, 83,137,199,232,137,252,255,255,131, /* 0x 380 */
|
||||
196, 24,235, 9, 3, 64, 4, 66,233,113,255,255,255,141,101,244, /* 0x 390 */
|
||||
137,248, 91, 94, 95,201,195 /* 0x 3a0 */
|
||||
};
|
200
src/stub/src/i386-darwin.macho-entry.S
Normal file
200
src/stub/src/i386-darwin.macho-entry.S
Normal file
|
@ -0,0 +1,200 @@
|
|||
/*
|
||||
; i386-darwin.macho-entry.S -- program entry point & decompressor (i386 Mach-o)
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
;
|
||||
; Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
; Copyright (C) 1996-2007 Laszlo Molnar
|
||||
; Copyright (C) 2000-2007 John F. Reiser
|
||||
; All Rights Reserved.
|
||||
;
|
||||
; UPX and the UCL library are free software; you can redistribute them
|
||||
; and/or modify them under the terms of the GNU General Public License as
|
||||
; published by the Free Software Foundation; either version 2 of
|
||||
; the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; see the file COPYING.
|
||||
; If not, write to the Free Software Foundation, Inc.,
|
||||
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
;
|
||||
; Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
; <mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
;
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
|
||||
#include "arch/i386/macros.S"
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
// see glibc/sysdeps/i386/elf/start.S
|
||||
**************************************************************************/
|
||||
|
||||
section LEXEC000
|
||||
_start: .globl _start
|
||||
int3
|
||||
/*
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date.
|
||||
;; Invoke gdb, and give a 'run' command. Define a single-step macro such as
|
||||
;; define g
|
||||
;; stepi
|
||||
;; x/i $pc
|
||||
;; end
|
||||
;; and a step-over macro such as
|
||||
;; define h
|
||||
;; x/2i $pc
|
||||
;; tbreak *$_
|
||||
;; continue
|
||||
;; x/i $pc
|
||||
;; end
|
||||
;; Step through the code; remember that <Enter> repeats the previous command.
|
||||
;;
|
||||
*/
|
||||
call main // push address of decompress subroutine
|
||||
decompress:
|
||||
|
||||
// /*************************************************************************
|
||||
// // C callable decompressor
|
||||
// **************************************************************************/
|
||||
|
||||
// /* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
#define O_INP (4+ 8*4 +1*4)
|
||||
#define O_INS (4+ 8*4 +2*4)
|
||||
#define O_OUTP (4+ 8*4 +3*4)
|
||||
#define O_OUTS (4+ 8*4 +4*4)
|
||||
#define O_PARAM (4+ 8*4 +5*4)
|
||||
|
||||
#define INP dword ptr [esp+O_INP]
|
||||
#define INS dword ptr [esp+O_INS]
|
||||
#define OUTP dword ptr [esp+O_OUTP]
|
||||
#define OUTS dword ptr [esp+O_OUTS]
|
||||
#define PARM dword ptr [esp+O_PARAM]
|
||||
|
||||
section LEXEC009
|
||||
// empty section for commonality with l_lx_exec86.asm
|
||||
section LEXEC010
|
||||
pusha
|
||||
// cld
|
||||
|
||||
mov esi, INP
|
||||
mov edi, OUTP
|
||||
|
||||
or ebp, -1
|
||||
// align 8
|
||||
|
||||
#include "arch/i386/nrv2b_d32.S"
|
||||
#include "arch/i386/nrv2d_d32.S"
|
||||
#include "arch/i386/nrv2e_d32.S"
|
||||
#include "arch/i386/lzma_d.S"
|
||||
|
||||
section LEXEC015
|
||||
// eax is 0 from decompressor code
|
||||
//xor eax, eax ; return code
|
||||
|
||||
// check compressed size
|
||||
mov edx, INP
|
||||
add edx, INS
|
||||
cmp esi, edx
|
||||
jz .ok
|
||||
dec eax
|
||||
.ok:
|
||||
|
||||
// write back the uncompressed size
|
||||
sub edi, OUTP
|
||||
mov edx, OUTS
|
||||
mov [edx], edi
|
||||
|
||||
mov [7*4 + esp], eax
|
||||
popa
|
||||
ret
|
||||
|
||||
ctojr32
|
||||
ctok32 edi, dl
|
||||
cit32 edi
|
||||
section LEXEC017
|
||||
popa
|
||||
ret
|
||||
|
||||
section LEXEC020
|
||||
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
|
||||
#define MAP_FIXED 0x10
|
||||
#define MAP_PRIVATE 0x02
|
||||
#define MAP_ANONYMOUS 0x1000
|
||||
#define PROT_READ 1
|
||||
#define PROT_WRITE 2
|
||||
#define PROT_EXEC 4
|
||||
#define __NR_mmap 197
|
||||
#define __NR_syscall 198
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define p_memsz 5*4
|
||||
|
||||
#define __NR_write 4
|
||||
#define __NR_exit 1
|
||||
|
||||
#define pushsbli .byte 0x6a, /* push sign-extended byte to long immediate */
|
||||
|
||||
fail_mmap:
|
||||
pushsbli L71 - L70
|
||||
call L71
|
||||
L70:
|
||||
.ascii "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
push 2 // fd stderr
|
||||
push eax // fake ret.addr
|
||||
push __NR_write
|
||||
pop eax
|
||||
int 0x80
|
||||
die:
|
||||
push 127 // only low 7 bits matter!
|
||||
push eax // fake ret.addr
|
||||
push __NR_exit
|
||||
pop eax // write to stderr could fail, leaving eax as -EBADF etc.
|
||||
int 0x80
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
b_method= 8
|
||||
|
||||
// Decompress the rest of this loader, and jump to it.
|
||||
unfold:
|
||||
pop esi // &{ b_info:{sz_unc, sz_cpr, 4{byte}}, compressed_data...}
|
||||
mov eax,[sz_cpr + esi]
|
||||
lea edx,[sz_b_info + eax + esi]
|
||||
push edx // &destination
|
||||
cld
|
||||
lodsd
|
||||
push eax // sz_uncompressed (maximum dstlen for lzma)
|
||||
mov ecx,esp // save &dstlen
|
||||
push eax // space for 5th param
|
||||
push ecx // &dstlen
|
||||
push edx // &dst
|
||||
lodsd
|
||||
push eax // sz_compressed (srclen)
|
||||
lodsd
|
||||
mov [4*3 + esp],eax // last 4 bytes of b_info
|
||||
push esi // &compressed_data
|
||||
call ebp // decompress(&src, srclen, &dst, &dstlen, b_info.misc)
|
||||
add esp, (5+1)*4 // (5+1) args to decompress
|
||||
ret // &destination
|
||||
main:
|
||||
pop ebp // &decompress
|
||||
call unfold
|
||||
// compressed fold_elf86 follows
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
105
src/stub/src/i386-darwin.macho-fold.S
Normal file
105
src/stub/src/i386-darwin.macho-fold.S
Normal file
|
@ -0,0 +1,105 @@
|
|||
/* i386-darwin.macho-fold.S -- linkage to C code to process Mach-o binary
|
||||
*
|
||||
* This file is part of the UPX executable compressor.
|
||||
*
|
||||
* Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
* Copyright (C) 1996-2007 Laszlo Molnar
|
||||
* Copyright (C) 2000-2007 John F. Reiser
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* UPX and the UCL library are free software; you can redistribute them
|
||||
* and/or modify them under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
* <mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
*
|
||||
* John F. Reiser
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/i386/macros.S"
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
|
||||
sz_l_info= 12
|
||||
sz_p_info= 12
|
||||
|
||||
_start: .globl _start # ignored, but silence "cannot find entry symbol _start" from ld
|
||||
|
||||
i386_ts_eax = 0*4
|
||||
i386_ts_ebx = 1*4
|
||||
i386_ts_ecx = 2*4
|
||||
i386_ts_edx = 3*4
|
||||
i386_ts_edi = 4*4
|
||||
i386_ts_esi = 5*4
|
||||
i386_ts_ebp = 6*4
|
||||
i386_ts_esp = 7*4
|
||||
i386_ts_ss = 8*4
|
||||
i386_ts_eflags = 9*4
|
||||
i386_ts_eip = 10*4
|
||||
i386_ts_cs = 11*4
|
||||
i386_ts_ds = 12*4
|
||||
i386_ts_es = 13*4
|
||||
i386_ts_fs = 14*4
|
||||
i386_ts_gs = 15*4
|
||||
fold_begin:
|
||||
int3
|
||||
call upx_main # Out: eax= &Mach_i386_thread_state of dyld
|
||||
jmp [i386_ts_eip + eax]
|
||||
|
||||
SYS_exit =1
|
||||
SYS_fork =2
|
||||
SYS_read =3
|
||||
SYS_write =4
|
||||
SYS_open =5
|
||||
SYS_close =6
|
||||
|
||||
SYS_pread =153
|
||||
SYS_mmap =197
|
||||
SYS_mprotect= 74
|
||||
|
||||
/* SYS_mmap takes a 64-bit off_t, but gcc-3.4.1-20040827 passes long long
|
||||
in wrong registers. So change C interface to use size_t (32-bits) instead
|
||||
of off_t (64 bits), and convert here.
|
||||
*/
|
||||
#define pushbli .byte 0x6a,
|
||||
|
||||
pread: .globl pread
|
||||
int3
|
||||
pushbli SYS_pread
|
||||
mmap: .globl mmap
|
||||
int3
|
||||
pushbli SYS_mmap
|
||||
|
||||
exit: .globl exit
|
||||
int3
|
||||
pushbli SYS_exit
|
||||
read: .globl read
|
||||
int3
|
||||
pushbli SYS_read
|
||||
open: .globl open
|
||||
int3
|
||||
pushbli SYS_open
|
||||
close: .globl close
|
||||
pushbli SYS_close
|
||||
mprotect: .globl mprotect
|
||||
pushbli SYS_mprotect
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
447
src/stub/src/i386-darwin.macho-main.c
Normal file
447
src/stub/src/i386-darwin.macho-main.c
Normal file
|
@ -0,0 +1,447 @@
|
|||
/* i386-darwin.macho-main.c -- loader stub for Mach-o i386
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2007 Laszlo Molnar
|
||||
Copyright (C) 2000-2007 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
#include "include/darwin.h"
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// configuration section
|
||||
**************************************************************************/
|
||||
|
||||
// In order to make it much easier to move this code at runtime and execute
|
||||
// it at an address different from it load address: there must be no
|
||||
// static data, and no string constants.
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// "file" util
|
||||
**************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
size_t size; // must be first to match size[0] uncompressed size
|
||||
char *buf;
|
||||
} Extent;
|
||||
|
||||
|
||||
static void
|
||||
xread(Extent *x, char *buf, size_t count)
|
||||
{
|
||||
char *p=x->buf, *q=buf;
|
||||
size_t j;
|
||||
if (x->size < count) {
|
||||
exit(127);
|
||||
}
|
||||
for (j = count; 0!=j--; ++p, ++q) {
|
||||
*q = *p;
|
||||
}
|
||||
x->buf += count;
|
||||
x->size -= count;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// util
|
||||
**************************************************************************/
|
||||
|
||||
#if 1 //{ save space
|
||||
#define ERR_LAB error: exit(127);
|
||||
#define err_exit(a) goto error
|
||||
#else //}{ save debugging time
|
||||
#define ERR_LAB
|
||||
static void
|
||||
err_exit(int a)
|
||||
{
|
||||
(void)a; // debugging convenience
|
||||
exit(127);
|
||||
}
|
||||
#endif //}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// UPX & NRV stuff
|
||||
**************************************************************************/
|
||||
|
||||
struct l_info { // 12-byte trailer for loader (after macho headers)
|
||||
unsigned l_checksum;
|
||||
unsigned l_magic; // UPX_MAGIC_LE32
|
||||
unsigned short l_lsize;
|
||||
unsigned char l_version;
|
||||
unsigned char l_format;
|
||||
};
|
||||
struct p_info { // 12-byte packed program header
|
||||
unsigned p_progid;
|
||||
unsigned p_filesize;
|
||||
unsigned p_blocksize;
|
||||
};
|
||||
|
||||
struct b_info { // 12-byte header before each compressed block
|
||||
unsigned sz_unc; // uncompressed_size
|
||||
unsigned sz_cpr; // compressed_size
|
||||
unsigned char b_method; // compression algorithm
|
||||
unsigned char b_ftid; // filter id
|
||||
unsigned char b_cto8; // filter parameter
|
||||
unsigned char b_unused;
|
||||
};
|
||||
|
||||
typedef void f_unfilter(
|
||||
nrv_byte *, // also addvalue
|
||||
nrv_uint,
|
||||
unsigned cto8, // junk in high 24 bits
|
||||
unsigned ftid
|
||||
);
|
||||
typedef int f_expand(
|
||||
const nrv_byte *, nrv_uint,
|
||||
nrv_byte *, nrv_uint *, unsigned );
|
||||
|
||||
static void
|
||||
unpackExtent(
|
||||
Extent *const xi, // input
|
||||
Extent *const xo, // output
|
||||
f_expand *const f_decompress,
|
||||
f_unfilter *f_unf
|
||||
)
|
||||
{
|
||||
while (xo->size) {
|
||||
struct b_info h;
|
||||
// Note: if h.sz_unc == h.sz_cpr then the block was not
|
||||
// compressible and is stored in its uncompressed form.
|
||||
|
||||
// Read and check block sizes.
|
||||
xread(xi, (char *)&h, sizeof(h));
|
||||
if (h.sz_unc == 0) { // uncompressed size 0 -> EOF
|
||||
if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic
|
||||
err_exit(2);
|
||||
if (xi->size != 0) // all bytes must be written
|
||||
err_exit(3);
|
||||
break;
|
||||
}
|
||||
if (h.sz_cpr <= 0) {
|
||||
err_exit(4);
|
||||
ERR_LAB
|
||||
}
|
||||
if (h.sz_cpr > h.sz_unc
|
||||
|| h.sz_unc > xo->size ) {
|
||||
err_exit(5);
|
||||
}
|
||||
// Now we have:
|
||||
// assert(h.sz_cpr <= h.sz_unc);
|
||||
// assert(h.sz_unc > 0 && h.sz_unc <= blocksize);
|
||||
// assert(h.sz_cpr > 0 && h.sz_cpr <= blocksize);
|
||||
|
||||
if (h.sz_cpr < h.sz_unc) { // Decompress block
|
||||
nrv_uint out_len = h.sz_unc; // EOF for lzma
|
||||
int const j = (*f_decompress)(xi->buf, h.sz_cpr,
|
||||
xo->buf, &out_len, h.b_method);
|
||||
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
|
||||
err_exit(7);
|
||||
if (h.b_ftid!=0 && f_unf) { // have filter
|
||||
(*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
|
||||
}
|
||||
xi->buf += h.sz_cpr;
|
||||
xi->size -= h.sz_cpr;
|
||||
}
|
||||
else { // copy literal block
|
||||
xread(xi, xo->buf, h.sz_cpr);
|
||||
}
|
||||
xo->buf += h.sz_unc;
|
||||
xo->size -= h.sz_unc;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
upx_bzero(char *p, size_t len)
|
||||
{
|
||||
if (len) do {
|
||||
*p++= 0;
|
||||
} while (--len);
|
||||
}
|
||||
#define bzero upx_bzero
|
||||
|
||||
|
||||
// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits.
|
||||
#define REP8(x) \
|
||||
((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28))
|
||||
#define EXP8(y) \
|
||||
((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0)
|
||||
#define PF_TO_PROT(pf) \
|
||||
((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \
|
||||
( (REP8(PROT_EXEC ) & EXP8(PF_X)) \
|
||||
|(REP8(PROT_READ ) & EXP8(PF_R)) \
|
||||
|(REP8(PROT_WRITE) & EXP8(PF_W)) \
|
||||
) >> ((pf & (PF_R|PF_W|PF_X))<<2) ))
|
||||
|
||||
typedef struct {
|
||||
unsigned magic;
|
||||
unsigned nfat_arch;
|
||||
} Fat_header;
|
||||
typedef struct {
|
||||
unsigned cputype;
|
||||
unsigned cpusubtype;
|
||||
unsigned offset;
|
||||
unsigned size;
|
||||
unsigned align; /* shift count; log base 2 */
|
||||
} Fat_arch;
|
||||
enum e8 {
|
||||
FAT_MAGIC = 0xcafebabe
|
||||
};
|
||||
enum e9 {
|
||||
CPU_TYPE_I386 = 7,
|
||||
CPU_TYPE_POWERPC = 0x00000012,
|
||||
CPU_TYPE_POWERPC64 = 0x01000012
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
unsigned magic;
|
||||
unsigned cputype;
|
||||
unsigned cpysubtype;
|
||||
unsigned filetype;
|
||||
unsigned ncmds;
|
||||
unsigned sizeofcmds;
|
||||
unsigned flags;
|
||||
} Mach_header;
|
||||
enum e0 {
|
||||
MH_MAGIC = 0xfeedface
|
||||
};
|
||||
enum e2 {
|
||||
MH_EXECUTE = 2
|
||||
};
|
||||
enum e3 {
|
||||
MH_NOUNDEFS = 1
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
unsigned cmd;
|
||||
unsigned cmdsize;
|
||||
} Mach_load_command;
|
||||
enum e4 {
|
||||
LC_SEGMENT = 0x1,
|
||||
LC_THREAD = 0x4,
|
||||
LC_UNIXTHREAD = 0x5,
|
||||
LC_LOAD_DYLINKER = 0xe
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
unsigned cmd;
|
||||
unsigned cmdsize;
|
||||
char segname[16];
|
||||
unsigned vmaddr;
|
||||
unsigned vmsize;
|
||||
unsigned fileoff;
|
||||
unsigned filesize;
|
||||
unsigned maxprot;
|
||||
unsigned initprot;
|
||||
unsigned nsects;
|
||||
unsigned flags;
|
||||
} Mach_segment_command;
|
||||
enum e5 {
|
||||
VM_PROT_READ = 1,
|
||||
VM_PROT_WRITE = 2,
|
||||
VM_PROT_EXECUTE = 4
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
unsigned eax, ebx, ecx, edx;
|
||||
unsigned edi, esi, ebp;
|
||||
unsigned esp, ss;
|
||||
unsigned eflags;
|
||||
unsigned eip, cs;
|
||||
unsigned ds, es, fs, gs;
|
||||
} Mach_i386_thread_state;
|
||||
|
||||
typedef struct {
|
||||
unsigned cmd; /* LC_THREAD or LC_UNIXTHREAD */
|
||||
unsigned cmdsize; /* total size of this command */
|
||||
unsigned flavor;
|
||||
unsigned count; /* sizeof(following_thread_state)/4 */
|
||||
Mach_i386_thread_state state;
|
||||
} Mach_thread_command;
|
||||
enum e6 {
|
||||
i386_THREAD_STATE = (unsigned)-1
|
||||
};
|
||||
enum e7 {
|
||||
i386_THREAD_STATE_COUNT = sizeof(Mach_i386_thread_state)/4
|
||||
};
|
||||
|
||||
typedef union {
|
||||
unsigned long offset; /* from start of load command to string */
|
||||
char *ptr;
|
||||
} Mach_lc_str;
|
||||
|
||||
#define MAP_FIXED 0x10
|
||||
#define MAP_PRIVATE 0x02
|
||||
#define MAP_ANON 0x1000
|
||||
#define PROT_READ 1
|
||||
#define PROT_WRITE 2
|
||||
#define PROT_EXEC 4
|
||||
|
||||
extern char *mmap(char *, size_t, unsigned, unsigned, int, /*off_t*/size_t);
|
||||
|
||||
static Mach_i386_thread_state const *
|
||||
do_xmap(
|
||||
Mach_header const *const mhdr,
|
||||
unsigned const fat_offset,
|
||||
Extent *const xi,
|
||||
int const fdi,
|
||||
Mach_header **mhdrpp,
|
||||
f_expand *const f_decompress,
|
||||
f_unfilter *const f_unf
|
||||
)
|
||||
{
|
||||
Mach_segment_command const *sc = (Mach_segment_command const *)(1+ mhdr);
|
||||
Mach_i386_thread_state const *entry = 0;
|
||||
unsigned j;
|
||||
|
||||
for ( j=0; j < mhdr->ncmds; ++j,
|
||||
(sc = (Mach_segment_command const *)(sc->cmdsize + (char const *)sc))
|
||||
) if (LC_SEGMENT==sc->cmd) {
|
||||
Extent xo;
|
||||
size_t mlen = xo.size = sc->filesize;
|
||||
char *addr = xo.buf = (char *)sc->vmaddr;
|
||||
char *haddr = sc->vmsize + addr;
|
||||
size_t frag = (int)addr &~ PAGE_MASK;
|
||||
addr -= frag;
|
||||
mlen += frag;
|
||||
|
||||
if (0!=mlen && addr != mmap(addr, mlen, VM_PROT_READ | VM_PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE |
|
||||
((xi || 0==sc->filesize) ? MAP_ANON : 0),
|
||||
((0==sc->filesize) ? -1 : fdi), sc->fileoff + fat_offset) ) {
|
||||
err_exit(8);
|
||||
}
|
||||
if (xi && 0!=sc->filesize) {
|
||||
if (0==sc->fileoff /*&& 0!=mhdrpp*/) {
|
||||
*mhdrpp = (Mach_header *)addr;
|
||||
}
|
||||
unpackExtent(xi, &xo, f_decompress, f_unf);
|
||||
}
|
||||
/*bzero(addr, frag);*/ // fragment at lo end
|
||||
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
|
||||
bzero(mlen+addr, frag); // fragment at hi end
|
||||
if (0!=mlen && 0!=mprotect(addr, mlen, sc->initprot)) {
|
||||
err_exit(10);
|
||||
ERR_LAB
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != mmap(addr, haddr - addr, sc->initprot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) {
|
||||
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
|
||||
if (i386_THREAD_STATE ==thrc->flavor
|
||||
&& i386_THREAD_STATE_COUNT==thrc->count ) {
|
||||
entry = &thrc->state;
|
||||
}
|
||||
}
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// upx_main - called by our entry code
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
Mach_i386_thread_state const *
|
||||
upx_main(
|
||||
struct l_info const *const li,
|
||||
size_t volatile sz_compressed, // total length
|
||||
Mach_header *const mhdr, // temp char[sz_mhdr] for decompressing
|
||||
size_t const sz_mhdr,
|
||||
f_expand *const f_decompress,
|
||||
f_unfilter *const f_unf,
|
||||
Mach_header **const mhdrpp // Out: *mhdrpp= &real Mach_header
|
||||
)
|
||||
{
|
||||
Mach_i386_thread_state const *entry;
|
||||
unsigned fat_offset = 0;
|
||||
Extent xi, xo, xi0;
|
||||
xi.buf = CONST_CAST(char *, 1+ (struct p_info const *)(1+ li)); // &b_info
|
||||
xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info));
|
||||
xo.buf = (char *)mhdr;
|
||||
xo.size = ((struct b_info const *)xi.buf)->sz_unc;
|
||||
xi0 = xi;
|
||||
|
||||
// Uncompress Macho headers
|
||||
unpackExtent(&xi, &xo, f_decompress, 0); // never filtered?
|
||||
|
||||
entry = do_xmap(mhdr, fat_offset, &xi0, -1, mhdrpp, f_decompress, f_unf);
|
||||
|
||||
{ // Map dyld dynamic loader
|
||||
Mach_load_command const *lc = (Mach_load_command const *)(1+ mhdr);
|
||||
unsigned j;
|
||||
|
||||
for (j=0; j < mhdr->ncmds; ++j,
|
||||
(lc = (Mach_load_command const *)(lc->cmdsize + (char const *)lc))
|
||||
) if (LC_LOAD_DYLINKER==lc->cmd) {
|
||||
char const *const dyld_name = ((Mach_lc_str const *)(1+ lc))->offset +
|
||||
(char const *)lc;
|
||||
int const fdi = open(dyld_name, O_RDONLY, 0);
|
||||
if (0 > fdi) {
|
||||
err_exit(18);
|
||||
}
|
||||
fat:
|
||||
if ((ssize_t)sz_mhdr!=pread(fdi, (void *)mhdr, sz_mhdr, fat_offset)) {
|
||||
ERR_LAB
|
||||
err_exit(19);
|
||||
}
|
||||
switch (mhdr->magic) {
|
||||
case MH_MAGIC: break;
|
||||
case FAT_MAGIC: {
|
||||
// stupid Apple: waste code and a page fault on EVERY execve
|
||||
Fat_header const *const fh = (Fat_header const *)mhdr;
|
||||
Fat_arch const *fa = (Fat_arch const *)(1+ fh);
|
||||
for (j= 0; j < fh->nfat_arch; ++j, ++fa) {
|
||||
if (CPU_TYPE_I386==fa->cputype) {
|
||||
fat_offset= fa->offset;
|
||||
goto fat;
|
||||
}
|
||||
}
|
||||
} break;
|
||||
} // switch
|
||||
entry = do_xmap(mhdr, fat_offset, 0, fdi, 0, 0, 0);
|
||||
close(fdi);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
vi:ts=4:et:nowrap
|
||||
*/
|
||||
|
653
src/stub/tmp/i386-darwin.macho-entry.bin.dump
Normal file
653
src/stub/tmp/i386-darwin.macho-entry.bin.dump
Normal file
|
@ -0,0 +1,653 @@
|
|||
tmp/i386-darwin.macho-entry.bin: file format elf32-i386
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 LEXEC000 00000006 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||
1 LEXEC009 00000000 00000000 00000000 0000003a 2**0 CONTENTS, READONLY
|
||||
2 LEXEC010 0000000c 00000000 00000000 0000003a 2**0 CONTENTS, READONLY
|
||||
3 N2BSMA10 00000003 00000000 00000000 00000046 2**0 CONTENTS, RELOC, READONLY
|
||||
4 N2BFAS10 00000002 00000000 00000000 00000049 2**0 CONTENTS, RELOC, READONLY
|
||||
5 N2BFAS11 00000006 00000000 00000000 0000004b 2**0 CONTENTS, READONLY
|
||||
6 N2BDEC10 0000000b 00000000 00000000 00000051 2**0 CONTENTS, READONLY
|
||||
7 N2BSMA20 00000005 00000000 00000000 0000005c 2**0 CONTENTS, RELOC, READONLY
|
||||
8 N2BFAS20 00000009 00000000 00000000 00000061 2**0 CONTENTS, RELOC, READONLY
|
||||
9 N2BDEC20 0000000d 00000000 00000000 0000006a 2**0 CONTENTS, READONLY
|
||||
10 N2BSMA30 0000000d 00000000 00000000 00000077 2**0 CONTENTS, RELOC, READONLY
|
||||
11 N2BFAS30 0000000f 00000000 00000000 00000084 2**0 CONTENTS, RELOC, READONLY
|
||||
12 N2BDEC30 0000003e 00000000 00000000 00000093 2**0 CONTENTS, RELOC, READONLY
|
||||
13 N2BSMA40 0000000d 00000000 00000000 000000d1 2**0 CONTENTS, RELOC, READONLY
|
||||
14 N2BFAS40 0000000f 00000000 00000000 000000de 2**0 CONTENTS, RELOC, READONLY
|
||||
15 N2BSMA50 00000002 00000000 00000000 000000ed 2**0 CONTENTS, READONLY
|
||||
16 N2BFAS50 00000003 00000000 00000000 000000ef 2**0 CONTENTS, READONLY
|
||||
17 N2BDEC50 00000009 00000000 00000000 000000f2 2**0 CONTENTS, READONLY
|
||||
18 N2BSMA60 0000000c 00000000 00000000 000000fb 2**0 CONTENTS, RELOC, READONLY
|
||||
19 N2BFAS60 00000019 00000000 00000000 00000107 2**0 CONTENTS, RELOC, READONLY
|
||||
20 N2BFAS61 00000016 00000000 00000000 00000120 2**0 CONTENTS, RELOC, READONLY
|
||||
21 N2BDEC60 00000000 00000000 00000000 00000136 2**0 CONTENTS, READONLY
|
||||
22 N2DSMA10 00000003 00000000 00000000 00000136 2**0 CONTENTS, RELOC, READONLY
|
||||
23 N2DFAS10 00000002 00000000 00000000 00000139 2**0 CONTENTS, RELOC, READONLY
|
||||
24 N2DFAS11 00000006 00000000 00000000 0000013b 2**0 CONTENTS, READONLY
|
||||
25 N2DDEC10 0000000b 00000000 00000000 00000141 2**0 CONTENTS, READONLY
|
||||
26 N2DSMA20 00000005 00000000 00000000 0000014c 2**0 CONTENTS, RELOC, READONLY
|
||||
27 N2DFAS20 00000009 00000000 00000000 00000151 2**0 CONTENTS, RELOC, READONLY
|
||||
28 N2DDEC20 0000000d 00000000 00000000 0000015a 2**0 CONTENTS, READONLY
|
||||
29 N2DSMA30 0000000d 00000000 00000000 00000167 2**0 CONTENTS, RELOC, READONLY
|
||||
30 N2DFAS30 0000000f 00000000 00000000 00000174 2**0 CONTENTS, RELOC, READONLY
|
||||
31 N2DDEC30 00000052 00000000 00000000 00000183 2**0 CONTENTS, RELOC, READONLY
|
||||
32 N2DSMA40 0000000d 00000000 00000000 000001d5 2**0 CONTENTS, RELOC, READONLY
|
||||
33 N2DFAS40 0000000f 00000000 00000000 000001e2 2**0 CONTENTS, RELOC, READONLY
|
||||
34 N2DSMA50 00000002 00000000 00000000 000001f1 2**0 CONTENTS, READONLY
|
||||
35 N2DFAS50 00000003 00000000 00000000 000001f3 2**0 CONTENTS, READONLY
|
||||
36 N2DDEC50 00000009 00000000 00000000 000001f6 2**0 CONTENTS, READONLY
|
||||
37 N2DSMA60 0000000c 00000000 00000000 000001ff 2**0 CONTENTS, RELOC, READONLY
|
||||
38 N2DFAS60 00000019 00000000 00000000 0000020b 2**0 CONTENTS, RELOC, READONLY
|
||||
39 N2DFAS61 00000016 00000000 00000000 00000224 2**0 CONTENTS, RELOC, READONLY
|
||||
40 N2DDEC60 00000000 00000000 00000000 0000023a 2**0 CONTENTS, READONLY
|
||||
41 N2ESMA10 00000003 00000000 00000000 0000023a 2**0 CONTENTS, RELOC, READONLY
|
||||
42 N2EFAS10 00000002 00000000 00000000 0000023d 2**0 CONTENTS, RELOC, READONLY
|
||||
43 N2EFAS11 00000006 00000000 00000000 0000023f 2**0 CONTENTS, READONLY
|
||||
44 N2EDEC10 0000000b 00000000 00000000 00000245 2**0 CONTENTS, READONLY
|
||||
45 N2ESMA20 00000005 00000000 00000000 00000250 2**0 CONTENTS, RELOC, READONLY
|
||||
46 N2EFAS20 00000009 00000000 00000000 00000255 2**0 CONTENTS, RELOC, READONLY
|
||||
47 N2EDEC20 0000000d 00000000 00000000 0000025e 2**0 CONTENTS, READONLY
|
||||
48 N2ESMA30 0000000d 00000000 00000000 0000026b 2**0 CONTENTS, RELOC, READONLY
|
||||
49 N2EFAS30 0000000f 00000000 00000000 00000278 2**0 CONTENTS, RELOC, READONLY
|
||||
50 N2EDEC30 0000005f 00000000 00000000 00000287 2**0 CONTENTS, RELOC, READONLY
|
||||
51 N2ESMA40 0000000d 00000000 00000000 000002e6 2**0 CONTENTS, RELOC, READONLY
|
||||
52 N2EFAS40 0000000f 00000000 00000000 000002f3 2**0 CONTENTS, RELOC, READONLY
|
||||
53 N2ESMA50 00000002 00000000 00000000 00000302 2**0 CONTENTS, READONLY
|
||||
54 N2EFAS50 00000003 00000000 00000000 00000304 2**0 CONTENTS, READONLY
|
||||
55 N2EDEC50 00000009 00000000 00000000 00000307 2**0 CONTENTS, READONLY
|
||||
56 N2ESMA60 0000000c 00000000 00000000 00000310 2**0 CONTENTS, RELOC, READONLY
|
||||
57 N2EFAS60 00000019 00000000 00000000 0000031c 2**0 CONTENTS, RELOC, READONLY
|
||||
58 N2EFAS61 00000016 00000000 00000000 00000335 2**0 CONTENTS, RELOC, READONLY
|
||||
59 N2EDEC60 00000000 00000000 00000000 0000034b 2**0 CONTENTS, READONLY
|
||||
60 LZMA_DEC00 0000002e 00000000 00000000 0000034b 2**0 CONTENTS, RELOC, READONLY
|
||||
61 LZMA_ELF00 00000048 00000000 00000000 00000379 2**0 CONTENTS, READONLY
|
||||
62 LZMA_DEC10 00000a86 00000000 00000000 000003c1 2**0 CONTENTS, READONLY
|
||||
63 LZMA_DEC20 00000a86 00000000 00000000 00000e47 2**0 CONTENTS, READONLY
|
||||
64 LZMA_DEC30 0000001a 00000000 00000000 000018cd 2**0 CONTENTS, READONLY
|
||||
65 LEXEC015 0000001d 00000000 00000000 000018e7 2**0 CONTENTS, READONLY
|
||||
66 LXUNF000 00000002 00000000 00000000 00001904 2**0 CONTENTS, RELOC, READONLY
|
||||
67 LXUNF002 00000005 00000000 00000000 00001906 2**0 CONTENTS, READONLY
|
||||
68 MRUBYTE0 00000002 00000000 00000000 0000190b 2**0 CONTENTS, READONLY
|
||||
69 LXMRU005 00000005 00000000 00000000 0000190d 2**0 CONTENTS, RELOC, READONLY
|
||||
70 LXMRU006 00000007 00000000 00000000 00001912 2**0 CONTENTS, READONLY
|
||||
71 LXMRU007 00000007 00000000 00000000 00001919 2**0 CONTENTS, READONLY
|
||||
72 LXUNF008 00000004 00000000 00000000 00001920 2**0 CONTENTS, READONLY
|
||||
73 LXUNF010 00000005 00000000 00000000 00001924 2**0 CONTENTS, RELOC, READONLY
|
||||
74 LXJCC010 00000003 00000000 00000000 00001929 2**0 CONTENTS, READONLY
|
||||
75 LXMRU045 00000003 00000000 00000000 0000192c 2**0 CONTENTS, READONLY
|
||||
76 LXMRU046 00000002 00000000 00000000 0000192f 2**0 CONTENTS, READONLY
|
||||
77 LXJCC020 00000002 00000000 00000000 00001931 2**0 CONTENTS, RELOC, READONLY
|
||||
78 LXJCC021 00000005 00000000 00000000 00001933 2**0 CONTENTS, RELOC, READONLY
|
||||
79 LXJCC023 00000007 00000000 00000000 00001938 2**0 CONTENTS, READONLY
|
||||
80 LXUNF037 00000002 00000000 00000000 0000193f 2**0 CONTENTS, READONLY
|
||||
81 LXUNF386 00000001 00000000 00000000 00001941 2**0 CONTENTS, READONLY
|
||||
82 LXUNF387 00000009 00000000 00000000 00001942 2**0 CONTENTS, READONLY
|
||||
83 LXUNF388 00000003 00000000 00000000 0000194b 2**0 CONTENTS, RELOC, READONLY
|
||||
84 LXUNF486 00000004 00000000 00000000 0000194e 2**0 CONTENTS, READONLY
|
||||
85 LXUNF487 00000002 00000000 00000000 00001952 2**0 CONTENTS, RELOC, READONLY
|
||||
86 LXMRU065 00000005 00000000 00000000 00001954 2**0 CONTENTS, RELOC, READONLY
|
||||
87 MRUBYTE3 00000002 00000000 00000000 00001959 2**0 CONTENTS, READONLY
|
||||
88 MRUARB30 00000001 00000000 00000000 0000195b 2**0 CONTENTS, READONLY
|
||||
89 MRUBITS3 00000002 00000000 00000000 0000195c 2**0 CONTENTS, READONLY
|
||||
90 MRUARB40 00000004 00000000 00000000 0000195e 2**0 CONTENTS, READONLY
|
||||
91 LXMRU070 00000008 00000000 00000000 00001962 2**0 CONTENTS, RELOC, READONLY
|
||||
92 MRUBYTE4 00000003 00000000 00000000 0000196a 2**0 CONTENTS, READONLY
|
||||
93 MRUBITS4 00000002 00000000 00000000 0000196d 2**0 CONTENTS, READONLY
|
||||
94 MRUARB50 00000006 00000000 00000000 0000196f 2**0 CONTENTS, READONLY
|
||||
95 LXMRU080 00000003 00000000 00000000 00001975 2**0 CONTENTS, READONLY
|
||||
96 MRUBYTE5 00000002 00000000 00000000 00001978 2**0 CONTENTS, READONLY
|
||||
97 MRUARB60 00000001 00000000 00000000 0000197a 2**0 CONTENTS, READONLY
|
||||
98 MRUBITS5 00000002 00000000 00000000 0000197b 2**0 CONTENTS, READONLY
|
||||
99 MRUARB70 00000004 00000000 00000000 0000197d 2**0 CONTENTS, READONLY
|
||||
100 LXMRU090 0000000b 00000000 00000000 00001981 2**0 CONTENTS, RELOC, READONLY
|
||||
101 MRUBYTE6 00000002 00000000 00000000 0000198c 2**0 CONTENTS, READONLY
|
||||
102 MRUARB80 00000001 00000000 00000000 0000198e 2**0 CONTENTS, READONLY
|
||||
103 MRUBITS6 00000002 00000000 00000000 0000198f 2**0 CONTENTS, READONLY
|
||||
104 MRUARB90 00000004 00000000 00000000 00001991 2**0 CONTENTS, READONLY
|
||||
105 LXMRU100 00000010 00000000 00000000 00001995 2**0 CONTENTS, READONLY
|
||||
106 LXUNF040 00000005 00000000 00000000 000019a5 2**0 CONTENTS, READONLY
|
||||
107 LXMRU110 00000003 00000000 00000000 000019aa 2**0 CONTENTS, READONLY
|
||||
108 LXMRU111 00000002 00000000 00000000 000019ad 2**0 CONTENTS, READONLY
|
||||
109 LXUNF041 00000007 00000000 00000000 000019af 2**0 CONTENTS, RELOC, READONLY
|
||||
110 LXUNF042 00000000 00000000 00000000 000019b6 2**0 CONTENTS, READONLY
|
||||
111 LEXEC016 00000005 00000000 00000000 000019b6 2**0 CONTENTS, RELOC, READONLY
|
||||
112 LXMRU010 00000001 00000000 00000000 000019bb 2**0 CONTENTS, READONLY
|
||||
113 LXJMPA00 00000002 00000000 00000000 000019bc 2**0 CONTENTS, READONLY
|
||||
114 LXCALLB0 00000002 00000000 00000000 000019be 2**0 CONTENTS, READONLY
|
||||
115 LXUNF021 00000006 00000000 00000000 000019c0 2**0 CONTENTS, READONLY
|
||||
116 LXMRU022 00000003 00000000 00000000 000019c6 2**0 CONTENTS, READONLY
|
||||
117 LXJMPA01 00000002 00000000 00000000 000019c9 2**0 CONTENTS, READONLY
|
||||
118 LXCALLB1 00000002 00000000 00000000 000019cb 2**0 CONTENTS, READONLY
|
||||
119 MRUBITS1 00000001 00000000 00000000 000019cd 2**0 CONTENTS, READONLY
|
||||
120 LXMRU030 00000002 00000000 00000000 000019ce 2**0 CONTENTS, READONLY
|
||||
121 MRUBYTE1 00000002 00000000 00000000 000019d0 2**0 CONTENTS, READONLY
|
||||
122 MRUARB10 00000001 00000000 00000000 000019d2 2**0 CONTENTS, READONLY
|
||||
123 LXMRU040 00000002 00000000 00000000 000019d3 2**0 CONTENTS, RELOC, READONLY
|
||||
124 LXUNF030 00000006 00000000 00000000 000019d5 2**0 CONTENTS, READONLY
|
||||
125 LXJCC000 00000008 00000000 00000000 000019db 2**0 CONTENTS, RELOC, READONLY
|
||||
126 LXCJ0MRU 00000002 00000000 00000000 000019e3 2**0 CONTENTS, READONLY
|
||||
127 LXCJ1MRU 00000003 00000000 00000000 000019e5 2**0 CONTENTS, READONLY
|
||||
128 LXCALJMP 00000003 00000000 00000000 000019e8 2**0 CONTENTS, READONLY
|
||||
129 LXCALL00 00000002 00000000 00000000 000019eb 2**0 CONTENTS, RELOC, READONLY
|
||||
130 LXCALL01 00000003 00000000 00000000 000019ed 2**0 CONTENTS, READONLY
|
||||
131 LXCJ2MRU 00000002 00000000 00000000 000019f0 2**0 CONTENTS, RELOC, READONLY
|
||||
132 LXCJ4MRU 00000002 00000000 00000000 000019f2 2**0 CONTENTS, RELOC, READONLY
|
||||
133 LXCJ6MRU 00000002 00000000 00000000 000019f4 2**0 CONTENTS, RELOC, READONLY
|
||||
134 LXCJ7MRU 00000002 00000000 00000000 000019f6 2**0 CONTENTS, RELOC, READONLY
|
||||
135 LXCJ8MRU 00000003 00000000 00000000 000019f8 2**0 CONTENTS, RELOC, READONLY
|
||||
136 LXUNF034 00000005 00000000 00000000 000019fb 2**0 CONTENTS, RELOC, READONLY
|
||||
137 LXMRU055 00000002 00000000 00000000 00001a00 2**0 CONTENTS, READONLY
|
||||
138 MRUBYTE2 00000005 00000000 00000000 00001a02 2**0 CONTENTS, READONLY
|
||||
139 MRUBITS2 00000005 00000000 00000000 00001a07 2**0 CONTENTS, READONLY
|
||||
140 MRUARB20 00000005 00000000 00000000 00001a0c 2**0 CONTENTS, READONLY
|
||||
141 LXMRU057 00000006 00000000 00000000 00001a11 2**0 CONTENTS, READONLY
|
||||
142 LXMRU058 00000001 00000000 00000000 00001a17 2**0 CONTENTS, READONLY
|
||||
143 LXUNF035 00000006 00000000 00000000 00001a18 2**0 CONTENTS, READONLY
|
||||
144 ctok32.00 00000009 00000000 00000000 00001a1e 2**0 CONTENTS, RELOC, READONLY
|
||||
145 ctok32.10 0000000e 00000000 00000000 00001a27 2**0 CONTENTS, RELOC, READONLY
|
||||
146 ctok32.20 00000021 00000000 00000000 00001a35 2**0 CONTENTS, RELOC, READONLY
|
||||
147 ctok32.30 00000007 00000000 00000000 00001a56 2**0 CONTENTS, RELOC, READONLY
|
||||
148 ctok32.40 00000005 00000000 00000000 00001a5d 2**0 CONTENTS, RELOC, READONLY
|
||||
149 CALLTR00 00000010 00000000 00000000 00001a62 2**0 CONTENTS, RELOC, READONLY
|
||||
150 CTCLEVE1 00000005 00000000 00000000 00001a72 2**0 CONTENTS, RELOC, READONLY
|
||||
151 CALLTR01 00000005 00000000 00000000 00001a77 2**0 CONTENTS, READONLY
|
||||
152 CTBSHR01 00000004 00000000 00000000 00001a7c 2**0 CONTENTS, READONLY
|
||||
153 CTBROR01 00000002 00000000 00000000 00001a80 2**0 CONTENTS, READONLY
|
||||
154 CTBSWA01 00000005 00000000 00000000 00001a82 2**0 CONTENTS, READONLY
|
||||
155 CALLTR02 00000010 00000000 00000000 00001a87 2**0 CONTENTS, RELOC, READONLY
|
||||
156 CALLTR10 00000005 00000000 00000000 00001a97 2**0 CONTENTS, RELOC, READONLY
|
||||
157 CALLTRE8 00000002 00000000 00000000 00001a9c 2**0 CONTENTS, READONLY
|
||||
158 CALLTRE9 00000002 00000000 00000000 00001a9e 2**0 CONTENTS, READONLY
|
||||
159 CALLTR11 00000004 00000000 00000000 00001aa0 2**0 CONTENTS, RELOC, READONLY
|
||||
160 CTCLEVE2 00000005 00000000 00000000 00001aa4 2**0 CONTENTS, RELOC, READONLY
|
||||
161 CALLTR12 00000002 00000000 00000000 00001aa9 2**0 CONTENTS, READONLY
|
||||
162 CTBSHR11 00000004 00000000 00000000 00001aab 2**0 CONTENTS, READONLY
|
||||
163 CTBROR11 00000002 00000000 00000000 00001aaf 2**0 CONTENTS, READONLY
|
||||
164 CTBSWA11 00000005 00000000 00000000 00001ab1 2**0 CONTENTS, READONLY
|
||||
165 CALLTR13 00000007 00000000 00000000 00001ab6 2**0 CONTENTS, RELOC, READONLY
|
||||
166 LEXEC017 00000002 00000000 00000000 00001abd 2**0 CONTENTS, READONLY
|
||||
167 LEXEC020 00000059 00000000 00000000 00001abf 2**0 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d N2BSMA10 00000000 N2BSMA10
|
||||
00000000 l d N2BFAS11 00000000 N2BFAS11
|
||||
00000000 l d N2BDEC10 00000000 N2BDEC10
|
||||
00000000 l d N2BDEC20 00000000 N2BDEC20
|
||||
00000000 l d N2BDEC30 00000000 N2BDEC30
|
||||
00000000 l d N2BDEC50 00000000 N2BDEC50
|
||||
00000000 l d N2BFAS61 00000000 N2BFAS61
|
||||
00000000 l d N2BDEC60 00000000 N2BDEC60
|
||||
00000000 l d N2DSMA10 00000000 N2DSMA10
|
||||
00000000 l d N2DFAS11 00000000 N2DFAS11
|
||||
00000000 l d N2DDEC10 00000000 N2DDEC10
|
||||
00000000 l d N2DDEC20 00000000 N2DDEC20
|
||||
00000000 l d N2DDEC30 00000000 N2DDEC30
|
||||
00000000 l d N2DDEC50 00000000 N2DDEC50
|
||||
00000000 l d N2DFAS61 00000000 N2DFAS61
|
||||
00000000 l d N2DDEC60 00000000 N2DDEC60
|
||||
00000000 l d N2ESMA10 00000000 N2ESMA10
|
||||
00000000 l d N2EFAS11 00000000 N2EFAS11
|
||||
00000000 l d N2EDEC10 00000000 N2EDEC10
|
||||
00000000 l d N2EDEC20 00000000 N2EDEC20
|
||||
00000000 l d N2EDEC30 00000000 N2EDEC30
|
||||
00000000 l d N2EDEC50 00000000 N2EDEC50
|
||||
00000000 l d N2EFAS61 00000000 N2EFAS61
|
||||
00000000 l d N2EDEC60 00000000 N2EDEC60
|
||||
00000000 l d LXUNF010 00000000 LXUNF010
|
||||
00000000 l d LXJCC010 00000000 LXJCC010
|
||||
00000000 l d LXUNF037 00000000 LXUNF037
|
||||
00000000 l d LXMRU070 00000000 LXMRU070
|
||||
00000000 l d LXMRU100 00000000 LXMRU100
|
||||
00000000 l d LXUNF040 00000000 LXUNF040
|
||||
00000000 l d LXUNF042 00000000 LXUNF042
|
||||
00000000 l d LXMRU030 00000000 LXMRU030
|
||||
00000000 l d LXUNF030 00000000 LXUNF030
|
||||
00000000 l d LXCJ8MRU 00000000 LXCJ8MRU
|
||||
00000000 l d LXUNF034 00000000 LXUNF034
|
||||
00000000 l d ctok32.00 00000000 ctok32.00
|
||||
00000000 l d ctok32.10 00000000 ctok32.10
|
||||
00000000 l d ctok32.20 00000000 ctok32.20
|
||||
00000000 l d ctok32.40 00000000 ctok32.40
|
||||
00000000 l d CALLTR00 00000000 CALLTR00
|
||||
00000000 l d CALLTR10 00000000 CALLTR10
|
||||
00000000 l d CALLTR11 00000000 CALLTR11
|
||||
00000000 l d CALLTR13 00000000 CALLTR13
|
||||
00000000 l d LEXEC020 00000000 LEXEC020
|
||||
00000000 l d LEXEC000 00000000 LEXEC000
|
||||
00000000 l d LEXEC009 00000000 LEXEC009
|
||||
00000000 l d LEXEC010 00000000 LEXEC010
|
||||
00000000 l d N2BFAS10 00000000 N2BFAS10
|
||||
00000000 l d N2BSMA20 00000000 N2BSMA20
|
||||
00000000 l d N2BFAS20 00000000 N2BFAS20
|
||||
00000000 l d N2BSMA30 00000000 N2BSMA30
|
||||
00000000 l d N2BFAS30 00000000 N2BFAS30
|
||||
00000000 l d N2BSMA40 00000000 N2BSMA40
|
||||
00000000 l d N2BFAS40 00000000 N2BFAS40
|
||||
00000000 l d N2BSMA50 00000000 N2BSMA50
|
||||
00000000 l d N2BFAS50 00000000 N2BFAS50
|
||||
00000000 l d N2BSMA60 00000000 N2BSMA60
|
||||
00000000 l d N2BFAS60 00000000 N2BFAS60
|
||||
00000000 l d N2DFAS10 00000000 N2DFAS10
|
||||
00000000 l d N2DSMA20 00000000 N2DSMA20
|
||||
00000000 l d N2DFAS20 00000000 N2DFAS20
|
||||
00000000 l d N2DSMA30 00000000 N2DSMA30
|
||||
00000000 l d N2DFAS30 00000000 N2DFAS30
|
||||
00000000 l d N2DSMA40 00000000 N2DSMA40
|
||||
00000000 l d N2DFAS40 00000000 N2DFAS40
|
||||
00000000 l d N2DSMA50 00000000 N2DSMA50
|
||||
00000000 l d N2DFAS50 00000000 N2DFAS50
|
||||
00000000 l d N2DSMA60 00000000 N2DSMA60
|
||||
00000000 l d N2DFAS60 00000000 N2DFAS60
|
||||
00000000 l d N2EFAS10 00000000 N2EFAS10
|
||||
00000000 l d N2ESMA20 00000000 N2ESMA20
|
||||
00000000 l d N2EFAS20 00000000 N2EFAS20
|
||||
00000000 l d N2ESMA30 00000000 N2ESMA30
|
||||
00000000 l d N2EFAS30 00000000 N2EFAS30
|
||||
00000000 l d N2ESMA40 00000000 N2ESMA40
|
||||
00000000 l d N2EFAS40 00000000 N2EFAS40
|
||||
00000000 l d N2ESMA50 00000000 N2ESMA50
|
||||
00000000 l d N2EFAS50 00000000 N2EFAS50
|
||||
00000000 l d N2ESMA60 00000000 N2ESMA60
|
||||
00000000 l d N2EFAS60 00000000 N2EFAS60
|
||||
00000000 l d LZMA_DEC00 00000000 LZMA_DEC00
|
||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||
00000000 l d LEXEC015 00000000 LEXEC015
|
||||
00000000 l d LXUNF000 00000000 LXUNF000
|
||||
00000000 l d LXUNF002 00000000 LXUNF002
|
||||
00000000 l d MRUBYTE0 00000000 MRUBYTE0
|
||||
00000000 l d LXMRU005 00000000 LXMRU005
|
||||
00000000 l d LXMRU006 00000000 LXMRU006
|
||||
00000000 l d LXMRU007 00000000 LXMRU007
|
||||
00000000 l d LXUNF008 00000000 LXUNF008
|
||||
00000000 l d LXMRU045 00000000 LXMRU045
|
||||
00000000 l d LXMRU046 00000000 LXMRU046
|
||||
00000000 l d LXJCC020 00000000 LXJCC020
|
||||
00000000 l d LXJCC021 00000000 LXJCC021
|
||||
00000000 l d LXJCC023 00000000 LXJCC023
|
||||
00000000 l d LXUNF386 00000000 LXUNF386
|
||||
00000000 l d LXUNF387 00000000 LXUNF387
|
||||
00000000 l d LXUNF388 00000000 LXUNF388
|
||||
00000000 l d LXUNF486 00000000 LXUNF486
|
||||
00000000 l d LXUNF487 00000000 LXUNF487
|
||||
00000000 l d LXMRU065 00000000 LXMRU065
|
||||
00000000 l d MRUBYTE3 00000000 MRUBYTE3
|
||||
00000000 l d MRUARB30 00000000 MRUARB30
|
||||
00000000 l d MRUBITS3 00000000 MRUBITS3
|
||||
00000000 l d MRUARB40 00000000 MRUARB40
|
||||
00000000 l d MRUBYTE4 00000000 MRUBYTE4
|
||||
00000000 l d MRUBITS4 00000000 MRUBITS4
|
||||
00000000 l d MRUARB50 00000000 MRUARB50
|
||||
00000000 l d LXMRU080 00000000 LXMRU080
|
||||
00000000 l d MRUBYTE5 00000000 MRUBYTE5
|
||||
00000000 l d MRUARB60 00000000 MRUARB60
|
||||
00000000 l d MRUBITS5 00000000 MRUBITS5
|
||||
00000000 l d MRUARB70 00000000 MRUARB70
|
||||
00000000 l d LXMRU090 00000000 LXMRU090
|
||||
00000000 l d MRUBYTE6 00000000 MRUBYTE6
|
||||
00000000 l d MRUARB80 00000000 MRUARB80
|
||||
00000000 l d MRUBITS6 00000000 MRUBITS6
|
||||
00000000 l d MRUARB90 00000000 MRUARB90
|
||||
00000000 l d LXMRU110 00000000 LXMRU110
|
||||
00000000 l d LXMRU111 00000000 LXMRU111
|
||||
00000000 l d LXUNF041 00000000 LXUNF041
|
||||
00000000 l d LEXEC016 00000000 LEXEC016
|
||||
00000000 l d LXMRU010 00000000 LXMRU010
|
||||
00000000 l d LXJMPA00 00000000 LXJMPA00
|
||||
00000000 l d LXCALLB0 00000000 LXCALLB0
|
||||
00000000 l d LXUNF021 00000000 LXUNF021
|
||||
00000000 l d LXMRU022 00000000 LXMRU022
|
||||
00000000 l d LXJMPA01 00000000 LXJMPA01
|
||||
00000000 l d LXCALLB1 00000000 LXCALLB1
|
||||
00000000 l d MRUBITS1 00000000 MRUBITS1
|
||||
00000000 l d MRUBYTE1 00000000 MRUBYTE1
|
||||
00000000 l d MRUARB10 00000000 MRUARB10
|
||||
00000000 l d LXMRU040 00000000 LXMRU040
|
||||
00000000 l d LXJCC000 00000000 LXJCC000
|
||||
00000000 l d LXCJ0MRU 00000000 LXCJ0MRU
|
||||
00000000 l d LXCJ1MRU 00000000 LXCJ1MRU
|
||||
00000000 l d LXCALJMP 00000000 LXCALJMP
|
||||
00000000 l d LXCALL00 00000000 LXCALL00
|
||||
00000000 l d LXCALL01 00000000 LXCALL01
|
||||
00000000 l d LXCJ2MRU 00000000 LXCJ2MRU
|
||||
00000000 l d LXCJ4MRU 00000000 LXCJ4MRU
|
||||
00000000 l d LXCJ6MRU 00000000 LXCJ6MRU
|
||||
00000000 l d LXCJ7MRU 00000000 LXCJ7MRU
|
||||
00000000 l d LXMRU055 00000000 LXMRU055
|
||||
00000000 l d MRUBYTE2 00000000 MRUBYTE2
|
||||
00000000 l d MRUBITS2 00000000 MRUBITS2
|
||||
00000000 l d MRUARB20 00000000 MRUARB20
|
||||
00000000 l d LXMRU057 00000000 LXMRU057
|
||||
00000000 l d LXMRU058 00000000 LXMRU058
|
||||
00000000 l d LXUNF035 00000000 LXUNF035
|
||||
00000000 l d ctok32.30 00000000 ctok32.30
|
||||
00000000 l d CTCLEVE1 00000000 CTCLEVE1
|
||||
00000000 l d CALLTR01 00000000 CALLTR01
|
||||
00000000 l d CTBSHR01 00000000 CTBSHR01
|
||||
00000000 l d CTBROR01 00000000 CTBROR01
|
||||
00000000 l d CTBSWA01 00000000 CTBSWA01
|
||||
00000000 l d CALLTR02 00000000 CALLTR02
|
||||
00000000 l d CALLTRE8 00000000 CALLTRE8
|
||||
00000000 l d CALLTRE9 00000000 CALLTRE9
|
||||
00000000 l d CTCLEVE2 00000000 CTCLEVE2
|
||||
00000000 l d CALLTR12 00000000 CALLTR12
|
||||
00000000 l d CTBSHR11 00000000 CTBSHR11
|
||||
00000000 l d CTBROR11 00000000 CTBROR11
|
||||
00000000 l d CTBSWA11 00000000 CTBSWA11
|
||||
00000000 l d LEXEC017 00000000 LEXEC017
|
||||
00000000 g LEXEC000 00000000 _start
|
||||
00000000 *UND* 00000000 lzma_stack_adjust
|
||||
00000000 *UND* 00000000 lzma_u_len
|
||||
00000000 *UND* 00000000 lzma_c_len
|
||||
00000000 *UND* 00000000 lzma_properties
|
||||
00000000 *UND* 00000000 NMRU
|
||||
00000000 *UND* 00000000 filter_length
|
||||
00000000 *UND* 00000000 filter_cto
|
||||
|
||||
RELOCATION RECORDS FOR [LEXEC000]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_PC32 LEXEC020
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2BSMA10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2BFAS11
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2BDEC20
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2BDEC20
|
||||
0000000e R_386_PC8 N2BDEC20
|
||||
|
||||
RELOCATION RECORDS FOR [N2BDEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000011 R_386_PC8 N2BDEC60
|
||||
0000002f R_386_PC8 N2BDEC50
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA40]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2BDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2BDEC30
|
||||
0000000e R_386_PC8 N2BDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2BSMA60]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_386_PC32 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS60]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000a R_386_PC8 N2BFAS61
|
||||
00000015 R_386_PC32 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2BFAS61]:
|
||||
OFFSET TYPE VALUE
|
||||
00000012 R_386_PC32 N2BDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2DSMA10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2DFAS11
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_PC8 N2DDEC30
|
||||
0000000e R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DDEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000f R_386_PC8 N2DDEC20
|
||||
00000021 R_386_PC8 N2DDEC60
|
||||
00000043 R_386_PC8 N2DDEC50
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA40]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2DDEC30
|
||||
0000000e R_386_PC8 N2DDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2DSMA60]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_386_PC32 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS60]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000a R_386_PC8 N2DFAS61
|
||||
00000015 R_386_PC32 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2DFAS61]:
|
||||
OFFSET TYPE VALUE
|
||||
00000012 R_386_PC32 N2DDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 N2ESMA10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2EFAS11
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_PC8 N2EDEC30
|
||||
0000000e R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2EDEC30]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000f R_386_PC8 N2EDEC20
|
||||
0000001e R_386_PC8 N2EDEC50
|
||||
00000030 R_386_PC8 N2EDEC60
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA40]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000c R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 N2EDEC30
|
||||
0000000e R_386_PC8 N2EDEC30
|
||||
|
||||
RELOCATION RECORDS FOR [N2ESMA60]:
|
||||
OFFSET TYPE VALUE
|
||||
00000008 R_386_PC32 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS60]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000a R_386_PC8 N2EFAS61
|
||||
00000015 R_386_PC32 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [N2EFAS61]:
|
||||
OFFSET TYPE VALUE
|
||||
00000012 R_386_PC32 N2EDEC10
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_DEC00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_32 lzma_stack_adjust
|
||||
00000014 R_386_32 lzma_u_len
|
||||
0000001e R_386_32 lzma_c_len
|
||||
0000002a R_386_32 lzma_properties
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF000]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF010
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU005]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_32 NMRU
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF010]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC32 LXUNF042
|
||||
|
||||
RELOCATION RECORDS FOR [LXJCC020]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LXJCC021]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF388]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_PC8 LXUNF040
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF487]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF040
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU065]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXMRU070
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU070]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXUNF040
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU090]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 LXMRU100
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF041]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LEXEC016]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC32 LXUNF042
|
||||
|
||||
RELOCATION RECORDS FOR [LXMRU040]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXMRU030
|
||||
|
||||
RELOCATION RECORDS FOR [LXJCC000]:
|
||||
OFFSET TYPE VALUE
|
||||
00000007 R_386_PC8 LXJCC010
|
||||
|
||||
RELOCATION RECORDS FOR [LXCALL00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF037
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ2MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF037
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ4MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXUNF034
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ6MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXCJ8MRU
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ7MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_PC8 LXCJ8MRU
|
||||
|
||||
RELOCATION RECORDS FOR [LXCJ8MRU]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_PC8 LXUNF037
|
||||
|
||||
RELOCATION RECORDS FOR [LXUNF034]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 LXUNF030
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 ctok32.20
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.10]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000d R_386_PC8 ctok32.20
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.20]:
|
||||
OFFSET TYPE VALUE
|
||||
00000005 R_386_PC8 ctok32.40
|
||||
00000009 R_386_PC8 ctok32.40
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.30]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 ctok32.10
|
||||
|
||||
RELOCATION RECORDS FOR [ctok32.40]:
|
||||
OFFSET TYPE VALUE
|
||||
00000004 R_386_PC8 ctok32.00
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR00]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_32 filter_length
|
||||
|
||||
RELOCATION RECORDS FOR [CTCLEVE1]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_8 filter_cto
|
||||
00000004 R_386_PC8 CALLTR00
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR02]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000f R_386_PC8 CALLTR00
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR10]:
|
||||
OFFSET TYPE VALUE
|
||||
00000001 R_386_32 filter_length
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR11]:
|
||||
OFFSET TYPE VALUE
|
||||
00000003 R_386_PC8 CALLTR13
|
||||
|
||||
RELOCATION RECORDS FOR [CTCLEVE2]:
|
||||
OFFSET TYPE VALUE
|
||||
00000002 R_386_8 filter_cto
|
||||
00000004 R_386_PC8 CALLTR11
|
||||
|
||||
RELOCATION RECORDS FOR [CALLTR13]:
|
||||
OFFSET TYPE VALUE
|
||||
00000006 R_386_PC8 CALLTR10
|
Loading…
Reference in New Issue
Block a user