crtpg.c revision 1.1.1.2 1 1.1 mrg /* Register profiling startup and cleanup with Solaris CRTs.
2 1.1.1.2 mrg Copyright (C) 2015-2016 Free Software Foundation, Inc.
3 1.1 mrg
4 1.1 mrg This file is part of GCC.
5 1.1 mrg
6 1.1 mrg GCC is free software; you can redistribute it and/or modify it under
7 1.1 mrg the terms of the GNU General Public License as published by the Free
8 1.1 mrg Software Foundation; either version 3, or (at your option) any later
9 1.1 mrg version.
10 1.1 mrg
11 1.1 mrg GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 1.1 mrg FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 1.1 mrg for more details.
15 1.1 mrg
16 1.1 mrg Under Section 7 of GPL version 3, you are granted additional
17 1.1 mrg permissions described in the GCC Runtime Library Exception, version
18 1.1 mrg 3.1, as published by the Free Software Foundation.
19 1.1 mrg
20 1.1 mrg You should have received a copy of the GNU General Public License and
21 1.1 mrg a copy of the GCC Runtime Library Exception along with this program;
22 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 1.1 mrg <http://www.gnu.org/licenses/>. */
24 1.1 mrg
25 1.1 mrg #include <stdlib.h>
26 1.1 mrg
27 1.1 mrg extern void monstartup (char *, char *);
28 1.1 mrg extern void _mcleanup (void);
29 1.1 mrg
30 1.1 mrg extern char _start[], _etext[];
31 1.1 mrg
32 1.1 mrg int __start_crt_compiler (int, char **);
33 1.1 mrg
34 1.1 mrg /* Since Solaris 11.x and Solaris 12, the system-provided CRTs provide a
35 1.1 mrg hook to invoke initialization code early during process startup.
36 1.1 mrg __start_crt_compiler is documented in crt1.o(5). We use it to perform
37 1.1 mrg initialization for profiling as a substitute for the earlier separate
38 1.1 mrg gcrt1.o. */
39 1.1 mrg
40 1.1 mrg int
41 1.1 mrg __start_crt_compiler (int argc __attribute__ ((unused)),
42 1.1 mrg char **argv __attribute__ ((unused)))
43 1.1 mrg {
44 1.1 mrg monstartup (_start, _etext);
45 1.1 mrg atexit (_mcleanup);
46 1.1 mrg return 0;
47 1.1 mrg }
48