[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