diff options
author | Jason Merrill <merrill@gnu.org> | 1994-07-29 19:03:37 +0000 |
---|---|---|
committer | Jason Merrill <merrill@gnu.org> | 1994-07-29 19:03:37 +0000 |
commit | 566b213ab1d920957c39fd8e4ba5b78f517a68fa (patch) | |
tree | 220291a2658bea86e2b9626725704a2023ceddd6 /gcc/libgcc2.c | |
parent | 2c1c10ec5ac5cf9ca1bafa6dd97eaa3710033b4a (diff) | |
download | gcc-566b213ab1d920957c39fd8e4ba5b78f517a68fa.zip gcc-566b213ab1d920957c39fd8e4ba5b78f517a68fa.tar.gz gcc-566b213ab1d920957c39fd8e4ba5b78f517a68fa.tar.bz2 |
Reverse order of execution of
destructor lists.
From-SVN: r7817
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index fc2e1ac..98c75d8 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -1995,21 +1995,9 @@ __do_global_dtors () #ifdef DO_GLOBAL_DTORS_BODY DO_GLOBAL_DTORS_BODY; #else - unsigned nptrs = (unsigned HOST_WIDE_INT) __DTOR_LIST__[0]; - unsigned i; - - /* Some systems place the number of pointers - in the first word of the table. - On other systems, that word is -1. - In all cases, the table is null-terminated. */ - - /* If the length is not recorded, count up to the null. */ - if (nptrs == -1) - for (nptrs = 0; __DTOR_LIST__[nptrs + 1] != 0; nptrs++); - - /* GNU LD format. */ - for (i = nptrs; i >= 1; i--) - __DTOR_LIST__[i] (); + func_ptr *p; + for (p = __DTOR_LIST__ + 1; *p; ) + (*p++) (); #endif } |