29 #ifndef __UPX_P_VMLINX_H 30 #define __UPX_P_VMLINX_H 1 39 template <
class TElfClass>
44 typedef TElfClass ElfClass;
45 typedef typename ElfClass::BeLePolicy BeLePolicy;
46 typedef typename ElfClass::ElfITypes ElfITypes;
48 typedef typename ElfClass::TE16 TE16;
49 typedef typename ElfClass::TE32 TE32;
50 typedef typename ElfClass::TE64 TE64;
51 typedef typename ElfITypes::Addr Addr;
53 typedef typename ElfClass::Ehdr Ehdr;
54 typedef typename ElfClass::Shdr Shdr;
55 typedef typename ElfClass::Phdr Phdr;
56 typedef typename ElfClass::Dyn Dyn;
57 typedef typename ElfClass::Sym Sym;
62 virtual int getVersion()
const {
return 13; }
65 unsigned int const my_e_machine;
66 unsigned char const my_elfclass;
67 unsigned char const my_elfdata;
68 char const *
const my_boot_label;
81 virtual Shdr
const *getElfSections();
82 virtual int getStrategy(
Filter &);
83 virtual bool is_valid_e_entry(Addr) = 0;
84 virtual bool has_valid_vmlinux_head() = 0;
85 virtual bool canPack();
87 virtual int canUnpack();
89 virtual unsigned write_vmlinux_head(
93 static int __acc_cdecl_qsort compare_Phdr(
void const *aa,
void const *bb);
102 Ehdr::ELFCLASS32, Ehdr::ELFDATA2LSB,
"startup_32") { }
103 virtual int getFormat()
const {
return UPX_F_VMLINUX_i386; }
104 virtual const char *getName()
const {
return "vmlinux/i386"; }
105 virtual const char *getFullName(
const options_t *)
const {
return "i386-linux.kernel.vmlinux"; }
106 virtual const int *getCompressionMethods(
int method,
int level)
const;
107 virtual const int *getFilters()
const;
110 virtual void buildLoader(
const Filter *ft);
111 virtual void defineDecompressorSymbols();
112 virtual Linker* newLinker()
const;
113 virtual bool is_valid_e_entry(Addr);
114 virtual bool has_valid_vmlinux_head();
115 virtual unsigned write_vmlinux_head(
127 Ehdr::ELFCLASS32, Ehdr::ELFDATA2LSB,
"decompress_kernel") { }
128 virtual int getFormat()
const {
return UPX_F_VMLINUX_ARMEL; }
129 virtual const char *getName()
const {
return "vmlinux/arm"; }
130 virtual const char *getFullName(
const options_t *)
const {
return "arm-linux.kernel.vmlinux"; }
131 virtual const int *getCompressionMethods(
int method,
int level)
const;
132 virtual const int *getFilters()
const;
135 virtual void buildLoader(
const Filter *ft);
136 virtual void defineDecompressorSymbols();
137 virtual Linker* newLinker()
const;
138 virtual bool is_valid_e_entry(Addr);
139 virtual bool has_valid_vmlinux_head();
140 virtual unsigned write_vmlinux_head(
151 Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB,
"decompress_kernel") { }
152 virtual int getFormat()
const {
return UPX_F_VMLINUX_ARMEB; }
153 virtual const char *getName()
const {
return "vmlinux/armeb"; }
154 virtual const char *getFullName(
const options_t *)
const {
return "armeb-linux.kernel.vmlinux"; }
155 virtual const int *getCompressionMethods(
int method,
int level)
const;
156 virtual const int *getFilters()
const;
159 virtual void buildLoader(
const Filter *ft);
160 virtual void defineDecompressorSymbols();
161 virtual Linker* newLinker()
const;
162 virtual bool is_valid_e_entry(Addr);
163 virtual bool has_valid_vmlinux_head();
164 virtual unsigned write_vmlinux_head(
175 Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB,
"_vmlinux_start") { }
176 virtual int getFormat()
const {
return UPX_F_VMLINUX_PPC32; }
177 virtual const char *getName()
const {
return "vmlinux/ppc32"; }
178 virtual const char *getFullName(
const options_t *)
const {
return "powerpc-linux.kernel.vmlinux"; }
179 virtual const int *getCompressionMethods(
int method,
int level)
const;
180 virtual const int *getFilters()
const;
183 virtual void buildLoader(
const Filter *ft);
184 virtual void defineDecompressorSymbols();
185 virtual Linker* newLinker()
const;
186 virtual bool is_valid_e_entry(Addr);
187 virtual bool has_valid_vmlinux_head();
188 virtual unsigned write_vmlinux_head(
199 Ehdr::ELFCLASS64, Ehdr::ELFDATA2LSB,
"_vmlinux_start") { }
200 virtual int getFormat()
const {
return UPX_F_VMLINUX_PPC64LE; }
201 virtual const char *getName()
const {
return "vmlinux/ppc64le"; }
202 virtual const char *getFullName(
const options_t *)
const {
return "powerpc64le-linux.kernel.vmlinux"; }
203 virtual const int *getCompressionMethods(
int method,
int level)
const;
204 virtual const int *getFilters()
const;
207 virtual void buildLoader(
const Filter *ft);
208 virtual void defineDecompressorSymbols();
209 virtual Linker* newLinker()
const;
210 virtual bool is_valid_e_entry(Addr);
211 virtual bool has_valid_vmlinux_head();
212 virtual unsigned write_vmlinux_head(
224 Ehdr::ELFCLASS64, Ehdr::ELFDATA2LSB,
"startup_32") { }
225 virtual int getFormat()
const {
return UPX_F_VMLINUX_AMD64; }
226 virtual const char *getName()
const {
return "vmlinux/amd64"; }
227 virtual const char *getFullName(
const options_t *)
const {
return "amd64-linux.kernel.vmlinux"; }
228 virtual const int *getCompressionMethods(
int method,
int level)
const;
229 virtual const int *getFilters()
const;
232 virtual void buildLoader(
const Filter *ft);
233 virtual void defineDecompressorSymbols();
234 virtual Linker* newLinker()
const;
235 virtual bool is_valid_e_entry(Addr);
236 virtual bool has_valid_vmlinux_head();
237 virtual unsigned write_vmlinux_head(
Definition: p_vmlinx.h:219
Definition: p_vmlinx.h:40
Definition: p_vmlinx.h:97
Definition: p_vmlinx.h:170
Definition: p_vmlinx.h:122
Definition: p_vmlinx.h:146
Definition: p_vmlinx.h:194