[Libguestfs] nbdkit / mingw support

Eric Blake eblake at redhat.com
Tue Mar 24 20:08:25 UTC 2020


On 3/24/20 2:18 PM, Frank Gu wrote:

[top-posting on technical lists makes it harder to follow the 
conversation; I'm reordering your mail]

> On Tue, Mar 24, 2020 at 15:16 Eric Blake <eblake at redhat.com> wrote:

>>> Isn't it because we rely on it, since our plugins need symbols that
>>> are undefined at link time such as nbdkit_*?
>>
>> Yes, at the moment they do, but do they need to? We could ship libnbdkit
>> which provides just the symbols that plugins can link against, and then
>> link our binary nbdkit against that same library, rather than expecting
>> our plugins to compile undefined until loaded by our binary.  In other
>> words, if the fix is by separating our public functions into a shared
>> library for mingw to compile plugins without undefined symbols, why not
>> do the same for all platforms?

 > I think that will break the ABI backward compatibility.
 >

How does it break ABI compatibility?  An old plugin that was compiled on 
Linux with undefined symbols will still have those symbols satisfied at 
load-time by nbdkit, since nbdkit itself depends on libnbdkit to pull in 
those symbols.  And while we would change in-tree plugins to use 
-no-undefined (which means in-tree plugins link against libnbdkit), it 
doesn't force out-of-tree plugins to compile against the library 
(out-of-tree plugins are not required to use libtool), so out-of-tree 
plugins can still have the same ABI compatibility as what we guarantee 
for plugins compiled against older nbdkit versions.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




More information about the Libguestfs mailing list