[Bug 277021] www/firefox: error on start after updating to 123.0 (rc1, rc2)

From: <bugzilla-noreply_at_freebsd.org>
Date: Sun, 18 Feb 2024 00:41:42 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277021

--- Comment #68 from Tatsuki Makino <tatsuki_makino@hotmail.com> ---
(In reply to Tomoaki AOKI from comment #66)

Perhaps so.
Looking a little more closely, first, the commands to which
/usr/local/lib/firefox/firefox is linked are as follows.
All seemingly unimportant parts were replaced with "...".

/usr/local/bin/clang++15 -std=gnu++17 -o ../../dist/bin/firefox ... -O2 -pipe
-march=haswell -O3 ... -funwind-tables
/wrkdirs/usr/ports/www/firefox/work/.build/browser/app/firefox.list -pthread
-Wl,--as-needed ... -fuse-ld=lld ... -rdynamic ... 
../../build/pure_virtual/libpure_virtual.a -pie  -L/usr/local/lib

There is no such thing as a -lm being added by CPUTYPE.
The link to libm relies completely on the behavior of clang++.

The resulting firefox binary will show the following differences in readelf -s.
Filtered and sorted by cut -w -f 9.

@@ -664,22 +664,10 @@
 _ZN7mozilla11Compression3LZ48compressEPKcmPc
 _ZN7mozilla11sse_private11aes_enabledE
 _ZN7mozilla11sse_private11aes_enabledE
-_ZN7mozilla11sse_private11avx_enabledE
-_ZN7mozilla11sse_private11avx_enabledE
-_ZN7mozilla11sse_private12avx2_enabledE
-_ZN7mozilla11sse_private12avx2_enabledE
 _ZN7mozilla11sse_private12fma3_enabledE
 _ZN7mozilla11sse_private12fma3_enabledE
-_ZN7mozilla11sse_private12sse3_enabledE
-_ZN7mozilla11sse_private12sse3_enabledE
 _ZN7mozilla11sse_private13sse4a_enabledE
 _ZN7mozilla11sse_private13sse4a_enabledE
-_ZN7mozilla11sse_private13ssse3_enabledE
-_ZN7mozilla11sse_private13ssse3_enabledE
-_ZN7mozilla11sse_private14sse4_1_enabledE
-_ZN7mozilla11sse_private14sse4_1_enabledE
-_ZN7mozilla11sse_private14sse4_2_enabledE
-_ZN7mozilla11sse_private14sse4_2_enabledE
 _ZN7mozilla11sse_private15avxvnni_enabledE
 _ZN7mozilla11sse_private15avxvnni_enabledE
 _ZN7mozilla11sse_private16has_constant_tscE
@@ -1915,8 +1903,6 @@
 bcmp@FBSD_1.0
 calloc
 calloc@FBSD_1.0
-ceil
-ceil@FBSD_1.0
 clock_getres
 clock_getres@FBSD_1.0
 clock_gettime
@@ -1957,8 +1943,6 @@
 fileno
 fileno@FBSD_1.0
 finalizer
-floor
-floor@FBSD_1.0
 fopen
 fopen@FBSD_1.0
 fprint_stderr

By leaving ceil and floor to what is in the CPU, it would mean that libm would
be unnecessary.

When pure_virtual is traced to where it comes from,
${WRCSRC}/build/pure_virtual/pure_virtual.c is reached.
But it is almost empty inside and I am not sure.
I suspect that ${WRKDIR}/.build/browser/app/firefox.list is involved in the
contents of this binary, but I am not sure.

Also, libgkcodecs.so link seems to use clang instead of clang++.
This would require explicitly linking libm with -lm, as already said.
A similar fix would be needed for all *.so that they received the undefined
symbol warning.

Is that a good rationale for applying the patch? :)

-- 
You are receiving this mail because:
You are the assignee for the bug.