[Libguestfs] [hivexml] Relinking warning and shared library error (was: Re: [Hivex] [PATCH v3] Report last-modified time of hive root and nodes)

Richard W.M. Jones rjones at redhat.com
Sun Aug 14 16:57:58 UTC 2011


On Sat, Aug 13, 2011 at 03:49:13PM -0700, Alex‎ Nelson wrote:
> I noticed while I was producing the patch that I had to have the
> filetime_to_8601 in xml/hivexml.c due to a linking error.  I
> would've liked to have the function in lib/hivex.c, but I hit a
> strange linking error when I had the function and its prototype
> placed as in the patch below.  It's strange because the extern
> doesn't appear to be in a strange place, and there is no static
> restriction on the function definition, so the function seems to me
> like it should behave like any of the other API functions.  Could it
> be a linking eror against an old library?

When the libhivex.so library is built, we whitelist the symbols that
it exports.  This is to prevent unintentional exports of symbols.

In any case, you can't have filetime_to_8601 in hivex.c.  It's solely
required by hivexml, so it should be there.  It isn't namespaced
properly.  Because it's not listed in the generator, no bindings would
be made for it in other languages, and for the same reason the
generator doesn't add it to the whitelist.

Also <hivex.h> is the public API of the hivex library.  One of the
consumers happens to be hivexml, but there are many others.  This file
isn't a dumping ground for random symbols and #includes that are only
needed by hivexml.

So, NACK.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine.  Supports Linux and Windows.
http://et.redhat.com/~rjones/virt-df/




More information about the Libguestfs mailing list