On Sat, Aug 26, 2023 at 6:30 AM Julian Sikorski <belegdol@xxxxxxxxx> wrote: > > Hello, > > now that lzma-sdk in Fedora rawhide is no longer ancient, I tried using > it with mame. Unfortunately, I got a number of undefined references when > linking: > > Is it a problem with lzma-sdk not shipping those? Or is mame using > private functions? Thanks for the feedback. > Looking at the shared library, it has for example: <mock-chroot> sh-5.2# objdump -T /usr/lib64/liblzmasdk.so | grep MtCoder_Destruct 0000000000000000 D *UND* 0000000000000000 Base MtCoder_Destruct The *UND* indicates that the symbol is referenced, but not defined. This does not seem intended. I'm not sure if this is the reason, but it appears that the lzma-sdk build is incorrect. Looking at the log from the latest build on x86_64, we see: + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + make -f makefile.gcc clean all 'CXXFLAGS_EXTRA=-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' 'CFLAGS_WARN=-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' 'LDFLAGS_STATIC_2=-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' but then the final linkage has: g++ -o liblzmasdk.so.22.01.0 -shared -Wl,-soname=liblzmasdk.so.22 -DNDEBUG -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer _o/7zCrc.o _o/7zCrcOpt.o _o/Alloc.o _o/Bra86.o _o/CpuArch.o _o/LzFind.o _o/LzmaDec.o _o/LzmaEnc.o _o/Lzma2Dec.o _o/Lzma2Enc.o _o/Lzma86Dec.o _o/Lzma86Enc.o _o/LzFindMt.o _o/LzFindOpt.o _o/Synchronization.o _o/Threads.o _o/FileDir.o _o/FileFind.o _o/FileName.o _o/MyWindows.o _o/TimeUtils.o _o/CommandLineParser.o _o/CRC.o _o/CrcReg.o _o/IntToString.o _o/LzFindPrepare.o _o/MyString.o _o/MyVector.o _o/NewHandler.o _o/StringConvert.o _o/StringToInt.o _o/UTFConvert.o _o/FileIO.o _o/PropVariant.o _o/System.o _o/SystemInfo.o _o/LzmaDecoder.o _o/LzmaEncoder.o _o/LzmaRegister.o _o/CreateCoder.o _o/CWrappers.o _o/FileStreams.o _o/FilterCoder.o _o/MethodProps.o _o/StreamObjects.o _o/StreamUtils.o _o/BenchCon.o _o/ConsoleClose.o _o/LzmaAlone.o _o/Bench.o -lpthread -ldl As you can see, none of the LDFLAGS are passed to the linker, only the CFLAGS. > Best regards, > Julian [1] https://koji.fedoraproject.org/koji/buildinfo?buildID=2278764 -- Elliott _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue