Re: binutils symbol hiding and versioning (was Re: [PATCH] note the __sF change in src/UPDATING)

2002-11-12 Thread Terry Lambert
Loren James Rittle wrote:
 FYI, the libstdc++-v3 maintainers on the FSF side are only
 guaranteeing forward ABI compatibility of any sort if libstdc++.so is
 built with symbol versioning and symbol hiding.

FWIW: symbol versioning is incredibly broken.  It attempts to
do in UNIX what interface versioning does in Windows, through
the use of class factories accessed via IUnknown.  The point of
the exercise is to allow multiple simultaneous versions of an
interface to be exported by a single library.

The main reason this is bas is the same reason that Novell must,
in their SDK's, support interface versions all the way back to
NetWare 1.x: in order to hve the largest possible user base, a
software vendor would have to be stupid to write to anything
other than the lowest common denominator of interfaces: it's
really stupid to limit your customers to running NetWare 4.2 or
above, when there is still such a large installed base of 3.x,
4.0, and 4.1 versions of NetWare.  The only thing you do when
you do that is to disenfranchise postential customers for your
product.

Windows uses this approach because they do not have the concept
of shared object versioning; VCRTL32.DLL is VCRTL32.DLL, no
matter what, so a version change that permits old applications
to continue working is a the same DLL, plus extensions (since
there is no version in the file name,multiple versions can only
exist simultaneously if they exist in the same file).

It would be a very big mistake to actually utilize symbol name
versioning on a UNIX system, and buy into this model, even if
the idea was supported by the tools.  That Linux has bought into
the idea of using this is, frankly, Linux's problem, and they are
going to regret it in the future as much, or more, than they
regretted implementing shared library support in the SVR3.2 way,
of linking libraries to fixed locations, and carving up chunks
of the user virtual address space to implement them, back when
they first supported shared libraries.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: binutils symbol hiding and versioning (was Re: [PATCH] note the __sF change in src/UPDATING)

2002-11-12 Thread Terry Lambert
Loren James Rittle wrote:
  FWIW: symbol versioning is incredibly broken.  It attempts to
  do in UNIX what interface versioning does in Windows, through
  the use of class factories accessed via IUnknown.
 
 You might be absolutely correct in general.  However, please read
 http://gcc.gnu.org/onlinedocs/libstdc++/abi.txt .  It is clear that
 symbol versioning is not being used at all like you supposed it might
 have been (mis-)used.

To provide multiple API's in a single shared library image, to
avoid a number of images being necessary?

That's exactly how it's being used; they call it age gracefully,
but what that means is that multiple API versions remain supported
for a very, very long time, without having seperate libraries
involved.

Technically, the symbol decoration used in C++ is also in error;
it's there simply to avoid having to change the object file format
to accomodate interface attributes seperately from the symbol name
(just as adding an @@version name suffix does).  If this were
not ther, the linker could automatically create glue code for doing
argument coercion, and it would save a lot of code that currently
has to be supplied by programmers.


 FWIW: There is no concept of IUnknown or
 implementation factories (and, yes, I do understand those concepts) in
 how libstdc++.so (v3) is using symbol versioning.  I invite you to
 take a close look at how that library is actually using symbol hiding
 and versioning before you attempt to cast your judgment.  If you have
 informed comments, then please direction them to [EMAIL PROTECTED]
 not me personally (as a libstdc++-v3 maintainer, I will read them over
 there like all others).

I'm well aware of how it's used; the IUnknown reference was an
analogy; the document you refer to specifically states that it's
to avoid a proliferation of shared library files.  That's exactly
the purpose of IUnknown version information for class factories,
as well.

Part of the problem here is that GCC dropped the minor version
number from shared libraries in binutils, and FreeBSD and Linux
followed suit.  Now this turns out to be a mistake, and rather
than admitting the mistake, instead now we have more decoration
occurring in the symbol name to fake up another orthogonal namespace.

Traditional UNIX systems have minor versions on shared libraries
to address this, and bump major versions only if existing interfaces
change, not when interfaces are added (thus program foo linked
against lib.so.M.N works just fine against lib.so.M.N+K).

If you don't like the Microsoft DLL version analogy, a different
analogy is the Aztec C support for directories, by naming files
with their complete path, and treating the character / as a
path component seperator in order to achieve a namespace escape,
when the Mac FS didn't support directory hierarchies.

In all cases, what's happening is a namespace incursion in order to
permit coexistance of otherwise conflicting implementations.


 Short summation: We only mark the first version of the library that a
 new symbol is added.  E.g. there will never be [EMAIL PROTECTED] and also [EMAIL PROTECTED]
 The first release after an ELF library version number bump resets all
 tags to be the same.  As clearly documented, libstdc++.so (v3) will bump
 the major version number just like FreeBSD does on installed shared
 libraries to express other sorts of C++ compiler or library ABI change.

This still fails when the OS version does not bump each time the
compiler version bumps.  I guess this is OK, if you are a compiler
vendor, but less OK, when you are an OS vendor.  8-).


 If the system compiler of FreeBSD still wanted to install multiple
 versions of libstdc++.so (v3) with major number bumps for other
 reasons (because it is considered safer for compatibility by the
 system designers), that would be quite fine.  But completely ignoring
 the symbol hiding features will make the FreeBSD C++ system compiler
 and environment worse than the Linux version and worse than a g++
 installed from equivalent FSF sources IMHO (since we will leak all
 sorts of internal implementation symbols that are not suppose to
 influence user application link behavior).  Anyways, Alex was already
 going to look into trying this for the FreeBSD 5.0 system compiler so
 hopefully this will not be the case.

No, it will make it incompatible, which is rather annoying, but
it's an introduced incompatability that came from the compiler,
and we shouldn't pretend it isn't.

In any case, the issue was in attempting to prevent the exposure
of data interfaces, and symbols not part of the defined API; this
is still goinf to cause problems for the reasons this discussion
came up in the first place: other language compilers that need to
link against system libraries, and share implementation instances
so that they can be linked against foreign object files that use the
same underlying implementation.  For the purposes of this discussion,
that's the stdio implementation, as exposed 

binutils symbol hiding and versioning (was Re: [PATCH] note the __sF change in src/UPDATING)

2002-11-11 Thread Loren James Rittle
Doug Rabson wrote:
 In the windows world, all this is handled by having a strict list of explicit 
 symbol exports, either in the source code using syntax extensions or with a 
 file supplied to the linker. I'm not sure whether binutils supports this kind 
 of thing but it would allow us to cut down the set of symbols exported from 
 libc.so.

It does.  Proof by example: libstdc++.so and libgcc_s.so built from
sources included with FSF gcc 3.1 and all forward releases support
this feature on FreeBSD.  It works fine on FreeBSD 4.7 and 5.0 (with
system copy of binutils in both cases).  I don't know the exact
version of binutils that added this feature but it was before
2.12[.2].  The ld features being used are both symbol versioning and
symbol hiding.

(Speaking of which, I am reminded to insert this advisement of a
related minor issue with the current system compiler:)

libstdc++.so as built along with the system compiler does not make use
of these features yet on FreeBSD 5.0 since the system-static Makefiles
to build the compiler-related libraries have not been updated to
account for the feature and many extra symbols are exported as a
result.  libstdc++.so uses this linker features to present a more
stable ABI, no matter the concrete implementation under the hood of
the library.  I am hoping that the gcc maintainer on the FreeBSD
system-side will reconsider this issue before 5.0 is released.

FYI, the libstdc++-v3 maintainers on the FSF side are only
guaranteeing forward ABI compatibility of any sort if libstdc++.so is
built with symbol versioning and symbol hiding.  Also, I believe it
may be an error to even ship a libstdc++.so unless it is linked
against libgcc_s.so (and it currently is not so linked since we don't
build libgcc_s.so).  As I understand it, if a user of the system
compiler attempts to build a stand-alone C++ shared library (i.e. no
link against libstdc++.so) but then later uses it in an application
that also uses libstdc++.so, EH will fail unless libgcc_s.so was
properly built and used.

I understand that FreeBSD circa 1996(?) attempted to use a shared
libgcc.so; libgcc_s.so is similar but different.  For one libgcc_s.so
is only part of what was libgcc.a; i.e. all code still links against
libgcc.a when libgcc_s.so is built and used properly.

Regards,
Loren

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-10 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Sheldon Hearn [EMAIL PROTECTED] writes:
: If the final word on this whole issue is You can't run binaries
: compiled for 4.x-RELEASE on 5.x-RELEASE then we should start puckering
: up.
: 
: Developers tend to remember these things and you don't have to screw
: them too many times before they remove FreeBSD downloads from their web
: sites and replace them with a brief message explaining that We don't
: have time to cope with FreeBSD's disregard for backward compatibility.
: 
: At that point, whining about how they shouldn't have been fiddling with
: these symbols in the first place is bound to be a fruitless exercise.

This is why I put __sF back, and made sure that 4.x had the right
'forward compatible' libraries.  It is also why I backported the
__std{in,out,err}p symbols.  I hope that minor incompatibility within
a minor release is offset by __sF not being referencede by any more
libraries.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-09 Thread Sheldon Hearn
On (2002/11/08 18:13), Daniel Eischen wrote:

  The problem is that you cannot have 4.x packages and 5.x packages
  co-mingled on the same system.  that's what I'm trying to fix.  You'd
  have to rebuild the 4.x packages before they are fixed.
 
 I don't think this is a show-stopper.  Just recompile all your
 ports or use the pre-built 5.0 packages.

If we keep thinking only in terms of software for which source is
available, we'll soon find ourselves completely estranged from
commercial ventures and we can kiss any hope of serious vendor support
for FreeBSD good-bye.

If the final word on this whole issue is You can't run binaries
compiled for 4.x-RELEASE on 5.x-RELEASE then we should start puckering
up.

Developers tend to remember these things and you don't have to screw
them too many times before they remove FreeBSD downloads from their web
sites and replace them with a brief message explaining that We don't
have time to cope with FreeBSD's disregard for backward compatibility.

At that point, whining about how they shouldn't have been fiddling with
these symbols in the first place is bound to be a fruitless exercise.

Ciao,
Sheldon.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-09 Thread Doug Rabson
On Friday 08 November 2002 11:13 pm, Daniel Eischen wrote:
 On Fri, 8 Nov 2002, M. Warner Losh wrote:
  In message:
  [EMAIL PROTECTED]
 
  Daniel Eischen [EMAIL PROTECTED] writes:
  : All the ports are going to be rebuilt for the release anyways,
  : so this doesn't affect fresh installs, correct?  It is only a
  : problem when mixing older 4.x and 5.0 libraries/binaries with
  : __sF-free libc (if I understand things correctly).
 
  The problem is that you cannot have 4.x packages and 5.x packages
  co-mingled on the same system.  that's what I'm trying to fix. 
  You'd have to rebuild the 4.x packages before they are fixed.

 I don't think this is a show-stopper.  Just recompile all your
 ports or use the pre-built 5.0 packages.

  : This is 5.0; it is a major release and there will be some flies
  : in the ointment.  I say bite the bullet now -- don't wait.
  : If we want to provide an optional compatability hack to libc
  : so that folks can compile it with __sF support, then I think
  : that is better than leaving __sF in the release, perhaps
  : with a mktemp(3)-like warning if possible (?).
 
  You'd need a run-time warning for this to be effective.  I'm not
  sure that ld.so can do this right now.

 Could you put __sF in it's own file, and put the error in
 a .init section?  We don't care about static binaries, right?
 They shouldn't have a problem.

  This is not a fly in the pointment, but rather a major
  incompatibility that makes it impossible to have a reasonable mix.

 If it's really a hassle for folks, then just provide the
 optional compatability hack and make them rebuild libc.
 Or provide a pre-built version that doesn't get installed
 by default.

So what you are saying, basically, is that we should ship a release, for 
the first time ever, which can't run old binaries. Sorry, that isn't 
acceptable. The correct and robust way of doing things is to stop 
creating binaries (in both 4.x and 5.x) that reference __sF, then wait 
a full release cycle for the change to propagate. We can then remove 
the symbol in 6.x. 

In general, its a very poor idea to simply remove a feature that was 
supported in the last release of a package. The normal route is to 
deprecate (but still support) the feature in one release and remove it 
in the next.

-- 
Doug Rabson Mail:  [EMAIL PROTECTED]
Phone: +44 20 8348 6160



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-09 Thread Daniel Eischen
On Sat, 9 Nov 2002, Doug Rabson wrote:

 On Friday 08 November 2002 11:13 pm, Daniel Eischen wrote:
  On Fri, 8 Nov 2002, M. Warner Losh wrote:
   This is not a fly in the pointment, but rather a major
   incompatibility that makes it impossible to have a reasonable mix.
 
  If it's really a hassle for folks, then just provide the
  optional compatability hack and make them rebuild libc.
  Or provide a pre-built version that doesn't get installed
  by default.
 
 So what you are saying, basically, is that we should ship a release, for 
 the first time ever, which can't run old binaries. Sorry, that isn't 
 acceptable. The correct and robust way of doing things is to stop 
 creating binaries (in both 4.x and 5.x) that reference __sF, then wait 
 a full release cycle for the change to propagate. We can then remove 
 the symbol in 6.x. 

If you put an optional compatibility hack in libc, then folks
can still use it, plus they will be informed that it is going
away at some point.  I don't think removing it from stdio.h
is good enough.  Unless there's a way of putting out an error
message at run-time, we need some other way of being a little
bit of a nuisance.

 In general, its a very poor idea to simply remove a feature that was 
 supported in the last release of a package. The normal route is to 
 deprecate (but still support) the feature in one release and remove it 
 in the next.

Do kld's from 4.x work on -current?  Just curious -- I don't really
know.

-- 
Dan Eischen



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-09 Thread Doug Rabson
On Saturday 09 November 2002 4:28 pm, Daniel Eischen wrote:
 On Sat, 9 Nov 2002, Doug Rabson wrote:
  On Friday 08 November 2002 11:13 pm, Daniel Eischen wrote:
   On Fri, 8 Nov 2002, M. Warner Losh wrote:
This is not a fly in the pointment, but rather a major
incompatibility that makes it impossible to have a reasonable
mix.
  
   If it's really a hassle for folks, then just provide the
   optional compatability hack and make them rebuild libc.
   Or provide a pre-built version that doesn't get installed
   by default.
 
  So what you are saying, basically, is that we should ship a
  release, for the first time ever, which can't run old binaries.
  Sorry, that isn't acceptable. The correct and robust way of doing
  things is to stop creating binaries (in both 4.x and 5.x) that
  reference __sF, then wait a full release cycle for the change to
  propagate. We can then remove the symbol in 6.x.

 If you put an optional compatibility hack in libc, then folks
 can still use it, plus they will be informed that it is going
 away at some point.  I don't think removing it from stdio.h
 is good enough.  Unless there's a way of putting out an error
 message at run-time, we need some other way of being a little
 bit of a nuisance.

