hppa: Export main in pr104869.C on hpux
[official-gcc.git] / gcc / d / d-target.def
blob779032b7d0c52f0381f290c83a0bcf740a196e59
1 /* d-target.def -- Target hook definitions for the D front end.
2 Copyright (C) 2017-2023 Free Software Foundation, Inc.
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.
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.
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/>. */
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. */
21 #include "target-hooks-macros.h"
23 #undef HOOK_TYPE
24 #define HOOK_TYPE "D Target Hook"
26 HOOK_VECTOR (TARGETDM_INITIALIZER, gcc_targetdm)
28 #undef HOOK_PREFIX
29 #define HOOK_PREFIX "TARGET_"
31 /* Environmental version identifiers relating to the target CPU. */
32 DEFHOOK
33 (d_cpu_versions,
34 "Declare all environmental version identifiers relating to the target CPU\n\
35 using the function @code{builtin_version}, which takes a string representing\n\
36 the name of the version. Version identifiers predefined by this hook apply\n\
37 to all modules that are being compiled and imported.",
38 void, (void),
39 hook_void_void)
41 /* Environmental version identifiers relating to the target OS. */
42 DEFHOOK
43 (d_os_versions,
44 "Similarly to @code{TARGET_D_CPU_VERSIONS}, but is used for versions\n\
45 relating to the target operating system.",
46 void, (void),
47 hook_void_void)
49 /* getTargetInfo keys relating to the target CPU. */
50 DEFHOOK
51 (d_register_cpu_target_info,
52 "Register all target information keys relating to the target CPU using the\n\
53 function @code{d_add_target_info_handlers}, which takes a\n\
54 @samp{struct d_target_info_spec} (defined in @file{d/d-target.h}). The keys\n\
55 added by this hook are made available at compile time by the\n\
56 @code{__traits(getTargetInfo)} extension, the result is an expression\n\
57 describing the requested target information.",
58 void, (void),
59 hook_void_void)
61 /* getTargetInfo keys relating to the target OS. */
62 DEFHOOK
63 (d_register_os_target_info,
64 "Same as @code{TARGET_D_CPU_TARGET_INFO}, but is used for keys relating to\n\
65 the target operating system.",
66 void, (void),
67 hook_void_void)
69 /* ModuleInfo section name and brackets. */
70 DEFHOOKPOD
71 (d_minfo_section,
72 "Contains the name of the section in which module info references should be\n\
73 placed. By default, the compiler puts all module info symbols in the\n\
74 @code{\"minfo\"} section. Define this macro to override the string if a\n\
75 different section name should be used. This section is expected to be\n\
76 bracketed by two symbols @code{TARGET_D_MINFO_SECTION_START} and \n\
77 @code{TARGET_D_MINFO_SECTION_END} to indicate the start and end address of\n\
78 the section, so that the runtime library can collect all modules for each\n\
79 loaded shared library and executable. Setting the value to @code{NULL}\n\
80 disables the use of sections for storing module info altogether.",
81 const char *, "minfo")
83 DEFHOOKPOD
84 (d_minfo_section_start,
85 "If @code{TARGET_D_MINFO_SECTION} is defined, then this must also be defined\n\
86 as the name of the symbol indicating the start address of the module info\n\
87 section",
88 const char *, "__start_minfo")
90 DEFHOOKPOD
91 (d_minfo_section_end,
92 "If @code{TARGET_D_MINFO_SECTION} is defined, then this must also be defined\n\
93 as the name of the symbol indicating the end address of the module info\n\
94 section",
95 const char *, "__stop_minfo")
97 /* The "stdcall" convention is really supported on 32-bit x86/Windows only.
98 The following hook is a helper to determine whether to apply the attribute
99 on declarations with `extern(System)' and `extern(Windows)' linkage. */
100 DEFHOOK
101 (d_has_stdcall_convention,
102 "Returns @code{true} if the target supports the stdcall calling convention.\n\
103 The hook should also set @var{link_system} to @code{1} if the @code{stdcall}\n\
104 attribute should be applied to functions with @code{extern(System)} linkage,\n\
105 and @var{link_windows} to @code{1} to apply @code{stdcall} to functions with\n\
106 @code{extern(Windows)} linkage.",
107 bool, (unsigned int *link_system, unsigned int *link_windows),
108 hook_bool_uintp_uintp_false)
110 /* True if instantiations are always COMDAT if they have external linkage. */
111 DEFHOOKPOD
112 (d_templates_always_comdat,
113 "This flag is true if instantiated functions and variables are always COMDAT\n\
114 if they have external linkage. If this flag is false, then instantiated\n\
115 decls will be emitted as weak symbols. The default is @code{false}.",
116 bool, false)
118 /* Close the 'struct gcc_targetdm' definition. */
119 HOOK_VECTOR_END (C90_EMPTY_HACK)