jansson/src
Simon McVittie ca80d5127e build: Add a symbol version to all exported symbols for glibc
The --default-symver linker option attaches a default version definition
(the SONAME) to every exported symbol. It is supported since at least
GNU binutils 2.22 in 2011 (older versions not tested).

With this version definition, newly-linked binaries that depend on the
jansson 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-c or json-glib if those libraries appear in
dependency search order before jansson, 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 parse_json() calls json_decref(). It does not affect
calls from external code into jansson, unless jansson was statically
linked into the external caller.

This change will also not prevent code that depends on json-c or
json-glib from finding jansson's symbols and crashing; to prevent
that, a corresponding change in json-c or json-glib would be needed.

Adding a symbol-version is a backwards-compatible change, but once
added, removing or changing the symbol-version would be an incompatible
change that requires a SONAME bump.

Resolves: https://github.com/akheron/jansson/issues/523
(when combined with an equivalent change to json-c).

Signed-off-by: Simon McVittie <smcv@collabora.com>
2020-07-02 09:54:40 +01:00
..
dump.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
error.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
hashtable.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
hashtable.h Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
hashtable_seed.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
jansson.def Add json_object_update_recursive() 2019-10-11 11:20:25 +08:00
jansson.h jansson 2.13.1 2020-05-07 21:38:59 +03:00
jansson_config.h.in Use thread-safe reference counting if supported by the compiler. 2018-01-29 14:17:58 -05:00
jansson_private.h Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
load.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
lookup3.h Run clang-format on *.c, *.h 2019-10-21 08:55:01 +03:00
Makefile.am build: Add a symbol version to all exported symbols for glibc 2020-07-02 09:54:40 +01:00
memory.c Run clang-format on *.c, *.h 2019-10-21 08:55:01 +03:00
pack_unpack.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
strbuffer.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
strbuffer.h Run clang-format on *.c, *.h 2019-10-21 08:55:01 +03:00
strconv.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
utf.c Tweak clang-format configuration a bit 2019-10-21 08:56:03 +03:00
utf.h Run clang-format on *.c, *.h 2019-10-21 08:55:01 +03:00
value.c Handle vsnprintf corner cases. 2020-05-23 12:34:40 +02:00
version.c Run clang-format on *.c, *.h 2019-10-21 08:55:01 +03:00