Undefined reference to `_ZGVbN2v_sin'

Hello,
I get an undefined reference on my machine when I try to build ioq3 c05fbe554e89a12ee51f8716c81d9e718dede441:

make V=1
make[1]: Entering directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'

Building in build/release-linux-x86_64:
  PLATFORM: linux
  ARCH: x86_64
  VERSION: 1.36
  COMPILE_PLATFORM: linux
  COMPILE_ARCH: x86_64
  HAVE_VM_COMPILED: true
  CC: cc

  CFLAGS:
    -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DUSE_ICON -DARCH_STRING="x86_64" -DNO_GZIP -Icode/zlib -DUSE_INTERNAL_JPEG -Icode/jpeg-8c -DUSE_LOCAL_HEADERS
    -DPRODUCT_VERSION="1.36" -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization
    -Werror-implicit-function-declaration -MMD -DNDEBUG -O3 -ffast-math

  CLIENT_CFLAGS:
    -D_REENTRANT -I/usr/include/SDL2 -DUSE_OPENAL -DUSE_OPENAL_DLOPEN -DUSE_CURL -DUSE_CURL_DLOPEN -DUSE_VOIP -DUSE_CODEC_OPUS -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX
    -DUSE_ALLOCA -Icode/opus-1.1.4/include -Icode/opus-1.1.4/celt -Icode/opus-1.1.4/silk -Icode/opus-1.1.4/silk/float -Icode/opusfile-0.8/include -Icode/libogg-1.3.2/include
    -DUSE_RENDERER_DLOPEN -DUSE_MUMBLE

  SERVER_CFLAGS:
    -DUSE_VOIP

  LDFLAGS:
    

  LIBS:
    -ldl -lm

  CLIENT_LIBS:
    -Wl,-rpath,/usr/lib64 -lSDL2 -lpthread -lrt

  AUTOUPDATER_LIBS:
    -ldl

  Output:
    ioq3ded.x86_64
    ioquake3.x86_64
    renderer_opengl1_x86_64.so
    renderer_opengl2_x86_64.so
    baseq3/cgamex86_64.so
    baseq3/qagamex86_64.so
    baseq3/uix86_64.so
    missionpack/cgamex86_64.so
    missionpack/qagamex86_64.so
    missionpack/uix86_64.so
    baseq3/vm/cgame.qvm
    baseq3/vm/qagame.qvm
    baseq3/vm/ui.qvm
    missionpack/vm/cgame.qvm
    missionpack/vm/qagame.qvm
    missionpack/vm/ui.qvm

make[2]: Entering directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make[2]: `build/release-linux-x86_64/ioq3ded.x86_64' is up to date.
cc -D_REENTRANT -I/usr/include/SDL2  -DUSE_OPENAL -DUSE_OPENAL_DLOPEN -DUSE_CURL -DUSE_CURL_DLOPEN -DUSE_VOIP -DUSE_CODEC_OPUS -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA -Icode/opus-1.1.4/include -Icode/opus-1.1.4/celt -Icode/opus-1.1.4/silk -Icode/opus-1.1.4/silk/float -Icode/opusfile-0.8/include -Icode/libogg-1.3.2/include -DUSE_RENDERER_DLOPEN -DUSE_MUMBLE -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DUSE_ICON -DARCH_STRING=\"x86_64\" -DNO_GZIP -Icode/zlib -DUSE_INTERNAL_JPEG -Icode/jpeg-8c -DUSE_LOCAL_HEADERS -DPRODUCT_VERSION=\"1.36\" -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization -Werror-implicit-function-declaration -MMD    \
	-o build/release-linux-x86_64/ioquake3.x86_64 build/release-linux-x86_64/client/cl_cgame.o build/release-linux-x86_64/client/cl_cin.o build/release-linux-x86_64/client/cl_console.o build/release-linux-x86_64/client/cl_input.o build/release-linux-x86_64/client/cl_keys.o build/release-linux-x86_64/client/cl_main.o build/release-linux-x86_64/client/cl_net_chan.o build/release-linux-x86_64/client/cl_parse.o build/release-linux-x86_64/client/cl_scrn.o build/release-linux-x86_64/client/cl_ui.o build/release-linux-x86_64/client/cl_avi.o build/release-linux-x86_64/client/cm_load.o build/release-linux-x86_64/client/cm_patch.o build/release-linux-x86_64/client/cm_polylib.o build/release-linux-x86_64/client/cm_test.o build/release-linux-x86_64/client/cm_trace.o build/release-linux-x86_64/client/cmd.o build/release-linux-x86_64/client/common.o build/release-linux-x86_64/client/cvar.o build/release-linux-x86_64/client/files.o build/release-linux-x86_64/client/md4.o build/release-linux-x86_64/client/md5.o build/release-linux-x86_64/client/msg.o build/release-linux-x86_64/client/net_chan.o build/release-linux-x86_64/client/net_ip.o build/release-linux-x86_64/client/huffman.o build/release-linux-x86_64/client/snd_adpcm.o build/release-linux-x86_64/client/snd_dma.o build/release-linux-x86_64/client/snd_mem.o build/release-linux-x86_64/client/snd_mix.o build/release-linux-x86_64/client/snd_wavelet.o build/release-linux-x86_64/client/snd_main.o build/release-linux-x86_64/client/snd_codec.o build/release-linux-x86_64/client/snd_codec_wav.o build/release-linux-x86_64/client/snd_codec_ogg.o build/release-linux-x86_64/client/snd_codec_opus.o build/release-linux-x86_64/client/qal.o build/release-linux-x86_64/client/snd_openal.o build/release-linux-x86_64/client/cl_curl.o build/release-linux-x86_64/client/sv_bot.o build/release-linux-x86_64/client/sv_ccmds.o build/release-linux-x86_64/client/sv_client.o build/release-linux-x86_64/client/sv_game.o build/release-linux-x86_64/client/sv_init.o build/release-linux-x86_64/client/sv_main.o build/release-linux-x86_64/client/sv_net_chan.o build/release-linux-x86_64/client/sv_snapshot.o build/release-linux-x86_64/client/sv_world.o build/release-linux-x86_64/client/q_math.o build/release-linux-x86_64/client/q_shared.o build/release-linux-x86_64/client/unzip.o build/release-linux-x86_64/client/ioapi.o build/release-linux-x86_64/client/puff.o build/release-linux-x86_64/client/vm.o build/release-linux-x86_64/client/vm_interpreted.o build/release-linux-x86_64/client/be_aas_bspq3.o build/release-linux-x86_64/client/be_aas_cluster.o build/release-linux-x86_64/client/be_aas_debug.o build/release-linux-x86_64/client/be_aas_entity.o build/release-linux-x86_64/client/be_aas_file.o build/release-linux-x86_64/client/be_aas_main.o build/release-linux-x86_64/client/be_aas_move.o build/release-linux-x86_64/client/be_aas_optimize.o build/release-linux-x86_64/client/be_aas_reach.o build/release-linux-x86_64/client/be_aas_route.o build/release-linux-x86_64/client/be_aas_routealt.o build/release-linux-x86_64/client/be_aas_sample.o build/release-linux-x86_64/client/be_ai_char.o build/release-linux-x86_64/client/be_ai_chat.o build/release-linux-x86_64/client/be_ai_gen.o build/release-linux-x86_64/client/be_ai_goal.o build/release-linux-x86_64/client/be_ai_move.o build/release-linux-x86_64/client/be_ai_weap.o build/release-linux-x86_64/client/be_ai_weight.o build/release-linux-x86_64/client/be_ea.o build/release-linux-x86_64/client/be_interface.o build/release-linux-x86_64/client/l_crc.o build/release-linux-x86_64/client/l_libvar.o build/release-linux-x86_64/client/l_log.o build/release-linux-x86_64/client/l_memory.o build/release-linux-x86_64/client/l_precomp.o build/release-linux-x86_64/client/l_script.o build/release-linux-x86_64/client/l_struct.o build/release-linux-x86_64/client/sdl_input.o build/release-linux-x86_64/client/sdl_snd.o build/release-linux-x86_64/client/con_log.o build/release-linux-x86_64/client/sys_autoupdater.o build/release-linux-x86_64/client/sys_main.o build/release-linux-x86_64/client/con_tty.o build/release-linux-x86_64/client/snapvector.o build/release-linux-x86_64/client/ftola.o build/release-linux-x86_64/client/opus/analysis.o build/release-linux-x86_64/client/opus/mlp.o build/release-linux-x86_64/client/opus/mlp_data.o build/release-linux-x86_64/client/opus/opus.o build/release-linux-x86_64/client/opus/opus_decoder.o build/release-linux-x86_64/client/opus/opus_encoder.o build/release-linux-x86_64/client/opus/opus_multistream.o build/release-linux-x86_64/client/opus/opus_multistream_encoder.o build/release-linux-x86_64/client/opus/opus_multistream_decoder.o build/release-linux-x86_64/client/opus/repacketizer.o build/release-linux-x86_64/client/opus/bands.o build/release-linux-x86_64/client/opus/celt.o build/release-linux-x86_64/client/opus/cwrs.o build/release-linux-x86_64/client/opus/entcode.o build/release-linux-x86_64/client/opus/entdec.o build/release-linux-x86_64/client/opus/entenc.o build/release-linux-x86_64/client/opus/kiss_fft.o build/release-linux-x86_64/client/opus/laplace.o build/release-linux-x86_64/client/opus/mathops.o build/release-linux-x86_64/client/opus/mdct.o build/release-linux-x86_64/client/opus/modes.o build/release-linux-x86_64/client/opus/pitch.o build/release-linux-x86_64/client/opus/celt_encoder.o build/release-linux-x86_64/client/opus/celt_decoder.o build/release-linux-x86_64/client/opus/celt_lpc.o build/release-linux-x86_64/client/opus/quant_bands.o build/release-linux-x86_64/client/opus/rate.o build/release-linux-x86_64/client/opus/vq.o build/release-linux-x86_64/client/opus/CNG.o build/release-linux-x86_64/client/opus/code_signs.o build/release-linux-x86_64/client/opus/init_decoder.o build/release-linux-x86_64/client/opus/decode_core.o build/release-linux-x86_64/client/opus/decode_frame.o build/release-linux-x86_64/client/opus/decode_parameters.o build/release-linux-x86_64/client/opus/decode_indices.o build/release-linux-x86_64/client/opus/decode_pulses.o build/release-linux-x86_64/client/opus/decoder_set_fs.o build/release-linux-x86_64/client/opus/dec_API.o build/release-linux-x86_64/client/opus/enc_API.o build/release-linux-x86_64/client/opus/encode_indices.o build/release-linux-x86_64/client/opus/encode_pulses.o build/release-linux-x86_64/client/opus/gain_quant.o build/release-linux-x86_64/client/opus/interpolate.o build/release-linux-x86_64/client/opus/LP_variable_cutoff.o build/release-linux-x86_64/client/opus/NLSF_decode.o build/release-linux-x86_64/client/opus/NSQ.o build/release-linux-x86_64/client/opus/NSQ_del_dec.o build/release-linux-x86_64/client/opus/PLC.o build/release-linux-x86_64/client/opus/shell_coder.o build/release-linux-x86_64/client/opus/tables_gain.o build/release-linux-x86_64/client/opus/tables_LTP.o build/release-linux-x86_64/client/opus/tables_NLSF_CB_NB_MB.o build/release-linux-x86_64/client/opus/tables_NLSF_CB_WB.o build/release-linux-x86_64/client/opus/tables_other.o build/release-linux-x86_64/client/opus/tables_pitch_lag.o build/release-linux-x86_64/client/opus/tables_pulses_per_block.o build/release-linux-x86_64/client/opus/VAD.o build/release-linux-x86_64/client/opus/control_audio_bandwidth.o build/release-linux-x86_64/client/opus/quant_LTP_gains.o build/release-linux-x86_64/client/opus/VQ_WMat_EC.o build/release-linux-x86_64/client/opus/HP_variable_cutoff.o build/release-linux-x86_64/client/opus/NLSF_encode.o build/release-linux-x86_64/client/opus/NLSF_VQ.o build/release-linux-x86_64/client/opus/NLSF_unpack.o build/release-linux-x86_64/client/opus/NLSF_del_dec_quant.o build/release-linux-x86_64/client/opus/process_NLSFs.o build/release-linux-x86_64/client/opus/stereo_LR_to_MS.o build/release-linux-x86_64/client/opus/stereo_MS_to_LR.o build/release-linux-x86_64/client/opus/check_control_input.o build/release-linux-x86_64/client/opus/control_SNR.o build/release-linux-x86_64/client/opus/init_encoder.o build/release-linux-x86_64/client/opus/control_codec.o build/release-linux-x86_64/client/opus/A2NLSF.o build/release-linux-x86_64/client/opus/ana_filt_bank_1.o build/release-linux-x86_64/client/opus/biquad_alt.o build/release-linux-x86_64/client/opus/bwexpander_32.o build/release-linux-x86_64/client/opus/bwexpander.o build/release-linux-x86_64/client/opus/debug.o build/release-linux-x86_64/client/opus/decode_pitch.o build/release-linux-x86_64/client/opus/inner_prod_aligned.o build/release-linux-x86_64/client/opus/lin2log.o build/release-linux-x86_64/client/opus/log2lin.o build/release-linux-x86_64/client/opus/LPC_analysis_filter.o build/release-linux-x86_64/client/opus/LPC_inv_pred_gain.o build/release-linux-x86_64/client/opus/table_LSF_cos.o build/release-linux-x86_64/client/opus/NLSF2A.o build/release-linux-x86_64/client/opus/NLSF_stabilize.o build/release-linux-x86_64/client/opus/NLSF_VQ_weights_laroia.o build/release-linux-x86_64/client/opus/pitch_est_tables.o build/release-linux-x86_64/client/opus/resampler.o build/release-linux-x86_64/client/opus/resampler_down2_3.o build/release-linux-x86_64/client/opus/resampler_down2.o build/release-linux-x86_64/client/opus/resampler_private_AR2.o build/release-linux-x86_64/client/opus/resampler_private_down_FIR.o build/release-linux-x86_64/client/opus/resampler_private_IIR_FIR.o build/release-linux-x86_64/client/opus/resampler_private_up2_HQ.o build/release-linux-x86_64/client/opus/resampler_rom.o build/release-linux-x86_64/client/opus/sigm_Q15.o build/release-linux-x86_64/client/opus/sort.o build/release-linux-x86_64/client/opus/sum_sqr_shift.o build/release-linux-x86_64/client/opus/stereo_decode_pred.o build/release-linux-x86_64/client/opus/stereo_encode_pred.o build/release-linux-x86_64/client/opus/stereo_find_predictor.o build/release-linux-x86_64/client/opus/stereo_quant_pred.o build/release-linux-x86_64/client/opus/apply_sine_window_FLP.o build/release-linux-x86_64/client/opus/corrMatrix_FLP.o build/release-linux-x86_64/client/opus/encode_frame_FLP.o build/release-linux-x86_64/client/opus/find_LPC_FLP.o build/release-linux-x86_64/client/opus/find_LTP_FLP.o build/release-linux-x86_64/client/opus/find_pitch_lags_FLP.o build/release-linux-x86_64/client/opus/find_pred_coefs_FLP.o build/release-linux-x86_64/client/opus/LPC_analysis_filter_FLP.o build/release-linux-x86_64/client/opus/LTP_analysis_filter_FLP.o build/release-linux-x86_64/client/opus/LTP_scale_ctrl_FLP.o build/release-linux-x86_64/client/opus/noise_shape_analysis_FLP.o build/release-linux-x86_64/client/opus/prefilter_FLP.o build/release-linux-x86_64/client/opus/process_gains_FLP.o build/release-linux-x86_64/client/opus/regularize_correlations_FLP.o build/release-linux-x86_64/client/opus/residual_energy_FLP.o build/release-linux-x86_64/client/opus/solve_LS_FLP.o build/release-linux-x86_64/client/opus/warped_autocorrelation_FLP.o build/release-linux-x86_64/client/opus/wrappers_FLP.o build/release-linux-x86_64/client/opus/autocorrelation_FLP.o build/release-linux-x86_64/client/opus/burg_modified_FLP.o build/release-linux-x86_64/client/opus/bwexpander_FLP.o build/release-linux-x86_64/client/opus/energy_FLP.o build/release-linux-x86_64/client/opus/inner_product_FLP.o build/release-linux-x86_64/client/opus/k2a_FLP.o build/release-linux-x86_64/client/opus/levinsondurbin_FLP.o build/release-linux-x86_64/client/opus/LPC_inv_pred_gain_FLP.o build/release-linux-x86_64/client/opus/pitch_analysis_core_FLP.o build/release-linux-x86_64/client/opus/scale_copy_vector_FLP.o build/release-linux-x86_64/client/opus/scale_vector_FLP.o build/release-linux-x86_64/client/opus/schur_FLP.o build/release-linux-x86_64/client/opus/sort_FLP.o build/release-linux-x86_64/client/http.o build/release-linux-x86_64/client/info.o build/release-linux-x86_64/client/internal.o build/release-linux-x86_64/client/opusfile.o build/release-linux-x86_64/client/stream.o build/release-linux-x86_64/client/wincerts.o build/release-linux-x86_64/client/bitwise.o build/release-linux-x86_64/client/framing.o build/release-linux-x86_64/client/adler32.o build/release-linux-x86_64/client/crc32.o build/release-linux-x86_64/client/inffast.o build/release-linux-x86_64/client/inflate.o build/release-linux-x86_64/client/inftrees.o build/release-linux-x86_64/client/zutil.o build/release-linux-x86_64/client/vm_x86.o build/release-linux-x86_64/client/sys_unix.o build/release-linux-x86_64/client/libmumblelink.o \
	 -Wl,-rpath,/usr/lib64 -lSDL2 -lpthread -lrt   -ldl -lm 
