Duplicate versions of libsemanage symbols

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,
Since recent changes in libsemanage.so's linker script, I have been
experiencing issues. As I encountered these issues only when I was
using a build configuration which is slightly different from what is
in the repository, I wanted to spend time to investigate what was
going on before eventually submitting a proper bug report.
The issue I see is the following: when I compile with the gold linker
and a custom set of build options, linking libsemanage.so fails with
[1]:

/usr/bin/ld.gold: warning: using 'LIBSEMANAGE_1.0' as version for
'semanage_get_hll_compiler_path' which is also named in version
'LIBSEMANAGE_1.1' in script
/usr/bin/ld.gold: warning: using 'LIBSEMANAGE_1.0' as version for
'semanage_get_ignore_module_cache' which is also named in version
'LIBSEMANAGE_1.1' in script
/usr/bin/ld.gold: warning: using 'LIBSEMANAGE_1.0' as version for
'semanage_set_ignore_module_cache' which is also named in version
'LIBSEMANAGE_1.1' in script
...

Looking back at a normal build of current git master (that succeeded),
I indeed have:

$ objdump -T libsemanage/src/libsemanage.so | grep
semanage_get_hll_compiler_path
000000000001b9b0 g    DF .text 000000000000021c  LIBSEMANAGE_1.0
semanage_get_hll_compiler_path

The same command on libsemanage 3.0 (last release) gives:

$ objdump -T /usr/lib/libsemanage.so | grep semanage_get_hll_compiler_path
000000000001a3c0 g    DF .text 0000000000000224  LIBSEMANAGE_1.1
semanage_get_hll_compiler_path

In short, semanage_get_hll_compiler_path is defined twice in
libsemanage/src/libsemanage.map [2] and the linker only provides the
first one. In fact, libsemanage.so built from git master has currently
only 2 functions in LIBSEMANAGE_1.1:

$ objdump -T libsemanage/src/libsemanage.so | grep LIBSEMANAGE_1.1
000000000001e1f0 g    DF .text 000000000000010d  LIBSEMANAGE_1.1
semanage_module_install
000000000001eea0 g    DF .text 000000000000011f  LIBSEMANAGE_1.1
semanage_module_get_enabled

These functions changed their API between versions 1.0 and 1.1, so
this is normal (there are .symver macros in the code and they work
properly). The issue is that all the other symbols went into
LIBSEMANAGE_1.0 instead of LIBSEMANAGE_1.1. Is this a bug or did I
misunderstand something? Should the duplicated functions be removed
from LIBSEMANAGE_1.0 in libsemanage.map?

Thanks,
Nicolas

[1] https://travis-ci.org/github/fishilico/selinux/jobs/674002033#L2471
[2] https://github.com/SELinuxProject/selinux/blob/aa40067b7b86d5e4c951fccae1aa98baff148613/libsemanage/src/libsemanage.map




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux