# Linker script for libgccjit.so
#   Copyright (C) 2013-2022 Free Software Foundation, Inc.
#   Contributed by David Malcolm <dmalcolm@redhat.com>.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.  */

# The initial release of the library.
LIBGCCJIT_ABI_0
{
  global:
    # Keep this list sorted alphabetically:
    gcc_jit_block_add_assignment;
    gcc_jit_block_add_assignment_op;
    gcc_jit_block_add_comment;
    gcc_jit_block_add_eval;
    gcc_jit_block_as_object;
    gcc_jit_block_end_with_conditional;
    gcc_jit_block_end_with_jump;
    gcc_jit_block_end_with_return;
    gcc_jit_block_end_with_void_return;
    gcc_jit_block_get_function;
    gcc_jit_context_acquire;
    gcc_jit_context_compile;
    gcc_jit_context_compile_to_file;
    gcc_jit_context_dump_to_file;
    gcc_jit_context_dump_reproducer_to_file;
    gcc_jit_context_enable_dump;
    gcc_jit_context_get_builtin_function;
    gcc_jit_context_get_first_error;
    gcc_jit_context_get_last_error;
    gcc_jit_context_get_type;
    gcc_jit_context_get_int_type;
    gcc_jit_context_new_array_access;
    gcc_jit_context_new_array_type;
    gcc_jit_context_new_binary_op;
    gcc_jit_context_new_call;
    gcc_jit_context_new_call_through_ptr;
    gcc_jit_context_new_cast;
    gcc_jit_context_new_child_context;
    gcc_jit_context_new_comparison;
    gcc_jit_context_new_field;
    gcc_jit_context_new_function;
    gcc_jit_context_new_function_ptr_type;
    gcc_jit_context_new_global;
    gcc_jit_context_new_location;
    gcc_jit_context_new_opaque_struct;
    gcc_jit_context_new_param;
    gcc_jit_context_new_rvalue_from_double;
    gcc_jit_context_new_rvalue_from_int;
    gcc_jit_context_new_rvalue_from_long;
    gcc_jit_context_new_rvalue_from_ptr;
    gcc_jit_context_new_string_literal;
    gcc_jit_context_new_struct_type;
    gcc_jit_context_new_unary_op;
    gcc_jit_context_new_union_type;
    gcc_jit_context_null;
    gcc_jit_context_one;
    gcc_jit_context_release;
    gcc_jit_context_set_bool_option;
    gcc_jit_context_set_int_option;
    gcc_jit_context_set_logfile;
    gcc_jit_context_set_str_option;
    gcc_jit_context_zero;
    gcc_jit_field_as_object;
    gcc_jit_function_as_object;
    gcc_jit_function_dump_to_dot;
    gcc_jit_function_get_param;
    gcc_jit_function_new_block;
    gcc_jit_function_new_local;
    gcc_jit_location_as_object;
    gcc_jit_lvalue_as_object;
    gcc_jit_lvalue_as_rvalue;
    gcc_jit_lvalue_access_field;
    gcc_jit_lvalue_get_address;
    gcc_jit_object_get_context;
    gcc_jit_object_get_debug_string;
    gcc_jit_param_as_lvalue;
    gcc_jit_param_as_object;
    gcc_jit_param_as_rvalue;
    gcc_jit_result_get_code;
    gcc_jit_result_get_global;
    gcc_jit_result_release;
    gcc_jit_rvalue_access_field;
    gcc_jit_rvalue_as_object;
    gcc_jit_rvalue_dereference;
    gcc_jit_rvalue_dereference_field;
    gcc_jit_rvalue_get_type;
    gcc_jit_struct_as_type;
    gcc_jit_struct_set_fields;
    gcc_jit_type_as_object;
    gcc_jit_type_get_const;
    gcc_jit_type_get_pointer;
    gcc_jit_type_get_volatile;

  local: *;
};

# Add support for adding arbitrary command-line options (PR jit/66628).
LIBGCCJIT_ABI_1 {
  global:
    gcc_jit_context_add_command_line_option;
} LIBGCCJIT_ABI_0;

# Add support for disabling the check for unreachable blocks (PR jit/66546).
LIBGCCJIT_ABI_2 {
  global:
    gcc_jit_context_set_bool_allow_unreachable_blocks;
} LIBGCCJIT_ABI_1;

# Add support for switch statements.
LIBGCCJIT_ABI_3 {
  global:
    gcc_jit_block_end_with_switch;
    gcc_jit_case_as_object;
    gcc_jit_context_new_case;
} LIBGCCJIT_ABI_2;

