When functions from libsemanage calls other functions that are exported, these functions need to be "wrapped" using hidden_proto() macro. This is done in headers such as "user_internal.h". Several functions in genhomedircon.c are not doing this, which makes building with -flto fail with errors such as: /usr/bin/ld: /tmp/libsemanage.so.1.KebOLC.ltrans1.ltrans.o: in function `user_sort_func': /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:758: undefined reference to `semanage_user_get_name' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:758: undefined reference to `semanage_user_get_name' /usr/bin/ld: /tmp/libsemanage.so.1.KebOLC.ltrans1.ltrans.o: in function `fcontext_matches': /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:240: undefined reference to `semanage_fcontext_get_expr' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:248: undefined reference to `semanage_fcontext_get_type' /usr/bin/ld: /tmp/libsemanage.so.1.KebOLC.ltrans1.ltrans.o: in function `add_user.isra.0': /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:992: undefined reference to `semanage_user_get_mlslevel' /usr/bin/ld: /tmp/libsemanage.so.1.KebOLC.ltrans1.ltrans.o: in function `write_context_file': /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:892: undefined reference to `semanage_user_key_create' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:764: undefined reference to `semanage_user_get_name' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:897: undefined reference to `semanage_user_query' /usr/bin/ld: /home/tkloczko/rpmbuild/BUILD/libsemanage-2.9-rc1/src/genhomedircon.c:905: undefined reference to `semanage_user_get_mlslevel' Include the missing headers. Fixes: https://github.com/SELinuxProject/selinux/issues/169 Signed-off-by: Nicolas Iooss <nicolas.iooss@xxxxxxx> --- libsemanage/src/genhomedircon.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libsemanage/src/genhomedircon.c b/libsemanage/src/genhomedircon.c index e5f8d3710e8a..d08c88de99a7 100644 --- a/libsemanage/src/genhomedircon.c +++ b/libsemanage/src/genhomedircon.c @@ -28,8 +28,10 @@ #include <semanage/fcontexts_policy.h> #include <sepol/context.h> #include <sepol/context_record.h> +#include "fcontext_internal.h" #include "semanage_store.h" #include "seuser_internal.h" +#include "user_internal.h" #include "debug.h" #include "utilities.h" -- 2.22.0