I don't see the need for this. We aren't supporting the original broken 
API (i.e. __sF in stdio.h). We do need to support the broken ABI for 
another release cycle otherwise we break everyone who tries to upgrade 
from 4.x to 5.x, which is a bad thing.


  In general, its a very poor idea to simply remove a feature that
  was supported in the last release of a package. The normal route is
  to deprecate (but still support) the feature in one release and
  remove it in the next.

 Do kld's from 4.x work on -current?  Just curious -- I don't really
 know.

The kernel ABI is hopeless. It changes almost daily :-(. At one time, I 
thought I could change this but these days, I don't think anyone except 
me cares about having a stable ABI in the kernel.

-- 
Doug Rabson Mail:  [EMAIL PROTECTED]
Phone: +44 20 8348 6160



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-09 Thread Terry Lambert
Doug Rabson wrote:
 The kernel ABI is hopeless. It changes almost daily :-(. At one time, I
 thought I could change this but these days, I don't think anyone except
 me cares about having a stable ABI in the kernel.

I care.  It's almost the most important thing to be able to build
anything of value.

But a stable API is required for a stable ABI.  It does absolutely
no good to build a cathedral, if, by the time you are done, the
roads have moved so that there is no road which leads to it.

The next most important thing is to document it, so that people
can use it.  All coordinates are expressed in logitude and
lattitute.  North is that way.  No cows are permitted in the city
limits.  All cats and dogs which are uncollared and tagged will be
captured and spayed and neutered.

If you can't agree on a coordinate system (OLDCARD?  NEWCARD?
REDCARD? BLUECARD?), then at least agree to get rid of data
interfaces; today, people are adding to them with sysctl exposured
of structs, as if it's not going to be a problem.  It's a problem.
It's one thing to say The cathedral is a about a mile yonder of of
Johnson's barn, just down the road a piece from Smithy, which is
about a league yonder, and then follow the creek for a spell, and
something else entirely to say The cathedral is at 117 East 32st
street; this is 12421 West 1st street.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-09 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Terry Lambert [EMAIL PROTECTED] writes:
: If you can't agree on a coordinate system (OLDCARD?  NEWCARD?
: REDCARD? BLUECARD?), then at least agree to get rid of data
: interfaces;

Ironically, NEWCARD and OLDCARD are driver compatible because it
doesn't use complex data types...

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Doug Rabson
On Thursday 07 November 2002 9:42 pm, Tim Kientzle wrote:
 Terry Lambert asked:
  Any chance we could get rid of all externally visable symbols that
  are not defined as being there by some standard, and not just __sF,
  since we are breaking the FORTRAN compiler and other third party
  code already?

 This cannot be entirely done if you still want to
 manage library bloat.  In short, library routines
 have shared interfaces between them---common variables
 or common functions---that are internal to the library
 and should not be used by applications.

 To avoid this, you would have to bundle library functions
 together, which causes bloat.  Worse, you would have to
 avoid or drastically limit your use of macros.  (Any
 macro that uses one of these internal symbols generates
 a dependency in the compiled application.)

 It _would_ be a good idea to document any internal library
 symbols used by macros.  Removing such symbols is a
 good way to break existing compiled applications.

 Library design involves a lot of tradeoffs.

In the windows world, all this is handled by having a strict list of explicit 
symbol exports, either in the source code using syntax extensions or with a 
file supplied to the linker. I'm not sure whether binutils supports this kind 
of thing but it would allow us to cut down the set of symbols exported from 
libc.so.

-- 
Doug Rabson Mail:  [EMAIL PROTECTED]
Phone: +44 20 8348 6160



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Ray Kohler
 From [EMAIL PROTECTED] Fri Nov  8 02:45:04 2002
 Date: Fri, 08 Nov 2002 00:39:35 -0700 (MST)
 To: [EMAIL PROTECTED]
 Subject: Re: [PATCH] note the __sF change in src/UPDATING
 From: M. Warner Losh [EMAIL PROTECTED]

 In message: [EMAIL PROTECTED]
 Ray Kohler [EMAIL PROTECTED] writes:
 : Hear hear, I agree. There's no need to expose what ought to be
 : private data to the world, especially when we can get the additional
 : benefit here of letting us play with the implementation.

 -current already does this.  The problem is that we're trying to shoot
 the bad access in the head, and that is what is screwing people.  So
 the problem isn't that we're trying to export private data to the
 world.  Quite the contrary, we're trying to eliminate it and having
 growing pains.

