diff options
author | John Polstra <jdp@FreeBSD.org> | 1999-03-13 01:35:44 +0000 |
---|---|---|
committer | John Polstra <jdp@FreeBSD.org> | 1999-03-13 01:35:44 +0000 |
commit | 0738f6e0c3a4dd3f533553d7ecd42ebdd68e02e3 (patch) | |
tree | 7b305d59fe6d109802c8ece7eb1860ee65aa408b /lib/csu/i386-elf | |
parent | 03fd03689eb472b77aef07a6341567ee14c948dc (diff) | |
download | src-0738f6e0c3a4dd3f533553d7ecd42ebdd68e02e3.tar.gz src-0738f6e0c3a4dd3f533553d7ecd42ebdd68e02e3.zip |
Reverse the order of processing object files within an executable or
shared library when invoking global constructors and destructors.
For constructors, the object files used to be processed from first
to last; now they're done from last to first. (Destructors are done
in the opposite order, as required by the C++ standard.) This makes
us consistent with standard gcc and egcs compilers. It also
eliminates ordering differences between dynamic and static
executables.
Bump the value of __FreeBSD_version to 400002 to reflect this
change.
Notes
Notes:
svn path=/head/; revision=44699
Diffstat (limited to 'lib/csu/i386-elf')
-rw-r--r-- | lib/csu/i386-elf/crtbegin.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/csu/i386-elf/crtbegin.c b/lib/csu/i386-elf/crtbegin.c index 2e06dc8ec846..ddc8b807b9fe 100644 --- a/lib/csu/i386-elf/crtbegin.c +++ b/lib/csu/i386-elf/crtbegin.c @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: crtbegin.c,v 1.1.1.1 1998/03/07 20:27:10 jdp Exp $ + * $Id: crtbegin.c,v 1.2 1999/03/12 17:33:27 jdp Exp $ */ #include <sys/cdefs.h> @@ -41,6 +41,8 @@ do_ctors(void) fptr *fpp; for(fpp = ctor_list + 1; *fpp != 0; ++fpp) + ; + while(--fpp > ctor_list) (**fpp)(); } @@ -50,8 +52,6 @@ do_dtors(void) fptr *fpp; for(fpp = dtor_list + 1; *fpp != 0; ++fpp) - ; - while(--fpp > dtor_list) (**fpp)(); } |