Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jan 1996 21:55:20 -0800
From:      John Polstra <jdp@polstra.com>
To:        jdli@csie.nctu.edu.tw
Cc:        freebsd-current@freebsd.org
Subject:   Re: problems in -current (was Re: awk broken ???)
Message-ID:  <199601210555.VAA14286@austin.polstra.com>
In-Reply-To: <199601210426.MAA13402@linux.csie.nctu.edu.tw>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <199601210426.MAA13402@linux.csie.nctu.edu.tw> you write:
> Nate writes:
> > 2) John Polstra's change which affected all shlibs.
> > jdp         96/01/16 16:03:10
> > 
> >   Modified:    share/mk  bsd.lib.mk
> >   Log:
> >   Always link /usr/lib/c++rt0.o into a shared library.  CPLUSPLUSLIB is no
> >   longer necessary, and can be removed from Makefiles.
> > 
> > Unfortunately, I suspect the latter, but have no way of checking it
> > right now.
> 
> 	Ya...you are right, after back out this change, the system is
> 	happy again....No more awk problem, no more "malloc warning ...."
> 	Thanks.

Hi, I'm the guy who made the change (CPLUSPLUSLIB) that seems to be
causing the problem.  I have been trying to figure out what could be
going on.  So far, I have only one idea.

The change that I made to bsd.lib.mk causes /usr/lib/c++rt0.o to be
linked into every shared library.  Formerly, it was linked into just the
C++ shared libraries.  This change requires that you have the latest
version of /usr/lib/c++rt0.o installed on your system.  Perhaps, when
the shared libraries are being built, the old version of c++rt0.o is
still installed.  In other words, maybe the new version of c++rt0.o is
not being installed early enough in the "make world" process.  If you
build your shared libraries with the old version of /usr/lib/c++rt0.o,
there will be problems.  (But, I wouldn't expect exactly the kinds of
problems that you've described.)

I will try to test this theory myself, here on my system.  But I'm not
up-to-date on -current, so it's going to take some time.  If you (or
anybody who's up-to-date) are interested, you could try it pretty
easily.  Just do this:

    1.  Finish your "make world", with my change to bsd.lib.mk
    still backed out.  Then the newest c++rt0.o will definitely be
    installed on your system.

    2.  Put my change back into bsd.lib.mk.

    3.  Rebuild the libraries that awk depends on: libgnuregex, libm,
    and libc.  You don't have to recompile anything.  All you have to do
    is relink the shared libraries.  The easiest way to do that is to
    delete the shared library from its build directory, then do "make"
    in that directory, then install the new library into /usr/lib.

    4.  Now see if the problem has come back again.

If anybody tries this before I get it done, please let me know what
happened!

Sorry for the trouble.

-- John
-- 
   John Polstra                                       jdp@polstra.com
   John D. Polstra & Co., Inc.                Seattle, Washington USA
   "Self-knowledge is always bad news."                 -- John Barth



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601210555.VAA14286>