proxmark3 icon indicating copy to clipboard operation
proxmark3 copied to clipboard

Build error: C++20 -Werror=template-id-cdtor in proxguiqt.cpp

Open AstreaeLuna opened this issue 2 months ago • 11 comments

Describe the bug Build failure caused by C++20 compiler change: template-id not allowed for constructor in C++20

To Reproduce Steps to reproduce the behavior:

  1. Download git repo on Fedora 40
  2. Install all required dependancies
  3. Run make -j all
  4. Build fails due to
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
  284 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’

Expected behavior The build should succeed.

Desktop (please complete the following information):

  • OS: Linux - Fedora 40

Additional context The error is resolved and the build can successfully complete if the change suggested by the compiler is made and <void> is removed from Line 284 of /usr/include/qt5/QtCore/qfutureinterface.h

This leads me to believe this isn't a problem strictly with Proxmark3 but with the QT development library. But I'm posting here to be sure.

Full build log is as follows:

Build Log
===================================================================
Version info:      Iceman/master/v4.18341-152-g2bc7c5030
Platform name:     Proxmark3 generic target
PLATFORM:          PM3GENERIC
PLATFORM_FPGA:     xc2s30
PLATFORM_SIZE:     512
Platform extras:   No extra selected
Included options:  LF HITAG EM4x50 EM4x70 ZX8211 GENERAL_HF ISO15693 LEGICRF ISO14443b ISO14443a ICLASS FELICA NFCBARCODE HFSNIFF HFPLOT
Standalone mode:   LF_SAMYRUN
===================================================================
[*] MAKE client/all
[*] MAKE bootrom/all
[*] MAKE fpga_compress/all
[*] MAKE mfkey/all
[*] MAKE nonce2key/all
[*] MAKE mf_nonce_brute/all
[*] MAKE mfd_aes_brute/all
[*] MAKE cryptorf/all
[-] CC fpga_compress.c
[-] CC ../../common/lz4/lz4hc.c
[-] CC ../../common/lz4/lz4.c
[-] CC mf_nonce_brute.c
[-] CC nonce2key.c
[-] CC mfkey32.c
[-] CC ../../common/crapto1/crypto1.c
[-] CC ../../common/crapto1/crapto1.c
[-] CC ../../common/crapto1/crypto1.c
[-] CC ../../common/crapto1/crapto1.c
[-] CC ../../common/bucketsort.c
[-] CC ../../common/bucketsort.c
[-] CC brute_key.c
[-] CC cm.c
[-] CC ../../common/crapto1/crypto1.c
[-] CC ../../common/crapto1/crapto1.c
[-] CC nested_util.c
[-] CC ../../common/cryptorf/cryptolib.c
[-] CC util.c
[-] CC util_posix.c
[-] CC iso14443crc.c
[-] CC ../../common/bucketsort.c
[-] CC sleep.c
[-] CC sm.c
[-] CC randoms.c
[-] CC util_posix.c
[-] CC mfkey32v2.c
compiler version:  arm-none-eabi-gcc (Fedora 13.2.0-5.fc40) 13.2.0
[=] CHECK version_pm3.c
[-] CC mfd_aes_brute.c
[-] CC ram-reset.s
[-] CC mf_trace_brute.c
[-] CXX sma.cpp
[-] CC mfkey64.c
[-] CC flash-reset.s
[-] CXX sma_multi.cpp
[-] CC mfd_multi_brute.c
[-] CC staticnested.c
[-] CC ../common_arm/usb_cdc.c
[-] CC ../common_arm/clocks.c
[-] CC bootrom.c
[-] CC version_pm3.c
[=] CXX brute_key
===================================================================
Version info:      Iceman/master/v4.18341-152-g2bc7c5030
Client platform:   Linux
GUI support:       QT5 found, enabled (Qt version 5.15.13 in /usr/lib64)
native BT support: Bluez found, enabled
Jansson library:   system library not found, using local library
Lua library:       system library not found, using local library
[=] LD obj/bootrom.elf
Python3 library:   Python3 v3.12 found, enabled
[=] GEN obj/bootrom.s19
GD library:        GD v2.3.3 found, enabled
Readline library:  enabled
Whereami library:  system library not found, using local library
Lua SWIG:          wrapper found
Python SWIG:       wrapper found
compiler version:  cc (GCC) 14.0.1 20240411 (Red Hat 14.0.1-0)
===================================================================
[=] CXX mfd_multi_brute
[=] CXX mfd_aes_brute
[-] CC src/mifare/aiddesfire.c
[-] CC src/aidsearch.c
[-] CC src/atrs.c
[-] CC src/cmdanalyse.c
[=] CXX cm
[=] CXX sm
[-] CC src/cmdcrc.c
[-] CC src/cmddata.c
[-] CC src/cmdflashmem.c
[-] CC src/cmdflashmemspiffs.c
[-] CC src/cmdhf.c
[-] CC src/cmdhf14a.c
[-] CC src/cmdhf14b.c
[-] CC src/cmdhf15.c
[-] CC src/cmdhfcryptorf.c
[=] CXX mf_nonce_brute
[=] CXX mf_trace_brute
[-] CC src/cmdhfepa.c
[=] CXX nonce2key
[-] CC src/cmdhfemrtd.c
[-] CC src/cmdhffelica.c
[-] CC src/cmdhffido.c
[-] CC src/cmdhffudan.c
[-] CC src/cmdhfgallagher.c
[-] CC src/cmdhfksx6924.c
[-] CC src/cmdhfcipurse.c
[-] CC src/cmdhficlass.c
[=] CXX mfkey32
[=] CXX mfkey32v2
[=] CXX mfkey64
[-] CC src/cmdhfict.c
[=] CXX staticnested
[=] CXX sma
[-] CC src/cmdhflegic.c
[-] CC src/cmdhfjooki.c
[-] CC src/cmdhflist.c
[-] CC src/cmdhflto.c
[-] CC src/cmdhfmf.c
[-] CC src/cmdhfmfdes.c
[-] CC src/cmdhfmfhard.c
[-] CC src/cmdhfmfu.c
[=] CXX sma_multi
[-] CC src/cmdhfmfp.c
[-] CC src/cmdhfntag424.c
[-] CC src/cmdhfseos.c
[-] CC src/cmdhfst.c
[-] CC src/cmdhfst25ta.c
[-] CC src/cmdhftesla.c
[-] CC src/cmdhfthinfilm.c
[-] CC src/cmdhftopaz.c
[-] CC src/cmdhftexkom.c
[-] CC src/cmdhfvas.c
[-] CC src/cmdhfxerox.c
[-] CC src/cmdhw.c
[-] CC src/cmdlf.c
[-] CC src/cmdlfawid.c
[-] CC src/cmdlfcotag.c
[-] CC src/cmdlfdestron.c
[-] CC src/cmdlfem.c
[-] CC src/cmdlfem410x.c
[-] CC src/cmdlfem4x05.c
[-] CC src/cmdlfem4x50.c
[-] CC src/cmdlfem4x70.c
[-] CC src/cmdlffdxb.c
[-] CC src/cmdlfguard.c
[-] CC src/cmdlfgallagher.c
[-] CC src/cmdlfhid.c
[-] CC src/cmdlfhitag.c
[-] CC src/cmdlfidteck.c
[-] CC src/cmdlfindala.c
[-] CC src/cmdlfio.c
[-] CC src/cmdlfjablotron.c
[-] CC src/cmdlfkeri.c
[-] CC src/cmdlfmotorola.c
[-] CC src/cmdlfnedap.c
[-] CC src/cmdlfnexwatch.c
[-] CC src/cmdlfnoralsy.c
[-] CC src/cmdlfpac.c
[-] CC src/cmdlfparadox.c
[-] CC src/cmdlfpcf7931.c
[-] CC src/cmdlfpresco.c
[-] CC src/cmdlfpyramid.c
[-] CC src/cmdlfsecurakey.c
[-] CC src/cmdlft55xx.c
[-] CC src/cmdlfti.c
[-] CC src/cmdlfviking.c
[-] CC src/cmdlfvisa2000.c
[-] CC src/cmdlfzx8211.c
[-] CC src/cmdmain.c
[-] CC src/cmdnfc.c
[-] CC src/cmdparser.c
[-] CC src/cmdpiv.c
[-] CC src/cmdscript.c
[-] CC src/cmdsmartcard.c
[-] CC src/cmdtrace.c
[-] CC src/cmdusart.c
[-] CC src/cmdwiegand.c
[-] CC src/comms.c
[-] CC src/crypto/asn1dump.c
[-] CC src/crypto/asn1utils.c
[-] CC src/crypto/libpcrypto.c
[-] CC src/emv/cmdemv.c
[-] CC src/emv/crypto.c
[-] CC src/emv/crypto_polarssl.c
[-] CC src/emv/dol.c
[=] CXX fpga_compress
[-] CC src/emv/emv_pk.c
[-] CC src/emv/emv_pki.c
[-] CC src/emv/emv_pki_priv.c
[*] MAKE armsrc/all
[-] CC src/emv/emv_roca.c
compiler version:  arm-none-eabi-gcc (Fedora 13.2.0-5.fc40) 13.2.0
[-] GEN fpga_version_info.c
[-] GEN obj/fpga_all.bit.z
[-] CC start.c
[-] CC iso15693.c
[-] CC ../common/iso15693tools.c
[-] CC thinfilm.c
[-] CC lfops.c
[-] CC lfsampling.c
[-] CC pcf7931.c
[-] CC ../common/lfdemod.c
[-] CC lfadc.c
[-] CC ../common/lz4/lz4.c
[-] CC legicrf.c
[-] CC legicrfsim.c
[-] CC ../common/legic_prng.c
[-] CC src/emv/emv_tags.c
[-] CC ../common/hitag2/hitag2_crypto.c
[-] CC hitag2.c
[-] CC hitagS.c
[-] CC hitag2_crack.c
[-] CC em4x50.c
[-] CC ../common/bruteforce.c
[-] CC em4x70.c
[-] CC hfops.c
[-] CC iso14443a.c
[-] CC mifareutil.c
[-] CC mifarecmd.c
[-] CC epa.c
[-] CC mifaresim.c
[-] CC sam_mfc.c
[-] CC sam_seos.c
[-] CC iso14443b.c
[-] CC ../common/crapto1/crypto1.c
[-] CC ../common/mbedtls/des.c
[-] CC desfire_crypto.c
[-] CC mifaredesfire.c
[-] CC ../common/mbedtls/aes.c
[-] CC ../common/mbedtls/platform_util.c
[-] CC iclass.c
[-] CC optimized_cipherutils.c
[-] CC optimized_ikeys.c
[-] CC optimized_elite.c
[-] CC optimized_cipher.c
[-] CC sam_picopass.c
[-] CC ../common/crc.c
[-] CC ../common/crc16.c
[-] CC src/emv/emvcore.c
[-] CC ../common/crc32.c
[-] CC felica.c
[-] CC ../armsrc/Standalone/lf_samyrun.c
[-] CC lfzx.c
[-] CC appmain.c
[-] CC printf.c
[-] CC dbprint.c
[-] CC ../common/commonutil.c
[-] CC util.c
[-] CC string.c
[-] CC BigBuf.c
[-] CC ../common_arm/ticks.c
[-] CC ../common_arm/clocks.c
[-] CC hfsnoop.c
[-] CC ../common/generator.c
[-] CC fpgaloader.c
[-] CC ../common_arm/usb_cdc.c
[-] CC cmd.c
[-] CC fpga_version_info.c
[-] GEN obj/fpga_all.o
[-] CC src/emv/emvjson.c
[-] CC src/emv/tlv.c
[-] CC src/emv/test/crypto_test.c
[-] CC src/emv/test/cryptotest.c
[-] CC src/emv/test/cda_test.c
[-] CC src/emv/test/dda_test.c
[-] CC src/emv/test/sda_test.c
[-] CC src/fido/additional_ca.c
[-] CC src/fido/cose.c
[-] CC src/fido/cbortools.c
[-] CC src/fido/fidocore.c
[-] CC src/ksx6924/ksx6924core.c
[-] CC src/cipurse/cipursecore.c
[-] CC src/cipurse/cipursecrypto.c
[-] CC src/cipurse/cipursetest.c
[-] CC src/fileutils.c
[-] CC src/flash.c
[-] CC ../common/generator.c
[-] CC src/graph.c
[-] CC src/jansson_path.c
[-] CC src/iso4217.c
[-] CC src/iso7816/apduinfo.c
[-] CC src/iso7816/iso7816core.c
[-] CC src/loclass/cipher.c
[-] CC src/loclass/cipherutils.c
[-] CC src/loclass/elite_crack.c
[-] CC src/loclass/ikeys.c
[-] CC src/mifare/lrpcrypto.c
[-] CC src/mifare/desfirecrypto.c
[-] CC src/mifare/desfirecore.c
[-] CC src/mifare/desfiresecurechan.c
[-] CC src/mifare/desfiretest.c
[-] CC src/mifare/gallaghercore.c
[-] CC src/mifare/mad.c
[-] CC src/mifare/mfkey.c
[-] CC src/mifare/mifare4.c
[-] CC src/mifare/mifaredefault.c
[-] CC src/mifare/mifarehost.c
[-] CC src/mifare/gen4.c
[-] CC src/nfc/ndef.c
[-] CC src/pm3.c
[-] CC src/pm3_binlib.c
[-] CC src/pm3_bitlib.c
[-] CC src/preferences.c
[-] CHECK version_pm3.c
[-] CC version_pm3.c
[-] CC src/pm3line.c
[=] LD obj/fullimage.stage1.elf
[-] GEN obj/fullimage.data.bin
[-] GEN obj/fullimage.data.bin.z
[=] LD obj/fullimage.elf
[=] GEN obj/fullimage.s19
[*] MAKE recovery/all
[-] CC src/proxmark3.c
[=] GEN bootrom.bin
[=] GEN fullimage.bin
[=] GEN proxmark3_recovery.bin
[-] CC src/scandir.c
[-] CC src/uart/ringbuffer.c
[-] CC src/uart/uart_common.c
[-] CC src/uart/uart_posix.c
[-] CC src/uart/uart_win32.c
[-] CC src/scripting.c
[-] CC src/ui.c
[-] CC src/util.c
[=] CHECK src/version_pm3.c
[-] CC src/wiegand_formats.c
[-] CC src/wiegand_formatutils.c
[-] CC ../common/bucketsort.c
[-] CC ../common/bruteforce.c
[-] CC ../common/cardhelper.c
[-] CC ../common/crapto1/crapto1.c
[-] CC ../common/crapto1/crypto1.c
[-] CC ../common/crc.c
[-] CC ../common/crc16.c
[-] CC ../common/crc32.c
[-] CC ../common/crc64.c
[-] CC ../common/commonutil.c
[-] CC ../common/hitag2/hitag2_crypto.c
[-] CC ../common/iso15693tools.c
[-] CC ../common/legic_prng.c
[-] CC ../common/lfdemod.c
[-] CC ../common/util_posix.c
[-] CC src/imgutils.c
[-] CC src/cmdhfwaveshare.c
[-] CC src/pm3_luawrap.c
[-] CC src/pm3_pywrap.c
[-] UIC src/ui/ui_overlays.h
[-] UIC src/ui/ui_image.h
[*] MAKE deps/amiitool/libamiibo.a
[*] MAKE deps/cliparser/libcliparser.a
[*] MAKE deps/hardnested/libhardnested.a
[*] MAKE deps/id48/libid48.a
[*] MAKE deps/liblua/liblua.a for linux
[*] MAKE deps/jansson/libjansson.a
[*] MAKE obj/libmbedtls.a
[*] MAKE deps/reveng/libreveng.a
[*] MAKE deps/tinycbor/tinycbor.a
[*] MAKE deps/whereami/libwhereami.a
[=] GEN lualibs/pm3_cmd.lua
[=] GEN lualibs/mfc_default_keys.lua
[-] CC src/version_pm3.c
PLATFORM Linux
[-] CC id48_data.c
[-] CC amiibo.c
[-] CC id48_generator.c
[-] CC dump.c
[-] CC drbg.c
[-] CC id48_recover.c
[-] CC argtable3.c
[-] CC cliparser.c
[-] CC keygen.c
[-] CC error.c
[-] CC bmpbit.c
[=] TEST bmptst
[-] CC hashtable.c
[-] CC hashtable_seed.c
[-] CC bmpbit.c
[-] CC load.c
[-] CC cli.c
[-] CC memory.c
[-] CC aes.c
[-] CC model.c
[-] CC pack_unpack.c
[-] CC poly.c
[-] CC strbuffer.c
[-] CC preset.c
[-] CC strconv.c
[-] CC asn1parse.c
[-] CC utf.c
[-] CC whereami.c
[-] CC value.c
[-] CC reveng.c
[-] CC asn1write.c
[-] CC cborencoder.c
[-] CC base64.c
[-] CC bignum.c
[-] CC ctr_drbg.c
[-] CC cborencoder_close_container_checked.c
[-] CC lapi.c
[-] CC(NOSIMD) hardnested_bf_core.c
[-] CC entropy_poll.c
[-] CC(NOSIMD) hardnested_bitarray_core.c
[-] CC(MMX) hardnested_bf_core.c
[-] CC entropy.c
[-] CC cborerrorstrings.c
[-] CC error.c
[-] CC cborparser.c
[-] CC ecp.c
[-] CC cborparser_dup_string.c
[-] CC lcode.c
[-] CC cborpretty.c
[-] CC ecp_curves.c
[-] CC lctype.c
[-] CC certs.c
[-] CC cbortojson.c
[-] CC(MMX) hardnested_bitarray_core.c
[-] CC(SSE2) hardnested_bf_core.c
[-] CC camellia.c
[-] CC cborvalidation.c
[-] CC ldebug.c
[-] CC blowfish.c
[-] CC(SSE2) hardnested_bitarray_core.c
[-] CC(AVX) hardnested_bf_core.c
[-] CC ldo.c
[-] CC cipher_wrap.c
[-] CC(AVX) hardnested_bitarray_core.c
[-] CC(AVX2) hardnested_bf_core.c
[-] CC cipher.c
[-] CC ldump.c
[-] CC lfunc.c
[-] CC cmac.c
[-] CC lgc.c
[-] CC des.c
[-] CC(AVX2) hardnested_bitarray_core.c
[-] CC llex.c
[-] CC(AVX512) hardnested_bf_core.c
[-] CC ecc_point_compression.c
[-] CC lmem.c
[-] CC ecdh.c
[-] CC lobject.c
[-] CC lopcodes.c
[-] CC ecdsa.c
[-] CC gcm.c
[-] CC lparser.c
[-] CC(AVX512) hardnested_bitarray_core.c
[-] CC lstate.c
[-] CC md.c
[-] CC md5.c
[-] CC lstring.c
[-] CC hardnested_bruteforce.c
[-] CC ltable.c
[-] CC oid.c
[-] CC ltm.c
[-] CC pem.c
[-] CC arc4.c
[-] CC pk.c
[-] CC lundump.c
[-] CC pk_wrap.c
[=] AR libwhereami.a
[-] CC lvm.c
[-] CC pkwrite.c
[-] CC lzio.c
[-] CC lauxlib.c
[-] CXX src/proxgui.cpp
[-] CC lbaselib.c
[-] CC pkcs5.c
[-] CC pkcs12.c
[-] CC lbitlib.c
[-] CC pkparse.c
[-] CC lcorolib.c
[-] CC ldblib.c
[-] CC platform.c
[-] CC liolib.c
[-] CC lmathlib.c
[-] CC platform_util.c
[-] CC loslib.c
[-] CC lstrlib.c
[-] CC ltablib.c
[-] CC loadlib.c
[-] CC rsa.c
[-] CC linit.c
[-] CC rsa_internal.c
[-] CC sha1.c
[-] CC sha256.c
[-] CC sha512.c
[-] CC threading.c
[=] AR libamiibo.a
[-] CC x509.c
[-] CC x509_crl.c
[-] CC x509_crt.c
[-] CC net_sockets.c
[-] CXX src/proxguiqt.cpp
[-] MOC src/proxguiqt.moc.cpp
[-] CXX src/proxguiqt.moc.cpp
[=] AR libid48.a
[=] AR libhardnested.a
In file included from /usr/include/qt5/QtCore/qfuture.h:45,
                 from /usr/include/qt5/QtCore/QtCore:97,
                 from /usr/include/qt5/QtGui/QtGuiDepends:3,
                 from /usr/include/qt5/QtGui/QtGui:3,
                 from src/proxguiqt.h:30,
                 from src/proxguiqt.cpp:19:
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
  284 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
