On Tue, Apr 02, 2024 at 05:09:18PM +0200, Kilian Hanich via devel wrote:
Am 02.04.24 um 10:22 schrieb Florian Weimer:
>> - Can some wrappers be developed to make it both easier and safer?
>GCC already provides function multi-versioning/target clones as a
>higher-level interface.
Also, upstreams should by default properly mark their stuffs with
restrictive visibilities.
While we are a few decades to change the defaults, that doesn't mean
that one can't choose the better option. So, by default one should
choose -fvisibility=hidden and mark the public API with
__attribute__((visibility("protected"))) or, if they really want a
function to be interpositionable (by e.g. LD_PRELOAD) as
__attribute__((visibility("default"))).
ISTR this also makes the library faster (faster loading I think?)
Anyway we've done it for all the virt libraries for years.
Rich.
As a side effect, if you ever want your library be usable on
Windows,
you need to do that anyway since hidden is the default there and your
public API must be marked explicitly. (Also, Windows doesn't support
interposition and also doesn't support cyclic library dependencies
without complicated hacks. So yeah, Windows kinda has the better
defaults here.)
Some newer languages do that anyway already, but we obviously can't just
change it for C and C++ projects.
But depending on the architecture this may not necessarily be possible.
So yeah, only upstream can do that, not us.
Regards
Kilian Hanich
--
_______________________________________________
devel mailing list -- devel(a)lists.fedoraproject.org
To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW