Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 May 2013 13:05:35 +0300
From:      Mikolaj Golub <trociny@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Pawel Jakub Dawidek <pjd@FreeBSD.org>, Peter Wemm <peter@wemm.org>
Subject:   Re: svn commit: r250379 - in head/usr.sbin/bsnmpd/modules: . snmp_hast
Message-ID:  <20130509100533.GC94250@gmail.com>
In-Reply-To: <20130509082243.GP3047@kib.kiev.ua>
References:  <201305082003.r48K3cYv062256@svn.freebsd.org> <CAGE5yCozBYWpWOWM4e1T0uMOe3n3FLEP0X5hggN64hzdUJnU7w@mail.gmail.com> <CAGE5yCqiwjAa4H50Hf-TWBWfLZxp-K1JA=XzEFEHzo825BFOtg@mail.gmail.com> <20130509071412.GA94250@gmail.com> <20130509082243.GP3047@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

--a8Wt8u1KmwUX3Y2C
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Thu, May 09, 2013 at 11:22:43AM +0300, Konstantin Belousov wrote:
> On Thu, May 09, 2013 at 10:14:14AM +0300, Mikolaj Golub wrote:
> > On Wed, May 08, 2013 at 04:44:54PM -0700, Peter Wemm wrote:
> > > On Wed, May 8, 2013 at 4:25 PM, Peter Wemm <peter@wemm.org> wrote:
> > > > On Wed, May 8, 2013 at 1:03 PM, Mikolaj Golub <trociny@freebsd.org> wrote:
> > > >> Author: trociny
> > > >> Date: Wed May  8 20:03:37 2013
> > > >> New Revision: 250379
> > > >> URL: http://svnweb.freebsd.org/changeset/base/250379
> > > >>
> > > >> Log:
> > > >>   HAST module for bsnmpd(1).
> > > >>
> > > >>   Reviewed by:  harti, pjd
> > > >>   MFC after:    2 weeks
> > > >
> > > > This breaks world on just about everything other than i386, and it is
> > > > technically broken there too but doesn't actually cause a build
> > > > failure.
> > > >
> > > > You cannot link a .so file against a non-pic library, libl.a in this case.
> > > >
> > > > ===> usr.sbin/bsnmpd/modules/snmp_hast (all)^M
> > > > /usr/obj/usr/src/tmp/usr/bin/ld: /usr/obj/usr/src/tmp/usr/lib/libl.a(libyywrap.o
> > > > ): relocation R_X86_64_32 against `a local symbol' can not be used when making a
> > > >  shared object; recompile with -fPIC^M
> > > > /usr/obj/usr/src/tmp/usr/lib/libl.a: could not read symbols: Bad value^M
> > > > *** [snmp_hast.so.6] Error code 1^M
> > > 
> > > 
> > > Hmm. It seems clang optimizes something away that gcc doesn't.  When
> > > building with clang the problem doesn't show up.
> > 
> > Sorry for breaking build. I am always running tinderbox before commits
> > like this, which did not help this time. Now I will run it twice, with
> > both clang and gcc.
> > 
> > Thank you for r250394. I will investigate how to fix this. Any
> > suggestions are highly appreciated.
> 
> Why do you need libl.a ? If only for yywrap(), then re-implementing
> it for the module seems to be trivial.

Yes, it is like so. Thanks! I am now considering two possible
solutions:

1) As it is suggested above, add trivial yywrap() and link without -ll.

2) Add '%option noyywrap' to hastd/token.l, and link hastd, hastctl
and snmp_hast without -ll (it looks like yywrap is needed only when
parsing more than one file).

See the patches below. It looks both solutions work for me and I
personally prefer the second one.

-- 
Mikolaj Golub

--a8Wt8u1KmwUX3Y2C
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: inline; filename="snmp_hast.ll.1.patch"

Index: usr.sbin/bsnmpd/modules/snmp_hast/yywrap.c
===================================================================
--- usr.sbin/bsnmpd/modules/snmp_hast/yywrap.c	(revision 0)
+++ usr.sbin/bsnmpd/modules/snmp_hast/yywrap.c	(working copy)
@@ -0,0 +1,8 @@
+int yywrap(void);
+
+int
+yywrap(void)
+{
+
+	return (1);
+}

Index: usr.sbin/bsnmpd/modules/snmp_hast/Makefile
===================================================================
--- usr.sbin/bsnmpd/modules/snmp_hast/Makefile	(revision 250379)
+++ usr.sbin/bsnmpd/modules/snmp_hast/Makefile	(working copy)
@@ -12,7 +12,7 @@ SRCS+=	nv.c
 SRCS+=	parse.y pjdlog.c
 SRCS+=	proto.c proto_common.c proto_uds.c
 SRCS+=	token.l
-SRCS+=	y.tab.h
+SRCS+=	y.tab.h yywrap.c
 MAN=	snmp_hast.8
 
 NO_WFORMAT=
@@ -30,7 +30,7 @@ CFLAGS+=-DYY_NO_INPUT
 CFLAGS+= -DSNMPTREE_TYPES
 
 DPADD=	${LIBL} ${LIBUTIL}
-LDADD=	-ll -lutil
+LDADD=	-lutil
 
 XSYM=	begemotHast
 DEFS=	${MOD}_tree.def

--a8Wt8u1KmwUX3Y2C
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: inline; filename="hast.ll.1.patch"

Index: sbin/hastd/Makefile
===================================================================
--- sbin/hastd/Makefile	(revision 250377)
+++ sbin/hastd/Makefile	(working copy)
@@ -31,7 +31,7 @@ CFLAGS+=-DINET6
 .endif
 
 DPADD=	${LIBGEOM} ${LIBBSDXML} ${LIBSBUF} ${LIBL} ${LIBPTHREAD} ${LIBUTIL}
-LDADD=	-lgeom -lbsdxml -lsbuf -ll -lpthread -lutil
+LDADD=	-lgeom -lbsdxml -lsbuf -lpthread -lutil
 .if ${MK_OPENSSL} != "no"
 DPADD+=	${LIBCRYPTO}
 LDADD+=	-lcrypto
Index: sbin/hastd/token.l
===================================================================
--- sbin/hastd/token.l	(revision 250377)
+++ sbin/hastd/token.l	(working copy)
@@ -46,6 +46,7 @@ int lineno;
 
 %option noinput
 %option nounput
+%option noyywrap
 
 %%
 control			{ DP; return CONTROL; }
Index: sbin/hastctl/Makefile
===================================================================
--- sbin/hastctl/Makefile	(revision 250377)
+++ sbin/hastctl/Makefile	(working copy)
@@ -32,8 +32,8 @@ CFLAGS+=-DINET6
 CFLAGS+=-DYY_NO_UNPUT
 CFLAGS+=-DYY_NO_INPUT
 
-DPADD=	${LIBL} ${LIBUTIL}
-LDADD=	-ll -lutil
+DPADD=	${LIBUTIL}
+LDADD=	-lutil
 .if ${MK_OPENSSL} != "no"
 DPADD+=	${LIBCRYPTO}
 LDADD+=	-lcrypto
Index: usr.sbin/bsnmpd/modules/snmp_hast/Makefile
===================================================================
--- usr.sbin/bsnmpd/modules/snmp_hast/Makefile	(revision 250379)
+++ usr.sbin/bsnmpd/modules/snmp_hast/Makefile	(working copy)
@@ -29,8 +29,8 @@ CFLAGS+=-DYY_NO_UNPUT
 CFLAGS+=-DYY_NO_INPUT
 CFLAGS+= -DSNMPTREE_TYPES
 
-DPADD=	${LIBL} ${LIBUTIL}
-LDADD=	-ll -lutil
+DPADD=	${LIBUTIL}
+LDADD=	-lutil
 
 XSYM=	begemotHast
 DEFS=	${MOD}_tree.def

--a8Wt8u1KmwUX3Y2C--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130509100533.GC94250>