[=] AR libjansson.a
[=] AR tinycbor.a
[=] AR liblua.a
[=] AR libreveng.a
[=] AR libcliparser.a
In file included from /usr/include/qt5/QtCore/qfuture.h:45,
                 from /usr/include/qt5/QtCore/QtCore:97,
                 from /usr/include/qt5/QtGui/QtGuiDepends:3,
                 from /usr/include/qt5/QtGui/QtGui:3,
                 from src/proxguiqt.h:30,
                 from src/proxgui.cpp:22:
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
  284 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
In file included from /usr/include/qt5/QtCore/qfuture.h:45,
                 from /usr/include/qt5/QtCore/QtCore:97,
                 from /usr/include/qt5/QtGui/QtGuiDepends:3,
                 from /usr/include/qt5/QtGui/QtGui:3,
                 from src/proxguiqt.h:30,
                 from src/proxguiqt.moc.cpp:10:
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: error: template-id not allowed for constructor in C++20 [-Werror=template-id-cdtor]
  284 |     explicit QFutureInterface<void>(State initialState = NoState)
      |                                     ^~~~~
/usr/include/qt5/QtCore/qfutureinterface.h:284:37: note: remove the ‘< >’
[=] AR libmbedtls.a
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxguiqt.o] Error 1
make[1]: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxgui.o] Error 1
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:1004: obj/proxguiqt.moc.o] Error 1
make: *** [Makefile:177: client/all] Error 2

AstreaeLuna avatar May 06 '24 19:05 AstreaeLuna