aboutsummaryrefslogtreecommitdiff
path: root/lib/csu/i386-elf
diff options
context:
space:
mode:
authorJohn Polstra <jdp@FreeBSD.org>1999-03-13 01:35:44 +0000
committerJohn Polstra <jdp@FreeBSD.org>1999-03-13 01:35:44 +0000
commit0738f6e0c3a4dd3f533553d7ecd42ebdd68e02e3 (patch)
tree7b305d59fe6d109802c8ece7eb1860ee65aa408b /lib/csu/i386-elf
parent03fd03689eb472b77aef07a6341567ee14c948dc (diff)
downloadsrc-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.c6
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)();
}