Deleted Added
full compact
crt1.c (216338) crt1.c (232832)
1/* LINTLIBRARY */
2/*-
3 * Copyright 2001 David E. O'Brien.
4 * All rights reserved.
5 * Copyright (c) 1995, 1998 Berkeley Software Design, Inc.
6 * All rights reserved.
7 * Copyright 1996-1998 John D. Polstra.
8 * All rights reserved.

--- 17 unchanged lines hidden (view full) ---

26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#include <sys/cdefs.h>
1/* LINTLIBRARY */
2/*-
3 * Copyright 2001 David E. O'Brien.
4 * All rights reserved.
5 * Copyright (c) 1995, 1998 Berkeley Software Design, Inc.
6 * All rights reserved.
7 * Copyright 1996-1998 John D. Polstra.
8 * All rights reserved.

--- 17 unchanged lines hidden (view full) ---

26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33#include <sys/cdefs.h>
34__FBSDID("$FreeBSD: head/lib/csu/sparc64/crt1.c 216338 2010-12-09 21:31:21Z dim $");
34__FBSDID("$FreeBSD: head/lib/csu/sparc64/crt1.c 232832 2012-03-11 20:04:09Z kib $");
35
36#ifndef lint
37#ifndef __GNUC__
38#error "GCC is needed to compile this file"
39#endif
40#endif /* lint */
41
42#include <stdlib.h>
43
44#include "libc_private.h"
45#include "crtbrand.c"
35
36#ifndef lint
37#ifndef __GNUC__
38#error "GCC is needed to compile this file"
39#endif
40#endif /* lint */
41
42#include <stdlib.h>
43
44#include "libc_private.h"
45#include "crtbrand.c"
46#include "ignore_init.c"
46
47struct Struct_Obj_Entry;
48struct ps_strings;
49
47
48struct Struct_Obj_Entry;
49struct ps_strings;
50
50extern int _DYNAMIC;
51#pragma weak _DYNAMIC
52
53extern void _fini(void);
54extern void _init(void);
55extern int main(int, char **, char **);
56extern void __sparc_utrap_setup(void);
57
58#ifdef GCRT
59extern void _mcleanup(void);
60extern void monstartup(void *, void *);
61extern int eprol;
62extern int etext;
63#endif
64
51extern void __sparc_utrap_setup(void);
52
53#ifdef GCRT
54extern void _mcleanup(void);
55extern void monstartup(void *, void *);
56extern int eprol;
57extern int etext;
58#endif
59
65char **environ;
66const char *__progname = "";
67
68void _start(char **, void (*)(void), struct Struct_Obj_Entry *,
69 struct ps_strings *);
70
71/* The entry function. */
72/*
73 * %o0 holds ps_strings pointer.
74 *
75 * Note: kernel may (is not set in stone yet) pass ELF aux vector in %o1,

--- 8 unchanged lines hidden (view full) ---

84/* ARGSUSED */
85void
86_start(char **ap, void (*cleanup)(void), struct Struct_Obj_Entry *obj __unused,
87 struct ps_strings *ps_strings __unused)
88{
89 int argc;
90 char **argv;
91 char **env;
60void _start(char **, void (*)(void), struct Struct_Obj_Entry *,
61 struct ps_strings *);
62
63/* The entry function. */
64/*
65 * %o0 holds ps_strings pointer.
66 *
67 * Note: kernel may (is not set in stone yet) pass ELF aux vector in %o1,

--- 8 unchanged lines hidden (view full) ---

76/* ARGSUSED */
77void
78_start(char **ap, void (*cleanup)(void), struct Struct_Obj_Entry *obj __unused,
79 struct ps_strings *ps_strings __unused)
80{
81 int argc;
82 char **argv;
83 char **env;
92 const char *s;
93
94 argc = *(long *)(void *)ap;
95 argv = ap + 1;
96 env = ap + 2 + argc;
97 environ = env;
84
85 argc = *(long *)(void *)ap;
86 argv = ap + 1;
87 env = ap + 2 + argc;
88 environ = env;
98 if (argc > 0 && argv[0] != NULL) {
99 __progname = argv[0];
100 for (s = __progname; *s != '\0'; s++)
101 if (*s == '/')
102 __progname = s + 1;
103 }
89 if (argc > 0 && argv[0] != NULL)
90 handle_progname(argv[0]);
104
105 if (&_DYNAMIC != NULL)
106 atexit(cleanup);
107 else {
108 __sparc_utrap_setup();
109 _init_tls();
110 }
111#ifdef GCRT
112 atexit(_mcleanup);
91
92 if (&_DYNAMIC != NULL)
93 atexit(cleanup);
94 else {
95 __sparc_utrap_setup();
96 _init_tls();
97 }
98#ifdef GCRT
99 atexit(_mcleanup);
113#endif
114 atexit(_fini);
115#ifdef GCRT
116 monstartup(&eprol, &etext);
117#endif
100 monstartup(&eprol, &etext);
101#endif
118 _init();
119 exit( main(argc, argv, env) );
102
103 handle_static_init(argc, argv, env);
104 exit(main(argc, argv, env));
120}
121
122#ifdef GCRT
123__asm__(".text");
124__asm__("eprol:");
125__asm__(".previous");
126#endif
105}
106
107#ifdef GCRT
108__asm__(".text");
109__asm__("eprol:");
110__asm__(".previous");
111#endif