[syslog-ng] differing linking options
Pal Tamas
folti at balabit.hu
Tue May 3 10:58:50 CEST 2011
On Mon, May 02, 2011 at 07:00:44PM +0200, Balazs Scheidler wrote:
> Hi,
>
> @Corinna: I'm ccing you because of a cygwin question at the end of this
> email. Thanks for answering it if you have time.
>
> While cherry-picking changes from your tree at
> git://git.balabit.hu/syslog-ng-team/syslog-ng-core-4.1.git
>
> I've noticed that you are changing linking command lines for modules,
> which would break mixed linking mode used by Linux distributions in
> their native packages.
>
> Since it's bad to differ on things like this, I've figured it might make
> sense to come to a solution that's good for both of us.
>
> This is the patch that adds the new libraries:
>
> commit 23ca7a66c5a612ee7135c2543d707c7e484571a1
> Author: Tamas Pal <folti at balabit.hu>
> Date: Tue Mar 29 11:42:00 2011 +0200
>
> [autoconfuse]: make system specific libafsocket symlink with the proper shlib extension. Added proper LIBS dependencies, to prevent linking error in case libtool fails to parse .la files properly
>
> And this is the hunk that is (for instance) problematic:
>
> -libafsocket_notls_la_LIBADD = ../../lib/libsyslog-ng.la $(LIBNET_LIBS) $(LIBWRAP_LIBS)
> +libafsocket_notls_la_LIBADD = ../../lib/libsyslog-ng.la $(LIBNET_LIBS) $(LIBWRAP_LIBS) $(GLIB_LIBS) $(EVTLOG_LIBS) $(IVYKIS_LIBS)
>
> The technical issue at hand is that glib, evtlog and ivykis can
> all be static libraries in mixed mode, which would result in
> their inclusion into each module shared object, causing trouble
> at runtime. (not to mention that the static libs are probably
> not compiled with -fPIC so they cannot be linked into .so files).
>
> I do have a problem with AIX linking with 3.2 now, which is
> probably the root cause that you've added these libraries
> into the Makefiles in the first place.
>
> AIX linker is quite restrictive on how symbols are reexported from the
> main executable, but I do remember I could successfully
> create a linking mode that worked on AIX and wasn't broken
> on Linux in mixed mode. Clearly adding the libraries to that
> command line unconditionally is not such a combination.
>
> Mixed mode doesn't need to be supported on AIX, (I wouldn't dare
> to try to support that with non-GNU linkers). I think the breakage
> is rooted by the addition of -no-undefined to the libtool command
> line, which causes the AIX linker to ignore symbols exported by
> the main executable.
>
> -no-undefined was added to catch errors on Cygwin, which doesn't allow
> to link DLLs with undefined symbols in them.
>
> The questions are:
>
> 1) Since last time we've checked that OSE 3.2 built on cygwin,
> which doesn't include those libs, I think the cygwin linker would
> accept symbols exported by the dependencies of libsyslog-ng.so. Is
> that right Corinna?
>
> 2) AIX seems to have worked without -no-undefined (I've just retried that
> with 3.2.3, and confirmed that works).
>
> 3) @syslog-ng-team: Are there any other reasons you've included the libs explicitly
> on those command lines?
No, it broke the AIX builds.
>
> So I'm proposing to make -no-undefined conditional, and only include
> it on non-AIX versions, and skip the listing of libs provided by
> libsyslog-ng.so from LIBADD.
Seconded.
--
Pal Tamas/Folti
folti at balabit.hu
More information about the syslog-ng
mailing list