]> gcc.gnu.org Git - gcc.git/commit
libstdc++, Darwin: Handle a linker warning [PR112397].
authorIain Sandoe <iain@sandoe.co.uk>
Thu, 8 Feb 2024 17:54:31 +0000 (17:54 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Sun, 21 Apr 2024 13:04:04 +0000 (14:04 +0100)
commit77f17e405a0669db9a6c8af69bde6eb1170f48bd
tree36d8b2a17ea9f885bdf9671270d933ca2f4b650d
parent4c8d37badaa42e85218eb9b89aef3e4f6cf4486e
libstdc++, Darwin: Handle a linker warning [PR112397].

Darwin's linker warns when we make a direct branch to code that is
in a weak definition (citing that if a different implementation of
the weak function is chosen by the dynamic linker this would be an
error).

As the analysis in the PR shows, this can happen when we have hot/
cold partitioning and there is an error path that is primarily cold
but makes use of epilogue code in the hot section.  In this simple
case, we can easily deduce that the code is in fact safe; however
that is not something we can realistically implement in the linker.

Since the user-replaceable allocators are implemented using weak
definitions, this is a warning that is frequently flagged up in both
the testsuite and end-user code.

The chosen solution here is to suppress the hot/cold partitioning for
these cases (it is unlikely to impact performance much c.f. the
actual allocation).

PR target/112397

libstdc++-v3/ChangeLog:

* configure: Regenerate.
* configure.ac: Detect if we are building for Darwin.
* libsupc++/Makefile.am: If we are building for Darwin, then
suppress hot/cold partitioning for the array allocators.
* libsupc++/Makefile.in: Regenerated.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
Co-authored-by: Jonathan Wakely <jwakely@redhat.com>
(cherry picked from commit 1609fdff16f17ead37666f6d0e801800ee3d04d2)
libstdc++-v3/configure
libstdc++-v3/configure.ac
libstdc++-v3/libsupc++/Makefile.am
libstdc++-v3/libsupc++/Makefile.in
This page took 0.058944 seconds and 6 git commands to generate.