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: */
Definition: conf.h:554
Definition: options.h:45
Definition: conf.h:532
Definition: options.h:103
Definition: conf.h:560