build/release-linux-x86_64/client/snd_mix.o: In function `S_TransferPaintBuffer':
snd_mix.c:(.text+0x524): undefined reference to `_ZGVbN2v_sin'
snd_mix.c:(.text+0x545): undefined reference to `_ZGVbN2v_sin'
collect2: error: ld returned 1 exit status
make[2]: *** [build/release-linux-x86_64/ioquake3.x86_64] Error 1
make[2]: Leaving directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make: *** [release] Error 2

It seems to be a problem with the math library because I can read sin for sinus (the math function).
But I can clearly see that -lm is here in the compilation command line so I don’t know why there is a failure.
Any idea?
Thank you.
Best regards.

Try editing the Makefile’s Linux section to use LIBS=-ldl -lmvec -lm .

Additional information: https://sourceware.org/glibc/wiki/libmvec

1 Like

Here is the patch:

$ cat ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441-libmvec.patch 
diff -ruN ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441.ori/Makefile ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441/Makefile
--- ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441.ori/Makefile	2017-07-31 22:24:15.000000000 +0200
+++ ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441/Makefile	2017-08-02 07:59:27.644960884 +0200
@@ -377,7 +377,7 @@
   SHLIBLDFLAGS=-shared $(LDFLAGS)
 
   THREAD_LIBS=-lpthread
-  LIBS=-ldl -lm
+  LIBS=-ldl -lmvec -lm
   AUTOUPDATER_LIBS += -ldl
 
   CLIENT_LIBS=$(SDL_LIBS)

Here is the result:

$ make V=1
make[1]: Entering directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'

Building in build/release-linux-x86_64:
  PLATFORM: linux
  ARCH: x86_64
  VERSION: 1.36
  COMPILE_PLATFORM: linux
  COMPILE_ARCH: x86_64
  HAVE_VM_COMPILED: true
  CC: cc

  CFLAGS:
    -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DUSE_ICON -DARCH_STRING="x86_64" -DNO_GZIP -Icode/zlib -DUSE_INTERNAL_JPEG -Icode/jpeg-8c -DUSE_LOCAL_HEADERS
    -DPRODUCT_VERSION="1.36" -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization
    -Werror-implicit-function-declaration -MMD -DNDEBUG -O3 -ffast-math

  CLIENT_CFLAGS:
    -D_REENTRANT -I/usr/include/SDL2 -DUSE_OPENAL -DUSE_OPENAL_DLOPEN -DUSE_CURL -DUSE_CURL_DLOPEN -DUSE_VOIP -DUSE_CODEC_OPUS -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX
    -DUSE_ALLOCA -Icode/opus-1.1.4/include -Icode/opus-1.1.4/celt -Icode/opus-1.1.4/silk -Icode/opus-1.1.4/silk/float -Icode/opusfile-0.8/include -Icode/libogg-1.3.2/include
    -DUSE_RENDERER_DLOPEN -DUSE_MUMBLE

  SERVER_CFLAGS:
    -DUSE_VOIP

  LDFLAGS:
    

  LIBS:
    -ldl -lmvec -lm

  CLIENT_LIBS:
    -Wl,-rpath,/usr/lib64 -Wl,--enable-new-dtags -lSDL2 -lrt

  AUTOUPDATER_LIBS:
    -ldl

  Output:
    ioq3ded.x86_64
    ioquake3.x86_64
    renderer_opengl1_x86_64.so
    renderer_opengl2_x86_64.so
    baseq3/cgamex86_64.so
    baseq3/qagamex86_64.so
    baseq3/uix86_64.so
    missionpack/cgamex86_64.so
    missionpack/qagamex86_64.so
    missionpack/uix86_64.so
    baseq3/vm/cgame.qvm
    baseq3/vm/qagame.qvm
    baseq3/vm/ui.qvm
    missionpack/vm/cgame.qvm
    missionpack/vm/qagame.qvm
    missionpack/vm/ui.qvm

make[2]: Entering directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make[2]: `build/release-linux-x86_64/ioq3ded.x86_64' is up to date.
cc -D_REENTRANT -I/usr/include/SDL2  -DUSE_OPENAL -DUSE_OPENAL_DLOPEN -DUSE_CURL -DUSE_CURL_DLOPEN -DUSE_VOIP -DUSE_CODEC_OPUS -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA -Icode/opus-1.1.4/include -Icode/opus-1.1.4/celt -Icode/opus-1.1.4/silk -Icode/opus-1.1.4/silk/float -Icode/opusfile-0.8/include -Icode/libogg-1.3.2/include -DUSE_RENDERER_DLOPEN -DUSE_MUMBLE -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DUSE_ICON -DARCH_STRING=\"x86_64\" -DNO_GZIP -Icode/zlib -DUSE_INTERNAL_JPEG -Icode/jpeg-8c -DUSE_LOCAL_HEADERS -DPRODUCT_VERSION=\"1.36\" -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization -Werror-implicit-function-declaration -MMD    \
	-o build/release-linux-x86_64/ioquake3.x86_64 build/release-linux-x86_64/client/cl_cgame.o build/release-linux-x86_64/client/cl_cin.o build/release-linux-x86_64/client/cl_console.o build/release-linux-x86_64/client/cl_input.o build/release-linux-x86_64/client/cl_keys.o build/release-linux-x86_64/client/cl_main.o build/release-linux-x86_64/client/cl_net_chan.o build/release-linux-x86_64/client/cl_parse.o build/release-linux-x86_64/client/cl_scrn.o build/release-linux-x86_64/client/cl_ui.o build/release-linux-x86_64/client/cl_avi.o build/release-linux-x86_64/client/cm_load.o build/release-linux-x86_64/client/cm_patch.o build/release-linux-x86_64/client/cm_polylib.o build/release-linux-x86_64/client/cm_test.o build/release-linux-x86_64/client/cm_trace.o build/release-linux-x86_64/client/cmd.o build/release-linux-x86_64/client/common.o build/release-linux-x86_64/client/cvar.o build/release-linux-x86_64/client/files.o build/release-linux-x86_64/client/md4.o build/release-linux-x86_64/client/md5.o build/release-linux-x86_64/client/msg.o build/release-linux-x86_64/client/net_chan.o build/release-linux-x86_64/client/net_ip.o build/release-linux-x86_64/client/huffman.o build/release-linux-x86_64/client/snd_adpcm.o build/release-linux-x86_64/client/snd_dma.o build/release-linux-x86_64/client/snd_mem.o build/release-linux-x86_64/client/snd_mix.o build/release-linux-x86_64/client/snd_wavelet.o build/release-linux-x86_64/client/snd_main.o build/release-linux-x86_64/client/snd_codec.o build/release-linux-x86_64/client/snd_codec_wav.o build/release-linux-x86_64/client/snd_codec_ogg.o build/release-linux-x86_64/client/snd_codec_opus.o build/release-linux-x86_64/client/qal.o build/release-linux-x86_64/client/snd_openal.o build/release-linux-x86_64/client/cl_curl.o build/release-linux-x86_64/client/sv_bot.o build/release-linux-x86_64/client/sv_ccmds.o build/release-linux-x86_64/client/sv_client.o build/release-linux-x86_64/client/sv_game.o build/release-linux-x86_64/client/sv_init.o build/release-linux-x86_64/client/sv_main.o build/release-linux-x86_64/client/sv_net_chan.o build/release-linux-x86_64/client/sv_snapshot.o build/release-linux-x86_64/client/sv_world.o build/release-linux-x86_64/client/q_math.o build/release-linux-x86_64/client/q_shared.o build/release-linux-x86_64/client/unzip.o build/release-linux-x86_64/client/ioapi.o build/release-linux-x86_64/client/puff.o build/release-linux-x86_64/client/vm.o build/release-linux-x86_64/client/vm_interpreted.o build/release-linux-x86_64/client/be_aas_bspq3.o build/release-linux-x86_64/client/be_aas_cluster.o build/release-linux-x86_64/client/be_aas_debug.o build/release-linux-x86_64/client/be_aas_entity.o build/release-linux-x86_64/client/be_aas_file.o build/release-linux-x86_64/client/be_aas_main.o build/release-linux-x86_64/client/be_aas_move.o build/release-linux-x86_64/client/be_aas_optimize.o build/release-linux-x86_64/client/be_aas_reach.o build/release-linux-x86_64/client/be_aas_route.o build/release-linux-x86_64/client/be_aas_routealt.o build/release-linux-x86_64/client/be_aas_sample.o build/release-linux-x86_64/client/be_ai_char.o build/release-linux-x86_64/client/be_ai_chat.o build/release-linux-x86_64/client/be_ai_gen.o build/release-linux-x86_64/client/be_ai_goal.o build/release-linux-x86_64/client/be_ai_move.o build/release-linux-x86_64/client/be_ai_weap.o build/release-linux-x86_64/client/be_ai_weight.o build/release-linux-x86_64/client/be_ea.o build/release-linux-x86_64/client/be_interface.o build/release-linux-x86_64/client/l_crc.o build/release-linux-x86_64/client/l_libvar.o build/release-linux-x86_64/client/l_log.o build/release-linux-x86_64/client/l_memory.o build/release-linux-x86_64/client/l_precomp.o build/release-linux-x86_64/client/l_script.o build/release-linux-x86_64/client/l_struct.o build/release-linux-x86_64/client/sdl_input.o build/release-linux-x86_64/client/sdl_snd.o build/release-linux-x86_64/client/con_log.o build/release-linux-x86_64/client/sys_autoupdater.o build/release-linux-x86_64/client/sys_main.o build/release-linux-x86_64/client/con_tty.o build/release-linux-x86_64/client/snapvector.o build/release-linux-x86_64/client/ftola.o build/release-linux-x86_64/client/opus/analysis.o build/release-linux-x86_64/client/opus/mlp.o build/release-linux-x86_64/client/opus/mlp_data.o build/release-linux-x86_64/client/opus/opus.o build/release-linux-x86_64/client/opus/opus_decoder.o build/release-linux-x86_64/client/opus/opus_encoder.o build/release-linux-x86_64/client/opus/opus_multistream.o build/release-linux-x86_64/client/opus/opus_multistream_encoder.o build/release-linux-x86_64/client/opus/opus_multistream_decoder.o build/release-linux-x86_64/client/opus/repacketizer.o build/release-linux-x86_64/client/opus/bands.o build/release-linux-x86_64/client/opus/celt.o build/release-linux-x86_64/client/opus/cwrs.o build/release-linux-x86_64/client/opus/entcode.o build/release-linux-x86_64/client/opus/entdec.o build/release-linux-x86_64/client/opus/entenc.o build/release-linux-x86_64/client/opus/kiss_fft.o build/release-linux-x86_64/client/opus/laplace.o build/release-linux-x86_64/client/opus/mathops.o build/release-linux-x86_64/client/opus/mdct.o build/release-linux-x86_64/client/opus/modes.o build/release-linux-x86_64/client/opus/pitch.o build/release-linux-x86_64/client/opus/celt_encoder.o build/release-linux-x86_64/client/opus/celt_decoder.o build/release-linux-x86_64/client/opus/celt_lpc.o build/release-linux-x86_64/client/opus/quant_bands.o build/release-linux-x86_64/client/opus/rate.o build/release-linux-x86_64/client/opus/vq.o build/release-linux-x86_64/client/opus/CNG.o build/release-linux-x86_64/client/opus/code_signs.o build/release-linux-x86_64/client/opus/init_decoder.o build/release-linux-x86_64/client/opus/decode_core.o build/release-linux-x86_64/client/opus/decode_frame.o build/release-linux-x86_64/client/opus/decode_parameters.o build/release-linux-x86_64/client/opus/decode_indices.o build/release-linux-x86_64/client/opus/decode_pulses.o build/release-linux-x86_64/client/opus/decoder_set_fs.o build/release-linux-x86_64/client/opus/dec_API.o build/release-linux-x86_64/client/opus/enc_API.o build/release-linux-x86_64/client/opus/encode_indices.o build/release-linux-x86_64/client/opus/encode_pulses.o build/release-linux-x86_64/client/opus/gain_quant.o build/release-linux-x86_64/client/opus/interpolate.o build/release-linux-x86_64/client/opus/LP_variable_cutoff.o build/release-linux-x86_64/client/opus/NLSF_decode.o build/release-linux-x86_64/client/opus/NSQ.o build/release-linux-x86_64/client/opus/NSQ_del_dec.o build/release-linux-x86_64/client/opus/PLC.o build/release-linux-x86_64/client/opus/shell_coder.o build/release-linux-x86_64/client/opus/tables_gain.o build/release-linux-x86_64/client/opus/tables_LTP.o build/release-linux-x86_64/client/opus/tables_NLSF_CB_NB_MB.o build/release-linux-x86_64/client/opus/tables_NLSF_CB_WB.o build/release-linux-x86_64/client/opus/tables_other.o build/release-linux-x86_64/client/opus/tables_pitch_lag.o build/release-linux-x86_64/client/opus/tables_pulses_per_block.o build/release-linux-x86_64/client/opus/VAD.o build/release-linux-x86_64/client/opus/control_audio_bandwidth.o build/release-linux-x86_64/client/opus/quant_LTP_gains.o build/release-linux-x86_64/client/opus/VQ_WMat_EC.o build/release-linux-x86_64/client/opus/HP_variable_cutoff.o build/release-linux-x86_64/client/opus/NLSF_encode.o build/release-linux-x86_64/client/opus/NLSF_VQ.o build/release-linux-x86_64/client/opus/NLSF_unpack.o build/release-linux-x86_64/client/opus/NLSF_del_dec_quant.o build/release-linux-x86_64/client/opus/process_NLSFs.o build/release-linux-x86_64/client/opus/stereo_LR_to_MS.o build/release-linux-x86_64/client/opus/stereo_MS_to_LR.o build/release-linux-x86_64/client/opus/check_control_input.o build/release-linux-x86_64/client/opus/control_SNR.o build/release-linux-x86_64/client/opus/init_encoder.o build/release-linux-x86_64/client/opus/control_codec.o build/release-linux-x86_64/client/opus/A2NLSF.o build/release-linux-x86_64/client/opus/ana_filt_bank_1.o build/release-linux-x86_64/client/opus/biquad_alt.o build/release-linux-x86_64/client/opus/bwexpander_32.o build/release-linux-x86_64/client/opus/bwexpander.o build/release-linux-x86_64/client/opus/debug.o build/release-linux-x86_64/client/opus/decode_pitch.o build/release-linux-x86_64/client/opus/inner_prod_aligned.o build/release-linux-x86_64/client/opus/lin2log.o build/release-linux-x86_64/client/opus/log2lin.o build/release-linux-x86_64/client/opus/LPC_analysis_filter.o build/release-linux-x86_64/client/opus/LPC_inv_pred_gain.o build/release-linux-x86_64/client/opus/table_LSF_cos.o build/release-linux-x86_64/client/opus/NLSF2A.o build/release-linux-x86_64/client/opus/NLSF_stabilize.o build/release-linux-x86_64/client/opus/NLSF_VQ_weights_laroia.o build/release-linux-x86_64/client/opus/pitch_est_tables.o build/release-linux-x86_64/client/opus/resampler.o build/release-linux-x86_64/client/opus/resampler_down2_3.o build/release-linux-x86_64/client/opus/resampler_down2.o build/release-linux-x86_64/client/opus/resampler_private_AR2.o build/release-linux-x86_64/client/opus/resampler_private_down_FIR.o build/release-linux-x86_64/client/opus/resampler_private_IIR_FIR.o build/release-linux-x86_64/client/opus/resampler_private_up2_HQ.o build/release-linux-x86_64/client/opus/resampler_rom.o build/release-linux-x86_64/client/opus/sigm_Q15.o build/release-linux-x86_64/client/opus/sort.o build/release-linux-x86_64/client/opus/sum_sqr_shift.o build/release-linux-x86_64/client/opus/stereo_decode_pred.o build/release-linux-x86_64/client/opus/stereo_encode_pred.o build/release-linux-x86_64/client/opus/stereo_find_predictor.o build/release-linux-x86_64/client/opus/stereo_quant_pred.o build/release-linux-x86_64/client/opus/apply_sine_window_FLP.o build/release-linux-x86_64/client/opus/corrMatrix_FLP.o build/release-linux-x86_64/client/opus/encode_frame_FLP.o build/release-linux-x86_64/client/opus/find_LPC_FLP.o build/release-linux-x86_64/client/opus/find_LTP_FLP.o build/release-linux-x86_64/client/opus/find_pitch_lags_FLP.o build/release-linux-x86_64/client/opus/find_pred_coefs_FLP.o build/release-linux-x86_64/client/opus/LPC_analysis_filter_FLP.o build/release-linux-x86_64/client/opus/LTP_analysis_filter_FLP.o build/release-linux-x86_64/client/opus/LTP_scale_ctrl_FLP.o build/release-linux-x86_64/client/opus/noise_shape_analysis_FLP.o build/release-linux-x86_64/client/opus/prefilter_FLP.o build/release-linux-x86_64/client/opus/process_gains_FLP.o build/release-linux-x86_64/client/opus/regularize_correlations_FLP.o build/release-linux-x86_64/client/opus/residual_energy_FLP.o build/release-linux-x86_64/client/opus/solve_LS_FLP.o build/release-linux-x86_64/client/opus/warped_autocorrelation_FLP.o build/release-linux-x86_64/client/opus/wrappers_FLP.o build/release-linux-x86_64/client/opus/autocorrelation_FLP.o build/release-linux-x86_64/client/opus/burg_modified_FLP.o build/release-linux-x86_64/client/opus/bwexpander_FLP.o build/release-linux-x86_64/client/opus/energy_FLP.o build/release-linux-x86_64/client/opus/inner_product_FLP.o build/release-linux-x86_64/client/opus/k2a_FLP.o build/release-linux-x86_64/client/opus/levinsondurbin_FLP.o build/release-linux-x86_64/client/opus/LPC_inv_pred_gain_FLP.o build/release-linux-x86_64/client/opus/pitch_analysis_core_FLP.o build/release-linux-x86_64/client/opus/scale_copy_vector_FLP.o build/release-linux-x86_64/client/opus/scale_vector_FLP.o build/release-linux-x86_64/client/opus/schur_FLP.o build/release-linux-x86_64/client/opus/sort_FLP.o build/release-linux-x86_64/client/http.o build/release-linux-x86_64/client/info.o build/release-linux-x86_64/client/internal.o build/release-linux-x86_64/client/opusfile.o build/release-linux-x86_64/client/stream.o build/release-linux-x86_64/client/wincerts.o build/release-linux-x86_64/client/bitwise.o build/release-linux-x86_64/client/framing.o build/release-linux-x86_64/client/adler32.o build/release-linux-x86_64/client/crc32.o build/release-linux-x86_64/client/inffast.o build/release-linux-x86_64/client/inflate.o build/release-linux-x86_64/client/inftrees.o build/release-linux-x86_64/client/zutil.o build/release-linux-x86_64/client/vm_x86.o build/release-linux-x86_64/client/sys_unix.o build/release-linux-x86_64/client/libmumblelink.o \
	 -Wl,-rpath,/usr/lib64 -Wl,--enable-new-dtags -lSDL2 -lrt   -ldl -lmvec -lm 
