Deleted Added
full compact
crt1_c.c (151072) crt1_c.c (200038)
1/* LINTLIBRARY */
2/*-
3 * Copyright 1996-1998 John D. Polstra.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1/* LINTLIBRARY */
2/*-
3 * Copyright 1996-1998 John D. Polstra.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:

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

17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 * $FreeBSD: head/lib/csu/i386-elf/crt1_c.c 200038 2009-12-02 16:34:20Z kib $
25 */
26
27#ifndef lint
28#ifndef __GNUC__
29#error "GCC is needed to compile this file"
30#endif
31#endif /* lint */
32

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

50extern void monstartup(void *, void *);
51extern int eprol;
52extern int etext;
53#endif
54
55char **environ;
56const char *__progname = "";
57
27 */
28
29#ifndef lint
30#ifndef __GNUC__
31#error "GCC is needed to compile this file"
32#endif
33#endif /* lint */
34

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

52extern void monstartup(void *, void *);
53extern int eprol;
54extern int etext;
55#endif
56
57char **environ;
58const char *__progname = "";
59
58static __inline fptr
59get_rtld_cleanup(void)
60{
61 fptr retval;
60void _start1(fptr, int, char *[]) __dead2;
62
61
63#ifdef __GNUC__
64 __asm__("movl %%edx,%0" : "=rm"(retval));
65#else
66 retval = (fptr)0; /* XXXX Fix this for other compilers */
67#endif
68 return(retval);
69}
70
71/* The entry function. */
62/* The entry function, C part. */
72void
63void
73_start(char *ap, ...)
64_start1(fptr cleanup, int argc, char *argv[])
74{
65{
75 fptr cleanup;
76 int argc;
77 char **argv;
78 char **env;
79 const char *s;
80
66 char **env;
67 const char *s;
68
81#ifdef __GNUC__
82 __asm__("and $0xfffffff0,%esp");
83#endif
84 cleanup = get_rtld_cleanup();
85 argv = ≈
86 argc = *(long *)(void *)(argv - 1);
87 env = argv + argc + 1;
88 environ = env;
89 if (argc > 0 && argv[0] != NULL) {
90 __progname = argv[0];
91 for (s = __progname; *s != '\0'; s++)
92 if (*s == '/')
93 __progname = s + 1;
94 }

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

105#ifdef GCRT
106 monstartup(&eprol, &etext);
107__asm__("eprol:");
108#endif
109 _init();
110 exit( main(argc, argv, env) );
111}
112
69 env = argv + argc + 1;
70 environ = env;
71 if (argc > 0 && argv[0] != NULL) {
72 __progname = argv[0];
73 for (s = __progname; *s != '\0'; s++)
74 if (*s == '/')
75 __progname = s + 1;
76 }

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

87#ifdef GCRT
88 monstartup(&eprol, &etext);
89__asm__("eprol:");
90#endif
91 _init();
92 exit( main(argc, argv, env) );
93}
94
113__asm__(".ident\t\"$FreeBSD: head/lib/csu/i386-elf/crt1.c 151072 2005-10-07 22:13:17Z bde $\"");
95__asm(".hidden _start1");