[Bug 216871] www/firefox: DTRACE=on no longer builds on 12.0-CURRENT
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Tue Feb 7 18:10:47 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216871
--- Comment #2 from Mark Johnston <markj at FreeBSD.org> ---
The problem seems to be related to GNU ld (I had only tested the build
with lld) and -ffunction-sections. Two objects that get linked into libxul.so
contain the same weak symbol. There's a DTrace probe in the corresponding
function:
> readelf -s Unified_cpp_js_src27.o | grep _ZN2js14NewObjectCache16newObjectFromHitEP9JSC
747: 0000000000000000 518 FUNC WEAK HIDDEN 152
_ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
1261: 0000000000000000 518 FUNC GLOBAL HIDDEN 152
$dtrace6188451._ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
> readelf -s jsarray.o | grep _ZN2js14NewObjectCache16newObjectFromHitEP9JSC
382: 0000000000000000 518 FUNC WEAK HIDDEN 405
_ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
567: 0000000000000000 518 FUNC GLOBAL HIDDEN 405
$dtrace6195329._ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
> readelf -s js-dtrace.o | grep _ZN2js14NewObjectCache16newObjectFromHitEP9JSC
44: 0000000000000000 0 FUNC GLOBAL DEFAULT UND
$dtrace6188451._ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
57: 0000000000000000 0 FUNC GLOBAL DEFAULT UND
$dtrace6195329._ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
With r313262, we emit alises for the symbols. It seems that ld merges the
sections, and ends up leaving one the aliases orphaned:
> ld -r -o test.o jsarray.o Unified_cpp_js_src27.o
> readelf -s test.o | grep _ZN2js14NewObjectCache16newObjectFromHitEP9JSC
1231: 0000000000000000 0 FUNC GLOBAL HIDDEN UND
$dtrace6188451._ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
1438: 0000000000000000 518 FUNC GLOBAL HIDDEN 476
$dtrace6195329._ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
1667: 0000000000000000 518 FUNC WEAK HIDDEN 476
_ZN2js14NewObjectCache16newObjectFromHitEP9JSContextiNS_2gc11InitialHeapE
However, the .SUNW_dof section has a relocation for this symbol, so the
final link fails.
I'm not sure if this behaviour is a bug in ld. It seems to me that we
might be able address this by avoiding the "$dtrace" uniquifier for aliases
of weak symbols.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the freebsd-dtrace
mailing list