/usr/lib64/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64/libmvec.a(svml_d_sin2_core.o): In function `_ZGVbN2v_sin':
(.text+0x9): undefined reference to `_dl_x86_cpu_features'
collect2: error: ld returned 1 exit status
make[2]: *** [build/release-linux-x86_64/ioquake3.x86_64] Error 1
make[2]: Leaving directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make: *** [release] Error 2

So, it does not work.

For what it’s worth…I had no trouble building on stock Slackware 14.2.

References to _ZGVbN2v_sin were fixed by manually linking to libmvec. According to glibc documentation (linked to in previous my post), manual linking of libmvec should not be required. The missing _dl_x86_cpu_features is part of glibc. Maybe you need to manually link to glibc too? LIBS=-ldl -lmvec -lm -lc

Here is the patch:

$ cat ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441-libc.patch 
diff -ruN ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441.ori/Makefile ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441/Makefile
--- ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441.ori/Makefile	2017-07-31 22:24:15.000000000 +0200
+++ ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441/Makefile	2017-08-03 19:31:35.625269982 +0200
@@ -377,7 +377,7 @@
   SHLIBLDFLAGS=-shared $(LDFLAGS)
 
   THREAD_LIBS=-lpthread
-  LIBS=-ldl -lm
+  LIBS=-ldl -lmvec -lm -lc
   AUTOUPDATER_LIBS += -ldl
 
   CLIENT_LIBS=$(SDL_LIBS)

