Date: Sat, 2 Nov 2002 11:18:17 -0800 From: Steve Kargl <sgk@troutmask.apl.washington.edu> To: Alfred Perlstein <alfred@FreeBSD.ORG> Cc: cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: Re: cvs commit: src/lib/libc/stdio findfp.c Message-ID: <20021102191817.GB28971@troutmask.apl.washington.edu> In-Reply-To: <20021102183444.GM24139@elvis.mu.org> References: <200210310154.g9V1sRiC017013@repoman.freebsd.org> <20021031015818.GU24139@elvis.mu.org> <20021102180404.GA28779@troutmask.apl.washington.edu> <20021102183444.GM24139@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Nov 02, 2002 at 10:34:44AM -0800, Alfred Perlstein wrote:
> * Steve Kargl <sgk@troutmask.apl.washington.edu> [021102 10:04] wrote:
>> On Wed, Oct 30, 2002 at 05:58:18PM -0800, Alfred Perlstein wrote:
>>> * Alfred Perlstein <alfred@FreeBSD.org> [021030 17:55] wrote:
>>>> alfred 2002/10/30 17:54:27 PST
>>>>
>>>> Modified files:
>>>> lib/libc/stdio findfp.c
>>>> Log:
>>>> Make __sF static. This can not be allowed to exist in 5.x.
>>>
>>> My suggestion is to use:
>>> portupgrade -aF
>>> after an installworld and things will be fine.
>>>
>>> If this is truly too upsetting for some then I recommend that you
>>> submit a patch to add a make.conf knob for your special case.
I've done this. See below for the diff. I've defined a
COMPAT4_STDIO variable that can be added to CFLAGS depending
on the WANT_COMPAT4_STDIO make.conf knob.
>>
>> This breaks commercial third party software, which
>> cannot be easily updated by portupgrade -aF.
>>
>> kargl[206] f95 -o a a.f90
>> /usr/local/lib/NAGWare/libf96.so: undefined reference to `__sF'
>> collect2: ld returned 1 exit status
>>
>
> The simplest fix is to simply locally revert my change until
> this vendor supplies a binary for 5.x. Either that or compile
> your code on a 4.x system or in such a way that it links against
> libc.so.4.
>
NAG's last release was for FreeBSD 4.2. It may be awhile
before a 5.x binary is released.
--
Steve
--- lib/libc/stdio/findfp.c.orig Sat Nov 2 10:14:36 2002
+++ lib/libc/stdio/findfp.c Sat Nov 2 10:44:10 2002
@@ -69,11 +69,15 @@
static struct __sFILEX __sFX[3];
-static FILE __sF[3] = {
+#ifndef COMPAT4_STDIO
+static
+#endif
+FILE __sF[3] = {
std(__SRD, STDIN_FILENO),
std(__SWR, STDOUT_FILENO),
std(__SWR|__SNBF, STDERR_FILENO)
};
+
/*
* The following kludge is done to ensure enough binary compatibility
--- lib/libc/stdio/Makefile.inc.orig Sat Nov 2 10:28:14 2002
+++ lib/libc/stdio/Makefile.inc Sat Nov 2 10:34:23 2002
@@ -4,6 +4,10 @@
# stdio sources
.PATH: ${.CURDIR}/../libc/stdio
+.if WANT_COMPAT4_STDIO
+CFLAGS+=-DCOMPAT4_STDIO
+.endif
+
SRCS+= _flock_stub.c asprintf.c clrerr.c fclose.c fdopen.c feof.c ferror.c \
fflush.c fgetc.c fgetln.c fgetpos.c fgets.c fgetwc.c fgetws.c \
fileno.c findfp.c flags.c fopen.c fprintf.c fpurge.c fputc.c fputs.c \
--- share/examples/etc/make.conf.orig Sat Nov 2 10:48:43 2002
+++ share/examples/etc/make.conf Sat Nov 2 10:55:36 2002
@@ -171,6 +171,14 @@
#COMPAT3X= yes
#COMPAT4X= yes
#
+# If you have a commercial application for a FreeBSD 4.x that cannot easily
+# be updated to a FreeBSD 5.x application and it generates the error message
+# "undefined reference to `__sF'", then you can uncomment the following
+# line to build a libc compatibility with FreeBSD 4.x. NOTE, THIS SHOULD BE
+# USED AS A LAST RESORT.
+#
+#WANT_COMPAT4_STDIO= yes
+#
#
# Default format for system documentation, depends on your printer.
# Set this to "ascii" for simple printers or screen
--- share/man/man5/make.conf.5.orig Sat Nov 2 10:56:04 2002
+++ share/man/man5/make.conf.5 Sat Nov 2 11:03:43 2002
@@ -605,6 +605,14 @@
and above is known to trigger known optimizer bugs at various
times \(em this is worse on the Alpha platform.
The value assigned is the highest optimization value used.
+.It Va WANT_COMPAT4_STDIO
+.Pq Vt bool
+If you have a commercial application for a FreeBSD 4.x that cannot easily
+be updated to a FreeBSD 5.x application and it generates the error message
+.Dq undefined reference to `__sF' ,
+then you can uncomment the following line to build a libc compatibility with
+FreeBSD 4.x.
+.Em NOTE, THIS SHOULD BE USED AS A LAST RESORT.
.El
.Pp
The following list provides a name and short description for variables
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021102191817.GB28971>