Exactly. That's why I'm arguing against putting __sF back (or
adopting equally crapulent measures). Growing pains are a necessary evil.
(I also agree that we probably ought to staticize any other things of
this nature while we're at it and get the pain over with.)

- @

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Terry Lambert
Doug Rabson wrote:
  It _would_ be a good idea to document any internal library
  symbols used by macros.  Removing such symbols is a
  good way to break existing compiled applications.
 
  Library design involves a lot of tradeoffs.
 
 In the windows world, all this is handled by having a strict list of explicit
 symbol exports, either in the source code using syntax extensions or with a
 file supplied to the linker. I'm not sure whether binutils supports this kind
 of thing but it would allow us to cut down the set of symbols exported from
 libc.so.

Linux does it, so binutils supports it.  Linux does this for
kernel modules, and for libraries.

On Linux, glibc2 (or whatever it's called this morning) does not
export any symbols that it uses internally.

In the general case, it's better to eat some small amount of
overhead, than to export a data interface.

Note that data interfaces get in the way of the LGPL relink
clause for shared libraries.  For example, if you had a GPL'ed
program that was written in Modula 3 or FORTRAN 95, that had a
reference to the __sF, then distribution of that program would
demand distribution of the intermediate library source code,
where normally it would not be required, due to the relink
clause not being satisfied, since an attempt to link against
the 5.0 libc would fail.

Data interfaces are a pain in the ass legally, as well as making
your code not work.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Ray Kohler [EMAIL PROTECTED] writes:
:  From [EMAIL PROTECTED] Fri Nov  8 02:45:04 2002
:  Date: Fri, 08 Nov 2002 00:39:35 -0700 (MST)
:  To: [EMAIL PROTECTED]
:  Subject: Re: [PATCH] note the __sF change in src/UPDATING
:  From: M. Warner Losh [EMAIL PROTECTED]
: 
:  In message: [EMAIL PROTECTED]
:  Ray Kohler [EMAIL PROTECTED] writes:
:  : Hear hear, I agree. There's no need to expose what ought to be
:  : private data to the world, especially when we can get the additional
:  : benefit here of letting us play with the implementation.
: 
:  -current already does this.  The problem is that we're trying to shoot
:  the bad access in the head, and that is what is screwing people.  So
:  the problem isn't that we're trying to export private data to the
:  world.  Quite the contrary, we're trying to eliminate it and having
:  growing pains.
: 
: Exactly. That's why I'm arguing against putting __sF back (or
: adopting equally crapulent measures). Growing pains are a necessary evil.
: (I also agree that we probably ought to staticize any other things of
: this nature while we're at it and get the pain over with.)

Yes, but this is too painful.  If we were going to do this, the time
for the pain was 6-9 months ago, not just before the release.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Ray Kohler
 From [EMAIL PROTECTED] Fri Nov  8 11:30:05 2002
 Date: Fri, 08 Nov 2002 09:27:32 -0700 (MST)
 To: [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED]
 Subject: Re: [PATCH] note the __sF change in src/UPDATING
 From: M. Warner Losh [EMAIL PROTECTED]

 In message: [EMAIL PROTECTED]
 Ray Kohler [EMAIL PROTECTED] writes:
 :  From [EMAIL PROTECTED] Fri Nov  8 02:45:04 2002
 :  Date: Fri, 08 Nov 2002 00:39:35 -0700 (MST)
 :  To: [EMAIL PROTECTED]
 :  Subject: Re: [PATCH] note the __sF change in src/UPDATING
 :  From: M. Warner Losh [EMAIL PROTECTED]
 : 
 :  In message: [EMAIL PROTECTED]
 :  Ray Kohler [EMAIL PROTECTED] writes:
 :  : Hear hear, I agree. There's no need to expose what ought to be
 :  : private data to the world, especially when we can get the additional
 :  : benefit here of letting us play with the implementation.
 : 
 :  -current already does this.  The problem is that we're trying to shoot
 :  the bad access in the head, and that is what is screwing people.  So
 :  the problem isn't that we're trying to export private data to the
 :  world.  Quite the contrary, we're trying to eliminate it and having
 :  growing pains.
 : 
 : Exactly. That's why I'm arguing against putting __sF back (or
 : adopting equally crapulent measures). Growing pains are a necessary evil.
 : (I also agree that we probably ought to staticize any other things of
 : this nature while we're at it and get the pain over with.)

 Yes, but this is too painful.  If we were going to do this, the time
 for the pain was 6-9 months ago, not just before the release.

Yeah, that's true. I think unfortunately we ought to wait and do it
next cycle, but when we do, do it completely and as quickly as possible.

- @

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Daniel Eischen
On Fri, 8 Nov 2002, M. Warner Losh wrote:

 In message: [EMAIL PROTECTED]
 Ray Kohler [EMAIL PROTECTED] writes:
 :  From [EMAIL PROTECTED] Fri Nov  8 02:45:04 2002
 :  Date: Fri, 08 Nov 2002 00:39:35 -0700 (MST)
 :  To: [EMAIL PROTECTED]
 :  Subject: Re: [PATCH] note the __sF change in src/UPDATING
 :  From: M. Warner Losh [EMAIL PROTECTED]
 : 
 :  In message: [EMAIL PROTECTED]
 :  Ray Kohler [EMAIL PROTECTED] writes:
 :  : Hear hear, I agree. There's no need to expose what ought to be
 :  : private data to the world, especially when we can get the additional
 :  : benefit here of letting us play with the implementation.
 : 
 :  -current already does this.  The problem is that we're trying to shoot
 :  the bad access in the head, and that is what is screwing people.  So
 :  the problem isn't that we're trying to export private data to the
 :  world.  Quite the contrary, we're trying to eliminate it and having
 :  growing pains.
 : 
 : Exactly. That's why I'm arguing against putting __sF back (or
 : adopting equally crapulent measures). Growing pains are a necessary evil.
 : (I also agree that we probably ought to staticize any other things of
 : this nature while we're at it and get the pain over with.)
 
 Yes, but this is too painful.  If we were going to do this, the time
 for the pain was 6-9 months ago, not just before the release.

All the ports are going to be rebuilt for the release anyways,
so this doesn't affect fresh installs, correct?  It is only a
problem when mixing older 4.x and 5.0 libraries/binaries with
__sF-free libc (if I understand things correctly).

This is 5.0; it is a major release and there will be some flies
in the ointment.  I say bite the bullet now -- don't wait.
If we want to provide an optional compatability hack to libc
so that folks can compile it with __sF support, then I think
that is better than leaving __sF in the release, perhaps
with a mktemp(3)-like warning if possible (?).

-- 
Dan Eischen


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Steve Kargl
On Fri, Nov 08, 2002 at 12:17:00PM -0500, Daniel Eischen wrote:
 On Fri, 8 Nov 2002, M. Warner Losh wrote:
 
  
  Yes, but this is too painful.  If we were going to do this, the time
  for the pain was 6-9 months ago, not just before the release.
 
 All the ports are going to be rebuilt for the release anyways,
 so this doesn't affect fresh installs, correct?  It is only a
 problem when mixing older 4.x and 5.0 libraries/binaries with
 __sF-free libc (if I understand things correctly).
 
 This is 5.0; it is a major release and there will be some flies
 in the ointment.  I say bite the bullet now -- don't wait.

I agree with Dan.  Let's do it now.  My understanding is
that 5.0 will be an early adopter release and production
systems should run 4.7{8,9,..} until 5.1 is released.

To accomplish the change, I think we need to do:
  1. Install a complete set of 4.7 shared libs in COMPAT4X.
 This should porivde the necessary runtime compatibility
 with 4.x.
  2. Bump all shared library on 5.0.  This will get rid of
 any interdependencies among the libraries and it deals
 with the version number problems I detailed in the thread
 Ghost of __sF ... a couple a days ago.
  3. Put a big fat WARNING in src/UPDATING about the problem
  4. Put the same WARNING in /etc/motd, so people currently
 run -current will know to update their ports.
  5. Broadcast the WARNING to appropriate mailing lists and
 newsgroups.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Andrew Kenneth Milton
+---[ Steve Kargl ]--
|
| I agree with Dan.  Let's do it now.  My understanding is
| that 5.0 will be an early adopter release and production
| systems should run 4.7{8,9,..} until 5.1 is released.
| 
| To accomplish the change, I think we need to do:
|   1. Install a complete set of 4.7 shared libs in COMPAT4X.
|  This should porivde the necessary runtime compatibility
|  with 4.x.
|   2. Bump all shared library on 5.0.  This will get rid of
|  any interdependencies among the libraries and it deals
|  with the version number problems I detailed in the thread
|  Ghost of __sF ... a couple a days ago.
|   3. Put a big fat WARNING in src/UPDATING about the problem
|   4. Put the same WARNING in /etc/motd, so people currently
|  run -current will know to update their ports.
|   5. Broadcast the WARNING to appropriate mailing lists and
|  newsgroups.

6. Assume Crash Position.

-- 
Totally Holistic Enterprises Internet|  | Andrew Milton
The Internet (Aust) Pty Ltd  |  M:+61 416 022 411   |
ACN: 082 081 472 ABN: 83 082 081 472 |[EMAIL PROTECTED]| Carpe Daemon

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Steve Kargl
On Sat, Nov 09, 2002 at 04:16:11AM +1000, Andrew Kenneth Milton wrote:

 6. Assume Crash Position.
 
Thanks for your important contribution to a discussion
which is addressing a rather serious problem.  Here's the
important part of the Ghost... thread.

   The following 4.7 libs make reference to __sF.

   libalias.so.4libbz2.so.1   libc.so.4libc_r.so.4
   libcam.so.2  libcom_err.so.2   libcrypto.so.2   libdes.so.3
   libdevstat.so.2  libdialog.so.4libedit.so.3 libfetch.so.3
   libftpio.so.5libg2c.so.1   libgmp.so.3  libhistory.so.4
   libipsec.so.1libisc.so.1   libkdb.so.3  libkrb.so.3
   libkrb5.so.5 libkvm.so.2   libm.so.2libmp.so.3
   libncp.so.1  libncurses.so.5   libopie.so.2 libpam.so.1
   libpcap.so.2 libperl.so.3  libreadline.so.4 libroken.so.5
   libskey.so.2 libsmb.so.1   libssh.so.2  libstdc++.so.3
   libutil.so.3

Here's the fun part.  The following 5.0 libraries have the same
version number as their 4.x counterparts.  Try running a 4.x
app linked against one of these libaries on a 5.0 machine.  You
should also note that this list may not be complete list of
libraries suffering this problem.

libalias.so.4libbz2.so.1   libcam.so.2  libcom_err.so.2
libcrypto.so.2   libdes.so.3   libdialog.so.4   libfetch.so.3
libftpio.so.5libg2c.so.1   libhistory.so.4  libipsec.so.1
libisc.so.1  libkvm.so.2   libm.so.2libncp.so.1
libncurses.so.5  libopie.so.2  libpcap.so.2 libreadline.so.4
libsmb.so.1  libssh.so.2   libutil.so.3

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Daniel Eischen [EMAIL PROTECTED] writes:
: All the ports are going to be rebuilt for the release anyways,
: so this doesn't affect fresh installs, correct?  It is only a
: problem when mixing older 4.x and 5.0 libraries/binaries with
: __sF-free libc (if I understand things correctly).

The problem is that you cannot have 4.x packages and 5.x packages
co-mingled on the same system.  that's what I'm trying to fix.  You'd
have to rebuild the 4.x packages before they are fixed.

: This is 5.0; it is a major release and there will be some flies
: in the ointment.  I say bite the bullet now -- don't wait.
: If we want to provide an optional compatability hack to libc
: so that folks can compile it with __sF support, then I think
: that is better than leaving __sF in the release, perhaps
: with a mktemp(3)-like warning if possible (?).

You'd need a run-time warning for this to be effective.  I'm not sure
that ld.so can do this right now.

This is not a fly in the pointment, but rather a major incompatibility
that makes it impossible to have a reasonable mix.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: On Fri, Nov 08, 2002 at 12:17:00PM -0500, Daniel Eischen wrote:
:  On Fri, 8 Nov 2002, M. Warner Losh wrote:
:  
:   
:   Yes, but this is too painful.  If we were going to do this, the time
:   for the pain was 6-9 months ago, not just before the release.
:  
:  All the ports are going to be rebuilt for the release anyways,
:  so this doesn't affect fresh installs, correct?  It is only a
:  problem when mixing older 4.x and 5.0 libraries/binaries with
:  __sF-free libc (if I understand things correctly).
:  
:  This is 5.0; it is a major release and there will be some flies
:  in the ointment.  I say bite the bullet now -- don't wait.
: 
: I agree with Dan.  Let's do it now.  My understanding is
: that 5.0 will be an early adopter release and production
: systems should run 4.7{8,9,..} until 5.1 is released.

That's not a viable option.  Even if 5.0 is an early adapter release,
then that would argue for keeping __sF in libc to aid in the
transition.

: To accomplish the change, I think we need to do:
:   1. Install a complete set of 4.7 shared libs in COMPAT4X.
:  This should porivde the necessary runtime compatibility
:  with 4.x.

That's not true.  You can't mix and match 4.x and 5.x packages right now.

:   2. Bump all shared library on 5.0.  This will get rid of
:  any interdependencies among the libraries and it deals
:  with the version number problems I detailed in the thread
:  Ghost of __sF ... a couple a days ago.

Not a viable option.  Unless you have patches that do this properly
for ports, where we are getting screwed now.

:   3. Put a big fat WARNING in src/UPDATING about the problem

Been there, done that, didn't help.

:   4. Put the same WARNING in /etc/motd, so people currently
:  run -current will know to update their ports.
:   5. Broadcast the WARNING to appropriate mailing lists and
:  newsgroups.

Been there, done that, didn't help.

So in short, these plans won't help anything :-(.

My plan is as follows:

1) Restore __sF to libc for 5.0.
2) Fix 4.x binaries so that __sF isn't referened in new
   binaries.  This should have been done in Aug 2001, but
   wasn't.

Depending on how things go, __sF will be removed in 5.1 or 5.2 after
we have the transition period we had originally planned for 4.x, but
implemented a year ago.

Warner


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: Here's the fun part.  The following 5.0 libraries have the same
: version number as their 4.x counterparts.  Try running a 4.x
: app linked against one of these libaries on a 5.0 machine.  You
: should also note that this list may not be complete list of
: libraries suffering this problem.
: 
: libalias.so.4libbz2.so.1   libcam.so.2  libcom_err.so.2
: libcrypto.so.2   libdes.so.3   libdialog.so.4   libfetch.so.3
: libftpio.so.5libg2c.so.1   libhistory.so.4  libipsec.so.1
: libisc.so.1  libkvm.so.2   libm.so.2libncp.so.1
: libncurses.so.5  libopie.so.2  libpcap.so.2 libreadline.so.4
: libsmb.so.1  libssh.so.2   libutil.so.3

You've also not listed all the package binaries that have similar
problems.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Terry Lambert
Andrew Kenneth Milton wrote:
 +---[ Steve Kargl ]--
 |
 | I agree with Dan.  Let's do it now.  My understanding is
 | that 5.0 will be an early adopter release and production
 | systems should run 4.7{8,9,..} until 5.1 is released.
 |
 | To accomplish the change, I think we need to do:
 |   1. Install a complete set of 4.7 shared libs in COMPAT4X.
 |  This should porivde the necessary runtime compatibility
 |  with 4.x.
 |   2. Bump all shared library on 5.0.  This will get rid of
 |  any interdependencies among the libraries and it deals
 |  with the version number problems I detailed in the thread
 |  Ghost of __sF ... a couple a days ago.
 |   3. Put a big fat WARNING in src/UPDATING about the problem
 |   4. Put the same WARNING in /etc/motd, so people currently
 |  run -current will know to update their ports.
 |   5. Broadcast the WARNING to appropriate mailing lists and
 |  newsgroups.
 
 6. Assume Crash Position.

7. Profit!

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Terry Lambert
M. Warner Losh wrote:
 My plan is as follows:
 
 1) Restore __sF to libc for 5.0.
 2) Fix 4.x binaries so that __sF isn't referened in new
binaries.  This should have been done in Aug 2001, but
wasn't.
 
 Depending on how things go, __sF will be removed in 5.1 or 5.2 after
 we have the transition period we had originally planned for 4.x, but
 implemented a year ago.


Before anyone's head explodes, this will *NOT* generate *new*
references to __sF.  Warner is *NOT* talking about changing
the definitions in stdio back to their old values.  *NEW* code
will get the *NEW* definitions, with certain specific exceptions.

The exceptions are for new code linked against old libraries,
or compiled with old tools, and linked agoinst those old tools'
libraries (e.g. Modula 3 and FORTRAN 95).

The issue this raises is that if/when the size of struct file
changes, the old programs will quit working, unless *ALL* of the
libraries which reference the obsoleted symbols varsions are
bumped between 4.x and 5.x, and *ALL* of them are made available
as part of the binary compatability package.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Daniel Eischen
On Fri, 8 Nov 2002, M. Warner Losh wrote:

 In message: [EMAIL PROTECTED]
 Daniel Eischen [EMAIL PROTECTED] writes:
 : All the ports are going to be rebuilt for the release anyways,
 : so this doesn't affect fresh installs, correct?  It is only a
 : problem when mixing older 4.x and 5.0 libraries/binaries with
 : __sF-free libc (if I understand things correctly).
 
 The problem is that you cannot have 4.x packages and 5.x packages
 co-mingled on the same system.  that's what I'm trying to fix.  You'd
 have to rebuild the 4.x packages before they are fixed.

I don't think this is a show-stopper.  Just recompile all your
ports or use the pre-built 5.0 packages.

 : This is 5.0; it is a major release and there will be some flies
 : in the ointment.  I say bite the bullet now -- don't wait.
 : If we want to provide an optional compatability hack to libc
 : so that folks can compile it with __sF support, then I think
 : that is better than leaving __sF in the release, perhaps
 : with a mktemp(3)-like warning if possible (?).
 
 You'd need a run-time warning for this to be effective.  I'm not sure
 that ld.so can do this right now.

Could you put __sF in it's own file, and put the error in
a .init section?  We don't care about static binaries, right?
They shouldn't have a problem.

 This is not a fly in the pointment, but rather a major incompatibility
 that makes it impossible to have a reasonable mix.

If it's really a hassle for folks, then just provide the
optional compatability hack and make them rebuild libc.
Or provide a pre-built version that doesn't get installed
by default.

-- 
Dan Eischen


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Daniel Eischen [EMAIL PROTECTED] writes:
: On Fri, 8 Nov 2002, M. Warner Losh wrote:
: 
:  In message: [EMAIL PROTECTED]
:  Daniel Eischen [EMAIL PROTECTED] writes:
:  : All the ports are going to be rebuilt for the release anyways,
:  : so this doesn't affect fresh installs, correct?  It is only a
:  : problem when mixing older 4.x and 5.0 libraries/binaries with
:  : __sF-free libc (if I understand things correctly).
:  
:  The problem is that you cannot have 4.x packages and 5.x packages
:  co-mingled on the same system.  that's what I'm trying to fix.  You'd
:  have to rebuild the 4.x packages before they are fixed.
: 
: I don't think this is a show-stopper.  Just recompile all your
: ports or use the pre-built 5.0 packages.

I disagree.

:  : This is 5.0; it is a major release and there will be some flies
:  : in the ointment.  I say bite the bullet now -- don't wait.
:  : If we want to provide an optional compatability hack to libc
:  : so that folks can compile it with __sF support, then I think
:  : that is better than leaving __sF in the release, perhaps
:  : with a mktemp(3)-like warning if possible (?).
:  
:  You'd need a run-time warning for this to be effective.  I'm not sure
:  that ld.so can do this right now.
: 
: Could you put __sF in it's own file, and put the error in
: a .init section?  We don't care about static binaries, right?
: They shouldn't have a problem.

More details please.  I'd love for there to be a way to know which
binaries use __sF.

:  This is not a fly in the pointment, but rather a major incompatibility
:  that makes it impossible to have a reasonable mix.
: 
: If it's really a hassle for folks, then just provide the
: optional compatability hack and make them rebuild libc.
: Or provide a pre-built version that doesn't get installed
: by default.

I'm not sure that I agree with that solution.  __sF was supposed to
die in -stable around 4.3, but the ball got dropped on the floor.  If
it had, then I wouldn't care so much now.  I don't see it as a big
deal to have it for 5.0, but not 5.1 or 5.2 depending...

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Daniel Eischen
On Fri, 8 Nov 2002, M. Warner Losh wrote:

 In message: [EMAIL PROTECTED]
 Daniel Eischen [EMAIL PROTECTED] writes:
 : On Fri, 8 Nov 2002, M. Warner Losh wrote:
 : 
 :  In message: [EMAIL PROTECTED]
 :  Daniel Eischen [EMAIL PROTECTED] writes:
 :  : All the ports are going to be rebuilt for the release anyways,
 :  : so this doesn't affect fresh installs, correct?  It is only a
 :  : problem when mixing older 4.x and 5.0 libraries/binaries with
 :  : __sF-free libc (if I understand things correctly).
 :  
 :  The problem is that you cannot have 4.x packages and 5.x packages
 :  co-mingled on the same system.  that's what I'm trying to fix.  You'd
 :  have to rebuild the 4.x packages before they are fixed.
 : 
 : I don't think this is a show-stopper.  Just recompile all your
 : ports or use the pre-built 5.0 packages.
 
 I disagree.

No problem :-)

 :  : This is 5.0; it is a major release and there will be some flies
 :  : in the ointment.  I say bite the bullet now -- don't wait.
 :  : If we want to provide an optional compatability hack to libc
 :  : so that folks can compile it with __sF support, then I think
 :  : that is better than leaving __sF in the release, perhaps
 :  : with a mktemp(3)-like warning if possible (?).
 :  
 :  You'd need a run-time warning for this to be effective.  I'm not sure
 :  that ld.so can do this right now.
 : 
 : Could you put __sF in it's own file, and put the error in
 : a .init section?  We don't care about static binaries, right?
 : They shouldn't have a problem.
 
 More details please.  I'd love for there to be a way to know which
 binaries use __sF.

I'm not even close to a shared library/linker expert, but
I thought there was a way to have something run when an
object file got loaded.  From rtld(1):

  After all shared libraries have been successfully loaded, ld-elf.so.1
  proceeds to resolve external references from both the main program and
  all objects loaded. A mechanism is provided for initialization routines
  to be called on a per-object basis, giving a shared object an opportunity
  to perform any extra set-up before execution of the program proper
  begins.  This is useful for C++ libraries that contain static construc-
  tors.

If you put __sF in it's own file with whatever is needed for
the above, won't that work?

-- 
Dan Eischen


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Brooks Davis
On Fri, Nov 08, 2002 at 04:16:06PM -0700, M. Warner Losh wrote:
 I'd love for there to be a way to know which binaries use __sF.

The following script run on your bin, sbin, lib, and libexec directories
does a pretty decent job of finding files that contain refrences to __sF
and listing the ports that use them (depend on portupgrade).

-- Brooks


#!/bin/sh

sym=__sF

for file in $*; do
if [ -n `nm ${file} 21 | egrep  ${sym}$` ]; then
echo ${file} `pkg_which $file`
fi
done



msg46400/pgp0.pgp
Description: PGP signature


Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread eculp
Quoting Brooks Davis [EMAIL PROTECTED]:

 | On Fri, Nov 08, 2002 at 04:16:06PM -0700, M. Warner Losh wrote:
 |  I'd love for there to be a way to know which binaries use __sF.
 | 
 | The following script run on your bin, sbin, lib, and libexec directories
 | does a pretty decent job of finding files that contain refrences to __sF
 | and listing the ports that use them (depend on portupgrade).
 | 
 | -- Brooks
 | 
 | 
 | #!/bin/sh
 | 
 | sym=__sF
 | 
 | for file in $*; do
 |  if [ -n `nm ${file} 21 | egrep  ${sym}$` ]; then
 |  echo ${file} `pkg_which $file`
 |  fi
 | done
 |

FWIW, while playing with the script I found libc_p.a from today's build.

ed

BTW, I did remove the $ from $*.  I thought it was running too fast :-)



-- 


-


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Brooks Davis
On Fri, Nov 08, 2002 at 05:22:13PM -0800, [EMAIL PROTECTED] wrote:
 BTW, I did remove the $ from $*.  I thought it was running too fast :-)

You're supposed to pass it a list of files not run it in a directory.

-- Brooks

-- 
Any statement of the form X is the one, true Y is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4



msg46402/pgp0.pgp
Description: PGP signature


Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Steve Kargl
On Fri, Nov 08, 2002 at 05:05:23PM -0800, Brooks Davis wrote:
 On Fri, Nov 08, 2002 at 04:16:06PM -0700, M. Warner Losh wrote:
  I'd love for there to be a way to know which binaries use __sF.
 
 The following script run on your bin, sbin, lib, and libexec directories
 does a pretty decent job of finding files that contain refrences to __sF
 and listing the ports that use them (depend on portupgrade).
 
 #!/bin/sh
 
 sym=__sF
 
 for file in $*; do
   if [ -n `nm ${file} 21 | egrep  ${sym}$` ]; then
   echo ${file} `pkg_which $file`
   fi
 done