Here is the result:

$ make V=1
make[1]: Entering directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'

Building in build/release-linux-x86_64:
  PLATFORM: linux
  ARCH: x86_64
  VERSION: 1.36
  COMPILE_PLATFORM: linux
  COMPILE_ARCH: x86_64
  HAVE_VM_COMPILED: true
  CC: cc

  CFLAGS:
    -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DUSE_ICON -DARCH_STRING="x86_64" -DNO_GZIP -Icode/zlib -DUSE_INTERNAL_JPEG -Icode/jpeg-8c -DUSE_LOCAL_HEADERS
    -DPRODUCT_VERSION="1.36" -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization
    -Werror-implicit-function-declaration -MMD -DNDEBUG -O3 -ffast-math

  CLIENT_CFLAGS:
    -D_REENTRANT -I/usr/include/SDL2 -DUSE_OPENAL -DUSE_OPENAL_DLOPEN -DUSE_CURL -DUSE_CURL_DLOPEN -DUSE_VOIP -DUSE_CODEC_OPUS -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX
    -DUSE_ALLOCA -Icode/opus-1.1.4/include -Icode/opus-1.1.4/celt -Icode/opus-1.1.4/silk -Icode/opus-1.1.4/silk/float -Icode/opusfile-0.8/include -Icode/libogg-1.3.2/include
    -DUSE_RENDERER_DLOPEN -DUSE_MUMBLE

  SERVER_CFLAGS:
    -DUSE_VOIP

  LDFLAGS:
    

  LIBS:
    -ldl -lmvec -lm -lc

  CLIENT_LIBS:
    -Wl,-rpath,/usr/lib64 -Wl,--enable-new-dtags -lSDL2 -lrt

  AUTOUPDATER_LIBS:
    -ldl

  Output:
    ioq3ded.x86_64
    ioquake3.x86_64
    renderer_opengl1_x86_64.so
    renderer_opengl2_x86_64.so
    baseq3/cgamex86_64.so
    baseq3/qagamex86_64.so
    baseq3/uix86_64.so
    missionpack/cgamex86_64.so
    missionpack/qagamex86_64.so
    missionpack/uix86_64.so
    baseq3/vm/cgame.qvm
    baseq3/vm/qagame.qvm
    baseq3/vm/ui.qvm
    missionpack/vm/cgame.qvm
    missionpack/vm/qagame.qvm
    missionpack/vm/ui.qvm

make[2]: Entering directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make[2]: `build/release-linux-x86_64/ioq3ded.x86_64' is up to date.
cc -D_REENTRANT -I/usr/include/SDL2  -DUSE_OPENAL -DUSE_OPENAL_DLOPEN -DUSE_CURL -DUSE_CURL_DLOPEN -DUSE_VOIP -DUSE_CODEC_OPUS -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA -Icode/opus-1.1.4/include -Icode/opus-1.1.4/celt -Icode/opus-1.1.4/silk -Icode/opus-1.1.4/silk/float -Icode/opusfile-0.8/include -Icode/libogg-1.3.2/include -DUSE_RENDERER_DLOPEN -DUSE_MUMBLE -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DUSE_ICON -DARCH_STRING=\"x86_64\" -DNO_GZIP -Icode/zlib -DUSE_INTERNAL_JPEG -Icode/jpeg-8c -DUSE_LOCAL_HEADERS -DPRODUCT_VERSION=\"1.36\" -Wformat=2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization -Werror-implicit-function-declaration -MMD    \
	-o build/release-linux-x86_64/ioquake3.x86_64 build/release-linux-x86_64/client/cl_cgame.o build/release-linux-x86_64/client/cl_cin.o build/release-linux-x86_64/client/cl_console.o build/release-linux-x86_64/client/cl_input.o build/release-linux-x86_64/client/cl_keys.o build/release-linux-x86_64/client/cl_main.o build/release-linux-x86_64/client/cl_net_chan.o build/release-linux-x86_64/client/cl_parse.o build/release-linux-x86_64/client/cl_scrn.o build/release-linux-x86_64/client/cl_ui.o build/release-linux-x86_64/client/cl_avi.o build/release-linux-x86_64/client/cm_load.o build/release-linux-x86_64/client/cm_patch.o build/release-linux-x86_64/client/cm_polylib.o build/release-linux-x86_64/client/cm_test.o build/release-linux-x86_64/client/cm_trace.o build/release-linux-x86_64/client/cmd.o build/release-linux-x86_64/client/common.o build/release-linux-x86_64/client/cvar.o build/release-linux-x86_64/client/files.o build/release-linux-x86_64/client/md4.o build/release-linux-x86_64/client/md5.o build/release-linux-x86_64/client/msg.o build/release-linux-x86_64/client/net_chan.o build/release-linux-x86_64/client/net_ip.o build/release-linux-x86_64/client/huffman.o build/release-linux-x86_64/client/snd_adpcm.o build/release-linux-x86_64/client/snd_dma.o build/release-linux-x86_64/client/snd_mem.o build/release-linux-x86_64/client/snd_mix.o build/release-linux-x86_64/client/snd_wavelet.o build/release-linux-x86_64/client/snd_main.o build/release-linux-x86_64/client/snd_codec.o build/release-linux-x86_64/client/snd_codec_wav.o build/release-linux-x86_64/client/snd_codec_ogg.o build/release-linux-x86_64/client/snd_codec_opus.o build/release-linux-x86_64/client/qal.o build/release-linux-x86_64/client/snd_openal.o build/release-linux-x86_64/client/cl_curl.o build/release-linux-x86_64/client/sv_bot.o build/release-linux-x86_64/client/sv_ccmds.o build/release-linux-x86_64/client/sv_client.o build/release-linux-x86_64/client/sv_game.o build/release-linux-x86_64/client/sv_init.o build/release-linux-x86_64/client/sv_main.o build/release-linux-x86_64/client/sv_net_chan.o build/release-linux-x86_64/client/sv_snapshot.o build/release-linux-x86_64/client/sv_world.o build/release-linux-x86_64/client/q_math.o build/release-linux-x86_64/client/q_shared.o build/release-linux-x86_64/client/unzip.o build/release-linux-x86_64/client/ioapi.o build/release-linux-x86_64/client/puff.o build/release-linux-x86_64/client/vm.o build/release-linux-x86_64/client/vm_interpreted.o build/release-linux-x86_64/client/be_aas_bspq3.o build/release-linux-x86_64/client/be_aas_cluster.o build/release-linux-x86_64/client/be_aas_debug.o build/release-linux-x86_64/client/be_aas_entity.o build/release-linux-x86_64/client/be_aas_file.o build/release-linux-x86_64/client/be_aas_main.o build/release-linux-x86_64/client/be_aas_move.o build/release-linux-x86_64/client/be_aas_optimize.o build/release-linux-x86_64/client/be_aas_reach.o build/release-linux-x86_64/client/be_aas_route.o build/release-linux-x86_64/client/be_aas_routealt.o build/release-linux-x86_64/client/be_aas_sample.o build/release-linux-x86_64/client/be_ai_char.o build/release-linux-x86_64/client/be_ai_chat.o build/release-linux-x86_64/client/be_ai_gen.o build/release-linux-x86_64/client/be_ai_goal.o build/release-linux-x86_64/client/be_ai_move.o build/release-linux-x86_64/client/be_ai_weap.o build/release-linux-x86_64/client/be_ai_weight.o build/release-linux-x86_64/client/be_ea.o build/release-linux-x86_64/client/be_interface.o build/release-linux-x86_64/client/l_crc.o build/release-linux-x86_64/client/l_libvar.o build/release-linux-x86_64/client/l_log.o build/release-linux-x86_64/client/l_memory.o build/release-linux-x86_64/client/l_precomp.o build/release-linux-x86_64/client/l_script.o build/release-linux-x86_64/client/l_struct.o build/release-linux-x86_64/client/sdl_input.o build/release-linux-x86_64/client/sdl_snd.o build/release-linux-x86_64/client/con_log.o build/release-linux-x86_64/client/sys_autoupdater.o build/release-linux-x86_64/client/sys_main.o build/release-linux-x86_64/client/con_tty.o build/release-linux-x86_64/client/snapvector.o build/release-linux-x86_64/client/ftola.o build/release-linux-x86_64/client/opus/analysis.o build/release-linux-x86_64/client/opus/mlp.o build/release-linux-x86_64/client/opus/mlp_data.o build/release-linux-x86_64/client/opus/opus.o build/release-linux-x86_64/client/opus/opus_decoder.o build/release-linux-x86_64/client/opus/opus_encoder.o build/release-linux-x86_64/client/opus/opus_multistream.o build/release-linux-x86_64/client/opus/opus_multistream_encoder.o build/release-linux-x86_64/client/opus/opus_multistream_decoder.o build/release-linux-x86_64/client/opus/repacketizer.o build/release-linux-x86_64/client/opus/bands.o build/release-linux-x86_64/client/opus/celt.o build/release-linux-x86_64/client/opus/cwrs.o build/release-linux-x86_64/client/opus/entcode.o build/release-linux-x86_64/client/opus/entdec.o build/release-linux-x86_64/client/opus/entenc.o build/release-linux-x86_64/client/opus/kiss_fft.o build/release-linux-x86_64/client/opus/laplace.o build/release-linux-x86_64/client/opus/mathops.o build/release-linux-x86_64/client/opus/mdct.o build/release-linux-x86_64/client/opus/modes.o build/release-linux-x86_64/client/opus/pitch.o build/release-linux-x86_64/client/opus/celt_encoder.o build/release-linux-x86_64/client/opus/celt_decoder.o build/release-linux-x86_64/client/opus/celt_lpc.o build/release-linux-x86_64/client/opus/quant_bands.o build/release-linux-x86_64/client/opus/rate.o build/release-linux-x86_64/client/opus/vq.o build/release-linux-x86_64/client/opus/CNG.o build/release-linux-x86_64/client/opus/code_signs.o build/release-linux-x86_64/client/opus/init_decoder.o build/release-linux-x86_64/client/opus/decode_core.o build/release-linux-x86_64/client/opus/decode_frame.o build/release-linux-x86_64/client/opus/decode_parameters.o build/release-linux-x86_64/client/opus/decode_indices.o build/release-linux-x86_64/client/opus/decode_pulses.o build/release-linux-x86_64/client/opus/decoder_set_fs.o build/release-linux-x86_64/client/opus/dec_API.o build/release-linux-x86_64/client/opus/enc_API.o build/release-linux-x86_64/client/opus/encode_indices.o build/release-linux-x86_64/client/opus/encode_pulses.o build/release-linux-x86_64/client/opus/gain_quant.o build/release-linux-x86_64/client/opus/interpolate.o build/release-linux-x86_64/client/opus/LP_variable_cutoff.o build/release-linux-x86_64/client/opus/NLSF_decode.o build/release-linux-x86_64/client/opus/NSQ.o build/release-linux-x86_64/client/opus/NSQ_del_dec.o build/release-linux-x86_64/client/opus/PLC.o build/release-linux-x86_64/client/opus/shell_coder.o build/release-linux-x86_64/client/opus/tables_gain.o build/release-linux-x86_64/client/opus/tables_LTP.o build/release-linux-x86_64/client/opus/tables_NLSF_CB_NB_MB.o build/release-linux-x86_64/client/opus/tables_NLSF_CB_WB.o build/release-linux-x86_64/client/opus/tables_other.o build/release-linux-x86_64/client/opus/tables_pitch_lag.o build/release-linux-x86_64/client/opus/tables_pulses_per_block.o build/release-linux-x86_64/client/opus/VAD.o build/release-linux-x86_64/client/opus/control_audio_bandwidth.o build/release-linux-x86_64/client/opus/quant_LTP_gains.o build/release-linux-x86_64/client/opus/VQ_WMat_EC.o build/release-linux-x86_64/client/opus/HP_variable_cutoff.o build/release-linux-x86_64/client/opus/NLSF_encode.o build/release-linux-x86_64/client/opus/NLSF_VQ.o build/release-linux-x86_64/client/opus/NLSF_unpack.o build/release-linux-x86_64/client/opus/NLSF_del_dec_quant.o build/release-linux-x86_64/client/opus/process_NLSFs.o build/release-linux-x86_64/client/opus/stereo_LR_to_MS.o build/release-linux-x86_64/client/opus/stereo_MS_to_LR.o build/release-linux-x86_64/client/opus/check_control_input.o build/release-linux-x86_64/client/opus/control_SNR.o build/release-linux-x86_64/client/opus/init_encoder.o build/release-linux-x86_64/client/opus/control_codec.o build/release-linux-x86_64/client/opus/A2NLSF.o build/release-linux-x86_64/client/opus/ana_filt_bank_1.o build/release-linux-x86_64/client/opus/biquad_alt.o build/release-linux-x86_64/client/opus/bwexpander_32.o build/release-linux-x86_64/client/opus/bwexpander.o build/release-linux-x86_64/client/opus/debug.o build/release-linux-x86_64/client/opus/decode_pitch.o build/release-linux-x86_64/client/opus/inner_prod_aligned.o build/release-linux-x86_64/client/opus/lin2log.o build/release-linux-x86_64/client/opus/log2lin.o build/release-linux-x86_64/client/opus/LPC_analysis_filter.o build/release-linux-x86_64/client/opus/LPC_inv_pred_gain.o build/release-linux-x86_64/client/opus/table_LSF_cos.o build/release-linux-x86_64/client/opus/NLSF2A.o build/release-linux-x86_64/client/opus/NLSF_stabilize.o build/release-linux-x86_64/client/opus/NLSF_VQ_weights_laroia.o build/release-linux-x86_64/client/opus/pitch_est_tables.o build/release-linux-x86_64/client/opus/resampler.o build/release-linux-x86_64/client/opus/resampler_down2_3.o build/release-linux-x86_64/client/opus/resampler_down2.o build/release-linux-x86_64/client/opus/resampler_private_AR2.o build/release-linux-x86_64/client/opus/resampler_private_down_FIR.o build/release-linux-x86_64/client/opus/resampler_private_IIR_FIR.o build/release-linux-x86_64/client/opus/resampler_private_up2_HQ.o build/release-linux-x86_64/client/opus/resampler_rom.o build/release-linux-x86_64/client/opus/sigm_Q15.o build/release-linux-x86_64/client/opus/sort.o build/release-linux-x86_64/client/opus/sum_sqr_shift.o build/release-linux-x86_64/client/opus/stereo_decode_pred.o build/release-linux-x86_64/client/opus/stereo_encode_pred.o build/release-linux-x86_64/client/opus/stereo_find_predictor.o build/release-linux-x86_64/client/opus/stereo_quant_pred.o build/release-linux-x86_64/client/opus/apply_sine_window_FLP.o build/release-linux-x86_64/client/opus/corrMatrix_FLP.o build/release-linux-x86_64/client/opus/encode_frame_FLP.o build/release-linux-x86_64/client/opus/find_LPC_FLP.o build/release-linux-x86_64/client/opus/find_LTP_FLP.o build/release-linux-x86_64/client/opus/find_pitch_lags_FLP.o build/release-linux-x86_64/client/opus/find_pred_coefs_FLP.o build/release-linux-x86_64/client/opus/LPC_analysis_filter_FLP.o build/release-linux-x86_64/client/opus/LTP_analysis_filter_FLP.o build/release-linux-x86_64/client/opus/LTP_scale_ctrl_FLP.o build/release-linux-x86_64/client/opus/noise_shape_analysis_FLP.o build/release-linux-x86_64/client/opus/prefilter_FLP.o build/release-linux-x86_64/client/opus/process_gains_FLP.o build/release-linux-x86_64/client/opus/regularize_correlations_FLP.o build/release-linux-x86_64/client/opus/residual_energy_FLP.o build/release-linux-x86_64/client/opus/solve_LS_FLP.o build/release-linux-x86_64/client/opus/warped_autocorrelation_FLP.o build/release-linux-x86_64/client/opus/wrappers_FLP.o build/release-linux-x86_64/client/opus/autocorrelation_FLP.o build/release-linux-x86_64/client/opus/burg_modified_FLP.o build/release-linux-x86_64/client/opus/bwexpander_FLP.o build/release-linux-x86_64/client/opus/energy_FLP.o build/release-linux-x86_64/client/opus/inner_product_FLP.o build/release-linux-x86_64/client/opus/k2a_FLP.o build/release-linux-x86_64/client/opus/levinsondurbin_FLP.o build/release-linux-x86_64/client/opus/LPC_inv_pred_gain_FLP.o build/release-linux-x86_64/client/opus/pitch_analysis_core_FLP.o build/release-linux-x86_64/client/opus/scale_copy_vector_FLP.o build/release-linux-x86_64/client/opus/scale_vector_FLP.o build/release-linux-x86_64/client/opus/schur_FLP.o build/release-linux-x86_64/client/opus/sort_FLP.o build/release-linux-x86_64/client/http.o build/release-linux-x86_64/client/info.o build/release-linux-x86_64/client/internal.o build/release-linux-x86_64/client/opusfile.o build/release-linux-x86_64/client/stream.o build/release-linux-x86_64/client/wincerts.o build/release-linux-x86_64/client/bitwise.o build/release-linux-x86_64/client/framing.o build/release-linux-x86_64/client/adler32.o build/release-linux-x86_64/client/crc32.o build/release-linux-x86_64/client/inffast.o build/release-linux-x86_64/client/inflate.o build/release-linux-x86_64/client/inftrees.o build/release-linux-x86_64/client/zutil.o build/release-linux-x86_64/client/vm_x86.o build/release-linux-x86_64/client/sys_unix.o build/release-linux-x86_64/client/libmumblelink.o \
	 -Wl,-rpath,/usr/lib64 -Wl,--enable-new-dtags -lSDL2 -lrt   -ldl -lmvec -lm -lc 
/usr/lib64/gcc/x86_64-pc-linux-gnu/7.1.0/../../../../lib64/libmvec.a(svml_d_sin2_core.o): In function `_ZGVbN2v_sin':
(.text+0x9): undefined reference to `_dl_x86_cpu_features'
collect2: error: ld returned 1 exit status
make[2]: *** [build/release-linux-x86_64/ioquake3.x86_64] Error 1
make[2]: Leaving directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make[1]: *** [targets] Error 2
make[1]: Leaving directory `/tmp/build/ioq3/ioq3-c05fbe554e89a12ee51f8716c81d9e718dede441'
make: *** [release] Error 2

