111
|
1 /* Target hook definitions for common hooks.
|
145
|
2 Copyright (C) 2011-2020 Free Software Foundation, Inc.
|
111
|
3
|
|
4 This program is free software; you can redistribute it and/or modify it
|
|
5 under the terms of the GNU General Public License as published by the
|
|
6 Free Software Foundation; either version 3, or (at your option) any
|
|
7 later version.
|
|
8
|
|
9 This program is distributed in the hope that it will be useful,
|
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12 GNU General Public License for more details.
|
|
13
|
|
14 You should have received a copy of the GNU General Public License
|
|
15 along with this program; see the file COPYING3. If not see
|
|
16 <http://www.gnu.org/licenses/>. */
|
|
17
|
|
18 /* See target-hooks-macros.h for details of macros that should be
|
|
19 provided by the including file, and how to use them here. */
|
|
20 #include "target-hooks-macros.h"
|
|
21
|
|
22 #undef HOOK_TYPE
|
|
23 #define HOOK_TYPE "Common Target Hook"
|
|
24
|
|
25 HOOK_VECTOR (TARGETM_COMMON_INITIALIZER, gcc_targetm_common)
|
|
26
|
|
27 #undef HOOK_PREFIX
|
|
28 #define HOOK_PREFIX "TARGET_"
|
|
29
|
|
30 /* Handle target switch DECODED for options structures OPTS and
|
|
31 OPTS_SET, at location LOC. Return true if the switch was valid. */
|
|
32 DEFHOOK
|
|
33 (handle_option,
|
|
34 "",
|
|
35 bool, (struct gcc_options *opts, struct gcc_options *opts_set,
|
|
36 const struct cl_decoded_option *decoded,
|
|
37 location_t loc),
|
|
38 default_target_handle_option)
|
|
39
|
|
40 DEFHOOK
|
|
41 (option_init_struct,
|
|
42 "Set target-dependent initial values of fields in @var{opts}.",
|
|
43 void, (struct gcc_options *opts),
|
|
44 hook_void_gcc_optionsp)
|
|
45
|
|
46 /* Set default optimizations for the target. */
|
|
47 DEFHOOKPOD
|
|
48 (option_optimization_table,
|
|
49 "",
|
|
50 const struct default_options *, empty_optimization_table)
|
|
51
|
|
52 /* The initial value of target_flags. */
|
|
53 DEFHOOKPOD
|
|
54 (default_target_flags,
|
|
55 "",
|
|
56 int, 0)
|
|
57
|
|
58 /* Determine the type of unwind info to emit for exceptions. */
|
|
59 DEFHOOK
|
|
60 (except_unwind_info,
|
|
61 "",
|
|
62 enum unwind_info_type, (struct gcc_options *opts),
|
|
63 default_except_unwind_info)
|
|
64
|
|
65 DEFHOOK
|
|
66 (supports_split_stack,
|
|
67 "Whether this target supports splitting the stack when the options\
|
|
68 described in @var{opts} have been passed. This is called\
|
|
69 after options have been parsed, so the target may reject splitting\
|
|
70 the stack in some configurations. The default version of this hook\
|
|
71 returns false. If @var{report} is true, this function may issue a warning\
|
|
72 or error; if @var{report} is false, it must simply return a value",
|
|
73 bool, (bool report, struct gcc_options *opts),
|
|
74 hook_bool_bool_gcc_optionsp_false)
|
|
75
|
131
|
76 DEFHOOK
|
|
77 (get_valid_option_values,
|
|
78 "The hook is used for options that have a non-trivial list of\
|
|
79 possible option values. OPTION_CODE is option code of opt_code\
|
|
80 enum type. PREFIX is used for bash completion and allows an implementation\
|
|
81 to return more specific completion based on the prefix. All string values\
|
|
82 should be allocated from heap memory and consumers should release them. \
|
|
83 The result will be pruned to cases with PREFIX if not NULL.",
|
|
84 vec<const char *>, (int option_code, const char *prefix),
|
|
85 default_get_valid_option_values)
|
|
86
|
111
|
87 /* Leave the boolean fields at the end. */
|
|
88
|
|
89 /* True if unwinding tables should be generated by default. */
|
|
90 DEFHOOKPOD
|
|
91 (unwind_tables_default,
|
|
92 "",
|
|
93 bool, false)
|
|
94
|
|
95 /* True if arbitrary sections are supported. */
|
|
96 DEFHOOKPOD
|
|
97 (have_named_sections,
|
|
98 "",
|
|
99 bool, true)
|
|
100
|
|
101 DEFHOOKPOD
|
|
102 (always_strip_dotdot,
|
|
103 "True if @file{..} components should always be removed from directory names\
|
|
104 computed relative to GCC's internal directories, false (default) if such\
|
|
105 components should be preserved and directory names containing them passed\
|
|
106 to other tools such as the linker.",
|
|
107 bool, false)
|
|
108
|
|
109 HOOK_VECTOR_END (C90_EMPTY_HACK)
|
|
110
|
|
111 #undef HOOK_PREFIX
|