1# Linker script for libgccjit.so
2#   Copyright (C) 2013-2022 Free Software Foundation, Inc.
3#   Contributed by David Malcolm <dmalcolm@redhat.com>.
4#
5# This file is part of GCC.
6#
7# GCC is free software; you can redistribute it and/or modify it
8# under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 3, or (at your option)
10# any later version.
11#
12# GCC is distributed in the hope that it will be useful, but
13# WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15# General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GCC; see the file COPYING3.  If not see
19# <http://www.gnu.org/licenses/>.  */
20
21# The initial release of the library.
22LIBGCCJIT_ABI_0
23{
24  global:
25    # Keep this list sorted alphabetically:
26    gcc_jit_block_add_assignment;
27    gcc_jit_block_add_assignment_op;
28    gcc_jit_block_add_comment;
29    gcc_jit_block_add_eval;
30    gcc_jit_block_as_object;
31    gcc_jit_block_end_with_conditional;
32    gcc_jit_block_end_with_jump;
33    gcc_jit_block_end_with_return;
34    gcc_jit_block_end_with_void_return;
35    gcc_jit_block_get_function;
36    gcc_jit_context_acquire;
37    gcc_jit_context_compile;
38    gcc_jit_context_compile_to_file;
39    gcc_jit_context_dump_to_file;
40    gcc_jit_context_dump_reproducer_to_file;
41    gcc_jit_context_enable_dump;
42    gcc_jit_context_get_builtin_function;
43    gcc_jit_context_get_first_error;
44    gcc_jit_context_get_last_error;
45    gcc_jit_context_get_type;
46    gcc_jit_context_get_int_type;
47    gcc_jit_context_new_array_access;
48    gcc_jit_context_new_array_type;
49    gcc_jit_context_new_binary_op;
50    gcc_jit_context_new_call;
51    gcc_jit_context_new_call_through_ptr;
52    gcc_jit_context_new_cast;
53    gcc_jit_context_new_child_context;
54    gcc_jit_context_new_comparison;
55    gcc_jit_context_new_field;
56    gcc_jit_context_new_function;
57    gcc_jit_context_new_function_ptr_type;
58    gcc_jit_context_new_global;
59    gcc_jit_context_new_location;
60    gcc_jit_context_new_opaque_struct;
61    gcc_jit_context_new_param;
62    gcc_jit_context_new_rvalue_from_double;
63    gcc_jit_context_new_rvalue_from_int;
64    gcc_jit_context_new_rvalue_from_long;
65    gcc_jit_context_new_rvalue_from_ptr;
66    gcc_jit_context_new_string_literal;
67    gcc_jit_context_new_struct_type;
68    gcc_jit_context_new_unary_op;
69    gcc_jit_context_new_union_type;
70    gcc_jit_context_null;
71    gcc_jit_context_one;
72    gcc_jit_context_release;
73    gcc_jit_context_set_bool_option;
74    gcc_jit_context_set_int_option;
75    gcc_jit_context_set_logfile;
76    gcc_jit_context_set_str_option;
77    gcc_jit_context_zero;
78    gcc_jit_field_as_object;
79    gcc_jit_function_as_object;
80    gcc_jit_function_dump_to_dot;
81    gcc_jit_function_get_param;
82    gcc_jit_function_new_block;
83    gcc_jit_function_new_local;
84    gcc_jit_location_as_object;
85    gcc_jit_lvalue_as_object;
86    gcc_jit_lvalue_as_rvalue;
87    gcc_jit_lvalue_access_field;
88    gcc_jit_lvalue_get_address;
89    gcc_jit_object_get_context;
90    gcc_jit_object_get_debug_string;
91    gcc_jit_param_as_lvalue;
92    gcc_jit_param_as_object;
93    gcc_jit_param_as_rvalue;
94    gcc_jit_result_get_code;
95    gcc_jit_result_get_global;
96    gcc_jit_result_release;
97    gcc_jit_rvalue_access_field;
98    gcc_jit_rvalue_as_object;
99    gcc_jit_rvalue_dereference;
100    gcc_jit_rvalue_dereference_field;
101    gcc_jit_rvalue_get_type;
102    gcc_jit_struct_as_type;
103    gcc_jit_struct_set_fields;
104    gcc_jit_type_as_object;
105    gcc_jit_type_get_const;
106    gcc_jit_type_get_pointer;
107    gcc_jit_type_get_volatile;
108
109  local: *;
110};
111
112# Add support for adding arbitrary command-line options (PR jit/66628).
113LIBGCCJIT_ABI_1 {
114  global:
115    gcc_jit_context_add_command_line_option;
116} LIBGCCJIT_ABI_0;
117
118# Add support for disabling the check for unreachable blocks (PR jit/66546).
119LIBGCCJIT_ABI_2 {
120  global:
121    gcc_jit_context_set_bool_allow_unreachable_blocks;
122} LIBGCCJIT_ABI_1;
123
124# Add support for switch statements.
125LIBGCCJIT_ABI_3 {
126  global:
127    gcc_jit_block_end_with_switch;
128    gcc_jit_case_as_object;
129    gcc_jit_context_new_case;
130} LIBGCCJIT_ABI_2;
131
132# Add timing API.
133LIBGCCJIT_ABI_4 {
134  global:
135    gcc_jit_context_get_timer;
136    gcc_jit_context_set_timer;
137    gcc_jit_timer_new;
138    gcc_jit_timer_release;
139    gcc_jit_timer_push;
140    gcc_jit_timer_pop;
141    gcc_jit_timer_print;
142};
143
144LIBGCCJIT_ABI_5 {
145  global:
146    gcc_jit_context_set_bool_use_external_driver;
147} LIBGCCJIT_ABI_4;
148
149LIBGCCJIT_ABI_6 {
150  global:
151    gcc_jit_rvalue_set_bool_require_tail_call;
152} LIBGCCJIT_ABI_5;
153
154LIBGCCJIT_ABI_7 {
155  global:
156    gcc_jit_type_get_aligned;
157} LIBGCCJIT_ABI_6;
158
159LIBGCCJIT_ABI_8 {
160  global:
161    gcc_jit_type_get_vector;
162} LIBGCCJIT_ABI_7;
163
164LIBGCCJIT_ABI_9 {
165  global:
166    gcc_jit_function_get_address;
167} LIBGCCJIT_ABI_8;
168
169LIBGCCJIT_ABI_10 {
170  global:
171    gcc_jit_context_new_rvalue_from_vector;
172} LIBGCCJIT_ABI_9;
173
174LIBGCCJIT_ABI_11 {
175  global:
176    gcc_jit_context_add_driver_option;
177} LIBGCCJIT_ABI_10;
178
179LIBGCCJIT_ABI_12 {
180  global:
181    gcc_jit_context_new_bitfield;
182} LIBGCCJIT_ABI_11;
183
184LIBGCCJIT_ABI_13 {
185  global:
186    gcc_jit_version_major;
187    gcc_jit_version_minor;
188    gcc_jit_version_patchlevel;
189} LIBGCCJIT_ABI_12;
190
191LIBGCCJIT_ABI_14 {
192  global:
193    gcc_jit_global_set_initializer;
194} LIBGCCJIT_ABI_13;
195
196LIBGCCJIT_ABI_15 {
197  global:
198    gcc_jit_block_add_extended_asm;
199    gcc_jit_block_end_with_extended_asm_goto;
200    gcc_jit_extended_asm_as_object;
201    gcc_jit_extended_asm_set_volatile_flag;
202    gcc_jit_extended_asm_set_inline_flag;
203    gcc_jit_extended_asm_add_output_operand;
204    gcc_jit_extended_asm_add_input_operand;
205    gcc_jit_extended_asm_add_clobber;
206    gcc_jit_context_add_top_level_asm;
207} LIBGCCJIT_ABI_14;
208
209LIBGCCJIT_ABI_16 {
210  global:
211    gcc_jit_function_get_return_type;
212    gcc_jit_function_get_param_count;
213    gcc_jit_function_type_get_return_type;
214    gcc_jit_function_type_get_param_count;
215    gcc_jit_function_type_get_param_type;
216    gcc_jit_type_unqualified;
217    gcc_jit_type_dyncast_array;
218    gcc_jit_type_is_bool;
219    gcc_jit_type_dyncast_function_ptr_type;
220    gcc_jit_type_is_integral;
221    gcc_jit_type_is_pointer;
222    gcc_jit_type_dyncast_vector;
223    gcc_jit_vector_type_get_element_type;
224    gcc_jit_vector_type_get_num_units;
225    gcc_jit_struct_get_field;
226    gcc_jit_type_is_struct;
227    gcc_jit_struct_get_field_count;
228} LIBGCCJIT_ABI_15;
229
230LIBGCCJIT_ABI_17 {
231  global:
232    gcc_jit_lvalue_set_tls_model;
233} LIBGCCJIT_ABI_16;
234
235LIBGCCJIT_ABI_18 {
236  global:
237    gcc_jit_lvalue_set_link_section;
238} LIBGCCJIT_ABI_17;
239
240LIBGCCJIT_ABI_19 {
241  global:
242    gcc_jit_context_new_array_constructor;
243    gcc_jit_context_new_struct_constructor;
244    gcc_jit_context_new_union_constructor;
245    gcc_jit_global_set_initializer_rvalue;
246} LIBGCCJIT_ABI_18;
247
248LIBGCCJIT_ABI_20 {
249  global:
250    gcc_jit_compatible_types;
251    gcc_jit_type_get_size;
252} LIBGCCJIT_ABI_19;
253
254LIBGCCJIT_ABI_21 {
255  global:
256    gcc_jit_context_new_bitcast;
257} LIBGCCJIT_ABI_20;
258
259LIBGCCJIT_ABI_22 {
260  global:
261    gcc_jit_lvalue_set_register_name;
262} LIBGCCJIT_ABI_21;
263
264LIBGCCJIT_ABI_23 {
265  global:
266    gcc_jit_context_set_bool_print_errors_to_stderr;
267} LIBGCCJIT_ABI_22;
268
269LIBGCCJIT_ABI_24 {
270  global:
271    gcc_jit_lvalue_set_alignment;
272    gcc_jit_lvalue_get_alignment;
273} LIBGCCJIT_ABI_23;
274