We export some symbols that are in private headers. We shouldn't do
that. Highlight them in the version script by grouping them and add
a comment.
We might want to hide these symbols later.
Some of these symbols symbols are used by libnl internal libraries.
So removing those is more complicated and only possible if we don't
required compatibility of different libnl libraries between each other
(i.e. that we require that within one installation the library versions
match).
Signed-off-by: Thomas Haller <thaller@redhat.com>
Hide internal symbols from the libraries.
Before, all symbols were exported, including some that were
not meant to be public. Hide them now.
This is an ABI break, but nobody was supposed to use these symbols.
Hence it seems acceptable to hide them now.
Still don't hide any symbols that are internal, but wrongly exported
in public header files (such as @ct_obj_ops).
Signed-off-by: Thomas Haller <thaller@redhat.com>
Before all symbols (global: *;) were exported, which included some
symbols that should not be exported. Update the symbol files to
exclude everything by default and name the exported symbols
explicitly.
Still the same symbols as before are exported.
for SO in ./lib/.libs/*.so ./src/lib/.libs/*.so; do
SYM="$(basename "$SO")"
SYM="${SYM%.so}.sym"
cat <<EOF | sed 's/^ *>> //' > "$SYM"
>> libnl_3 {
>> global:
>> $(nm "$SO" | sed -n 's/^[a-fA-F0-9]\+ [BDRT] \(.*\)/\t\1;/p' | LANG=C sort)
>> local:
>> $(echo -e '\t')*;
>> };
EOF
done
Signed-off-by: Thomas Haller <thaller@redhat.com>
Instead of using a shared version script 'libnl.sym', add individual
linker scripts for all libnl libraries.
For now, the content of the version script is unchanged and this
patch does not have any externally visible changes.
Signed-off-by: Thomas Haller <thaller@redhat.com>