So, it does not work.

Okay, I don’t have any other ideas.

It seems that I am not the only one impacted by this bug: https://www.mail-archive.com/debian-bsd@lists.debian.org/msg18245.html

I wrote and built a little example using libmvec.
Here is the code:

$ cat main.c 
#include <math.h>

int N = 3200;
double b[3200];
double a[3200];

int main (void)
{
  int i;

  for (i = 0; i < N; i += 1)
  {
    b[i] = sin (a[i]);
  }

  return (0);
}

First, I try to build without options:

$ gcc main.c 
/tmp/cct4smhX.o: In function `main':
main.c:(.text+0x28): undefined reference to `sin'
collect2: error: ld returned 1 exit status

It’s a failure as expected.
Then I try to build with -lm:

$ gcc main.c -lm

It works as expected.
But now let’s try with more options like:

$ gcc main.c -O1 -ftree-loop-vectorize -ffast-math -lm -mavx
/tmp/ccvN8MMR.o: In function `main':
main.c:(.text+0xb3): undefined reference to `_ZGVcN4v_sin'
collect2: error: ld returned 1 exit status

Here, it’s interesting: I am able to reproduce the problem on this little source code example.
And the best thing is when I try to add -lmvec like you suggested:

$ gcc main.c -O1 -ftree-loop-vectorize -ffast-math -lmvec -lm -mavx

