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