2 Copyright (C) 2001-2023 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3. If not see
18 <http://www.gnu.org/licenses/>. */
20 #ifndef CONFIG_DARWIN_PROTOS_H
21 #define CONFIG_DARWIN_PROTOS_H
23 extern void darwin_init_sections (void);
24 extern int name_needs_quotes (const char *);
26 extern void machopic_validate_stub_or_non_lazy_ptr (const char *);
28 extern void machopic_output_function_base_name (FILE *);
29 extern const char *machopic_indirection_name (rtx
, bool);
30 extern const char *machopic_mcount_stub_name (void);
31 extern bool machopic_should_output_picbase_label (void);
32 extern const char *machopic_get_function_picbase (void);
36 extern rtx
machopic_gen_offset (rtx
);
37 extern int machopic_operand_p (rtx
);
38 extern int machopic_symbol_defined_p (rtx sym_ref
);
39 extern enum machopic_addr_class
machopic_classify_symbol (rtx
);
41 extern rtx
machopic_indirect_data_reference (rtx
, rtx
);
42 extern rtx
machopic_indirect_call_target (rtx
);
43 extern rtx
machopic_legitimize_pic_address (rtx
, machine_mode
, rtx
);
45 extern void machopic_asm_out_constructor (rtx
, int);
46 extern void machopic_asm_out_destructor (rtx
, int);
47 extern section
*machopic_select_rtx_section (machine_mode
, rtx
,
48 unsigned HOST_WIDE_INT
);
53 extern void machopic_define_symbol (rtx
);
54 extern void darwin_encode_section_info (tree
, rtx
, int);
55 extern void darwin_set_default_type_attributes (tree
);
57 #endif /* TREE_CODE */
59 extern int machopic_reloc_rw_mask (void);
60 extern section
*machopic_select_section (tree
, int, unsigned HOST_WIDE_INT
);
62 extern section
*darwin_function_section (tree
, enum node_frequency
, bool, bool);
63 extern section
*darwin_tm_clone_table_section (void);
64 extern void darwin_function_switched_text_sections (FILE *, tree
, bool);
66 extern void darwin_unique_section (tree decl
, int reloc
);
67 extern void darwin_asm_named_section (const char *, unsigned int, tree
);
68 extern void darwin_non_lazy_pcrel (FILE *, rtx
);
70 extern void darwin_emit_unwind_label (FILE *, tree
, int, int);
71 extern void darwin_emit_except_table_label (FILE *);
72 extern rtx
darwin_make_eh_symbol_indirect (rtx
, bool);
73 extern bool darwin_should_restore_cfa_state (void);
75 extern void darwin_pragma_ignore (struct cpp_reader
*);
76 extern void darwin_pragma_options (struct cpp_reader
*);
77 extern void darwin_pragma_unused (struct cpp_reader
*);
78 extern void darwin_pragma_ms_struct (struct cpp_reader
*);
80 extern void darwin_file_start (void);
81 extern void darwin_file_end (void);
83 extern void darwin_asm_lto_start (void);
84 extern void darwin_asm_lto_end (void);
86 extern void darwin_mark_decl_preserved (const char *);
88 extern tree
darwin_handle_kext_attribute (tree
*, tree
, tree
, int, bool *);
89 extern tree
darwin_handle_weak_import_attribute (tree
*node
, tree name
,
92 extern void machopic_output_stub (FILE *, const char *, const char *);
93 extern void darwin_globalize_label (FILE *, const char *);
94 extern void darwin_assemble_visibility (tree
, int);
96 extern void darwin_asm_output_dwarf_delta (FILE *, int, const char *,
97 const char *, HOST_WIDE_INT
);
98 extern void darwin_asm_output_dwarf_offset (FILE *, int, const char *,
99 HOST_WIDE_INT
, section
*);
101 extern void darwin_asm_declare_object_name (FILE *, const char *, tree
);
102 extern void darwin_asm_declare_constant_name (FILE *, const char *,
103 const_tree
, HOST_WIDE_INT
);
105 extern void darwin_output_aligned_bss (FILE *, tree
, const char *,
106 unsigned HOST_WIDE_INT
, unsigned int);
108 extern void darwin_asm_output_aligned_decl_local (FILE *, tree
, const char *,
109 unsigned HOST_WIDE_INT
,
111 extern void darwin_asm_output_aligned_decl_common (FILE *, tree
, const char *,
112 unsigned HOST_WIDE_INT
,
115 extern bool darwin_binds_local_p (const_tree
);
116 extern void darwin_cpp_builtins (struct cpp_reader
*);
118 extern tree
darwin_init_cfstring_builtins (unsigned);
119 extern tree
darwin_fold_builtin (tree
, int, tree
*, bool);
120 extern bool darwin_cfstring_p (tree
);
121 extern tree
darwin_build_constant_cfstring (tree
);
122 extern void darwin_enter_string_into_cfstring_table (tree
);
124 extern void darwin_asm_output_anchor (rtx symbol
);
125 extern bool darwin_use_anchors_for_symbol_p (const_rtx symbol
);
126 extern bool darwin_kextabi_p (void);
127 extern void darwin_override_options (void);
128 extern void darwin_patch_builtins (void);
129 extern void darwin_rename_builtins (void);
130 extern bool darwin_libc_has_function (enum function_class fn_class
, tree
);
132 /* For this port, there are several possible sources for external toolchain
133 components (e.g. as, ld, dsymutil) and we have to alter the allowable
134 output in response to which version and source is in use. */
135 enum darwin_external_toolchain
{
143 #endif /* CONFIG_DARWIN_PROTOS_H */