Description of problem: I'm trying to debug a Swift program using sd-bus so have linked to libsystemd. However when I try to step into any systemd function (specifically sd_bus_emit_properties_changed_strv) in either GDB (9.2-7.fc33) or LLDB (lldb version 10.0.0) the debugger steps over the function. Version-Release number of selected component (if applicable): FC33, systemd 246.4-2.fc33 How reproducible: 100% Steps to Reproduce: 1. Install libsystemd debugsource/debuginfo 2. Try to step into a libsystemd library call Actual results: The debugger steps into the library function. Expected results: The debugger steps over the function. Additional info: Possibly related RHEL 7 bug regarding LTO being enabled - https://bugzilla.redhat.com/show_bug.cgi?id=1578413 $ dnf list --installed | grep systemd libreport-plugin-systemd-journal.x86_64 2.14.0-8.fc33 @updates-testing python-systemd-doc.x86_64 234-14.fc33 @fedora python3-systemd.x86_64 234-14.fc33 @fedora rpm-plugin-systemd-inhibit.x86_64 4.16.0-0.rc1.1.fc33 @updates-testing systemd.x86_64 246.4-2.fc33 @updates-testing systemd-bootchart.x86_64 233-7.fc33 @fedora systemd-container.x86_64 246.4-2.fc33 @updates-testing systemd-debuginfo.i686 245.6-2.fc32 @updates-debuginfo systemd-debuginfo.x86_64 245.6-2.fc32 @updates-debuginfo systemd-debugsource.i686 245.6-2.fc32 @updates-debuginfo systemd-debugsource.x86_64 245.6-2.fc32 @updates-debuginfo systemd-devel.x86_64 246.4-2.fc33 @updates-testing systemd-libs.i686 246.4-2.fc33 @updates-testing systemd-libs.x86_64 246.4-2.fc33 @updates-testing systemd-libs-debuginfo.i686 245.6-2.fc32 @updates-debuginfo systemd-libs-debuginfo.x86_64 245.6-2.fc32 @updates-debuginfo systemd-pam.x86_64 246.4-2.fc33 @updates-testing systemd-rpm-macros.noarch 246.4-2.fc33 @updates-testing systemd-udev.x86_64 246.4-2.fc33 @updates-testing LLDB output: Process 12985 stopped * thread #3, name = 'Tsunami', stop reason = step in frame #0: 0x00005555556f3034 Tsunami`Earthquake.DBus.emitPropertyChanged(bus: Earthquake.BusType, path: Swift.String, interface: Swift.String, name: Swift.String) -> () at DBus.swift:214:62 211 nameStrings[0] = UnsafeMutablePointer(mutating: name.utf8String) 212 213 //nameStrings.withUnsafeMutableBufferPointer { buffer in -> 214 let r = sd_bus_emit_properties_changed_strv(bus, path, interface, &nameStrings/*buffer.baseAddress*/) 215 if r < 0 { 216 let errString = String(cString: strerror(-r), encoding: .utf8)! 217 Log.warning("sd_bus_emit_properties_changed_strv failed: \(errString)") Target 0: (Tsunami) stopped. (lldb) s Process 12985 stopped * thread #3, name = 'Tsunami', stop reason = step in frame #0: 0x00005555556f3bc6 Tsunami`Earthquake.DBus.emitPropertyChanged(bus: Earthquake.BusType, path: Swift.String, interface: Swift.String, name: Swift.String) -> () at DBus.swift:215:18 212 213 //nameStrings.withUnsafeMutableBufferPointer { buffer in 214 let r = sd_bus_emit_properties_changed_strv(bus, path, interface, &nameStrings/*buffer.baseAddress*/) -> 215 if r < 0 { 216 let errString = String(cString: strerror(-r), encoding: .utf8)! 217 Log.warning("sd_bus_emit_properties_changed_strv failed: \(errString)") 218 } Target 0: (Tsunami) stopped. (lldb)
The debuginfo packages you have don't match. I don't think systemd is doing anything special here. Please install all debuginfo packages with versions that match and see if that helps.
Sorry, you are right, they weren't upgraded when I moved from FC32->33. Manually updating them allowed GCC to step into libsystemd. LLDB still refuses however this seems to be due to a lack of DWZ symbol support - using a version with this patch - https://reviews.llvm.org/D40474 - works fine. Sorry for the noise.