const char *opt_text;
const char *help;
const char *missing_argument_error;
+ const char *warn_message;
+ const char *alias_arg;
+ const char *neg_alias_arg;
+ unsigned short alias_target;
unsigned short back_chain;
unsigned char opt_len;
int neg_index;
unsigned int flags;
- void *flag_var;
+ unsigned short flag_var_offset;
enum cl_var_type var_type;
int var_value;
};
extern const char *const lang_names[];
extern const unsigned int cl_lang_count;
-#define CL_PARAMS (1 << 14) /* Fake entry. Used to display --param info with --help. */
-#define CL_WARNING (1 << 15) /* Enables an (optional) warning message. */
-#define CL_OPTIMIZATION (1 << 16) /* Enables an (optional) optimization. */
-#define CL_DRIVER (1 << 17) /* Driver option. */
-#define CL_TARGET (1 << 18) /* Target-specific option. */
-#define CL_COMMON (1 << 19) /* Language-independent. */
+#define CL_PARAMS (1 << 13) /* Fake entry. Used to display --param info with --help. */
+#define CL_WARNING (1 << 14) /* Enables an (optional) warning message. */
+#define CL_OPTIMIZATION (1 << 15) /* Enables an (optional) optimization. */
+#define CL_DRIVER (1 << 16) /* Driver option. */
+#define CL_TARGET (1 << 17) /* Target-specific option. */
+#define CL_COMMON (1 << 18) /* Language-independent. */
#define CL_MIN_OPTION_CLASS CL_PARAMS
#define CL_MAX_OPTION_CLASS CL_COMMON
This distinction is important because --help will not list options
which only have these higher bits set. */
+#define CL_SEPARATE_ALIAS (1 << 19) /* Option is an alias when used with separate argument. */
#define CL_NO_DRIVER_ARG (1 << 20) /* Option takes no argument in the driver. */
#define CL_REJECT_DRIVER (1 << 21) /* Reject this option in the driver. */
#define CL_SAVE (1 << 22) /* Target-specific option for attribute. */
#define CL_ERR_MISSING_ARG (1 << 1) /* Argument required but missing. */
#define CL_ERR_WRONG_LANG (1 << 2) /* Option for wrong language. */
#define CL_ERR_UINT_ARG (1 << 3) /* Bad unsigned integer argument. */
+#define CL_ERR_NEGATIVE (1 << 4) /* Negative form of option
+ not permitted (together
+ with OPT_SPECIAL_unknown). */
/* Structure describing the result of decoding an option. */
non-options and unknown options. */
size_t opt_index;
+ /* Any warning to give for use of this option, or NULL if none. */
+ const char *warn_message;
+
/* The string argument, or NULL if none. For OPT_SPECIAL_* cases,
the option or non-option command-line argument. */
const char *arg;
struct cl_option_handler_func
{
/* The function called to handle the option. */
- bool (*handler) (const struct cl_decoded_option *decoded,
+ bool (*handler) (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers);
unsigned int lang_mask,
struct cl_decoded_option **decoded_options,
unsigned int *decoded_options_count);
-extern void prune_options (int *argcp, char ***argvp);
-extern void decode_options (unsigned int argc, const char **argv,
- struct cl_decoded_option **decoded_options,
- unsigned int *decoded_options_count);
-extern int option_enabled (int opt_idx);
-extern bool get_option_state (int, struct cl_option_state *);
-extern void set_option (int opt_index, int value, const char *arg, int);
-bool handle_option (const struct cl_decoded_option *decoded,
+extern void init_options_once (void);
+extern void init_options_struct (struct gcc_options *opts,
+ struct gcc_options *opts_set);
+extern void decode_cmdline_options_to_array_default_mask (unsigned int argc,
+ const char **argv,
+ struct cl_decoded_option **decoded_options,
+ unsigned int *decoded_options_count);
+extern void decode_options (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ struct cl_decoded_option *decoded_options,
+ unsigned int decoded_options_count);
+extern int option_enabled (int opt_idx, void *opts);
+extern bool get_option_state (struct gcc_options *, int,
+ struct cl_option_state *);
+extern void set_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ int opt_index, int value, const char *arg, int kind,
+ diagnostic_context *dc);
+extern void *option_flag_var (int opt_index, struct gcc_options *opts);
+bool handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind,
- const struct cl_option_handlers *handlers);
-bool handle_generated_option (size_t opt_index, const char *arg, int value,
+ const struct cl_option_handlers *handlers,
+ bool generated_p, diagnostic_context *dc);
+bool handle_generated_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ size_t opt_index, const char *arg, int value,
unsigned int lang_mask, int kind,
- const struct cl_option_handlers *handlers);
+ const struct cl_option_handlers *handlers,
+ diagnostic_context *dc);
void generate_option (size_t opt_index, const char *arg, int value,
unsigned int lang_mask,
struct cl_decoded_option *decoded);
void generate_option_input_file (const char *file,
struct cl_decoded_option *decoded);
-extern void read_cmdline_option (struct cl_decoded_option *decoded,
+extern void read_cmdline_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ struct cl_decoded_option *decoded,
unsigned int lang_mask,
- const struct cl_option_handlers *handlers);
+ const struct cl_option_handlers *handlers,
+ diagnostic_context *dc);
extern void register_warning_as_error_callback (void (*callback) (int));
extern void enable_warning_as_error (const char *arg, int value,
unsigned int lang_mask,
- const struct cl_option_handlers *handlers);
+ const struct cl_option_handlers *handlers,
+ diagnostic_context *dc);
extern void print_ignored_options (void);
#endif