|
|
1.1 root 1: /* Stripped down support to run global constructors and destructors on
2: embedded PowerPC systems.
3:
4: Copyright (C) 1995 Free Software Foundation, Inc.
5: Contributed by Michael Meissner ([email protected]).
6:
7: This file is part of GNU CC.
8:
9: GNU CC is free software; you can redistribute it and/or modify
10: it under the terms of the GNU General Public License as published by
11: the Free Software Foundation; either version 2, or (at your option)
12: any later version.
13:
14: GNU CC is distributed in the hope that it will be useful,
15: but WITHOUT ANY WARRANTY; without even the implied warranty of
16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17: GNU General Public License for more details.
18:
19: You should have received a copy of the GNU General Public License
20: along with GNU CC; see the file COPYING. If not, write to
21: the Free Software Foundation, 59 Temple Place - Suite 330,
22: Boston, MA 02111-1307, USA. */
23:
24:
25: /* Declare a pointer to void function type. */
26:
27: typedef void (*func_ptr) (void);
28:
29: /* Declare the set of symbols use as begin and end markers for the lists
30: of global object constructors and global object destructors. */
31:
32: extern func_ptr __CTOR_LIST__[];
33: extern func_ptr __CTOR_END__ [];
34: extern func_ptr __DTOR_LIST__[];
35: extern func_ptr __DTOR_END__ [];
36:
37: /* Call all global constructors */
38: void
39: __do_global_ctors (void)
40: {
41: func_ptr *ptr = &__CTOR_LIST__[0];
42: func_ptr *end = &__CTOR_END__[0];
43:
44: for ( ; ptr != end; ptr++)
45: (*ptr)();
46: }
47:
48: /* Call all global destructors */
49: void
50: __do_global_dtors (void)
51: {
52: func_ptr *ptr = &__DTOR_LIST__[0];
53: func_ptr *end = &__DTOR_END__[0];
54:
55: for ( ; ptr != end; ptr++)
56: (*ptr)();
57: }
58:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.