<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/libexec/rtld-aout/rtld.c, branch release/3.3.0_cvs</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>This commit was manufactured by cvs2svn to create tag</title>
<updated>1999-09-16T08:26:13+00:00</updated>
<author>
<name>cvs2svn</name>
<email>cvs2svn@FreeBSD.org</email>
</author>
<published>1999-09-16T08:26:13+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=5be28542797ac26e17de490f50e0830003596d38'/>
<id>5be28542797ac26e17de490f50e0830003596d38</id>
<content type='text'>
'RELENG_3_3_0_RELEASE'.

This commit was manufactured to restore the state of the 3.3-RELEASE image.
Releases prior to 5.3-RELEASE are omitting the secure/ and crypto/ subdirs.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
'RELENG_3_3_0_RELEASE'.

This commit was manufactured to restore the state of the 3.3-RELEASE image.
Releases prior to 5.3-RELEASE are omitting the secure/ and crypto/ subdirs.
</pre>
</div>
</content>
</entry>
<entry>
<title>$Id$ -&gt; $FreeBSD$</title>
<updated>1999-08-29T15:04:30+00:00</updated>
<author>
<name>Peter Wemm</name>
<email>peter@FreeBSD.org</email>
</author>
<published>1999-08-29T15:04:30+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=ee00aca0117c842d6282ea58ac984b2b34123ec2'/>
<id>ee00aca0117c842d6282ea58ac984b2b34123ec2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix a bug in the handling of minor version numbers.  Formerly, the</title>
<updated>1998-11-07T01:59:39+00:00</updated>
<author>
<name>John Polstra</name>
<email>jdp@FreeBSD.org</email>
</author>
<published>1998-11-07T01:59:39+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=3f47c82a7f19d659d0b8e24ac47653f25005ed25'/>
<id>3f47c82a7f19d659d0b8e24ac47653f25005ed25</id>
<content type='text'>
rtld would accept the first shared library it found with the right
major version number, even if the minor version number was too low.
If a different version of the shared library with an adequate minor
version number appeared later in the search path, it would not be
found.

Now the rtld searches all locations first looking for a library
with a minor version that is high enough.  Only if such a library
is not found will it fall back to accepting a minor version number
that is too low.  As before, a warning comes out in that case.

This solves some problems encountered when building an older world
on a -current system.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
rtld would accept the first shared library it found with the right
major version number, even if the minor version number was too low.
If a different version of the shared library with an adequate minor
version number appeared later in the search path, it would not be
found.

Now the rtld searches all locations first looking for a library
with a minor version that is high enough.  Only if such a library
is not found will it fall back to accepting a minor version number
that is too low.  As before, a warning comes out in that case.

This solves some problems encountered when building an older world
on a -current system.
</pre>
</div>
</content>
</entry>
<entry>
<title>Pass me the pointy hat with the extra sequins.  Just a moment, while I get</title>
<updated>1998-08-22T15:51:41+00:00</updated>
<author>
<name>Stephen McKay</name>
<email>mckay@FreeBSD.org</email>
</author>
<published>1998-08-22T15:51:41+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=166f84746d6c8e80a83cb1225bef286012000c8e'/>
<id>166f84746d6c8e80a83cb1225bef286012000c8e</id>
<content type='text'>
it to sit right...

The __error() hack gave out the wrong address.  It returned the address of
errno in ld.so instead of the address of errno in the main program.  Oops.

The hack is now correct, just in time to be obsoleted by elf.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
it to sit right...

The __error() hack gave out the wrong address.  It returned the address of
errno in ld.so instead of the address of errno in the main program.  Oops.

The hack is now correct, just in time to be obsoleted by elf.
</pre>
</div>
</content>
</entry>
<entry>
<title>Since I got no objections to this patch, and no one has offered any</title>
<updated>1998-06-21T14:22:29+00:00</updated>
<author>
<name>Stephen McKay</name>
<email>mckay@FreeBSD.org</email>
</author>
<published>1998-06-21T14:22:29+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=1188f66af70eb770ca8ea208a386f5f67caa7749'/>
<id>1188f66af70eb770ca8ea208a386f5f67caa7749</id>
<content type='text'>
alternative, I present .. ta! da! .. the __error() hack.

This patch to the a.out dynamic loader provides old a.out binaries
with __error() if they are linked with an older libc that lacks it,
but are also linked against a library that needs it.

There is a smaller, tricker hack that takes advantage of the fact
that ld.so has __error() too, courtesy of the new libc, but this
hack is the straightforward version.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
alternative, I present .. ta! da! .. the __error() hack.

This patch to the a.out dynamic loader provides old a.out binaries
with __error() if they are linked with an older libc that lacks it,
but are also linked against a library that needs it.

There is a smaller, tricker hack that takes advantage of the fact
that ld.so has __error() too, courtesy of the new libc, but this
hack is the straightforward version.
</pre>
</div>
</content>
</entry>
<entry>
<title>Search for libraries in dlopen() when the specified path</title>
<updated>1998-06-07T03:53:08+00:00</updated>
<author>
<name>Brian Somers</name>
<email>brian@FreeBSD.org</email>
</author>
<published>1998-06-07T03:53:08+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=32b87439699af0ca8497f0d4bad52f9716df2ce8'/>
<id>32b87439699af0ca8497f0d4bad52f9716df2ce8</id>
<content type='text'>
contains no ``/''s.
Elf already searches it seems.
Mostly submitted by: Mike Smith &lt;mike@smith.net.au&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
contains no ``/''s.
Elf already searches it seems.
Mostly submitted by: Mike Smith &lt;mike@smith.net.au&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ELF preparation step 2:</title>
<updated>1998-05-26T20:12:56+00:00</updated>
<author>
<name>Søren Schmidt</name>
<email>sos@FreeBSD.org</email>
</author>
<published>1998-05-26T20:12:56+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=cabb97dcbf9a5a7e0ce3b2cfef019afdfc9a21dc'/>
<id>cabb97dcbf9a5a7e0ce3b2cfef019afdfc9a21dc</id>
<content type='text'>
Move a.out libraries to /usr/lib/aout to make space for ELF libs.
Make rtld usr /usr/lib/aout as default library path.
Make ldconfig reject /usr/lib as an a.out library path.
Fix various Makefiles for LIBDIR!=/usr/lib breakage.

