I spent an hour looking at this today.

This:

gcc -std=gnu99 -g3 -ggdb -export-dynamic -o rt_init
../tools/rsyslogd-smtradfile.o ../tools/rsyslogd-pidfile.o
../tools/rsyslogd-iminternal.o ../tools/rsyslogd-omfile.o
../tools/rsyslogd-pmrfc3164.o ../tools/rsyslogd-omfwd.o
../tools/rsyslogd-omshell.o ../tools/rsyslogd-omdiscard.o
../tools/rsyslogd-syslogd.o ../tools/rsyslogd-smfwd.o
../tools/rsyslogd-smfile.o ../tools/rsyslogd-omusrmsg.o
../tools/rsyslogd-smtradfwd.o ../tools/rsyslogd-ompipe.o
../tools/rsyslogd-pmrfc5424.o rt_init-rt-init.o rt_init-runtime-dummy.o -lz
-lpthread -L../grammar/.libs -lgrammar
-L/home/janmejay/projects/flipkart/rsyslog/liblogging/../install.dir/lib
-llogging-stdlog -L../runtime/.libs -lrsyslog
-L/home/janmejay/projects/flipkart/rsyslog/install.dir/lib -lestr -ljson-c
-luuid -L../runtime/.libs -lrsyslog -L../grammar/.libs -lgrammar -ldl

run from tests dir, seems to do fine except for symbols defined in
tools/rsyslogd.c.

I basically took what make was running, and started running it myself
directly using gcc to decrease the time required to test my changes
(modifying automake file and running was too long for quickly iterating on
this).

But the basic change I did was reorderd to bring rsyslog and grammer to the
end. At that point it wanted functions such as modInitFile, modInitPipe
etc, which were defined by various files in tools dir. So I just picked up
all *.o files except rsyslogd-rsyslogd.o (which has another main, which
messes up the linker. Also added -ldl for dl* functions.

Now rsyslogd-syslogd.o wants symbols like forkRsyslog, which are defined in
rsyslogd.c, so we basically need to separate main (and other functions that
only main will want) out to a separate file, so we can make syslogd.o happy.


On Mon, Nov 3, 2014 at 2:38 PM, Rainer Gerhards <[email protected]>
wrote:

> Hi all,
>
> after the discussion on unit tests I tried to add some. Some years ago, we
> had a very small set of "unit tests". These (two actually) were really
> almost nothing, BUT a skeleton to build better ones. And this skeleton I
> wanted to use, as it covers the initialization of the runtime (test
> rt_init).
>
> Unfortunately, I don't get them even to link. IIRC, that was also the
> reason why they were removed from the testbench some time ago. I've tried
> for several hours now and googled a lot, but I can't find a solution to
> make them build. So any help would be appreciated.
>
> The code is available in branch
>
>   https://github.com/rsyslog/rsyslog/tree/master-unittests
>
> When I try to build the rt_init test, I get this:
>
> rger@ubuntu1404esp:~/proj/rsyslog/tests$ make rt_init
>   CCLD     rt_init
> /usr/bin/ld: ../runtime/.libs/librsyslog.a(librsyslog_la-msg.o): undefined
> reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5'
> /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing
> from command line
> collect2: error: ld returned 1 exit status
> make: *** [rt_init] Error 1
>
> After what I could find out, this seems to be related to the order of
> -lpthread in the linker options. That's because the gnu linker is
> order-dependent. In theory, this should be fixable by moving -lpthread to
> the end of the linker libs. If I do that, I get a myriad of unresolved
> externals for the rsyslog runtime library. I than begun putting libs in
> different orders in the linker call, but I always get one error or the
> other.
>
> The interesting thing is that rsyslogd itself builds **successfully** with
> the **same** linker options in the **same** order. I even tried to move
> rt_init out of the tests directory into tools, where syslogd resides, and
> add rt_init to that Makefile. Again, rsyslogd builds, but rt_init fails.
>
> Quite honestly, I don't have any more idea. And the bad thing is that if I
> can't get rt_init to build, I probably cannot write any unit test at all
> (because most, especially those that do notable work, require the rsyslog
> runtime to be initialized).
>
> Help with this problem would be deeply appreciated. Again, it's a blocker
> for any unit test.
>
> Thanks,
> Rainer
> _______________________________________________
> rsyslog mailing list
> http://lists.adiscon.net/mailman/listinfo/rsyslog
> http://www.rsyslog.com/professional-services/
> What's up with rsyslog? Follow https://twitter.com/rgerhards
> NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad
> of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you
> DON'T LIKE THAT.
>



-- 
Regards,
Janmejay
http://codehunk.wordpress.com
_______________________________________________
rsyslog mailing list
http://lists.adiscon.net/mailman/listinfo/rsyslog
http://www.rsyslog.com/professional-services/
What's up with rsyslog? Follow https://twitter.com/rgerhards
NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of 
sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE 
THAT.

Reply via email to