# Add timing API.
LIBGCCJIT_ABI_4 {
  global:
    gcc_jit_context_get_timer;
    gcc_jit_context_set_timer;
    gcc_jit_timer_new;
    gcc_jit_timer_release;
    gcc_jit_timer_push;
    gcc_jit_timer_pop;
    gcc_jit_timer_print;
};

LIBGCCJIT_ABI_5 {
  global:
    gcc_jit_context_set_bool_use_external_driver;
} LIBGCCJIT_ABI_4;

LIBGCCJIT_ABI_6 {
  global:
    gcc_jit_rvalue_set_bool_require_tail_call;
} LIBGCCJIT_ABI_5;

LIBGCCJIT_ABI_7 {
  global:
    gcc_jit_type_get_aligned;
} LIBGCCJIT_ABI_6;

LIBGCCJIT_ABI_8 {
  global:
    gcc_jit_type_get_vector;
} LIBGCCJIT_ABI_7;

LIBGCCJIT_ABI_9 {
  global:
    gcc_jit_function_get_address;
} LIBGCCJIT_ABI_8;

LIBGCCJIT_ABI_10 {
  global:
    gcc_jit_context_new_rvalue_from_vector;
} LIBGCCJIT_ABI_9;

LIBGCCJIT_ABI_11 {
  global:
    gcc_jit_context_add_driver_option;
} LIBGCCJIT_ABI_10;

LIBGCCJIT_ABI_12 {
  global:
    gcc_jit_context_new_bitfield;
} LIBGCCJIT_ABI_11;

LIBGCCJIT_ABI_13 {
  global:
    gcc_jit_version_major;
    gcc_jit_version_minor;
    gcc_jit_version_patchlevel;
} LIBGCCJIT_ABI_12;

LIBGCCJIT_ABI_14 {
  global:
    gcc_jit_global_set_initializer;
} LIBGCCJIT_ABI_13;

LIBGCCJIT_ABI_15 {
  global:
    gcc_jit_block_add_extended_asm;
    gcc_jit_block_end_with_extended_asm_goto;
    gcc_jit_extended_asm_as_object;
    gcc_jit_extended_asm_set_volatile_flag;
    gcc_jit_extended_asm_set_inline_flag;
    gcc_jit_extended_asm_add_output_operand;
    gcc_jit_extended_asm_add_input_operand;
    gcc_jit_extended_asm_add_clobber;
    gcc_jit_context_add_top_level_asm;
} LIBGCCJIT_ABI_14;

LIBGCCJIT_ABI_16 {
  global:
    gcc_jit_function_get_return_type;
    gcc_jit_function_get_param_count;
    gcc_jit_function_type_get_return_type;
    gcc_jit_function_type_get_param_count;
    gcc_jit_function_type_get_param_type;
    gcc_jit_type_unqualified;
    gcc_jit_type_dyncast_array;
    gcc_jit_type_is_bool;
    gcc_jit_type_dyncast_function_ptr_type;
    gcc_jit_type_is_integral;
    gcc_jit_type_is_pointer;
    gcc_jit_type_dyncast_vector;
    gcc_jit_vector_type_get_element_type;
    gcc_jit_vector_type_get_num_units;
    gcc_jit_struct_get_field;
    gcc_jit_type_is_struct;
    gcc_jit_struct_get_field_count;
} LIBGCCJIT_ABI_15;

LIBGCCJIT_ABI_17 {
  global:
    gcc_jit_lvalue_set_tls_model;
} LIBGCCJIT_ABI_16;

LIBGCCJIT_ABI_18 {
  global:
    gcc_jit_lvalue_set_link_section;
} LIBGCCJIT_ABI_17;

LIBGCCJIT_ABI_19 {
  global:
    gcc_jit_context_new_array_constructor;
    gcc_jit_context_new_struct_constructor;
    gcc_jit_context_new_union_constructor;
    gcc_jit_global_set_initializer_rvalue;
} LIBGCCJIT_ABI_18;

LIBGCCJIT_ABI_20 {
  global:
    gcc_jit_compatible_types;
    gcc_jit_type_get_size;
} LIBGCCJIT_ABI_19;

LIBGCCJIT_ABI_21 {
  global:
    gcc_jit_context_new_bitcast;
} LIBGCCJIT_ABI_20;

LIBGCCJIT_ABI_22 {
  global:
    gcc_jit_lvalue_set_register_name;
} LIBGCCJIT_ABI_21;

LIBGCCJIT_ABI_23 {
  global:
    gcc_jit_context_set_bool_print_errors_to_stderr;
} LIBGCCJIT_ABI_22;

LIBGCCJIT_ABI_24 {
  global:
    gcc_jit_lvalue_set_alignment;
    gcc_jit_lvalue_get_alignment;
} LIBGCCJIT_ABI_23;
