wsutil: Should link against -lm due to missing fabs() when built with -fno-builtin
Summary
For some reason a user decided to compile Wireshark (4.4.2) with -fno-builtin
and linking dumpcap failed because of missing fabs()
in libwsutil.
Downstream bug with logs & analysis: https://bugs.gentoo.org/947380
Steps to reproduce
It reproduces when building libwsutil & dumpcap with -fno-builtin
.
What is the current bug behavior?
Failed linkage of dumpcap
:
FAILED: run/dumpcap
: && /usr/bin/x86_64-pc-linux-gnu-gcc -fvisibility=hidden -Wall -Wextra -Wpointer-arith -Wformat-security -fno-strict-overflow -fexcess-precision=fast -Wvla -Wattributes -Wpragmas -Wredundant-decls -Wunreachable-code -Wlogical-op -Wno-error=stringop-overflow= -Wno-error=deprecated-declarations -Wframe-larger-than=32768 -Wno-format-truncation -fdiagnostics-color=always -Wshadow -Wold-style-definition -Wstrict-prototypes -Wno-pointer-sign -march=cascadelake -O2 -pipe -mabm -mno-pku -mno-sgx -fno-builtin -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Wno-error=odr -Wno-error=lto-type-mismatch -Wno-error=strict-aliasing -fno-lto -fmacro-prefix-map="/var/tmp/portage/net-analyzer/wireshark-4.4.2/work/wireshark-4.4.2/"= -fmacro-prefix-map="/var/tmp/portage/net-analyzer/wireshark-4.4.2/work/wireshark-4.4.2_build/"= -Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,--as-needed -fPIE -pie CMakeFiles/dumpcap.dir/capture_opts.c.o CMakeFiles/dumpcap.dir/cli_main.c.o CMakeFiles/dumpcap.dir/dumpcap.c.o CMakeFiles/dumpcap.dir/ringbuffer.c.o CMakeFiles/dumpcap.dir/sync_pipe_write.c.o CMakeFiles/dumpcap.dir/capture/iface_monitor.c.o CMakeFiles/dumpcap.dir/capture/ws80211_utils.c.o CMakeFiles/dumpcap.dir/capture/capture-pcap-util-unix.c.o CMakeFiles/dumpcap.dir/capture/capture-pcap-util.c.o -o run/dumpcap run/libwritecap.a run/libwsutil_static.a /usr/lib64/libpcap.so /usr/lib64/libcap.so /usr/lib64/libz.so /usr/lib64/libnl-genl-3.so /usr/lib64/libnl-route-3.so /usr/lib64/libnl-3.so /usr/lib64/libglib-2.0.so /usr/lib64/libgmodule-2.0.so -ldl /usr/lib64/libgcrypt.so /usr/lib64/libgpg-error.so /usr/lib64/libgnutls.so /usr/lib64/libpcre2-8.so /usr/lib64/libz.so && :
/usr/lib/gcc/x86_64-pc-linux-gnu/14/../../../../x86_64-pc-linux-gnu/bin/ld: run/libwsutil_static.a(str_util.c.o): in function `format_units':
str_util.c:(.text+0x15f3): undefined reference to `fabs'
collect2: error: ld returned 1 exit status
What is the expected correct behavior?
Successful linkage of dumpcap
.
Build information
Not available, but it should reproduce with any Linux/gcc build and -fno-builtin
.