nm doesn't work on shared libraries.  You can
use strings to find __sF in shared libs.

troutmask:kargl[201] cd /mnt/usr/lib/
troutmask:kargl[202] nm libm.a | grep sF
 U __sF
troutmask:kargl[203] nm libm.so.2 | grep sF
nm: libm.so.2: no symbols
troutmask:kargl[204] strings libm.so.2 | grep sF
__sF

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread Garance A Drosihn
At 6:13 PM -0500 11/8/02, Daniel Eischen wrote:

On Fri, 8 Nov 2002, M. Warner Losh wrote:


 In message: [EMAIL PROTECTED]
 Daniel Eischen [EMAIL PROTECTED] writes:
 : All the ports are going to be rebuilt for the release anyways,
 : so this doesn't affect fresh installs, correct?  It is only a
 : problem when mixing older 4.x and 5.0 libraries/binaries with
 : __sF-free libc (if I understand things correctly).

 The problem is that you cannot have 4.x packages and 5.x packages

  co-mingled on the same system.  that's what I'm trying to fix.
  You'd have to rebuild the 4.x packages before they are fixed.

I don't think this is a show-stopper.  Just recompile all your
ports or use the pre-built 5.0 packages.


This assumes that you have the source code to everything you are
running, which may not be true.  This also assumes that all you
need to do is type another 'make' in some directory, and your
source code will pleasantly compile without any new problems
from any of the long list of changes to include-files, ports,
or the new version of gcc.

Yes, every user can eventually plow their way through all that
work, and by the time they do we'll probably already have
5.1-release out.

Philosophically I would prefer that __sF was completely gone for
5.0-release, but at the moment I think Warner is right in saying
that we need to keep it in libc until at least 5.1.

--
Garance Alistair Drosehn=   [EMAIL PROTECTED]
Senior Systems Programmer   or  [EMAIL PROTECTED]
Rensselaer Polytechnic Instituteor  [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-08 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Brooks Davis [EMAIL PROTECTED] writes:
: On Fri, Nov 08, 2002 at 04:16:06PM -0700, M. Warner Losh wrote:
:  I'd love for there to be a way to know which binaries use __sF.
: 
: The following script run on your bin, sbin, lib, and libexec directories
: does a pretty decent job of finding files that contain refrences to __sF
: and listing the ports that use them (depend on portupgrade).

I'm talking a warning at runtime for libraries that have the timebomb
in them.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steven G. Kargl [EMAIL PROTECTED] writes:
: M. Warner Losh said:
:  In message: [EMAIL PROTECTED]
:  Steven G. Kargl [EMAIL PROTECTED] writes:
:  : M. Warner Losh said:
:  :  In message: [EMAIL PROTECTED]
:  :  Steven G. Kargl [EMAIL PROTECTED] writes:
:  :  : Could someone add the following patch to UPDATING?
:  :  : Change the words to whatever suits your fancy.
:  :  
:  :  I'm trying to devise a good way to deal with this breakage and hope it
:  :  is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.
:  :  
:  : 
:  : Any user who installed DP1 and a bunch of ports will
:  : have a unpleasant experience when they update to
:  : post 20021031 sources.  All their ports will stop
:  : working and it isn't a simple matter to update
:  : those ports.
:  
:  I thought DP1 didn't generate binaries or libraries that contained
:  __sF.
: 
: 
: http://www.freebsd.org/releases/5.0R/schedule.html 
: 
: DP1 was released on 5 Apr 2002.  This may have occurred during
: Peter's last attempt at killing __sF.  DP2 is in progress
: according to the web page and __sF should not be present.
: There will also be that group of -current users who lag
: a few weeks behind in their buildworlds.

But std{in,out,err} #defines were changes from __sF to
__std{in,out,err}p almost a year ago.  That's what causes __sF to
appear...

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread John Polstra
In article [EMAIL PROTECTED],
M. Warner Losh [EMAIL PROTECTED] wrote:
 In message: [EMAIL PROTECTED]
 Steven G. Kargl [EMAIL PROTECTED] writes:
 : Could someone add the following patch to UPDATING?
 : Change the words to whatever suits your fancy.
 
 I'm trying to devise a good way to deal with this breakage and hope it
 is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.

FWIW, the only OS fix that will make stock ezm3/pm3/CVSup buildable on
-current is to make __sF global again and arrange for:

stdin  == __sF[0]
stdout == __sF[1]
stderr == __sF[2]

John
-- 
  John Polstra
  John D. Polstra  Co., Inc.Seattle, Washington USA
  Disappointment is a good sign of basic intelligence.  -- Chögyam Trungpa


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Steve Kargl
On Thu, Nov 07, 2002 at 08:40:32AM -0800, John Polstra wrote:
 In article [EMAIL PROTECTED],
 M. Warner Losh [EMAIL PROTECTED] wrote:
  In message: [EMAIL PROTECTED]
  Steven G. Kargl [EMAIL PROTECTED] writes:
  : Could someone add the following patch to UPDATING?
  : Change the words to whatever suits your fancy.
  
  I'm trying to devise a good way to deal with this breakage and hope it
  is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.
 
 FWIW, the only OS fix that will make stock ezm3/pm3/CVSup buildable on
 -current is to make __sF global again and arrange for:
 
 stdin  == __sF[0]
 stdout == __sF[1]
 stderr == __sF[2]
 

John,

As the author of cvsup, I'm sure you know what is required.  But,
I rebuilt cvsup from net/cvsup yesterday on a new world, and
it appears to be working fine.  What problems should I expect?

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread John Polstra
In article [EMAIL PROTECTED],
Steve Kargl  [EMAIL PROTECTED] wrote:

 I rebuilt cvsup from net/cvsup yesterday on a new world, and
 it appears to be working fine.  What problems should I expect?

It's possible that if you already have a working installation of pm3
or ezm3, you'll be able to build CVSup on -current.  But if you try to
build pm3 or ezm3 from scratch, you'll find that the build fails.

John
-- 
  John Polstra
  John D. Polstra  Co., Inc.Seattle, Washington USA
  Disappointment is a good sign of basic intelligence.  -- Chögyam Trungpa


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Steve Kargl
On Thu, Nov 07, 2002 at 09:21:53AM -0800, John Polstra wrote:
 In article [EMAIL PROTECTED],
 Steve Kargl  [EMAIL PROTECTED] wrote:
 
  I rebuilt cvsup from net/cvsup yesterday on a new world, and
  it appears to be working fine.  What problems should I expect?
 
 It's possible that if you already have a working installation of pm3
 or ezm3, you'll be able to build CVSup on -current.  But if you try to
 build pm3 or ezm3 from scratch, you'll find that the build fails.
 

I removed all ports because of the __sF symbol problem.  I
simply did cd /usr/ports/net/cvsup ; make install and
this automatically installed ezm3.  pkg_info doesn't show
pm3 installed on system.  Perhaps, only pm3 is the port
that will have the problem.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread John Polstra
In article [EMAIL PROTECTED],
Steve Kargl  [EMAIL PROTECTED] wrote:
 On Thu, Nov 07, 2002 at 09:21:53AM -0800, John Polstra wrote:
  It's possible that if you already have a working installation of pm3
  or ezm3, you'll be able to build CVSup on -current.  But if you try to
  build pm3 or ezm3 from scratch, you'll find that the build fails.
  
 
 I removed all ports because of the __sF symbol problem.  I
 simply did cd /usr/ports/net/cvsup ; make install and
 this automatically installed ezm3.  pkg_info doesn't show
 pm3 installed on system.  Perhaps, only pm3 is the port
 that will have the problem.

That would surprise me, but I haven't tried it myself.  Inspection
of the ezm3 bootstrap shows that it has references to __sF.

John
-- 
  John Polstra
  John D. Polstra  Co., Inc.Seattle, Washington USA
  Disappointment is a good sign of basic intelligence.  -- Chögyam Trungpa


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
John Polstra [EMAIL PROTECTED] writes:
: In article [EMAIL PROTECTED],
: M. Warner Losh [EMAIL PROTECTED] wrote:
:  In message: [EMAIL PROTECTED]
:  Steven G. Kargl [EMAIL PROTECTED] writes:
:  : Could someone add the following patch to UPDATING?
:  : Change the words to whatever suits your fancy.
:  
:  I'm trying to devise a good way to deal with this breakage and hope it
:  is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.
: 
: FWIW, the only OS fix that will make stock ezm3/pm3/CVSup buildable on
: -current is to make __sF global again and arrange for:
: 
: stdin  == __sF[0]
: stdout == __sF[1]
: stderr == __sF[2]

Why does cvsup need this to be the case?  Now you have me curious.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Steve Kargl
On Thu, Nov 07, 2002 at 09:35:19AM -0800, John Polstra wrote:
 In article [EMAIL PROTECTED],
 Steve Kargl  [EMAIL PROTECTED] wrote:
  On Thu, Nov 07, 2002 at 09:21:53AM -0800, John Polstra wrote:
   It's possible that if you already have a working installation of pm3
   or ezm3, you'll be able to build CVSup on -current.  But if you try to
   build pm3 or ezm3 from scratch, you'll find that the build fails.
   
  
  I removed all ports because of the __sF symbol problem.  I
  simply did cd /usr/ports/net/cvsup ; make install and
  this automatically installed ezm3.  pkg_info doesn't show
  pm3 installed on system.  Perhaps, only pm3 is the port
  that will have the problem.
 
 That would surprise me, but I haven't tried it myself.  Inspection
 of the ezm3 bootstrap shows that it has references to __sF.
 

Well, I just pkg_deinstall's both ezm3 and cvsup.  I re-installed
both without problems.  I then used cvsup to pull down some source
updates.  However, here's the strange or maybe fortunate part

troutmask:kargl[246] cd /usr/local/lib/m3
troutmask:kargl[247] find . -name \*.a | xargs nm -A | grep __sF
./pkg/m3core/FreeBSD4/libm3core.a:Cstdio.mo: U __sF
troutmask:kargl[248] strings /usr/local/sbin/cvsupd | grep __sF
troutmask:kargl[249] strings /usr/local/bin/cvsup | grep __sF

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread John Polstra
In article [EMAIL PROTECTED],
Steve Kargl  [EMAIL PROTECTED] wrote:
 On Thu, Nov 07, 2002 at 09:35:19AM -0800, John Polstra wrote:
  That would surprise me, but I haven't tried it myself.  Inspection
  of the ezm3 bootstrap shows that it has references to __sF.
  
 
 Well, I just pkg_deinstall's both ezm3 and cvsup.  I re-installed
 both without problems.  I then used cvsup to pull down some source
 updates.  However, here's the strange or maybe fortunate part
 
 troutmask:kargl[246] cd /usr/local/lib/m3
 troutmask:kargl[247] find . -name \*.a | xargs nm -A | grep __sF
 ./pkg/m3core/FreeBSD4/libm3core.a:Cstdio.mo: U __sF
 troutmask:kargl[248] strings /usr/local/sbin/cvsupd | grep __sF
 troutmask:kargl[249] strings /usr/local/bin/cvsup | grep __sF

Oh, I think I understand it now.  PM3 uses shared libraries, so the
undefined reference from libm3core.so matters.  But ezm3 uses only
static libraries, and Cstdio.mo probably isn't even included in the
link (because nothing actually uses it).  That explains why ezm3 works
in spite of the fact that part of it references __sF.

John
-- 
  John Polstra
  John D. Polstra  Co., Inc.Seattle, Washington USA
  Disappointment is a good sign of basic intelligence.  -- Chögyam Trungpa


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread John Polstra
In article [EMAIL PROTECTED],
M. Warner Losh [EMAIL PROTECTED] wrote:
 In message: [EMAIL PROTECTED]
 John Polstra [EMAIL PROTECTED] writes:

 : FWIW, the only OS fix that will make stock ezm3/pm3/CVSup buildable on
 : -current is to make __sF global again and arrange for:
 : 
 : stdin  == __sF[0]
 : stdout == __sF[1]
 : stderr == __sF[2]
 
 Why does cvsup need this to be the case?  Now you have me curious.

It's not CVSup, it's Modula-3.  It thinks it knows that stdin,
stdout, and stderr are defined as above, but they're not any more.
Because Modula-3 isn't C and doesn't use C header files, it cannot
automatically track such changes like C programs do.

John
-- 
  John Polstra
  John D. Polstra  Co., Inc.Seattle, Washington USA
  Disappointment is a good sign of basic intelligence.  -- Chögyam Trungpa


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Tim Kientzle
Terry Lambert asked:


Any chance we could get rid of all externally visable symbols that
are not defined as being there by some standard, and not just __sF,
since we are breaking the FORTRAN compiler and other third party
code already?


This cannot be entirely done if you still want to
manage library bloat.  In short, library routines
have shared interfaces between them---common variables
or common functions---that are internal to the library
and should not be used by applications.

To avoid this, you would have to bundle library functions
together, which causes bloat.  Worse, you would have to
avoid or drastically limit your use of macros.  (Any
macro that uses one of these internal symbols generates
a dependency in the compiled application.)

It _would_ be a good idea to document any internal library
symbols used by macros.  Removing such symbols is a
good way to break existing compiled applications.

Library design involves a lot of tradeoffs.

Tim Kientzle


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
John Polstra [EMAIL PROTECTED] writes:
: In article [EMAIL PROTECTED],
: M. Warner Losh [EMAIL PROTECTED] wrote:
:  In message: [EMAIL PROTECTED]
:  John Polstra [EMAIL PROTECTED] writes:
: 
:  : FWIW, the only OS fix that will make stock ezm3/pm3/CVSup buildable on
:  : -current is to make __sF global again and arrange for:
:  : 
:  : stdin  == __sF[0]
:  : stdout == __sF[1]
:  : stderr == __sF[2]
:  
:  Why does cvsup need this to be the case?  Now you have me curious.
: 
: It's not CVSup, it's Modula-3.  It thinks it knows that stdin,
: stdout, and stderr are defined as above, but they're not any more.
: Because Modula-3 isn't C and doesn't use C header files, it cannot
: automatically track such changes like C programs do.

Gotcha.  I'm thinking very seriously about keeping __sF support (but
creating no new binaries with it in it) and the freeze on sizeof(FILE)
through the 5.x series of releases because we botched the
compatibility stuff so badly to give people a chance to catch their
breaths before that reorg can happen.

Warner


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread John Polstra
In article [EMAIL PROTECTED],
M. Warner Losh [EMAIL PROTECTED] wrote:
 In message: [EMAIL PROTECTED]
 John Polstra [EMAIL PROTECTED] writes:
 : 
 : It's not CVSup, it's Modula-3.  It thinks it knows that stdin,
 : stdout, and stderr are defined as above, but they're not any more.
 : Because Modula-3 isn't C and doesn't use C header files, it cannot
 : automatically track such changes like C programs do.
 
 Gotcha.  I'm thinking very seriously about keeping __sF support (but
 creating no new binaries with it in it) and the freeze on sizeof(FILE)
 through the 5.x series of releases because we botched the
 compatibility stuff so badly to give people a chance to catch their
 breaths before that reorg can happen.

I'm kind of on the fence about it.  The point of hiding __sF is
to remove all dependencies on the size of the FILE structure from
applications, and that's a very worthwhile thing to do.  Modula-3 is a
special case (and a pathological one), and it shouldn't influence the
decision too much.  I don't think there's a way to fix it entirely in
the OS without re-establishing the dependency on the size of FILE.

We are lucky that ezm3 just happens to work.  The PM3 port can be
fixed with a 5.0-specific patch or two, but ... not today.

John
-- 
  John Polstra
  John D. Polstra  Co., Inc.Seattle, Washington USA
  Disappointment is a good sign of basic intelligence.  -- Chögyam Trungpa


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Terry Lambert
Tim Kientzle wrote:
 Terry Lambert asked:
  Any chance we could get rid of all externally visable symbols that
  are not defined as being there by some standard, and not just __sF,
  since we are breaking the FORTRAN compiler and other third party
  code already?
 
 This cannot be entirely done if you still want to
 manage library bloat.  In short, library routines
 have shared interfaces between them---common variables
 or common functions---that are internal to the library
 and should not be used by applications.
 
 To avoid this, you would have to bundle library functions
 together, which causes bloat.  Worse, you would have to
 avoid or drastically limit your use of macros.  (Any
 macro that uses one of these internal symbols generates
 a dependency in the compiled application.)
 
 It _would_ be a good idea to document any internal library
 symbols used by macros.  Removing such symbols is a
 good way to break existing compiled applications.
 
 Library design involves a lot of tradeoffs.

I don't buy this.

Specifically, I do not buy the idea that there is a necessity
for the existance of data interfaces, as opposed to procedural
interfaces.

And procedural interfaces are fixable with weak symbols.

The thing that's screwing us with __sF is that it is a data block
that's directly referenced without the use of an accessor function,
and thefore there are global data references, rather than accessor
or mutator function references.

As a result, when the underlying data changes, the code that has
already been compiled to reference it, must also change.

This problem has already been fixed with errno.  It has already
been fixed with strerror() (though unfortunately, the sys_errlist[]
and sys_nerr references remain unwrapped).  It has been fixed in
many other places (e.g. the curses library used to export row and
column count integers, and doesn't any more).

It's very obvious to me that defining a *non-inline* function to
return the correct __sF entry by entry ID will erase this problem
for a future version of FreeBSD, while leaving the __sF invisible
for a revision cycle, so that new applications will get the
function reference, and old applications will get the __sF reference
they expect, and continue to compile and link correctly.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Terry Lambert
M. Warner Losh wrote:
 Gotcha.  I'm thinking very seriously about keeping __sF support (but
 creating no new binaries with it in it) and the freeze on sizeof(FILE)
 through the 5.x series of releases because we botched the
 compatibility stuff so badly to give people a chance to catch their
 breaths before that reorg can happen.

Redefining stdio as:

#define stdin   (__stdio(0))
#define stdout  (__stdio(1))
#define stderr  (__stdio(2))

And then defining an __stdio() function that returns a pointer
to a struct FILE, would let you change the underlying implementation
however you wanted, later, without disrupting newly compiled programs.

This may not be entirely happy for static declarations:

FILE *fp = stdin;   /* default */

