aboutsummaryrefslogtreecommitdiff
path: root/gcc/libgcc2.c
diff options
context:
space:
mode:
authorJason Merrill <merrill@gnu.org>1994-07-29 19:03:37 +0000
committerJason Merrill <merrill@gnu.org>1994-07-29 19:03:37 +0000
commit566b213ab1d920957c39fd8e4ba5b78f517a68fa (patch)
tree220291a2658bea86e2b9626725704a2023ceddd6 /gcc/libgcc2.c
parent2c1c10ec5ac5cf9ca1bafa6dd97eaa3710033b4a (diff)
downloadgcc-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.c18
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
}