This will after a make world &amp; reboot give a system that no
longer uses /usr/lib/*, infact one could remove all the old
libraries there, they are not used anymore.

We are getting close to an ELF make world, but I'll let this
all settle for a week or two...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move a.out libraries to /usr/lib/aout to make space for ELF libs.
Make rtld usr /usr/lib/aout as default library path.
Make ldconfig reject /usr/lib as an a.out library path.
Fix various Makefiles for LIBDIR!=/usr/lib breakage.

This will after a make world &amp; reboot give a system that no
longer uses /usr/lib/*, infact one could remove all the old
libraries there, they are not used anymore.

We are getting close to an ELF make world, but I'll let this
all settle for a week or two...
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement dladdr.</title>
<updated>1998-02-06T16:46:46+00:00</updated>
<author>
<name>John Polstra</name>
<email>jdp@FreeBSD.org</email>
</author>
<published>1998-02-06T16:46:46+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=663690b388e5292163b29dc674747e7112651ebf'/>
<id>663690b388e5292163b29dc674747e7112651ebf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make emacs work again.  This is a workaround for the fact that the</title>
<updated>1997-12-05T02:06:37+00:00</updated>
<author>
<name>John Polstra</name>
<email>jdp@FreeBSD.org</email>
</author>
<published>1997-12-05T02:06:37+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=6210388a93a1ddd004d48a86adae0af467c42fa2'/>
<id>6210388a93a1ddd004d48a86adae0af467c42fa2</id>
<content type='text'>
emacs a.out file, self-generated by emacs's "unexec" function in
"unexsunos4.c", is invalid.  In particular, its "_end" symbol has
the wrong value.  The dynamic linker was using the value of that
symbol to initialize its sbrk break level.

The workaround is to peek at the executable's a.out header in
memory, and calculate what "_end" should be based on the segment
sizes.

I will work out a fix for emacs and send it to the FSF.  This
dynamic linker workaround is still worthwhile, if only to avoid
forcing all emacs users to build a new version.

Note: xemacs gives a bogus warning at startup, for related reasons.
The warning is harmless and can safely be ignored.  I will send a
patch to the xemacs maintainers to get rid of it, and meanwhile
add a patch file to our port.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
emacs a.out file, self-generated by emacs's "unexec" function in
"unexsunos4.c", is invalid.  In particular, its "_end" symbol has
the wrong value.  The dynamic linker was using the value of that
symbol to initialize its sbrk break level.

The workaround is to peek at the executable's a.out header in
memory, and calculate what "_end" should be based on the segment
sizes.

I will work out a fix for emacs and send it to the FSF.  This
dynamic linker workaround is still worthwhile, if only to avoid
forcing all emacs users to build a new version.

Note: xemacs gives a bogus warning at startup, for related reasons.
The warning is harmless and can safely be ignored.  I will send a
patch to the xemacs maintainers to get rid of it, and meanwhile
add a patch file to our port.
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of the dynamic linker's internal malloc package, and arrange</title>
<updated>1997-11-29T03:32:48+00:00</updated>
<author>
<name>John Polstra</name>
<email>jdp@FreeBSD.org</email>
</author>
<published>1997-11-29T03:32:48+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=08bdd3d27d2cfe8dafe2056da6f5e57e70f646e7'/>
<id>08bdd3d27d2cfe8dafe2056da6f5e57e70f646e7</id>
<content type='text'>
things so that it uses the same malloc as is used by the program
being executed.  This has several advantages, the big one being
that you can now debug core dumps from dynamically linked programs
and get useful information out of them.  Until now, that didn't
work.  The internal malloc package placed the tables describing
the loaded shared libraries in a mapped region of high memory that
was not written to core files.  Thus the debugger had no way of
determining what was loaded where in memory.  Now that the dynamic
linker uses the application's malloc package (normally, but not
necessarily, the system malloc), its tables end up in the regular
heap area where they will be included in core dumps.  The debugger
now works very well indeed, thank you very much.

Also ...

Bring the program a little closer to conformance with style(9).
There is still a long way to go.

Add minimal const correctness changes to get rid of compiler warnings
caused by the recent const changes in &lt;dlfcn.h&gt; and &lt;link.h&gt;.

Improve performance by eliminating redundant calculations of symbols'
hash values.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
things so that it uses the same malloc as is used by the program
being executed.  This has several advantages, the big one being
that you can now debug core dumps from dynamically linked programs
and get useful information out of them.  Until now, that didn't
work.  The internal malloc package placed the tables describing
the loaded shared libraries in a mapped region of high memory that
was not written to core files.  Thus the debugger had no way of
determining what was loaded where in memory.  Now that the dynamic
linker uses the application's malloc package (normally, but not
necessarily, the system malloc), its tables end up in the regular
heap area where they will be included in core dumps.  The debugger
now works very well indeed, thank you very much.

Also ...

Bring the program a little closer to conformance with style(9).
There is still a long way to go.

Add minimal const correctness changes to get rid of compiler warnings
caused by the recent const changes in &lt;dlfcn.h&gt; and &lt;link.h&gt;.

Improve performance by eliminating redundant calculations of symbols'
hash values.
</pre>
</div>
</content>
</entry>
</feed>
