New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Ticket #19577 (closed defect: fixed)

Opened 5 years ago

Last modified 5 years ago

syslog-ng 2.1.4 needs explicit globals.o to create executable

Reported by: denis.laplante@… Owned by: markd@…
Priority: Normal Milestone:
Component: ports Version: 1.7.1
Keywords: xCode Cc:
Port: syslog-ng

Description

I have a workaround for what seems like a xCode bug.

syslog-ng version 2.1.4 fails in compilation with MacPorts; specifically "ld" while creating executable fails to load "globals.o" from libsyslog-ng.a.

Error message:

/usr/bin/gcc-4.0 -O2 -Wall -L/opt/local/lib -o syslog-ng main.o libsyslog-ng.a \

-lresolv -lfl -L/opt/local/lib -lglib-2.0 -lintl -liconv -L/opt/local/lib \

-levtlog -lnet -lwrap

Undefined symbols:

"_configuration", referenced from:

_configuration$non_lazy_ptr in libsyslog-ng.a(cfg.o) _configuration$non_lazy_ptr in libsyslog-ng.a(cfg-grammar.o)

ld: symbol(s) not found

The workaround is to append "globals.o" to command "gcc ... -o syslog-ng ... -lwrap".

I tried (no success) appending libsyslog-ng.a , and upgrading Apple xCode compilation package from 3.1.1 to 3.1.2

The object file is in fact present in the archive and contains "_configuration".

$ nm libsyslog-ng.a libsyslog-ng.a(misc.o): [...] libsyslog-ng.a(cfg.o): [...] U _configuration [...] libsyslog-ng.a(cfg-grammar.o): [...] U _configuration [...] libsyslog-ng.a(globals.o): 00000004 D _allow_severity 00000004 C _configuration 00000000 D _deny_severity 00000004 C _server_mode

One red herring was the error message

ranlib: file: libsyslog-ng.a(afsql.o) has no symbols

Deleting afsql.o from libsyslog-ng.a and re-running ranlib (no errors) did not help. Editing Makefile to remove afsql.o did not help.

I've attached patch-Makefile.in.diff to explicitly add globals.o, which fixes this weird problem.

Another problem I had after installing the binary produced with explicit "globals.o": the "file" source driver goes into a tight loop instead of sleeping between read attempts. See bugzilla.balabit.com ticket 43. I have attached patch-src-logreader.c.diff for convenience, since version 2.1.5 does not yet appear on download site.

Solaris had no trouble with libsyslog-ng.a, even though it also uses ranlib.

Attachments

patch-Makefile.in.diff (499 bytes) - added by denis.laplante@… 5 years ago.
patch to Makefile.in to force load of globals.o
patch-src-logreader.c.diff (551 bytes) - added by denis.laplante@… 5 years ago.
Patch from https://bugzilla.balabit.com/show_bug.cgi?id=43

Change History

Changed 5 years ago by denis.laplante@…

patch to Makefile.in to force load of globals.o

Changed 5 years ago by denis.laplante@…

comment:1 Changed 5 years ago by jmr@…

  • Owner changed from macports-tickets@… to markd@…

comment:2 Changed 5 years ago by markd@…

  • Status changed from new to closed
  • Resolution set to fixed

Many thanks for the Makefile patch. The logreader patch was not necessary since it made it into the source by now.

comment:3 Changed 5 years ago by markd@…

Also passing the Makefile patch upstream so there will hopefully be a fix in the source for that on OS X also.

Note: See TracTickets for help on using tickets.