Upx_Doxygen
https://github.com/upx/upx
options.h
1
/* options.h --
2
3
This file is part of the UPX executable compressor.
4
5
Copyright (C) 1996-2016 Markus Franz Xaver Johannes Oberhumer
6
Copyright (C) 1996-2016 Laszlo Molnar
7
All Rights Reserved.
8
9
UPX and the UCL library are free software; you can redistribute them
10
and/or modify them under the terms of the GNU General Public License as
11
published by the Free Software Foundation; either version 2 of
12
the License, or (at your option) any later version.
13
14
This program is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
GNU General Public License for more details.
18
19
You should have received a copy of the GNU General Public License
20
along with this program; see the file COPYING.
21
If not, write to the Free Software Foundation, Inc.,
22
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
24
Markus F.X.J. Oberhumer Laszlo Molnar
25
<markus@oberhumer.com> <ezerotven+github@gmail.com>
26
*/
27
28
29
#ifndef __UPX_OPTIONS_H
30
#define __UPX_OPTIONS_H 1
31
32
33
/*************************************************************************
34
// globals
35
**************************************************************************/
36
37
// options - command
38
enum
{
39
CMD_NONE,
40
CMD_COMPRESS, CMD_DECOMPRESS, CMD_TEST, CMD_LIST, CMD_FILEINFO,
41
CMD_HELP, CMD_LICENSE, CMD_VERSION
42
};
43
44
45
struct
options_t
{
46
int
cmd;
47
48
// mp (meta) options
49
int
mp_compress_task;
50
bool
mp_query_format;
51
bool
mp_query_num_tasks;
52
53
// compression options
54
int
method;
55
bool
method_lzma_seen;
56
bool
method_nrv2b_seen;
57
bool
method_nrv2d_seen;
58
bool
method_nrv2e_seen;
59
int
level;
// compression level 1..10
60
int
filter;
// preferred filter from Packer::getFilters()
61
bool
ultra_brute;
62
bool
all_methods;
// try all available compression methods ?
63
bool
all_methods_use_lzma;
64
bool
all_filters;
// try all available filters ?
65
bool
no_filter;
// force no filter
66
bool
prefer_ucl;
// prefer UCL
67
bool
exact;
// user requires byte-identical decompression
68
69
// other options
70
int
backup;
71
int
console;
72
int
force;
73
int
info_mode;
74
bool
ignorewarn;
75
bool
no_env;
76
bool
no_progress;
77
const
char
*output_name;
78
bool
preserve_mode;
79
bool
preserve_ownership;
80
bool
preserve_timestamp;
81
int
small;
82
int
verbose;
83
bool
to_stdout;
84
85
// debug options
86
struct
{
87
int
debug_level;
88
bool
disable_random_id;
// for Packer::getRandomId()
89
const
char
*dump_stub_loader;
90
char
fake_stub_version[4+1];
// for internal debugging
91
char
fake_stub_year[4+1];
// for internal debugging
92
} debug;
93
94
// overlay handling
95
enum
{
96
SKIP_OVERLAY = 0,
97
COPY_OVERLAY = 1,
98
STRIP_OVERLAY = 2
99
};
100
int
overlay;
101
102
// compression runtime parameters - see struct XXX_compress_config_t
103
struct
crp_t
{
104
lzma_compress_config_t
crp_lzma;
105
ucl_compress_config_t
crp_ucl;
106
zlib_compress_config_t
crp_zlib;
107
void
reset() { crp_lzma.reset(); crp_ucl.reset(); crp_zlib.reset(); }
108
};
109
crp_t
crp;
110
111
// CPU
112
enum
{
113
CPU_DEFAULT = 0,
114
CPU_8086 = 1,
115
CPU_286 = 2,
116
CPU_386 = 3,
117
CPU_486 = 4,
118
CPU_586 = 5,
119
CPU_686 = 6
120
};
121
int
cpu;
122
123
// options for various executable formats
124
struct
{
125
bool
split_segments;
126
} atari_tos;
127
struct
{
128
bool
coff;
129
} djgpp2_coff;
130
struct
{
131
bool
force_stub;
132
bool
no_reloc;
133
} dos_exe;
134
struct
{
135
bool
boot_only;
136
bool
no_align;
137
bool
do_8bit;
138
bool
do_8mib;
139
} ps1_exe;
140
struct
{
141
unsigned
blocksize;
142
bool
force_execve;
// force the linux/386 execve format
143
bool
is_ptinterp;
// is PT_INTERP, so don't adjust auxv_t
144
bool
use_ptinterp;
// use PT_INTERP /opt/upx/run
145
bool
make_ptinterp;
// make PT_INTERP [ignore current file!]
146
bool
unmap_all_pages;
// thus /proc/self/exe vanishes
147
unsigned
char
osabi0;
// replacement if 0==.e_ident[EI_OSABI]
148
enum
{ SCRIPT_MAX = 32 };
149
const
char
*script_name;
150
bool
preserve_build_id;
// copy the build-id to the compressed binary
151
} o_unix;
152
struct
{
153
bool
le;
154
} watcom_le;
155
struct
{
156
int
compress_exports;
157
int
compress_icons;
158
int
compress_resources;
159
signed
char
compress_rt[25];
// 25 == RT_LAST
160
int
strip_relocs;
161
const
char
*keep_resource;
162
} win32_pe;
163
164
void
reset();
165
};
166
167
extern
struct
options_t
*opt;
168
169
170
#endif
/* already included */
171
172
/* vim:set ts=4 sw=4 et: */
ucl_compress_config_t
Definition:
conf.h:554
options_t
Definition:
options.h:45
lzma_compress_config_t
Definition:
conf.h:532
options_t::crp_t
Definition:
options.h:103
zlib_compress_config_t
Definition:
conf.h:560
Generated by
1.8.13