...but that's a compiler problem (I think).

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Ray Kohler
 From [EMAIL PROTECTED] Thu Nov  7 18:30:04 2002
 Date: Thu, 07 Nov 2002 15:26:57 -0800
 From: Terry Lambert [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Cc: [EMAIL PROTECTED]
 Subject: Re: [PATCH] note the __sF change in src/UPDATING


 Specifically, I do not buy the idea that there is a necessity
 for the existance of data interfaces, as opposed to procedural
 interfaces.

 And procedural interfaces are fixable with weak symbols.

 The thing that's screwing us with __sF is that it is a data block
 that's directly referenced without the use of an accessor function,
 and thefore there are global data references, rather than accessor
 or mutator function references.

 As a result, when the underlying data changes, the code that has
 already been compiled to reference it, must also change.

 This problem has already been fixed with errno.  It has already
 been fixed with strerror() (though unfortunately, the sys_errlist[]
 and sys_nerr references remain unwrapped).  It has been fixed in
 many other places (e.g. the curses library used to export row and
 column count integers, and doesn't any more).

 It's very obvious to me that defining a *non-inline* function to
 return the correct __sF entry by entry ID will erase this problem
 for a future version of FreeBSD, while leaving the __sF invisible
 for a revision cycle, so that new applications will get the
 function reference, and old applications will get the __sF reference
 they expect, and continue to compile and link correctly.

Hear hear, I agree. There's no need to expose what ought to be
private data to the world, especially when we can get the additional
benefit here of letting us play with the implementation.

- @

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Terry Lambert [EMAIL PROTECTED] writes:
: M. Warner Losh wrote:
:  Gotcha.  I'm thinking very seriously about keeping __sF support (but
:  creating no new binaries with it in it) and the freeze on sizeof(FILE)
:  through the 5.x series of releases because we botched the
:  compatibility stuff so badly to give people a chance to catch their
:  breaths before that reorg can happen.
: 
: Redefining stdio as:
: 
: #define stdin (__stdio(0))
: #define stdout(__stdio(1))
: #define stderr(__stdio(2))
: 
: And then defining an __stdio() function that returns a pointer
: to a struct FILE, would let you change the underlying implementation
: however you wanted, later, without disrupting newly compiled programs.
: 
: This may not be entirely happy for static declarations:
: 
: FILE *fp = stdin; /* default */
: 
: ...but that's a compiler problem (I think).

That's what __std{in,out,err}p do, and it saves function calls all
over the place.  This patch just makes -stable more compatible with
current.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Ray Kohler [EMAIL PROTECTED] writes:
: Hear hear, I agree. There's no need to expose what ought to be
: private data to the world, especially when we can get the additional
: benefit here of letting us play with the implementation.

-current already does this.  The problem is that we're trying to shoot
the bad access in the head, and that is what is screwing people.  So
the problem isn't that we're trying to export private data to the
world.  Quite the contrary, we're trying to eliminate it and having
growing pains.

Warner


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-07 Thread Terry Lambert
M. Warner Losh wrote:
 -current already does this.  The problem is that we're trying to shoot
 the bad access in the head, and that is what is screwing people.  So
 the problem isn't that we're trying to export private data to the
 world.  Quite the contrary, we're trying to eliminate it and having
 growing pains.

No, it's actually an attempt to change which private data is exported;
the new code exports three private values, instead of an array of
private values.

Data interfaces are evil (proc size mismatch).

Probably FILE * should be void *.  8-(.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



[PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread Steven G. Kargl
Could someone add the following patch to UPDATING?
Change the words to whatever suits your fancy.

-- 
Steve
http://troutmask.apl.washington.edu/~kargl/

--- UPDATING.orig   Wed Nov  6 16:20:05 2002
+++ UPDATINGWed Nov  6 16:27:08 2002
@@ -17,6 +17,15 @@
developers choose to disable these features on build machines
to maximize performance.
 
+20021031
+   Revision 1.24 of lib/libc/stdio/findfp.c has made __sF static.
+   This changes the visibility of __sF to a symbol internal to
+   libc.  All applications linked against libc or a library that
+   depends on libc that were compiled prior to 31 Oct 2002 will
+   need to be updated after a make world.  An error message that
+   includes undefined reference to `__sF' is an indication that
+   that application needs to be recompiled.
+
 20021029:
The value of IPPROTO_DIVERT has changed.  Make sure to keep
your kernel, netstat, natd and any third-party DIVERT

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread Terry Lambert
Steven G. Kargl wrote:
 Could someone add the following patch to UPDATING?
 Change the words to whatever suits your fancy.
 +20021031
 +   Revision 1.24 of lib/libc/stdio/findfp.c has made __sF static.
 +   This changes the visibility of __sF to a symbol internal to
 +   libc.  All applications linked against libc or a library that
 +   depends on libc that were compiled prior to 31 Oct 2002 will
 +   need to be updated after a make world.  An error message that
 +   includes undefined reference to `__sF' is an indication that
 +   that application needs to be recompiled.
 +


Any chance we could get rid of all externally visable symbols that
are not defined as being there by some standard, and not just __sF,
since we are breaking the FORTRAN compiler and other third party
code already?

It would be nice if this only ever happened *once*.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread Steve Kargl
On Wed, Nov 06, 2002 at 04:38:55PM -0800, Terry Lambert wrote:
 Steven G. Kargl wrote:
  Could someone add the following patch to UPDATING?
  Change the words to whatever suits your fancy.
  +20021031
  +   Revision 1.24 of lib/libc/stdio/findfp.c has made __sF static.
  +   This changes the visibility of __sF to a symbol internal to
  +   libc.  All applications linked against libc or a library that
  +   depends on libc that were compiled prior to 31 Oct 2002 will
  +   need to be updated after a make world.  An error message that
  +   includes undefined reference to `__sF' is an indication that
  +   that application needs to be recompiled.
  +
 
 
 Any chance we could get rid of all externally visable symbols that
 are not defined as being there by some standard, and not just __sF,
 since we are breaking the FORTRAN compiler and other third party
 code already?
 

This isn't restricted to my Fortran 95 problem, which I've
found an acceptable work-around.  I just spent the better
part of a day re-installing 122 ports because these ports were
linked against an earlier libc.  All of this is 3rd party
software.  But, if you have a pre-20021031 world and you
build only a post-20021021 libc, then a whole bunch of 
libraries in /usr/lib will becomed unusable.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread Terry Lambert
Steve Kargl wrote:
  Any chance we could get rid of all externally visable symbols that
  are not defined as being there by some standard, and not just __sF,
  since we are breaking the FORTRAN compiler and other third party
  code already?
 
 This isn't restricted to my Fortran 95 problem, which I've
 found an acceptable work-around.  I just spent the better
 part of a day re-installing 122 ports because these ports were
 linked against an earlier libc.  All of this is 3rd party
 software.  But, if you have a pre-20021031 world and you
 build only a post-20021021 libc, then a whole bunch of
 libraries in /usr/lib will becomed unusable.

I'm more concerned about this happening again, the next time
someone decides another symbol shouldn't be exposed.  If we
could get the pain over with all at once, that'd be a good thing.

-- Terry

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steven G. Kargl [EMAIL PROTECTED] writes:
: Could someone add the following patch to UPDATING?
: Change the words to whatever suits your fancy.

I'm trying to devise a good way to deal with this breakage and hope it
is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread Steven G. Kargl
M. Warner Losh said:
 In message: [EMAIL PROTECTED]
 Steven G. Kargl [EMAIL PROTECTED] writes:
 : Could someone add the following patch to UPDATING?
 : Change the words to whatever suits your fancy.
 
 I'm trying to devise a good way to deal with this breakage and hope it
 is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.
 

Any user who installed DP1 and a bunch of ports will
have a unpleasant experience when they update to
post 20021031 sources.  All their ports will stop
working and it isn't a simple matter to update
those ports.

-- 
Steve
http://troutmask.apl.washington.edu/~kargl/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: [PATCH] note the __sF change in src/UPDATING

2002-11-06 Thread Steven G. Kargl
M. Warner Losh said:
 In message: [EMAIL PROTECTED]
 Steven G. Kargl [EMAIL PROTECTED] writes:
 : M. Warner Losh said:
 :  In message: [EMAIL PROTECTED]
 :  Steven G. Kargl [EMAIL PROTECTED] writes:
 :  : Could someone add the following patch to UPDATING?
 :  : Change the words to whatever suits your fancy.
 :  
 :  I'm trying to devise a good way to deal with this breakage and hope it
 :  is transient.  I'm not hopeful :-(  I'll consider adding this to UPDATING.
 :  
 : 
 : Any user who installed DP1 and a bunch of ports will
 : have a unpleasant experience when they update to
 : post 20021031 sources.  All their ports will stop
 : working and it isn't a simple matter to update
 : those ports.
 
 I thought DP1 didn't generate binaries or libraries that contained
 __sF.


http://www.freebsd.org/releases/5.0R/schedule.html 

DP1 was released on 5 Apr 2002.  This may have occurred during
Peter's last attempt at killing __sF.  DP2 is in progress
according to the web page and __sF should not be present.
There will also be that group of -current users who lag
a few weeks behind in their buildworlds.

-- 
Steve
http://troutmask.apl.washington.edu/~kargl/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: Ghost of __sF and COMPAT4X libraries.

2002-11-03 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: The following 4.7 libs make reference to __sF.  Several of the
: corresponding 5.0 libraries still have the same version number.
: We may need to bump the version numbers.
: 
: libalias.so.4libbz2.so.1   libc.so.4libc_r.so.4
: libcam.so.2  libcom_err.so.2   libcrypto.so.2   libdes.so.3
: libdevstat.so.2  libdialog.so.4libedit.so.3 libfetch.so.3
: libftpio.so.5libg2c.so.1   libgmp.so.3  libhistory.so.4
: libipsec.so.1libisc.so.1   libkdb.so.3  libkrb.so.3
: libkrb5.so.5 libkvm.so.2   libm.so.2libmp.so.3
: libncp.so.1  libncurses.so.5   libopie.so.2 libpam.so.1
: libpcap.so.2 libperl.so.3  libreadline.so.4 libroken.so.5
: libskey.so.2 libsmb.so.1   libssh.so.2  libstdc++.so.3
: libutil.so.3

We were told when we bumped libc.so from .4 to .5 someone, whose name
escapes me, said we'd have to bump the major version of all libarires
that depend on libc.so.4.  It would appear that we've not done that
step.  Which I thikn means we have to do it for all the ports too.

This is a problem when upgrading from 4.7 - 5.0 because you have old
shared libaries that appear to be of the right version, but are not
compatible with 5.0.

Let's say port foo installed libfoo.so.9 under 4.7.  Then you upgrade
to 5.0.  When you go to build a port on 5.0 that depends on
libfoo.so.9, it will fail to link because libfoo.so.9 is compiled with
the 4.7 ABI, while the rest of the port is built with the 5.0 ABI.  So
on 5.0 we should depend on libfoo.so.10 so that the port dependency is
handled correctly.

There will be an analogous problem with packages as well.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-03 Thread Juli Mallett
* De: Steve Kargl [EMAIL PROTECTED] [ Data: 2002-11-02 ]
[ Subjecte: Re: __sF ]
 On Sat, Nov 02, 2002 at 05:40:08PM -0700, M. Warner Losh wrote:
  In message: [EMAIL PROTECTED]
  Steve Kargl [EMAIL PROTECTED] writes:
  : http://www.freebsd.org/cgi/getmsg.cgi?fetch=1755928+1759974+/usr/local/\
  : www/db/text/2002/freebsd-current/20021013.freebsd-current
  
  You should be linking against the -stable versions of these items as
  well as the libc.so.4.  If you don't, then you are asking for
  problems.  Maybe you can kludge it to make libc.so.5 work, but the
  whole reason that it is .5 and not .4 is that it is not binary
  compatible with .4, and for more reasons than just __sF.
  
 
 Fine, I'll try to set up a cross build enviroment.
 But, we need to then install a complete set of 4.x
 libraries in /usr/lib/compat.

No, that's for runtime compatability.  You want a true cross environment.

Read any of the thousands of pages about setting up GCC for cross-platform
development, as that's what you're doing.  You just happen to have a chance
of running the cross-created things locally.

juli.
-- 
Juli Mallett [EMAIL PROTECTED]   | FreeBSD: The Power To Serve
Will break world for fulltime employment. | finger [EMAIL PROTECTED]
http://people.FreeBSD.org/~jmallett/  | Support my FreeBSD hacking!

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-03 Thread Steve Kargl
On Sun, Nov 03, 2002 at 03:29:04AM -0800, Juli Mallett wrote:
 * De: Steve Kargl [EMAIL PROTECTED] [ Data: 2002-11-02 ]
   [ Subjecte: Re: __sF ]
  On Sat, Nov 02, 2002 at 05:40:08PM -0700, M. Warner Losh wrote:
   In message: [EMAIL PROTECTED]
   
   You should be linking against the -stable versions of these items as
   well as the libc.so.4.  If you don't, then you are asking for
   problems.  Maybe you can kludge it to make libc.so.5 work, but the
   whole reason that it is .5 and not .4 is that it is not binary
   compatible with .4, and for more reasons than just __sF.
  
  Fine, I'll try to set up a cross build enviroment.
  But, we need to then install a complete set of 4.x
  libraries in /usr/lib/compat.
 
 No, that's for runtime compatability.  You want a true cross environment.
 
 Read any of the thousands of pages about setting up GCC for cross-platform
 development, as that's what you're doing.  You just happen to have a chance
 of running the cross-created things locally.
 

Let's say I have an 4.7 app linked against libcam.so.
Now, I update to 5.0.  What library will this app use?
There isn't a COMPAT4X library available and the 5.0
has the same version number and libcam.so has a 
reference to __sF.  There probably aren't many apps
that use libcam, so this is perhaps stretch.  Well,
consider libm.so and the 8000 ports.

As to my particular problem, a cross-platform
environment won't be of much use because NAG
hard-coded several paths into their app, e.g.,
/usr/bin/cc.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: Ghost of __sF and COMPAT4X libraries.

2002-11-03 Thread David O'Brien
On Sat, Nov 02, 2002 at 11:05:18PM -0800, Marcel Moolenaar wrote:
 On Sat, Nov 02, 2002 at 09:59:16PM -0800, Steve Kargl wrote:
  
  The following libraries are installed by COMPAT4X, but are not
  present in 4.7.  I assume these are carried forward from 4.x x  7.
  
  libssl.so.1  libusb.so.0   libcrypto.so.1  libfetch.so.2
 
 G... This means we had version bumps on -stable without
 providing compat4x libraries on 4.x - I think we're seriously
 fscking up here :-(

We renamed libusb, and thus added the last libusb to the compat
collection.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-03 Thread Juli Mallett
* De: Steve Kargl [EMAIL PROTECTED] [ Data: 2002-11-03 ]
[ Subjecte: Re: __sF ]
 As to my particular problem, a cross-platform
 environment won't be of much use because NAG
 hard-coded several paths into their app, e.g.,
 /usr/bin/cc.

Then you should seriously consider the quality of such application, or
whether you'd be better using it on an actual and supported platform.

Anything less would be uncivilised.  (Seriously)
-- 
Juli Mallett [EMAIL PROTECTED]   | FreeBSD: The Power To Serve
Will break world for fulltime employment. | finger [EMAIL PROTECTED]
http://people.FreeBSD.org/~jmallett/  | Support my FreeBSD hacking!

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-03 Thread Steve Kargl
On Sun, Nov 03, 2002 at 09:28:24AM -0800, Juli Mallett wrote:
 * De: Steve Kargl [EMAIL PROTECTED] [ Data: 2002-11-03 ]
   [ Subjecte: Re: __sF ]
  As to my particular problem, a cross-platform
  environment won't be of much use because NAG
  hard-coded several paths into their app, e.g.,
  /usr/bin/cc.
 
 Then you should seriously consider the quality of such application, or
 whether you'd be better using it on an actual and supported platform.
 
 Anything less would be uncivilised.  (Seriously)

This is the *only* native Fortran 95 compiler for FreeBSD.
So much for acceptance of FreeBSD by commerical vendors.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-03 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Juli Mallett [EMAIL PROTECTED] writes:
: Then you should seriously consider the quality of such application, or
: whether you'd be better using it on an actual and supported platform.
: 
: Anything less would be uncivilised.  (Seriously)

Sometimes you have no chocie in what you accept or not.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-03 Thread Juli Mallett
* De: Steve Kargl [EMAIL PROTECTED] [ Data: 2002-11-03 ]
[ Subjecte: Re: __sF ]
 On Sun, Nov 03, 2002 at 09:28:24AM -0800, Juli Mallett wrote:
  * De: Steve Kargl [EMAIL PROTECTED] [ Data: 2002-11-03 ]
  [ Subjecte: Re: __sF ]
   As to my particular problem, a cross-platform
   environment won't be of much use because NAG
   hard-coded several paths into their app, e.g.,
   /usr/bin/cc.
  
  Then you should seriously consider the quality of such application, or
  whether you'd be better using it on an actual and supported platform.
  
  Anything less would be uncivilised.  (Seriously)
 
 This is the *only* native Fortran 95 compiler for FreeBSD.
   ^ 4.x
-- 
Juli Mallett [EMAIL PROTECTED]   | FreeBSD: The Power To Serve
Will break world for fulltime employment. | finger [EMAIL PROTECTED]
http://people.FreeBSD.org/~jmallett/  | Support my FreeBSD hacking!

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



__sF

2002-11-02 Thread Adam K Kirchhoff

Hey all,

About a month ago, I upgraded from -stable to -current.  I've
cvsuped about four times since then and upgraded my system each time.

So far I'm having a couple of difficulties.  Complete system
lockups (that dump into the kernel debugger) are not all uncommon.  I'm
not trying to deal with that problem today, though :-)

The bigger issue is that after at least two of the upgrades (the
initial upgrade to -current, and one from yesterday), I've ended up with
an error when trying to run and build certain applications:

For example:

[ adamk@sorrow ~ ]$ galeon
/usr/libexec/ld-elf.so.1: /usr/X11R6/lib/libgconf-gtk-1.so.1: Undefined
symbol __sF

Or, when trying to build qt-3.0.5:

c++ -fno-exceptions -pthread -o ../../../bin/uic
.obj/release-shared-mt/main.o .obj/
release-shared-mt/uic.o .obj/release-shared-mt/form.o
.obj/release-shared-mt/object.
o .obj/release-shared-mt/subclassing.o .obj/release-shared-mt/embed.o
.obj/release-s
hared-mt/widgetdatabase.o .obj/release-shared-mt/domtool.o
.obj/release-shared-mt/pa
rser.o   -L/usr/local/lib  -L/usr/local/lib
-Wl,-rpath,/usr/ports/x11-toolkits/qt30
/work/qt-x11-free-3.0.5/lib
-L/usr/ports/x11-toolkits/qt30/work/qt-x11-free-3.0.5/l
ib  -L/usr/X11R6/lib  -L/usr/X11R6/lib -lz -lqt-mt -lGLU -lGL -lXmu -lICE
-lSM -lXex
t -lX11 -lm -lXinerama -lXrender -lXft -lfreetype
/usr/local/lib/liblcms.so.1: undefined reference to `__sF'

In both cases, FreeBSD doesn't seem to like __sF.

Now, the first time this happened, I simply cvsuped a couple days
later and the problem went away, but now it's back, which is making me
think I never really solved the problem the first time around.

Any ideas on how to permanently fix this problem?

Adam



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Mark Murray
   In both cases, FreeBSD doesn't seem to like __sF.

This is being discussed /ad nauseam/ on the lists. If you are running
CURRENT, the onus is on you to keep up with developments. :-)

   Now, the first time this happened, I simply cvsuped a couple days
 later and the problem went away, but now it's back, which is making me
 think I never really solved the problem the first time around.
 
   Any ideas on how to permanently fix this problem?

Rebuild _everything_. Ports, libraries, dependancies, the lot.

M
-- 
o   Mark Murray
\_
O.\_Warning: this .sig is umop ap!sdn

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Adam K Kirchhoff

On Sat, 2 Nov 2002, Mark Murray wrote:

  In both cases, FreeBSD doesn't seem to like __sF.

 This is being discussed /ad nauseam/ on the lists. If you are running
 CURRENT, the onus is on you to keep up with developments. :-)

True.  A few days after the first time I encountered this problem, I had
searched through the archives and seen a very recent discussion about how
it was fixed it -CURRENT about two days after I had upgraded.  So I
upgraded again and, indeed, the problem was fixed.

And this past time, though, I did check out the archives again...  I came
across this post:

http://www.freebsd.org/cgi/getmsg.cgi?fetch=1438233+1440468+/usr/local/www/db/text/2002/freebsd-current/20021020.freebsd-current

It indicated that __sF was added back into libc.

  Now, the first time this happened, I simply cvsuped a couple days
  later and the problem went away, but now it's back, which is making me
  think I never really solved the problem the first time around.
 
  Any ideas on how to permanently fix this problem?

 Rebuild _everything_. Ports, libraries, dependancies, the lot.

So is the current position on the matter that __sF is going to remain out
of libc?  If that's the case, fine, I have no objections to recompiling
all my ports, but the fact of the matter is that there doesn't seem to be
much agreement about whether or not that's the case, seeing how __sF keeps
getting removed and re-added.

Adam



To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Kris Kennaway
On Sat, Nov 02, 2002 at 10:35:03AM -0500, Adam K Kirchhoff wrote:

 So is the current position on the matter that __sF is going to remain out
 of libc?

Yes.

Kris



msg45920/pgp0.pgp
Description: PGP signature


Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 09:47:26AM -0800, Kris Kennaway wrote:
 On Sat, Nov 02, 2002 at 10:35:03AM -0500, Adam K Kirchhoff wrote:
 
  So is the current position on the matter that __sF is going to remain out
  of libc?
 
 Yes.
 

This will break some commercially available software that
can't easily replaced.

kargl[248] f95 -V a.f90
NAGWare Fortran 95 compiler Release 4.2(468)
Copyright 1990-2002 The Numerical Algorithms Group Ltd., Oxford, U.K.
f95comp version is 4.2(468)
/usr/local/lib/NAGWare/libf96.so: undefined reference to `__sF'
collect2: ld returned 1 exit status

I seriously doubt that NAG will support both a 
4.x and 5.x version of their compiler.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Will Andrews
On Sat, Nov 02, 2002 at 10:10:31AM -0800, Steve Kargl wrote:
 This will break some commercially available software that
 can't easily replaced.
 
 kargl[248] f95 -V a.f90
 NAGWare Fortran 95 compiler Release 4.2(468)
 Copyright 1990-2002 The Numerical Algorithms Group Ltd., Oxford, U.K.
 f95comp version is 4.2(468)
 /usr/local/lib/NAGWare/libf96.so: undefined reference to `__sF'
 collect2: ld returned 1 exit status
 
 I seriously doubt that NAG will support both a 
 4.x and 5.x version of their compiler.

That's why we have compat libs.  compat4x should handle this
unless I'm mistaken.

Regards,
-- 
wca

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 10:58:41AM -0800, Will Andrews wrote:
 On Sat, Nov 02, 2002 at 10:10:31AM -0800, Steve Kargl wrote:
  This will break some commercially available software that
  can't easily replaced.
  
  kargl[248] f95 -V a.f90
  NAGWare Fortran 95 compiler Release 4.2(468)
  Copyright 1990-2002 The Numerical Algorithms Group Ltd., Oxford, U.K.
  f95comp version is 4.2(468)
  /usr/local/lib/NAGWare/libf96.so: undefined reference to `__sF'
  collect2: ld returned 1 exit status
  
  I seriously doubt that NAG will support both a 
  4.x and 5.x version of their compiler.
 
 That's why we have compat libs.  compat4x should handle this
 unless I'm mistaken.
 

It doesn't work the way you think.  To understand the issues

http://www.freebsd.org/cgi/getmsg.cgi?fetch=1755928+1759974+/usr/local/\
www/db/text/2002/freebsd-current/20021013.freebsd-current

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Mark Murray
 I seriously doubt that NAG will support both a 
 4.x and 5.x version of their compiler.

This shouldn't be a problem. The commercial software Should Not Be(tm)
supporting something as variable as CURRENT, and with the STABLE libraries
around in COMPAT mode, the compiler Will Just Work(tm) (or should with
not much effort).

By the time __sF is mainstream, I guess the vendor will have adapted
their product to match. Win, win.

M
-- 
o   Mark Murray
\_
O.\_Warning: this .sig is umop ap!sdn

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 07:06:47PM +, Mark Murray wrote:
  I seriously doubt that NAG will support both a 
  4.x and 5.x version of their compiler.
 
 This shouldn't be a problem. The commercial software Should Not Be(tm)
 supporting something as variable as CURRENT, and with the STABLE libraries
 around in COMPAT mode, the compiler Will Just Work(tm) (or should with
 not much effort).
 
 By the time __sF is mainstream, I guess the vendor will have adapted
 their product to match. Win, win.
 

No, it does not just work.  The NAG f95 compiler generates a
C file.  The C file is compiled by gcc.

f95 -o a a.f90 

is equivalent to 

f95 -c -o a.c a.f90
gcc -o a a.c -lf96 -lm -lc

libf96.so is linked against libc.so, which is a symlink
to libc.so.4 on a 4.x system.  libm.so and libc.so are
symlinks that point to libm.so.2 and libc.so.5 on 5.x.
You pick up the wrong libc.so in the above line.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Marcel Moolenaar
On Sat, Nov 02, 2002 at 11:24:32AM -0800, Steve Kargl wrote:
 On Sat, Nov 02, 2002 at 07:06:47PM +, Mark Murray wrote:
   I seriously doubt that NAG will support both a 
   4.x and 5.x version of their compiler.
  
  This shouldn't be a problem. The commercial software Should Not Be(tm)
  supporting something as variable as CURRENT, and with the STABLE libraries
  around in COMPAT mode, the compiler Will Just Work(tm) (or should with
  not much effort).
  
  By the time __sF is mainstream, I guess the vendor will have adapted
  their product to match. Win, win.
  
 
 No, it does not just work.  The NAG f95 compiler generates a
 C file.  The C file is compiled by gcc.
 
 f95 -o a a.f90 
 
 is equivalent to 
 
 f95 -c -o a.c a.f90
 gcc -o a a.c -lf96 -lm -lc
 
 libf96.so is linked against libc.so, which is a symlink
 to libc.so.4 on a 4.x system.  libm.so and libc.so are
 symlinks that point to libm.so.2 and libc.so.5 on 5.x.
 You pick up the wrong libc.so in the above line.

I see where this is breaking. The compat libs work because binaries
are already linked against them. What you're describing is a need to
link against libc.so.4 whilst on a -current box. Much the same as
developing under the Linuxulator: you're not using the native bits.

The problem is not unsolvable, but you also need the 4.x headers
to make it work. The first hurdle is getting NAG f90 to pick up a
random C compiler. The random C compiler then has to pick up the
4.x headers and libraries by having an alternate system includes
and libraries path. With GCC this should be simple enough.

-- 
 Marcel Moolenaar USPA: A-39004  [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Peter Wemm
Steve Kargl wrote:
 On Sat, Nov 02, 2002 at 07:06:47PM +, Mark Murray wrote:
   I seriously doubt that NAG will support both a 
   4.x and 5.x version of their compiler.
  
  This shouldn't be a problem. The commercial software Should Not Be(tm)
  supporting something as variable as CURRENT, and with the STABLE libraries
  around in COMPAT mode, the compiler Will Just Work(tm) (or should with
  not much effort).
  
  By the time __sF is mainstream, I guess the vendor will have adapted
  their product to match. Win, win.
  
 
 No, it does not just work.  The NAG f95 compiler generates a
 C file.  The C file is compiled by gcc.
 
 f95 -o a a.f90 
 
 is equivalent to 
 
 f95 -c -o a.c a.f90
 gcc -o a a.c -lf96 -lm -lc
 
 libf96.so is linked against libc.so, which is a symlink
 to libc.so.4 on a 4.x system.  libm.so and libc.so are
 symlinks that point to libm.so.2 and libc.so.5 on 5.x.
 You pick up the wrong libc.so in the above line.

This is also solveable by setting a strategic symlink from libc.so -
/usr/lib/compat/libc.so.4 in the f95 backend's search path.

Does it do a gcc -o a a.c -L /usr/local/lib/f95 -lf96 -lm -lc or something
like that?  If so, you can put the libc.so symlink in there.

I assume that the generated code doesn't contain #includes...  If it does
you'll also need to do something about that so that you get the right
#includes.  libf96.so is a 4.x binary.  Even if it wasn't for __sF, you
should be compiling with 4.x libraries and (if needed) 4.x headers, because
you have parts of the 4.x stdio.h embedded in libf96.so.

Cheers,
-Peter
--
Peter Wemm - [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED]
All of this is for nothing if we don't go to the stars - JMS/B5


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 12:00:42PM -0800, Marcel Moolenaar wrote:
 On Sat, Nov 02, 2002 at 11:24:32AM -0800, Steve Kargl wrote:
  
  No, it does not just work.  The NAG f95 compiler generates a
  C file.  The C file is compiled by gcc.
  
  f95 -o a a.f90 
  
  is equivalent to 
  
  f95 -c -o a.c a.f90
  gcc -o a a.c -lf96 -lm -lc
  
  libf96.so is linked against libc.so, which is a symlink
  to libc.so.4 on a 4.x system.  libm.so and libc.so are
  symlinks that point to libm.so.2 and libc.so.5 on 5.x.
  You pick up the wrong libc.so in the above line.
 
 I see where this is breaking. The compat libs work because binaries
 are already linked against them. What you're describing is a need to
 link against libc.so.4 whilst on a -current box. Much the same as
 developing under the Linuxulator: you're not using the native bits.
 
 The problem is not unsolvable, but you also need the 4.x headers
 to make it work. The first hurdle is getting NAG f90 to pick up a
 random C compiler. The random C compiler then has to pick up the
 4.x headers and libraries by having an alternate system includes
 and libraries path. With GCC this should be simple enough.
 

That's exactly the problem.  I haven't been able to 
state it in the same manner as you.

Alfred just committed a make.conf knob, WANT_COMPAT4_STDIO,
that permits libc to be built with __sF visible outside of 
libc.  I suspect most people will not need the knob, but
it will allow commercial apps to run if need be.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 12:06:38PM -0800, Peter Wemm wrote:
 
 This is also solveable by setting a strategic symlink from libc.so -
 /usr/lib/compat/libc.so.4 in the f95 backend's search path.
 
 Does it do a gcc -o a a.c -L /usr/local/lib/f95 -lf96 -lm -lc or something
 like that?  If so, you can put the libc.so symlink in there.
 
 I assume that the generated code doesn't contain #includes...  If it does
 you'll also need to do something about that so that you get the right
 #includes.  libf96.so is a 4.x binary.  Even if it wasn't for __sF, you
 should be compiling with 4.x libraries and (if needed) 4.x headers, because
 you have parts of the 4.x stdio.h embedded in libf96.so.
 

The only include that I any aware of is f95.h
which mainly defines stuff in libf95 (e.g.,
a typedef for struct nagf95_complex).

The verbose compiler output is below.  Note,
that the crt* files are also 5.x instead of
4.x.  Maybe it's just good fortune, but NAG's
f95 compiler works great on 5.x (except for
the __sF snafu).

-- 
Steve

kargl[226] f95 -v -Wc,-v -Wl,-v a.f90
a.f90:
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.2.1 [FreeBSD] 20021009 (prerelease)
 /usr/libexec/cc1 -lang-c -v -I/usr/local/lib/NAGWare -D__GNUC__=3 -D__GNUC_MINOR__=2 
-D__GNUC_PATCHLEVEL__=1 -D__GXX_ABI_VERSION=102 -D__FreeBSD__=5 
-D__FreeBSD_cc_version=54 -Dunix -D__KPRINTF_ATTRIBUTE__ -D__FreeBSD__=5 
-D__FreeBSD_cc_version=54 -D__unix__ -D__KPRINTF_ATTRIBUTE__ -D__unix 
-Asystem=unix -Asystem=bsd -Asystem=FreeBSD -D__NO_INLINE__ -D__STDC_HOSTED__=1 
-Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i386__ -D__ELF__ 
-D_LONGLONG -DBSD -DANSI_C -DINT64=long long -DPOW_IS_INACCURATE /var/tmp/a.051193.c 
-quiet -dumpbase a.051193.c -version -fsigned-char -o /var/tmp/cczLSErX.s
GNU CPP version 3.2.1 [FreeBSD] 20021009 (prerelease) (cpplib) (i386 FreeBSD/ELF)
GNU C version 3.2.1 [FreeBSD] 20021009 (prerelease) (i386-undermydesk-freebsd)
compiled by GNU C version 3.2.1 [FreeBSD] 20021009 (prerelease).
ignoring duplicate directory /usr/include
#include ... search starts here:
#include ... search starts here:
 /usr/local/lib/NAGWare
 /usr/include
End of search list.
 /usr/bin/as -v -o a.o /var/tmp/cczLSErX.s
GNU assembler version 2.13 [FreeBSD] 2002-10-10 (i386-obrien-freebsd5.0) using BFD 
version 2.13 [FreeBSD] 2002-10-10
Loading...
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.2.1 [FreeBSD] 20021009 (prerelease)
 /usr/libexec/collect2 -V -dynamic-linker /usr/libexec/ld-elf.so.1 /usr/lib/crt1.o 
/usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib /usr/local/lib/NAGWare/quickfit.o a.o 
-rpath /usr/local/lib/NAGWare /usr/local/lib/NAGWare/libf96.so 
/usr/local/lib/NAGWare/libf96.a -lm -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
GNU ld version 2.13 [FreeBSD] 2002-10-10
  Supported emulations:
   elf_i386_fbsd

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Mark Murray
  By the time __sF is mainstream, I guess the vendor will have adapted
  their product to match. Win, win.
  
 
 No, it does not just work.  The NAG f95 compiler generates a
 C file.  The C file is compiled by gcc.

How about much effort? there _has_ to be some kind of way to
specify which C library to use.

M
-- 
o   Mark Murray
\_
O.\_Warning: this .sig is umop ap!sdn

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 08:42:35PM +, Mark Murray wrote:
   By the time __sF is mainstream, I guess the vendor will have adapted
   their product to match. Win, win.
   
  
  No, it does not just work.  The NAG f95 compiler generates a
  C file.  The C file is compiled by gcc.
 
 How about much effort? there _has_ to be some kind of way to
 specify which C library to use.
 

The only work-around I know is documented in (watch the line wrap) 

http://www.freebsd.org/cgi/getmsg.cgi?fetch=1755928+1759974+/usr/local/www\
/db/text/2002/freebsd-current/20021013.freebsd-current

To recap, I can do

f95 -c hello.f90
gcc -v -o hello -nostdlib  \
   /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o \
   /usr/local/lib/NAGWare/quickfit.o hello.o /usr/local/lib/NAGWare/libf96.so\
   -lm \
   /usr/home/karg/tmp/minpack/lib/libc.so \
   /usr/lib/crtend.o /usr/lib/crtn.o

But, the 2nd and 6th lines in the gcc command use the crt* files
from freebsd-current.  The math library, -lm, is also from 
freebsd-current.  /usr/lib/compat does contains neither a 4.x math
library nor the crt* files.  The libc.so in the above is a 
symlink

kargl[274] ldd hello
hello:
libf96.so.1 = /usr/local/lib/NAGWare/libf96.so.1 (0x2806b000)
libm.so.2 = /usr/lib/libm.so.2 (0x2810b000)
libc.so.4 = /usr/lib/compat/libc.so.4 (0x28129000)



-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Matthew N. Dodd
On Sat, 2 Nov 2002, Mark Murray wrote:
 This shouldn't be a problem. The commercial software Should Not Be(tm)
 supporting something as variable as CURRENT, and with the STABLE libraries
 around in COMPAT mode, the compiler Will Just Work(tm) (or should with
 not much effort).

 By the time __sF is mainstream, I guess the vendor will have adapted
 their product to match. Win, win.

This isn't the case for one piece of vendor software that I'm not allowed
to talk about.

-- 
| Matthew N. Dodd  | '78 Datsun 280Z | '75 Volvo 164E | FreeBSD/NetBSD  |
| [EMAIL PROTECTED] |   2 x '84 Volvo 245DL| ix86,sparc,pmax |
| http://www.jurai.net/~winter |  For Great Justice!  | ISO8802.5 4ever |


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 06:15:09PM -0500, Matthew N. Dodd wrote:
 On Sat, 2 Nov 2002, Mark Murray wrote:
  This shouldn't be a problem. The commercial software Should Not Be(tm)
  supporting something as variable as CURRENT, and with the STABLE libraries
  around in COMPAT mode, the compiler Will Just Work(tm) (or should with
  not much effort).
 
  By the time __sF is mainstream, I guess the vendor will have adapted
  their product to match. Win, win.
 
 This isn't the case for one piece of vendor software that I'm not allowed
 to talk about.
 

See the new WANT_COMPAT4_STDIO make.conf knob.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Matthew N. Dodd
On Sat, 2 Nov 2002, Steve Kargl wrote:
 On Sat, Nov 02, 2002 at 06:15:09PM -0500, Matthew N. Dodd wrote:
  This isn't the case for one piece of vendor software that I'm not allowed
  to talk about.

 See the new WANT_COMPAT4_STDIO make.conf knob.

This won't be acceptable as the vender will likely not be producing a
separate 5.0 build (ie the same build needs to run on both.) until 4.x is
EOLed.  Forcing people to rebuild libc seems a high barrier to entry.

-- 
| Matthew N. Dodd  | '78 Datsun 280Z | '75 Volvo 164E | FreeBSD/NetBSD  |
| [EMAIL PROTECTED] |   2 x '84 Volvo 245DL| ix86,sparc,pmax |
| http://www.jurai.net/~winter |  For Great Justice!  | ISO8802.5 4ever |


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Marcel Moolenaar
On Sat, Nov 02, 2002 at 12:22:38PM -0800, Steve Kargl wrote:
 
 The verbose compiler output is below.  Note,
 that the crt* files are also 5.x instead of
 4.x.  Maybe it's just good fortune, but NAG's
 f95 compiler works great on 5.x (except for
 the __sF snafu).

Yes. The knob may help you now, but there's no guarantee that you'll
get hosed later on. Probably the easiest *real* solution would be
to build gcc on a 4.x machine and have it installed under /usr/local.
It will have a FQ name like i386-unknown-freebsd4.0-gcc. That version
has default paths for both includes and libraries in the gcc tree
rooted under /usr/local. You can populate that tree with headers and
libraries found on 4.x machine and then move it over (or NFS export
it) to your 5.x box.

In short: you've set yourself up for crossbuilding...

-- 
 Marcel Moolenaar USPA: A-39004  [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 06:36:31PM -0500, Matthew N. Dodd wrote:
 On Sat, 2 Nov 2002, Steve Kargl wrote:
  On Sat, Nov 02, 2002 at 06:15:09PM -0500, Matthew N. Dodd wrote:
   This isn't the case for one piece of vendor software that I'm not allowed
   to talk about.
 
  See the new WANT_COMPAT4_STDIO make.conf knob.
 
 This won't be acceptable as the vender will likely not be producing a
 separate 5.0 build (ie the same build needs to run on both.) until 4.x is
 EOLed.  Forcing people to rebuild libc seems a high barrier to entry.
 

Maybe I misunderstand you.  But, a person running FreeBSD 5.x,
who wants to runs this vendor's 4.x software, will need to
build their libc with WANT_COMPAT4_STDIO defined if this
product needs to see __sF.

This is my exact problem.  I have NAG's Fortran 95 compiler,
which was built for FreeBSD 4.2.  I ran it on 5.0 without a
problem until __sF was made static.  NAG may never release
a 5.x version of their compiler because it may not be cost
effective.  This is a compromise to move forward with the
elimination of the visibility of __sF.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Juli Mallett
* De: Matthew N. Dodd [EMAIL PROTECTED] [ Data: 2002-11-02 ]
[ Subjecte: Re: __sF ]
 On Sat, 2 Nov 2002, Steve Kargl wrote:
  On Sat, Nov 02, 2002 at 06:15:09PM -0500, Matthew N. Dodd wrote:
   This isn't the case for one piece of vendor software that I'm not allowed
   to talk about.
 
  See the new WANT_COMPAT4_STDIO make.conf knob.
 
 This won't be acceptable as the vender will likely not be producing a
 separate 5.0 build (ie the same build needs to run on both.) until 4.x is
 EOLed.  Forcing people to rebuild libc seems a high barrier to entry.

Not making a clean break by default (i.e. not requiring a rebuild to get
the backwards behaviour) causes this to cascade.

But it worked in 4.x = Well then by golly it will in 5.0!
But it works in 5.0 = Then we'll keep it around for 5.x
But it worked in 5.x! = We'll make it tunable (on), but have rtld whine!
But it worked in 6.0, despite that rtld bug!

etc.

Look how long it took Microsoft to deprecate MS DOS apps.  It took until
they switched to an entirely new kernel (for the product line) and rebadged
the hell out of it.

I much prefer the idea of move onward, provide a backward solution if someone
really needs it...  Would it satisfy you to see a port, h0h0libc?

Solutions like that can't be guaranteed to work for (N+X).0 systems, to provide
vendor _libraries_ to link in a non-cross environment, where N is the system
the libraries are for, and where X is some number greater than one.

Keep in mind this only affects linking a closed library, and that this situation
is a bit absurd, given that a reasonable solution exists, and if necessary,
can be packaged up nicely...  Developers using this sort of environment are
asking for trouble.  It seems to me a serious developer will develop where the
tools are working and supported (keep in mind this is a issue with a vendor
LIBRARY being LINKED in, not a TOOL being USED), or set up a proper cross-env
to target the platform where the library is targettted, or will force their
vendor to support the new platform they (for whatever reason) see fit to
develop on.

[ I promise the rest of this won't be something someone will try to construe
  as a bikeshed. ]

juli.
--
Juli Mallett [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 04:19:10PM -0800, Juli Mallett wrote:
 
 Keep in mind this only affects linking a closed library, and that this
 situation is a bit absurd, given that a reasonable solution exists, and
 if necessary, can be packaged up nicely...

A bit absurd?  Can you explain why it is absurb and can you
give me the reasonable solution that you have?

 Developers using this sort of environment are asking for trouble.  It
 seems to me a serious developer will develop where the tools are working
 and supported (keep in mind this is a issue with a vendor LIBRARY being
 LINKED in, not a TOOL being USED),

The TOOL was working fine until __sF was made static.

 or set up a proper cross-env to target the platform where the library
 is targettted

This is what I guess we'll have to do.

 or will force their vendor to support the new platform they
 (for whatever reason) see fit to develop on.

Force the vendor to support the new platform?  No, this will
most likely cause the vendor to abandon the FreeBSD platform.
So much for encouraging commercial support for FreeBSD.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: On Sat, Nov 02, 2002 at 09:47:26AM -0800, Kris Kennaway wrote:
:  On Sat, Nov 02, 2002 at 10:35:03AM -0500, Adam K Kirchhoff wrote:
:  
:   So is the current position on the matter that __sF is going to remain out
:   of libc?
:  
:  Yes.
:  
: 
: This will break some commercially available software that
: can't easily replaced.
: 
: kargl[248] f95 -V a.f90
: NAGWare Fortran 95 compiler Release 4.2(468)
: Copyright 1990-2002 The Numerical Algorithms Group Ltd., Oxford, U.K.
: f95comp version is 4.2(468)
: /usr/local/lib/NAGWare/libf96.so: undefined reference to `__sF'
: collect2: ld returned 1 exit status
: 
: I seriously doubt that NAG will support both a 
: 4.x and 5.x version of their compiler.

Then you should force it to link with libc.so.4.  That's the version
of libc that it build libf96.so against, so you are taking a big
chance having it use libc.so.5.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: http://www.freebsd.org/cgi/getmsg.cgi?fetch=1755928+1759974+/usr/local/\
: www/db/text/2002/freebsd-current/20021013.freebsd-current

You should be linking against the -stable versions of these items as
well as the libc.so.4.  If you don't, then you are asking for
problems.  Maybe you can kludge it to make libc.so.5 work, but the
whole reason that it is .5 and not .4 is that it is not binary
compatible with .4, and for more reasons than just __sF.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: On Sat, Nov 02, 2002 at 06:15:09PM -0500, Matthew N. Dodd wrote:
:  On Sat, 2 Nov 2002, Mark Murray wrote:
:   This shouldn't be a problem. The commercial software Should Not Be(tm)
:   supporting something as variable as CURRENT, and with the STABLE libraries
:   around in COMPAT mode, the compiler Will Just Work(tm) (or should with
:   not much effort).
:  
:   By the time __sF is mainstream, I guess the vendor will have adapted
:   their product to match. Win, win.
:  
:  This isn't the case for one piece of vendor software that I'm not allowed
:  to talk about.
:  
: 
: See the new WANT_COMPAT4_STDIO make.conf knob.

But that knob is a total kludge and *WRONG* for this case.  It lets
things link, but you are still cross threading 4.x and 5.x binaries,
which is asking to be shot in the foot.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread M. Warner Losh
In message: [EMAIL PROTECTED]
Steve Kargl [EMAIL PROTECTED] writes:
: Maybe I misunderstand you.  But, a person running FreeBSD 5.x,
: who wants to runs this vendor's 4.x software, will need to
: build their libc with WANT_COMPAT4_STDIO defined if this
: product needs to see __sF.

All that kludge does is to allow a program that shouldn't be allowed
to link to link.  You need to setup to compile 4.x binaries on the 5.x
machine, or you will lose in the long run.  __sF is only the first of
many issues, some subtle, that you'll face cross-threading 4.x and 5.x
libraries.

Warner

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Marcel Moolenaar
On Sat, Nov 02, 2002 at 03:58:14PM -0800, Steve Kargl wrote:
  
   See the new WANT_COMPAT4_STDIO make.conf knob.
  
  This won't be acceptable as the vender will likely not be producing a
  separate 5.0 build (ie the same build needs to run on both.) until 4.x is
  EOLed.  Forcing people to rebuild libc seems a high barrier to entry.
  
 
 Maybe I misunderstand you.  But, a person running FreeBSD 5.x,
 who wants to runs this vendor's 4.x software, will need to
 build their libc with WANT_COMPAT4_STDIO defined if this
 product needs to see __sF.

No; you're mixing things up. The compat4x stuff we have now allows
you to run 4.x binaries on 5.x. The problem that WANT_COMPAT4_STDIO
addresses is *compiling* 4.x compatible programs on 5.x! A world
of difference.

-- 
 Marcel Moolenaar USPA: A-39004  [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: __sF

2002-11-02 Thread Steve Kargl
On Sat, Nov 02, 2002 at 08:42:57PM -0800, Marcel Moolenaar wrote:
 On Sat, Nov 02, 2002 at 03:58:14PM -0800, Steve Kargl wrote:
   
See the new WANT_COMPAT4_STDIO make.conf knob.
   
   This won't be acceptable as the vender will likely not be producing a
   separate 5.0 build (ie the same build needs to run on both.) until 4.x is
   EOLed.  Forcing people to rebuild libc seems a high barrier to entry.
   
  
  Maybe I misunderstand you.  But, a person running FreeBSD 5.x,
  who wants to runs this vendor's 4.x software, will need to
  build their libc with WANT_COMPAT4_STDIO defined if this
  product needs to see __sF.
 
 No; you're mixing things up. The compat4x stuff we have now allows
 you to run 4.x binaries on 5.x. The problem that WANT_COMPAT4_STDIO
 addresses is *compiling* 4.x compatible programs on 5.x! A world
 of difference.
 

I just looked through /usr/lib on the 4.7 live ISO.  We are
missing a bunch of libraries.  See another post with the list.

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Ghost of __sF and COMPAT4X libraries.

2002-11-02 Thread Steve Kargl
Since I appear to one the few people caught by the __sF and commercial
software broken by staticizing __sF, I decided to look at the 4.7
live filesystem ISO image to see what I would need to build a proper
set of libraries.  Here is a summary of what I found.

List of shared libraries in 4.7 not included in COMPAT4X.

libacl.so.3  libalias.so.4 libasn1.so.5libatm.so.2
libbz2.so.1  libcalendar.so.2  libcam.so.2 libcipher.so.2
libcom_err.so.2  libcrypt.so.2 libcrypto.so.2  libdes.so.3
libdevstat.so.2  libdialog.so.4libfetch.so.3   libform.so.2
libftpio.so.5libg2c.so.1   libgmp.so.3 libgnuregex.so.2
libgssapi.so.5   libhdb.so.5   libhistory.so.4 libipsec.so.1
libipx.so.2  libisc.so.1   libkadm.so.3libkadm5clnt.so.5
libkadm5srv.so.5 libkafs.so.3  libkdb.so.3 libkrb.so.3
libkrb5.so.5 libkvm.so.2   libm.so.2   libmd.so.2
libmenu.so.2 libmilter.so.2libmp.so.3  libncp.so.1
libncurses.so.5  libnetgraph.so.1  libopie.so.2libpanel.so.2
libpcap.so.2 libposix1e.so.2   libradius.so.1  libreadline.so.4
libroken.so.5librpcsvc.so.2libskey.so.2libsmb.so.1
libssh.so.2  libssl.so.2   libtacplus.so.1 libusbhid.so.0
libutil.so.3 libvgl.so.2   libwrap.so.3libxpg4.so.3
libz.so.2
 
libgcc.a on 4.7 contains references to __sF.  There is no libgcc.so.



The following libraries are installed by COMPAT4X, but are not
present in 4.7.  I assume these are carried forward from 4.x x  7.

libssl.so.1  libusb.so.0   libcrypto.so.1  libfetch.so.2



The following 4.7 libs make reference to __sF.  Several of the
corresponding 5.0 libraries still have the same version number.
We may need to bump the version numbers.

libalias.so.4libbz2.so.1   libc.so.4libc_r.so.4
libcam.so.2  libcom_err.so.2   libcrypto.so.2   libdes.so.3
libdevstat.so.2  libdialog.so.4libedit.so.3 libfetch.so.3
libftpio.so.5libg2c.so.1   libgmp.so.3  libhistory.so.4
libipsec.so.1libisc.so.1   libkdb.so.3  libkrb.so.3
libkrb5.so.5 libkvm.so.2   libm.so.2libmp.so.3
libncp.so.1  libncurses.so.5   libopie.so.2 libpam.so.1
libpcap.so.2 libperl.so.3  libreadline.so.4 libroken.so.5
libskey.so.2 libsmb.so.1   libssh.so.2  libstdc++.so.3
libutil.so.3

-- 
Steve

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: Ghost of __sF and COMPAT4X libraries.

2002-11-02 Thread Marcel Moolenaar
On Sat, Nov 02, 2002 at 09:59:16PM -0800, Steve Kargl wrote:
 
 The following libraries are installed by COMPAT4X, but are not
 present in 4.7.  I assume these are carried forward from 4.x x  7.
 
 libssl.so.1  libusb.so.0   libcrypto.so.1  libfetch.so.2

G... This means we had version bumps on -stable without
providing compat4x libraries on 4.x - I think we're seriously
fscking up here :-(

 The following 4.7 libs make reference to __sF.  Several of the
 corresponding 5.0 libraries still have the same version number.
 We may need to bump the version numbers.
 
 libalias.so.4libbz2.so.1   libc.so.4libc_r.so.4
 libcam.so.2  libcom_err.so.2   libcrypto.so.2   libdes.so.3
 libdevstat.so.2  libdialog.so.4libedit.so.3 libfetch.so.3
 libftpio.so.5libg2c.so.1   libgmp.so.3  libhistory.so.4
 libipsec.so.1libisc.so.1   libkdb.so.3  libkrb.so.3
 libkrb5.so.5 libkvm.so.2   libm.so.2libmp.so.3
 libncp.so.1  libncurses.so.5   libopie.so.2 libpam.so.1
 libpcap.so.2 libperl.so.3  libreadline.so.4 libroken.so.5
 libskey.so.2 libsmb.so.1   libssh.so.2  libstdc++.so.3
 libutil.so.3

Yes, definitely. That's the problem with low-level ABI changes
to symbols that leak like runny noses :-/

I think you have an excellent point now that I realize to what
extend we're ignorant to the consequences of our actions :-(
Moi aussi :-/

-- 
 Marcel Moolenaar USPA: A-39004  [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



Re: Ghost of __sF and COMPAT4X libraries.

2002-11-02 Thread Kris Kennaway
On Sat, Nov 02, 2002 at 11:05:18PM -0800, Marcel Moolenaar wrote:
 On Sat, Nov 02, 2002 at 09:59:16PM -0800, Steve Kargl wrote:
  
  The following libraries are installed by COMPAT4X, but are not
  present in 4.7.  I assume these are carried forward from 4.x x  7.
  
  libssl.so.1  libusb.so.0   libcrypto.so.1  libfetch.so.2
 
 G... This means we had version bumps on -stable without
 providing compat4x libraries on 4.x - I think we're seriously
 fscking up here :-(

libssl and libcrypto were bumped in -stable (about a year ago), and
the old versions were added to COMPAT4x on -stable (and -current).
There is no problem here; I don't know about the others.

Kris


msg45985/pgp0.pgp
Description: PGP signature


Re: Ghost of __sF and COMPAT4X libraries.

2002-11-02 Thread Marcel Moolenaar
On Sat, Nov 02, 2002 at 11:25:29PM -0800, Kris Kennaway wrote:
 On Sat, Nov 02, 2002 at 11:05:18PM -0800, Marcel Moolenaar wrote:
  On Sat, Nov 02, 2002 at 09:59:16PM -0800, Steve Kargl wrote:
   
   The following libraries are installed by COMPAT4X, but are not
   present in 4.7.  I assume these are carried forward from 4.x x  7.
   
   libssl.so.1  libusb.so.0   libcrypto.so.1  libfetch.so.2
  
  G... This means we had version bumps on -stable without
  providing compat4x libraries on 4.x - I think we're seriously
  fscking up here :-(
 
 libssl and libcrypto were bumped in -stable (about a year ago), and
 the old versions were added to COMPAT4x on -stable (and -current).
 There is no problem here; I don't know about the others.

Pheeuw... That's at least something. From my point of view version
bumps on a release branch are a big no-no; no matter if you have
a compat-self package.

-- 
 Marcel Moolenaar USPA: A-39004  [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message



X problem,Undefined symbol __sF

2002-10-19 Thread suken woo
after rebuild everything today. get the errro messages,when running 
nautilus etc
what can i do? Regards
/usr/libexec/ld-elf.so.1: /usr/local/lib/libjpeg.so.9: Undefined symbol 
__sF


To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message


  1   2   >