> > The build still fails with the following. Not sure
> > this is problem with libtool, or problem on ethereal.
>
> That'd be a bit annoying to debug, as
>
> 1) it may be specific to NetBSD (I didn't see it on FreeBSD);
>
> 2) the Makefile cheerfully destroyed the evidence by removing
> ".libs/etherealS.o", so you'd have to tweak the Makefile by
> hand not to do that - and I'm not sure where it does that.
It doesn't. It's done by the "libtool" script in the top-level
directory; I replaced
rm="rm -f"
with a command that just echoes stuff, and managed to get
".libs/etherealS.c" to stick around.
Unfortunately, all it reveals is that this may be orders of magnitude
more irritating to debug than I thought. ".libs/etherealS.c" defines
"lt_preloaded_symbols" as:
/* The mapping between symbol names and symbols. */
const struct {
const char *name;
lt_ptr_t address;
}
lt_preloaded_symbols[] =
{
{0, (lt_ptr_t) 0}
};
and "libltdl/ltdl.c" defines it as:
#ifndef HAVE_PRELOADED_SYMBOLS
/* If libtool won't define it, we'd better do */
const lt_dlsymlist lt_preloaded_symbols[1] = { { 0, 0 } };
#endif
HAVE_PRELOADED_SYMBOLS *is* defined by "libltdl/config.h" on FreeBSD.
"lt_dlsymlist" is defined by "libltdl/ltdl.h" as
typedef struct {
const char *name;
lt_ptr_t address;
} lt_dlsymlist;
so the only way it should think those two definitions have a different
size is if "lt_ptr_t" has a different size when building "etherealS.c"
and "ltdl.c".
It appears to be declared as either a "void *" or a "char *" everywhere,
so they shouldn't have a different size...
...and they *don't*, on my machine.
Perhaps there's some problem with "libtool" on NetBSD 1.4[.x]; perhaps
there's some stuff left over from your installation of an earlier
version of "libtool"; perhaps there's some other problem. Teledebugging
it could be very time-consuming, unfortunately - you might want to try
the steps I did, and see what you discover.