Re: Annotate Deprecated Functions in libselinux

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

 



On Thu, Feb 27, 2020 at 1:41 PM William Roberts
<bill.c.roberts@xxxxxxxxx> wrote:
> It doesn't get us around all the issues, anything marked deprecated in selinux.h
> and marked hidden_proto in selinux_internal.h, will still need a pragma.
>
> This would be much simpler if we drop the whole hidden_proto stuff, I guess
> kloczek is proposing patches? Who is that, I see the Github name as:
> Tomasz Kłoczko
>
> But I can't find any matching author in the git logs to CC them.

I don't actually know him myself but he has opened a number of issues
on the selinux userspace and appears to be involved in Fedora in some
capacity.

> I'm looking at those macros:
> hidden_def
> hidden_proto
>
> They both seem to take a function and create an _internal symbol, and
> set the global symbol equal to the internal one. Essentially, both the
> normal and _internal functions are pointing to the same address.
>
> $ readelf -s ./src/libselinux.so | grep setexeccon_raw
>    176: 0000000000017c26    63 FUNC    GLOBAL DEFAULT   12 setexeccon_raw
>    279: 0000000000017c26    63 FUNC    LOCAL  DEFAULT   12
> setexeccon_raw_internal
>    606: 0000000000017c26    63 FUNC    GLOBAL DEFAULT   12 setexeccon_raw
>
> The hidden one, additionally
> sets the visibility to hidden, which if IIUC, just requires one to
> statically link. We can see above the
> visibility is local.
>
> What I don't understand, is why one would do this? What actual
> performance enhancement do we get?

The hidden_def/hidden_proto stuff originally came from Ulrich Drepper,
glibc maintainer at the time, to eliminate unnecessary runtime
relocations and PLT entries being used for local symbols.  Per the
comments in https://github.com/SELinuxProject/selinux/issues/204,
these might not be needed anymore and are breaking building with LTO.
Willing to get rid of them if it doesn't produce a significant
regression.




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

  Powered by Linux