On Fri, 03 Jan 2020 22:45:52 +0100, Neal Gompa wrote: > Can someone please explain why gdb dlopen()'s librpm instead of just > doing proper compile-time linking? Because when it was written (2008) it was common to transfer /usr/bin/gdb binary across OS versions (maybe incl. RHEL) as GDB had only very few shared library dependencies (no Python that time) which were ABI compatible. After implementing the rpm functionality the DT_NEEDED of librpm was the only reason why one could no longer use /usr/bin/gdb across OSes as librpm major version changes very often. Therefore I changed the DT_NEEDD to dlopen(). Nowadays there are tons of DT_NEEDED dependencies of /usr/bin/gdb so one does not even think about the possibility using the binary on some other OS. You are right dlopen() could be changed to DT_NEEDED back. But then rather this whole librpm dependency patch is being rewritten some other ways (and it is longer done by me who wrote it in that 2008). That librpm dependency is painful anyway as librpm authors do not like it to be used by 3rd party apps and they prefer popen()ing some rpm commands instead: rpmdb locking broken by other-arch rpmquery https://bugzilla.redhat.com/show_bug.cgi?id=486423#c1 > Best I can tell, our patches to GDB support both modes, and it seems to be > unnecessarily painful for us to have to track the soversion like that > instead of just letting it pick it up. The positive side is that GDB handles gracefully if the librpm (of proper version) is missing. But the gdb.spec correctly fails to build it. gdb.spec could auto-detect the current librpm version. Jan _______________________________________________ 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