And it works! So, adding the -lmvec seems to be the thing to do.

OK, so as it works here, it should work with ioq3 too.
So, I did an other try with the same patch and the result is good:

$ make V=1

No more errors :slight_smile:
Well, I think that when I tried the first time, I did something wrong.
Anyway, thanks for your help, I am now able to build ioq3 again.

Now, the problem is at runtime:

$ /usr/games/quake3/ioquake3.x86_64 
ioq3 1.36 linux-x86_64 Aug  8 2017
SSE instruction set enabled
----- FS_Startup -----
We are looking in the current search path:
/home/yugiohjcj/.q3a/baseq3
/home/yugiohjcj/.q3a/baseq3/pak8.pk3 (9 files)
/home/yugiohjcj/.q3a/baseq3/pak7.pk3 (4 files)
/home/yugiohjcj/.q3a/baseq3/pak6.pk3 (64 files)
/home/yugiohjcj/.q3a/baseq3/pak5.pk3 (7 files)
/home/yugiohjcj/.q3a/baseq3/pak4.pk3 (272 files)
/home/yugiohjcj/.q3a/baseq3/pak3.pk3 (4 files)
/home/yugiohjcj/.q3a/baseq3/pak2.pk3 (148 files)
/home/yugiohjcj/.q3a/baseq3/pak1.pk3 (26 files)
/home/yugiohjcj/.q3a/baseq3/pak0.pk3 (3539 files)
/usr/games/quake3/baseq3
    
----------------------
4073 files in pk3 files
execing default.cfg
couldn't exec q3config.cfg
couldn't exec autoexec.cfg
Hunk_Clear: reset the hunk ok
----- Client Initialization -----
Couldn't read q3history.
----- Initializing Renderer ----
Trying to load "renderer_opengl2_x86_64.so" from "/usr/games/quake3"...
Loading "renderer_opengl2_x86_64.so" failed
failed:
"Failed loading /usr/games/quake3/renderer_opengl2_x86_64.so: /usr/games/quake3/renderer_opengl2_x86_64.so: undefined symbol: _ZGVbN2vv___pow_finite"
Failed to load renderer

It seems to be again a problem with the math library because I can read pow for power (the math function).
That’s weird because if at build time there was no problem it should not have problem at runtime too.
Any idea?

Remark: This problem happens with my built version of gcc-7.1.0 and my built version of gcc-6.4.0 but it does not happen with the provided by distro version of gcc-5.3.0, my built version of gcc-5.3.0 or my built version of gcc-5.4.0.

OK I found how to not have the problem with my built version of gcc-7.1.0.
It seems that if i want to use this version of gcc, I need to rebuild glibc too.
So, I used my built version of gcc-7.1.0 and my built version of glibc-2.26 and I am able to compile and run ioq3 without problems :slight_smile:
There is probably a relationship between gcc and glibc so upgrading the former requiring to rebuild the latter in some cases.

1 Like