2020-07-04 18:58:56 +00:00
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Symbol versioning for libjson-c.
|
|
|
|
|
* All exported symbols must be listed here.
|
|
|
|
|
*
|
|
|
|
|
* See
|
|
|
|
|
* https://software.intel.com/sites/default/files/m/a/1/e/dsohowto.pdf
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Symbols in JSONC_PRIVATE are exported for historical
|
|
|
|
|
* reasons, but should not be used outside of json-c.
|
|
|
|
|
*/
|
|
|
|
|
JSONC_PRIVATE {
|
build: Add symbol versions to all exported symbols
With this version script, newly-linked binaries that depend on the
json-c shared library will refer to its symbols in a versioned form,
preventing their references from being resolved to a symbol of the same
name exported by json-glib or libjansson if those libraries appear in
dependency search order before json-c, which will usually result in
a crash. This is necessary because ELF symbol resolution normally uses
a single flat namespace, not a tree like Windows symbol resolution.
At least one symbol (json_object_iter_next()) is exported by all three
JSON libraries.
Linking with -Bsymbolic is not enough to have this effect in all cases,
because -Bsymbolic only affects symbol lookup within a shared object,
for example when json_object_set_serializer() calls
json_object_set_userdata(). It does not affect calls from external
code into json-c, unless json-c was statically linked into the
external caller.
This change will also not prevent code that depends on json-glib or
libjansson from finding json-c's symbols and crashing; to prevent
that, a corresponding change in json-glib or libjansson would be needed.
Adding a symbol-version is a backwards-compatible change, but once
added, removing or changing the symbol-version on a symbol would be an
incompatible change that requires a SONAME bump.
Resolves: https://github.com/json-c/json-c/issues/621
(when combined with an equivalent change to libjansson).
Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-06-29 18:16:34 +01:00
|
|
|
array_list_add;
|
|
|
|
|
array_list_del_idx;
|
|
|
|
|
array_list_free;
|
|
|
|
|
array_list_new;
|
|
|
|
|
array_list_put_idx;
|
|
|
|
|
array_list_sort;
|
2020-07-04 18:58:56 +00:00
|
|
|
json_hex_chars;
|
|
|
|
|
json_parse_double;
|
|
|
|
|
json_parse_int64;
|
|
|
|
|
json_parse_uint64;
|
|
|
|
|
lh_table_delete;
|
|
|
|
|
lh_table_delete_entry;
|
|
|
|
|
lh_table_free;
|
|
|
|
|
lh_table_insert;
|
|
|
|
|
lh_table_insert_w_hash;
|
|
|
|
|
lh_table_new;
|
|
|
|
|
lh_table_resize;
|
|
|
|
|
mc_debug;
|
|
|
|
|
mc_error;
|
|
|
|
|
mc_get_debug;
|
|
|
|
|
mc_info;
|
|
|
|
|
mc_set_debug;
|
|
|
|
|
mc_set_syslog;
|
|
|
|
|
printbuf_free;
|
|
|
|
|
printbuf_memappend;
|
|
|
|
|
printbuf_memset;
|
|
|
|
|
printbuf_new;
|
|
|
|
|
printbuf_reset;
|
|
|
|
|
sprintbuf;
|
2023-03-28 23:08:39 +00:00
|
|
|
# Used by tests:
|
|
|
|
|
_json_c_strerror;
|
2020-07-04 18:58:56 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
JSONC_0.14 {
|
|
|
|
|
global:
|
|
|
|
|
array_list_bsearch;
|
|
|
|
|
array_list_get_idx;
|
|
|
|
|
array_list_length;
|
build: Add symbol versions to all exported symbols
With this version script, newly-linked binaries that depend on the
json-c shared library will refer to its symbols in a versioned form,
preventing their references from being resolved to a symbol of the same
name exported by json-glib or libjansson if those libraries appear in
dependency search order before json-c, which will usually result in
a crash. This is necessary because ELF symbol resolution normally uses
a single flat namespace, not a tree like Windows symbol resolution.
At least one symbol (json_object_iter_next()) is exported by all three
JSON libraries.
Linking with -Bsymbolic is not enough to have this effect in all cases,
because -Bsymbolic only affects symbol lookup within a shared object,
for example when json_object_set_serializer() calls
json_object_set_userdata(). It does not affect calls from external
code into json-c, unless json-c was statically linked into the
external caller.
This change will also not prevent code that depends on json-glib or
libjansson from finding json-c's symbols and crashing; to prevent
that, a corresponding change in json-glib or libjansson would be needed.
Adding a symbol-version is a backwards-compatible change, but once
added, removing or changing the symbol-version on a symbol would be an
incompatible change that requires a SONAME bump.
Resolves: https://github.com/json-c/json-c/issues/621
(when combined with an equivalent change to libjansson).
Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-06-29 18:16:34 +01:00
|
|
|
json_c_get_random_seed;
|
|
|
|
|
json_c_object_sizeof;
|
|
|
|
|
json_c_set_serialization_double_format;
|
|
|
|
|
json_c_shallow_copy_default;
|
|
|
|
|
json_c_version;
|
|
|
|
|
json_c_version_num;
|
|
|
|
|
json_c_visit;
|
|
|
|
|
json_global_set_string_hash;
|
|
|
|
|
json_number_chars;
|
|
|
|
|
json_object_array_add;
|
|
|
|
|
json_object_array_bsearch;
|
|
|
|
|
json_object_array_del_idx;
|
|
|
|
|
json_object_array_get_idx;
|
|
|
|
|
json_object_array_length;
|
|
|
|
|
json_object_array_put_idx;
|
|
|
|
|
json_object_array_sort;
|
|
|
|
|
json_object_deep_copy;
|
|
|
|
|
json_object_double_to_json_string;
|
|
|
|
|
json_object_equal;
|
|
|
|
|
json_object_free_userdata;
|
|
|
|
|
json_object_from_fd;
|
|
|
|
|
json_object_from_fd_ex;
|
|
|
|
|
json_object_from_file;
|
|
|
|
|
json_object_get;
|
|
|
|
|
json_object_get_array;
|
|
|
|
|
json_object_get_boolean;
|
|
|
|
|
json_object_get_double;
|
|
|
|
|
json_object_get_int64;
|
|
|
|
|
json_object_get_int;
|
|
|
|
|
json_object_get_object;
|
|
|
|
|
json_object_get_string;
|
|
|
|
|
json_object_get_string_len;
|
|
|
|
|
json_object_get_type;
|
|
|
|
|
json_object_get_uint64;
|
|
|
|
|
json_object_get_userdata;
|
|
|
|
|
json_object_int_inc;
|
|
|
|
|
json_object_is_type;
|
|
|
|
|
json_object_iter_begin;
|
|
|
|
|
json_object_iter_end;
|
|
|
|
|
json_object_iter_equal;
|
|
|
|
|
json_object_iter_init_default;
|
|
|
|
|
json_object_iter_next;
|
|
|
|
|
json_object_iter_peek_name;
|
|
|
|
|
json_object_iter_peek_value;
|
|
|
|
|
json_object_new_array;
|
|
|
|
|
json_object_new_boolean;
|
|
|
|
|
json_object_new_double;
|
|
|
|
|
json_object_new_double_s;
|
|
|
|
|
json_object_new_int64;
|
|
|
|
|
json_object_new_int;
|
|
|
|
|
json_object_new_null;
|
|
|
|
|
json_object_new_object;
|
|
|
|
|
json_object_new_string;
|
|
|
|
|
json_object_new_string_len;
|
|
|
|
|
json_object_new_uint64;
|
|
|
|
|
json_object_object_add;
|
|
|
|
|
json_object_object_add_ex;
|
|
|
|
|
json_object_object_del;
|
|
|
|
|
json_object_object_get;
|
|
|
|
|
json_object_object_get_ex;
|
|
|
|
|
json_object_object_length;
|
|
|
|
|
json_object_put;
|
|
|
|
|
json_object_set_boolean;
|
|
|
|
|
json_object_set_double;
|
|
|
|
|
json_object_set_int64;
|
|
|
|
|
json_object_set_int;
|
|
|
|
|
json_object_set_serializer;
|
|
|
|
|
json_object_set_string;
|
|
|
|
|
json_object_set_string_len;
|
|
|
|
|
json_object_set_uint64;
|
|
|
|
|
json_object_set_userdata;
|
|
|
|
|
json_object_to_fd;
|
|
|
|
|
json_object_to_file;
|
|
|
|
|
json_object_to_file_ext;
|
|
|
|
|
json_object_to_json_string;
|
|
|
|
|
json_object_to_json_string_ext;
|
|
|
|
|
json_object_to_json_string_length;
|
|
|
|
|
json_object_userdata_to_json_string;
|
|
|
|
|
json_pointer_get;
|
|
|
|
|
json_pointer_getf;
|
|
|
|
|
json_pointer_set;
|
|
|
|
|
json_pointer_setf;
|
|
|
|
|
json_tokener_error_desc;
|
|
|
|
|
json_tokener_free;
|
|
|
|
|
json_tokener_get_error;
|
|
|
|
|
json_tokener_get_parse_end;
|
|
|
|
|
json_tokener_new;
|
|
|
|
|
json_tokener_new_ex;
|
|
|
|
|
json_tokener_parse;
|
|
|
|
|
json_tokener_parse_ex;
|
|
|
|
|
json_tokener_parse_verbose;
|
|
|
|
|
json_tokener_reset;
|
|
|
|
|
json_tokener_set_flags;
|
|
|
|
|
json_type_to_name;
|
|
|
|
|
json_util_get_last_err;
|
|
|
|
|
lh_char_equal;
|
|
|
|
|
lh_kchar_table_new;
|
|
|
|
|
lh_kptr_table_new;
|
|
|
|
|
lh_ptr_equal;
|
|
|
|
|
lh_table_length;
|
|
|
|
|
lh_table_lookup_entry;
|
|
|
|
|
lh_table_lookup_entry_w_hash;
|
|
|
|
|
lh_table_lookup_ex;
|
|
|
|
|
|
|
|
|
|
local:
|
|
|
|
|
*;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
JSONC_0.15 {
|
|
|
|
|
global:
|
|
|
|
|
array_list_new2;
|
|
|
|
|
array_list_shrink;
|
|
|
|
|
json_object_array_shrink;
|
|
|
|
|
json_object_new_array_ext;
|
|
|
|
|
} JSONC_0.14;
|
2020-07-26 15:26:05 +00:00
|
|
|
|
|
|
|
|
JSONC_0.16 {
|
2023-07-29 21:45:16 -04:00
|
|
|
# No new symbols in 0.16
|
2020-07-26 15:26:05 +00:00
|
|
|
} JSONC_0.15;
|
2022-04-14 12:29:39 +00:00
|
|
|
|
|
|
|
|
JSONC_0.17 {
|
2023-07-29 21:45:16 -04:00
|
|
|
global:
|
|
|
|
|
json_object_array_insert_idx;
|
|
|
|
|
json_patch_apply;
|
2023-07-16 10:48:20 -04:00
|
|
|
# array_list_insert_idx is intentionally not exported
|
2022-04-14 12:29:39 +00:00
|
|
|
} JSONC_0.16;
|
2023-08-12 19:08:59 +00:00
|
|
|
|
|
|
|
|
JSONC_0.18 {
|
|
|
|
|
# global:
|
|
|
|
|
} JSONC_0.17;
|
2024-09-15 13:06:06 -04:00
|
|
|
|
|
|
|
|
JSONC_0.19 {
|
|
|
|
|
# global:
|
|
|
|
|
} JSONC_0.18;
|