From owner-freebsd-hackers@FreeBSD.ORG Fri Jul 2 22:31:47 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 AEE0B1065670 for ; Fri, 2 Jul 2010 22:31:47 +0000 (UTC) (envelope-from mdf356@gmail.com) Received: from mail-iw0-f182.google.com (mail-iw0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id 73B228FC0A for ; Fri, 2 Jul 2010 22:31:47 +0000 (UTC) Received: by iwn35 with SMTP id 35so1753009iwn.13 for ; Fri, 02 Jul 2010 15:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=tplUIfe28pliCQEz/sFuDLTQssUKveXRvU2aKpvvzbg=; b=ln09jSQoVvyx2sOgsSNpBYhD+5W3WkpNj+wcGNI/NFVbGNLsvM5x/YrP7RNeC/NSPh /yHNbWTvhGQtd5OKHocRnjYakbswSSe5Dd9GtVZ55hXETO/68omnMouo0E2INBIqqSLC F+R3kMN3Mc2eXHWH5DId1IVdl8m3j2bVFanXc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=pJ+mTPy8Xga/GAEHabI03/0t5phiVKjdmXlle+nemk3EHkXvngCFOdIgiSFZO2sOEf sCrzOo0w1bFMseMo7CYL4p2LPTUD+BHycYagK3EQlGpDy1lIIaGrnOAMoKle52SjXNu7 GCgJfPy7arCIQp1zHXEUmt6BAZ/9uLVlHabaM= MIME-Version: 1.0 Received: by 10.42.9.4 with SMTP id k4mr504056ick.72.1278109906798; Fri, 02 Jul 2010 15:31:46 -0700 (PDT) Received: by 10.42.5.78 with HTTP; Fri, 2 Jul 2010 15:31:46 -0700 (PDT) In-Reply-To: References: Date: Fri, 2 Jul 2010 15:31:46 -0700 Message-ID: From: Matthew Fleming To: Philip Herron 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 22:31:47 -0000 On Fri, Jul 2, 2010 at 2:54 PM, Philip Herron wrote: > 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.outpu= t \ >> =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" > > Although maybe not helpful but have you considered using > automake/libtool instead makes it so much simpler in my opinion. Instead of... ? Instead of this makefile? Thanks, matthew