From owner-freebsd-hackers@FreeBSD.ORG Fri Jul 2 21:54:29 2010 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 968D1106564A for ; Fri, 2 Jul 2010 21:54:29 +0000 (UTC) (envelope-from herron.philip@googlemail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 286668FC13 for ; Fri, 2 Jul 2010 21:54:28 +0000 (UTC) Received: by wyb34 with SMTP id 34so2365591wyb.13 for ; Fri, 02 Jul 2010 14:54:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=cju5as+CsoJa6I7OvpCD+si+6rFDTOqx4MNkJlSRpBc=; b=nZ3WascP3l/0sBtM39sRWdh3TcRA+V7ciLF8vcFjnH/xE1pD96khuFJpzLNuWFUdCn LiavWVyWBEoQ+HWX5phic1VZhs+lntVf1ce++4bsddOQRe4TfQINp1XxpoIGfaq9voJ5 Fa6qsFcf4NvthgP5zEsNbkjH04MN1puU8rCIg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=iDsUgSBux5bpPvIoSWupwxFBdCF1ilgqlBIfJDunAJ1A70dbtS5PBZy+8BHgPWoIn4 B33WqztAEx7i1+K2g/YsPUVUyDk42FhIWIwDgu0Vd8uYNmjJySuoP4/0wl+qKbLSuzxr cwqM3mg1t256DcXvAiyLQ1sbJtVsHPVq03ya0= MIME-Version: 1.0 Received: by 10.227.128.213 with SMTP id l21mr805219wbs.166.1278107660915; Fri, 02 Jul 2010 14:54:20 -0700 (PDT) Sender: herron.philip@googlemail.com Received: by 10.216.13.9 with HTTP; Fri, 2 Jul 2010 14:54:20 -0700 (PDT) In-Reply-To: References: Date: Fri, 2 Jul 2010 22:54:20 +0100 X-Google-Sender-Auth: H27I7jLcXAjznOKeoU0Wl3NynW0 Message-ID: From: Philip Herron To: Matthew Fleming Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-hackers@freebsd.org Subject: Re: Using lex in a shared library X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jul 2010 21:54:29 -0000 On 2 July 2010 22:51, Matthew Fleming wrote: > I have the following Makefile for a shared library at $work: > > ISI_TOP=3D =A0 =A0 =A0 =A0../.. > > LIB=3D =A0 =A0 =A0 =A0 =A0 =A0isi_date > SHLIB_MAJOR=3D =A0 =A01 > SHLIB_MINOR=3D =A0 =A00 > SRCS=3D =A0 =A0 =A0 =A0 =A0 date.c date_parser.new.c lex.yy.c > INCS=3D =A0 =A0 =A0 =A0 =A0 date.h > INCLUDEDIR=3D =A0 =A0 /usr/include/isi_date > > YFLAGS+=3D =A0 =A0 =A0 =A0-vt > FLEX=3D =A0 =A0 =A0 =A0 =A0 /usr/bin/flex > LDADD=3D =A0 =A0 =A0 =A0 =A0-ll > > CLEANFILES+=3D =A0 =A0date_parser.new.c y.tab.h y.tab.c lex.yy.c y.output= \ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0check_date.log test > > lex.yy.c: date_lexer.new.l > =A0 =A0 =A0 =A0${FLEX} $> > > CFLAGS+=3D =A0 =A0 =A0 =A0-I${.CURDIR} > #CFLAGS+=3D =A0 =A0 =A0 -g > > .include "${ISI_TOP}/isi.lib.mk" > > > > This builds fine as on i386. =A0I'm trying to get all our user-space to > be 64-bit clean, and I run into an error when building on amd64: > > /data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/bin/ld: > /data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/lib/libl.a= (libyywrap.o): > relocation R_X86_64_32 can not be used when making a shared object; > recompile with -fPIC > /data/sb/BR_MDF_64CLEAN/obj/data/sb/BR_MDF_64CLEAN/src/tmp/usr/lib/libl.a= : > could not read symbols: Bad value > > The following diff makes the compile work, but I have no idea (yet) > whether this will run, if it's the right solution, etc. > > > Index: usr.bin/lex/lib/Makefile > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- usr.bin/lex/lib/Makefile =A0 =A0(revision 153343) > +++ usr.bin/lex/lib/Makefile =A0 =A0(working copy) > @@ -4,11 +4,16 @@ > > =A0LIB=3D =A0 =A0ln > =A0SRCS=3D =A0 libmain.c libyywrap.c > -NO_PIC=3D > +#NO_PIC=3D > > +SHLIB_MAJOR=3D =A0 1 > +SHLIB_MINOR=3D =A0 0 > + > =A0.if ${MK_INSTALLLIB} !=3D "no" > =A0LINKS=3D =A0${LIBDIR}/libln.a ${LIBDIR}/libl.a > =A0LINKS+=3D =A0 =A0 =A0 =A0${LIBDIR}/libln.a ${LIBDIR}/libfl.a > +LINKS+=3D =A0 =A0 =A0 =A0${LIBDIR}/libln.so ${LIBDIR}/libl.so > +LINKS+=3D =A0 =A0 =A0 =A0${LIBDIR}/libln${LIB_SUFFIX}.so ${LIBDIR}/libl$= {LIB_SUFFIX}.so > =A0.endif > > =A0.if ${MK_PROFILE} !=3D "no" > > > Thanks, > matthew > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org= " > Although maybe not helpful but have you considered using automake/libtool instead makes it so much simpler in my opinion. --Phil