git: 0b56e82a40f6 - stable/12 - libdtrace: Change the binding of USDT probe symbols to STB_WEAK
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 19 Dec 2022 15:43:24 UTC
The branch stable/12 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=0b56e82a40f65fa5709482402631e3de8c433657
commit 0b56e82a40f65fa5709482402631e3de8c433657
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2022-12-11 16:27:22 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2022-12-19 15:43:15 +0000
libdtrace: Change the binding of USDT probe symbols to STB_WEAK
Otherwise, if multiple object files contain references to the same
probe, newish lld will refuse to link them by default, raising a
duplicate global symbol definition error. Previously, duplicate global
symbols with identical absolute st_values were permitted by both lld and
GNU ld.
Since dtrace has no use for probe function symbols after the relocation
performed by dtrace -G, make the symbols weak as well, following a
suggestion from MaskRay.
Reported by: dim
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
(cherry picked from commit be39466a1035ffb13268cd63723e976898e9b91e)
---
cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
index 589b30aa8654..32be291aab13 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c
@@ -1605,6 +1605,7 @@ process_obj(dtrace_hdl_t *dtp, const char *obj, int *eprobesp)
* invocation.
*/
if (rsym.st_shndx != SHN_ABS) {
+ rsym.st_info = GELF_ST_INFO(STB_WEAK, STT_FUNC);
rsym.st_shndx = SHN_ABS;
(void) gelf_update_sym(data_sym, ndx, &rsym);
}