From owner-freebsd-current Tue Sep 1 19:38:41 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA18383 for freebsd-current-outgoing; Tue, 1 Sep 1998 19:38:41 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from rf900.physics.usyd.edu.au (rf900.physics.usyd.edu.au [129.78.129.109]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA18377 for ; Tue, 1 Sep 1998 19:38:37 -0700 (PDT) (envelope-from dawes@rf900.physics.usyd.edu.au) Received: (from dawes@localhost) by rf900.physics.usyd.edu.au (8.8.5/8.8.2) id MAA21815; Wed, 2 Sep 1998 12:37:08 +1000 (EST) Message-ID: <19980902123708.A21469@rf900.physics.usyd.edu.au> Date: Wed, 2 Sep 1998 12:37:08 +1000 From: David Dawes To: Joachim Kuebart , Ollivier Robert Cc: freebsd-current@FreeBSD.ORG Subject: Re: XFree86 and ELF Mail-Followup-To: Joachim Kuebart , Ollivier Robert , freebsd-current@FreeBSD.ORG References: <19980901204155.A18859@keltia.freenix.fr> <199809012148.XAA06237@yacht.domestic.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.91.1i In-Reply-To: <199809012148.XAA06237@yacht.domestic.de>; from Joachim Kuebart on Tue, Sep 01, 1998 at 11:48:57PM +0200 Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Tue, Sep 01, 1998 at 11:48:57PM +0200, Joachim Kuebart wrote: >Ollivier Robert wrote: >> According to Joachim Kuebart: >> > --- config/cf/bsdLib.rules.orig Mon Aug 31 18:03:14 1998 >> > +++ config/cf/bsdLib.rules Tue Sep 1 01:15:44 1998 >> > @@ -153,7 +153,7 @@ >> > #define ShLibIncludeFile >> > #endif >> > #ifndef SharedLibraryLoadFlags >> > -#define SharedLibraryLoadFlags -shared -Wl,-rpath,$(USRLIBDIR) >> > +#define SharedLibraryLoadFlags -shared -rpath $(USRLIBDIR) >> >> ...and... >> >> > #ifndef PositionIndependentCFlags >> > #define PositionIndependentCFlags -fPIC >> > @@ -213,7 +213,7 @@ >> > Concat(lib,libname.so.rev): solist @@\ >> > $(RM) $@~ @@\ >> > SONAME=`echo $@ | sed 's/\.[^\.]*$$//'`; \ @@\ >> > - (cd down; $(CC) -o up/$@~ $(SHLIBLDFLAGS) -Wl,-soname,$$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ >> > + (cd down; $(LD) -o up/$@~ $(SHLIBLDFLAGS) -soname $$SONAME solist $(REQUIREDLIBS) BaseShLibReqs); \ @@\ >> >> Why ? Using "gcc" to build the shared lib should work the same as using >> "ld". I don't understand the reason... > >This isn't the only place where SharedLibraryLoadFlags aka. >SHLIBLDFLAGS get used. In most places they are used with $(LD) which >barf on the -Wl construction. I changed this one usage instead of >changing three other places. Can I ask a naive question? Is there any reason the FreeBSD/ELF rules need to be different from those used for Linux/ELF (see lnxLib.cf)? Also, please keep in mind that bsdLib.rules is used for NetBSD and OpenBSD too. >> > -#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(linux) || defined(__OS2ELF__)) && defined(__ELF__) >> > +#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(__FreeBSD__) || defined(linux) || defined(__OS2ELF__)) && defined(__ELF__) >> > #define GLNAME(a) a >> > #else >> > #define GLNAME(a) CONCAT(_,a) >> >> Should not be necessary if you modify GccAsmFlags to include -D__ELF__ in >> FreeBSD.cf. > >If you look at the condition you will see that __ELF__ only gets >checked on specific operating systems. I made FreeBSD one of the >operating systems where __ELF__ is considered relevant. My preference here is to remove the OS checks, which should simplify that #ifdef a bit. >> > #if defined(__GNUC__) && defined(__i386__) >> > static __inline__ unsigned int reverse_bitorder(data) { >> > -#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(linux) || defined (__OS2ELF__)) && defined(__ELF__) >> > +#if defined(Lynx) || (defined(SYSV) || defined(SVR4)) && !defined(ACK_ASSEMBLER) || (defined(__FreeBSD__) || defined(linux) || defined (__OS2ELF__)) && defined(__ELF__) >> > __asm__( >> > "movl $0,%%ecx\n" >> > "movb %%al,%%cl\n" >> >> Same here. gcc already defines __ELF__. > >gcc does define __ELF__, but the XFree86 makefiles use the following >sequence to assemble .s files: > > $(RM) -f $(name).o > $(CPP) -D__ELF__ $(name).s > $(name).i > $(AS) -o $(name).o $(name).i > >Because cpp gets called "manually", __ELF__ needs to be set manually, >too. :-( Right. I see you submitted a patch to XFree86 -- thanks. Maybe it would be a good idea to wait a little while until everything is resolved, then send another patch? I don't have a box running 3.0 ELF yet, but I'm planning to set one up in the next week or two. David To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message