1# Linker script for libgccjit.so
2#   Copyright (C) 2013-2019 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;