diff options
| author | Eric Andersen <andersen@codepoet.org> | 2003-06-24 08:23:19 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2003-06-24 08:23:19 +0000 | 
| commit | b5985c1d0e3d76235f567eaa7c1ce4395be2d619 (patch) | |
| tree | 7f9147f1ecdde68d74a6e4ca992564bcaae07c14 /extra/gcc-uClibc | |
| parent | 078ef39348791f2ea2194cca1cb56f9ad9a7f865 (diff) | |
Fix indenting for real this time.
Diffstat (limited to 'extra/gcc-uClibc')
| -rw-r--r-- | extra/gcc-uClibc/gcc-uClibc.c | 866 | 
1 files changed, 433 insertions, 433 deletions
diff --git a/extra/gcc-uClibc/gcc-uClibc.c b/extra/gcc-uClibc/gcc-uClibc.c index ca9afa21b..c2971f3af 100644 --- a/extra/gcc-uClibc/gcc-uClibc.c +++ b/extra/gcc-uClibc/gcc-uClibc.c @@ -97,540 +97,540 @@ static char nostdinc_plus[] = "-nostdinc++";   * doesn't provide an implementation of basename(). */  char *basename(const char *path)  { -    register const char *s; -    register const char *p; -    p = s = path; -    while (*s) { -	if (*s++ == '/') { -	    p = s; +	register const char *s; +	register const char *p; +	p = s = path; +	while (*s) { +		if (*s++ == '/') { +			p = s; +		}  	} -    } -    return (char *) p; +	return (char *) p;  }  char *dirname(char *path)  { -    static const char null_or_empty_or_noslash[] = "."; -    register char *s; -    register char *last; -    char *first; +	static const char null_or_empty_or_noslash[] = "."; +	register char *s; +	register char *last; +	char *first; -    last = s = path; +	last = s = path; -    if (s != NULL) { +	if (s != NULL) {  LOOP: -	while (*s && (*s != '/')) ++s; -	first = s; -	while (*s == '/') ++s; -	if (*s) { -	    last = first; -	    goto LOOP; -	} +		while (*s && (*s != '/')) ++s; +		first = s; +		while (*s == '/') ++s; +		if (*s) { +			last = first; +			goto LOOP; +		} -	if (last == path) { -	    if (*last != '/') { -		goto DOT; -	    } -	    if ((*++last == '/') && (last[1] == 0)) { -		++last; -	    } +		if (last == path) { +			if (*last != '/') { +				goto DOT; +			} +			if ((*++last == '/') && (last[1] == 0)) { +				++last; +			} +		} +		*last = 0; +		return path;  	} -	*last = 0; -	return path; -    }  DOT: -    return (char *) null_or_empty_or_noslash; +	return (char *) null_or_empty_or_noslash;  }  extern void *xmalloc(size_t size)  { -    void *ptr = malloc(size); +	void *ptr = malloc(size); -    if (!ptr) { -	fprintf(stderr, "memory exhausted"); -	exit(EXIT_FAILURE); -    } -    return ptr; +	if (!ptr) { +		fprintf(stderr, "memory exhausted"); +		exit(EXIT_FAILURE); +	} +	return ptr;  }  void xstrcat(char **string, ...)  { -    const char *c; -    va_list p;  -    /* Don't bother to calculate how big exerything  -     * will be, just be careful to not overflow...  */ -    va_start(p, string); -    *string = xmalloc(BUFSIZ); -    **string = '\0'; -    while(1) { -	if (!(c = va_arg(p, const char *))) -	    break; -	strcat(*string, c);  -    } -    va_end(p); +	const char *c; +	va_list p;  +	/* Don't bother to calculate how big exerything  +	 * will be, just be careful to not overflow...  */ +	va_start(p, string); +	*string = xmalloc(BUFSIZ); +	**string = '\0'; +	while(1) { +		if (!(c = va_arg(p, const char *))) +			break; +		strcat(*string, c);  +	} +	va_end(p);  }  int main(int argc, char **argv)  { -    int use_build_dir = 0, linking = 1, use_static_linking = 0; -    int use_stdinc = 1, use_start = 1, use_stdlib = 1, use_pic = 0; -    int source_count = 0, use_rpath = 0, verbose = 0; -    int i, j, k, l, m, n; -    char ** gcc_argv; -    char ** gcc_argument; -    char ** libraries; -    char ** libpath; -    char *dlstr; -    char *incstr; -    char *devprefix; -    char *builddir; -    char *libstr; -    char *build_dlstr = 0; -    char *cc; -    char *ep; -    char *rpath_link[2]; -    char *rpath[2]; -    char *uClibc_inc[2]; -    char *our_lib_path[2]; -    char *crt0_path[2]; -    char *crtbegin_path[2]; -    char *crtend_path[2]; -    const char *application_name; +	int use_build_dir = 0, linking = 1, use_static_linking = 0; +	int use_stdinc = 1, use_start = 1, use_stdlib = 1, use_pic = 0; +	int source_count = 0, use_rpath = 0, verbose = 0; +	int i, j, k, l, m, n; +	char ** gcc_argv; +	char ** gcc_argument; +	char ** libraries; +	char ** libpath; +	char *dlstr; +	char *incstr; +	char *devprefix; +	char *builddir; +	char *libstr; +	char *build_dlstr = 0; +	char *cc; +	char *ep; +	char *rpath_link[2]; +	char *rpath[2]; +	char *uClibc_inc[2]; +	char *our_lib_path[2]; +	char *crt0_path[2]; +	char *crtbegin_path[2]; +	char *crtend_path[2]; +	const char *application_name;  #ifdef __UCLIBC_CTOR_DTOR__ -    char *crti_path[2]; -    char *crtn_path[2]; -    int len; -    int ctor_dtor = 1, cplusplus = 0, use_nostdinc_plus = 0; -    char *GPLUSPLUS_BIN = NULL; +	char *crti_path[2]; +	char *crtn_path[2]; +	int len; +	int ctor_dtor = 1, cplusplus = 0, use_nostdinc_plus = 0; +	char *GPLUSPLUS_BIN = NULL;  #endif  #ifdef __UCLIBC_PROFILING__ -    int profile = 0; -    char *gcrt1_path[2]; +	int profile = 0; +	char *gcrt1_path[2];  #endif -    cc     = getenv("UCLIBC_CC"); -    if (!cc) { -	cc = GCC_BIN; -    } +	cc     = getenv("UCLIBC_CC"); +	if (!cc) { +		cc = GCC_BIN; +	} -    application_name = basename(argv[0]); -    if (application_name[0] == '-') -	application_name++; +	application_name = basename(argv[0]); +	if (application_name[0] == '-') +		application_name++;  #ifdef __UCLIBC_CTOR_DTOR__ -    /* We must use strstr since g++ might be named like a -     * cross compiler (i.e. arm-linux-g++).   We must also -     * search carefully, in case we are searching something  -     * like /opt/c++/gcc-3.1/bin/arm-linux-g++ or some similar  -     * perversion...  */ -    len = strlen(application_name); -    if ((strcmp(application_name+len-3, "g++")==0) || -	    (strcmp(application_name+len-3, "c++")==0)) { -	len = strlen(cc); -	if (strcmp(cc+len-3, "gcc")==0) { -	    GPLUSPLUS_BIN = strdup(cc); -	    GPLUSPLUS_BIN[len-1]='+'; -	    GPLUSPLUS_BIN[len-2]='+'; +	/* We must use strstr since g++ might be named like a +	 * cross compiler (i.e. arm-linux-g++).   We must also +	 * search carefully, in case we are searching something  +	 * like /opt/c++/gcc-3.1/bin/arm-linux-g++ or some similar  +	 * perversion...  */ +	len = strlen(application_name); +	if ((strcmp(application_name+len-3, "g++")==0) || +			(strcmp(application_name+len-3, "c++")==0)) { +		len = strlen(cc); +		if (strcmp(cc+len-3, "gcc")==0) { +			GPLUSPLUS_BIN = strdup(cc); +			GPLUSPLUS_BIN[len-1]='+'; +			GPLUSPLUS_BIN[len-2]='+'; +		} +		cplusplus = 1; +		use_nostdinc_plus = 1;  	} -	cplusplus = 1; -	use_nostdinc_plus = 1; -    }  #endif -    devprefix = getenv("UCLIBC_DEVEL_PREFIX"); -    if (!devprefix) { -	devprefix = UCLIBC_DEVEL_PREFIX; -    } +	devprefix = getenv("UCLIBC_DEVEL_PREFIX"); +	if (!devprefix) { +		devprefix = UCLIBC_DEVEL_PREFIX; +	} -    builddir = getenv("UCLIBC_BUILD_DIR"); -    if (!builddir) { -	builddir = UCLIBC_BUILD_DIR; -    } +	builddir = getenv("UCLIBC_BUILD_DIR"); +	if (!builddir) { +		builddir = UCLIBC_BUILD_DIR; +	} -    incstr = getenv("UCLIBC_GCC_INC"); -    libstr = getenv("UCLIBC_GCC_LIB"); +	incstr = getenv("UCLIBC_GCC_INC"); +	libstr = getenv("UCLIBC_GCC_LIB"); -    ep     = getenv("UCLIBC_ENV"); -    if (!ep) { -	ep = ""; -    } +	ep     = getenv("UCLIBC_ENV"); +	if (!ep) { +		ep = ""; +	} -    if (strstr(ep,"build") != 0) { -	use_build_dir = 1; -    } +	if (strstr(ep,"build") != 0) { +		use_build_dir = 1; +	} -    if (strstr(ep,"rpath") != 0) { -	use_rpath = 1; -    } +	if (strstr(ep,"rpath") != 0) { +		use_rpath = 1; +	} -    xstrcat(&(rpath_link[0]), "-Wl,-rpath-link,", devprefix, "/lib", NULL); -    xstrcat(&(rpath_link[1]), "-Wl,-rpath-link,", builddir, "/lib", NULL); +	xstrcat(&(rpath_link[0]), "-Wl,-rpath-link,", devprefix, "/lib", NULL); +	xstrcat(&(rpath_link[1]), "-Wl,-rpath-link,", builddir, "/lib", NULL); -    xstrcat(&(rpath[0]), "-Wl,-rpath,", devprefix, "/lib", NULL); -    xstrcat(&(rpath[1]), "-Wl,-rpath,", builddir, "/lib", NULL); +	xstrcat(&(rpath[0]), "-Wl,-rpath,", devprefix, "/lib", NULL); +	xstrcat(&(rpath[1]), "-Wl,-rpath,", builddir, "/lib", NULL); -    xstrcat(&(uClibc_inc[0]), devprefix, "/include/", NULL); -    xstrcat(&(uClibc_inc[1]), builddir, "/include/", NULL); +	xstrcat(&(uClibc_inc[0]), devprefix, "/include/", NULL); +	xstrcat(&(uClibc_inc[1]), builddir, "/include/", NULL);  #ifdef __UCLIBC_CTOR_DTOR__ -    xstrcat(&(crt0_path[0]), devprefix, "/lib/crt1.o", NULL); -    xstrcat(&(crt0_path[1]), builddir, "/lib/crt1.o", NULL); -    xstrcat(&(crti_path[0]), devprefix, "/lib/crti.o", NULL); -    xstrcat(&(crti_path[1]), builddir, "/lib/crti.o", NULL); -    xstrcat(&(crtn_path[0]), devprefix, "/lib/crtn.o", NULL); -    xstrcat(&(crtn_path[1]), builddir, "/lib/crtn.o", NULL); +	xstrcat(&(crt0_path[0]), devprefix, "/lib/crt1.o", NULL); +	xstrcat(&(crt0_path[1]), builddir, "/lib/crt1.o", NULL); +	xstrcat(&(crti_path[0]), devprefix, "/lib/crti.o", NULL); +	xstrcat(&(crti_path[1]), builddir, "/lib/crti.o", NULL); +	xstrcat(&(crtn_path[0]), devprefix, "/lib/crtn.o", NULL); +	xstrcat(&(crtn_path[1]), builddir, "/lib/crtn.o", NULL);  #else -    xstrcat(&(crt0_path[0]), devprefix, "/lib/crt0.o", NULL); -    xstrcat(&(crt0_path[1]), builddir, "/lib/crt0.o", NULL); +	xstrcat(&(crt0_path[0]), devprefix, "/lib/crt0.o", NULL); +	xstrcat(&(crt0_path[1]), builddir, "/lib/crt0.o", NULL);  #endif  #ifdef __UCLIBC_PROFILING__ -    xstrcat(&(gcrt1_path[0]), devprefix, "/lib/gcrt1.o", NULL); -    xstrcat(&(gcrt1_path[1]), builddir, "/lib/gcrt1.o", NULL); +	xstrcat(&(gcrt1_path[0]), devprefix, "/lib/gcrt1.o", NULL); +	xstrcat(&(gcrt1_path[1]), builddir, "/lib/gcrt1.o", NULL);  #endif -    xstrcat(&(our_lib_path[0]), "-L", devprefix, "/lib", NULL); -    xstrcat(&(our_lib_path[1]), "-L", builddir, "/lib", NULL); +	xstrcat(&(our_lib_path[0]), "-L", devprefix, "/lib", NULL); +	xstrcat(&(our_lib_path[1]), "-L", builddir, "/lib", NULL);  #ifdef __UCLIBC_HAS_SHARED__ -    build_dlstr = "-Wl,--dynamic-linker," BUILD_DYNAMIC_LINKER; -    dlstr = getenv("UCLIBC_GCC_DLOPT"); -    if (!dlstr) { -	dlstr = "-Wl,--dynamic-linker," DYNAMIC_LINKER; -    } +	build_dlstr = "-Wl,--dynamic-linker," BUILD_DYNAMIC_LINKER; +	dlstr = getenv("UCLIBC_GCC_DLOPT"); +	if (!dlstr) { +		dlstr = "-Wl,--dynamic-linker," DYNAMIC_LINKER; +	}  #endif -    m = 0; -    libraries = __builtin_alloca(sizeof(char*) * (argc)); -    libraries[m] = '\0'; - -    n = 0; -    libpath = __builtin_alloca(sizeof(char*) * (argc)); -    libpath[n] = '\0'; - -    for ( i = 1 ; i < argc ; i++ ) { -	if (argv[i][0] == '-') { /* option */ -	    switch (argv[i][1]) { -		case 'c':		/* compile or assemble */ -		case 'S':		/* generate assembler code */ -		case 'E':		/* preprocess only */ -		case 'M':	    /* generate dependencies */ -		    linking = 0; -		    break; -		case 'L': 		/* library */ -		    libpath[n++] = argv[i]; -		    libpath[n] = '\0'; -		    if (argv[i][2] == 0) { -			argv[i] = '\0'; -			libpath[n++] = argv[++i]; -			libpath[n] = '\0'; -		    } -		    argv[i] = '\0'; -		    break; -		case 'l': 		/* library */ -		    libraries[m++] = argv[i]; -		    libraries[m] = '\0'; -		    argv[i] = '\0'; -		    break; -		case 'v':		/* verbose */ -		    if (argv[i][2] == 0) verbose = 1; -		    printf("Invoked as %s\n", argv[0]); -		    break; -		case 'n': -		    if (strcmp(nostdinc,argv[i]) == 0) { -			use_stdinc = 0; -		    } else if (strcmp(nostartfiles,argv[i]) == 0) { +	m = 0; +	libraries = __builtin_alloca(sizeof(char*) * (argc)); +	libraries[m] = '\0'; + +	n = 0; +	libpath = __builtin_alloca(sizeof(char*) * (argc)); +	libpath[n] = '\0'; + +	for ( i = 1 ; i < argc ; i++ ) { +		if (argv[i][0] == '-') { /* option */ +			switch (argv[i][1]) { +				case 'c':		/* compile or assemble */ +				case 'S':		/* generate assembler code */ +				case 'E':		/* preprocess only */ +				case 'M':	    /* generate dependencies */ +					linking = 0; +					break; +				case 'L': 		/* library */ +					libpath[n++] = argv[i]; +					libpath[n] = '\0'; +					if (argv[i][2] == 0) { +						argv[i] = '\0'; +						libpath[n++] = argv[++i]; +						libpath[n] = '\0'; +					} +					argv[i] = '\0'; +					break; +				case 'l': 		/* library */ +					libraries[m++] = argv[i]; +					libraries[m] = '\0'; +					argv[i] = '\0'; +					break; +				case 'v':		/* verbose */ +					if (argv[i][2] == 0) verbose = 1; +					printf("Invoked as %s\n", argv[0]); +					break; +				case 'n': +					if (strcmp(nostdinc,argv[i]) == 0) { +						use_stdinc = 0; +					} else if (strcmp(nostartfiles,argv[i]) == 0) {  #ifdef __UCLIBC_CTOR_DTOR__ -			ctor_dtor = 0; +						ctor_dtor = 0;  #endif -			use_start = 0; -		    } else if (strcmp(nodefaultlibs,argv[i]) == 0) { -			use_stdlib = 0; -			argv[i] = '\0'; -		    } else if (strcmp(nostdlib,argv[i]) == 0) { +						use_start = 0; +					} else if (strcmp(nodefaultlibs,argv[i]) == 0) { +						use_stdlib = 0; +						argv[i] = '\0'; +					} else if (strcmp(nostdlib,argv[i]) == 0) {  #ifdef __UCLIBC_CTOR_DTOR__ -			ctor_dtor = 0; +						ctor_dtor = 0;  #endif -			use_start = 0; -			use_stdlib = 0; -		    }  +						use_start = 0; +						use_stdlib = 0; +					}   #ifdef __UCLIBC_CTOR_DTOR__ -		    else if (strcmp(nostdinc_plus,argv[i]) == 0) { -			if (cplusplus==1) { -			    use_nostdinc_plus = 0; -			} -		    } +					else if (strcmp(nostdinc_plus,argv[i]) == 0) { +						if (cplusplus==1) { +							use_nostdinc_plus = 0; +						} +					}  #endif -		    break; -		case 's': -		    if (strstr(argv[i],static_linking) != NULL) { -			use_static_linking = 1; -		    } -		    if (strcmp("-shared",argv[i]) == 0) { -			use_start = 0; -			use_pic = 1; -		    } -		    break; -		case 'W':		/* -static could be passed directly to ld */ -		    if (strncmp("-Wl,",argv[i],4) == 0) { -			if (strstr(argv[i],static_linking) != 0) { -			    use_static_linking = 1; -			} -			if (strstr(argv[i],"--dynamic-linker") != 0) { -			    dlstr = 0; -			} -		    } -		    break; +					break; +				case 's': +					if (strstr(argv[i],static_linking) != NULL) { +						use_static_linking = 1; +					} +					if (strcmp("-shared",argv[i]) == 0) { +						use_start = 0; +						use_pic = 1; +					} +					break; +				case 'W':		/* -static could be passed directly to ld */ +					if (strncmp("-Wl,",argv[i],4) == 0) { +						if (strstr(argv[i],static_linking) != 0) { +							use_static_linking = 1; +						} +						if (strstr(argv[i],"--dynamic-linker") != 0) { +							dlstr = 0; +						} +					} +					break;  #ifdef __UCLIBC_PROFILING__ -		case 'p': -		    if (strcmp("-pg",argv[i]) == 0) { -			profile = 1; -		    } -		    break; +				case 'p': +					if (strcmp("-pg",argv[i]) == 0) { +						profile = 1; +					} +					break;  #endif -		case 'f': -		    /* Check if we are doing PIC */ -		    if (strcmp("-fPIC",argv[i]) == 0) { -			use_pic = 1; -		    } else if (strcmp("-fpic",argv[i]) == 0) { -			use_pic = 1; -		    }  +				case 'f': +					/* Check if we are doing PIC */ +					if (strcmp("-fPIC",argv[i]) == 0) { +						use_pic = 1; +					} else if (strcmp("-fpic",argv[i]) == 0) { +						use_pic = 1; +					}   #ifdef __UCLIBC_PROFILING__ -		    else if (strcmp("-fprofile-arcs",argv[i]) == 0) { -			profile = 1; -		    } +					else if (strcmp("-fprofile-arcs",argv[i]) == 0) { +						profile = 1; +					}  #endif -		    break; - -		case '-': -		    if (strstr(argv[i]+1,static_linking) != NULL) { -			use_static_linking = 1; -			argv[i]='\0'; -		    } else if (strcmp("--uclibc-use-build-dir",argv[i]) == 0) { -			use_build_dir = 1; -			argv[i]='\0'; -		    } else if (strcmp("--uclibc-use-rpath",argv[i]) == 0) { -			use_rpath = 1; -			argv[i]='\0'; -		    } +					break; + +				case '-': +					if (strstr(argv[i]+1,static_linking) != NULL) { +						use_static_linking = 1; +						argv[i]='\0'; +					} else if (strcmp("--uclibc-use-build-dir",argv[i]) == 0) { +						use_build_dir = 1; +						argv[i]='\0'; +					} else if (strcmp("--uclibc-use-rpath",argv[i]) == 0) { +						use_rpath = 1; +						argv[i]='\0'; +					}  #ifdef __UCLIBC_CTOR_DTOR__ -		    else if (strcmp("--uclibc-no-ctors",argv[i]) == 0) { -			ctor_dtor = 0; -			argv[i]='\0'; -		    } +					else if (strcmp("--uclibc-no-ctors",argv[i]) == 0) { +						ctor_dtor = 0; +						argv[i]='\0'; +					}  #endif -		    break; -	    } -	} else {				/* assume it is an existing source file */ -	    ++source_count; +					break; +			} +		} else {				/* assume it is an existing source file */ +			++source_count; +		}  	} -    } -    gcc_argv = __builtin_alloca(sizeof(char*) * (argc + 64)); -    gcc_argument = __builtin_alloca(sizeof(char*) * (argc + 20)); +	gcc_argv = __builtin_alloca(sizeof(char*) * (argc + 64)); +	gcc_argument = __builtin_alloca(sizeof(char*) * (argc + 20)); -    i = 0; k = 0; +	i = 0; k = 0;  #ifdef __UCLIBC_CTOR_DTOR__ -    if (ctor_dtor) { -	struct stat statbuf; -	if (stat(LIBGCC_DIR, &statbuf)!=0 ||  -		!S_ISDIR(statbuf.st_mode)) -	{ -	    /* Bummer, gcc has moved things on us... */ -	    int status, gcc_pipe[2]; -	    pid_t pid, wpid; - -	    pipe(gcc_pipe); -	    if (!(pid = fork())) { -		char *argv[4]; -		close(gcc_pipe[0]); -		close(1); -		close(2); -		dup2(gcc_pipe[1], 1); -		dup2(gcc_pipe[1], 2); -		argv[0] = cc;  -		argv[2] = "-print-libgcc-file-name"; -		argv[3] = NULL; -		execvp(argv[0], argv); -		close(gcc_pipe[1]); -		_exit(-1); -	    } -	    wpid=0; -	    while (wpid != pid) { -		wpid = wait(&status); -	    } -	    close(gcc_pipe[1]); -	    if (WIFEXITED(status)) { -		char buf[1024], *dir; -		status = read(gcc_pipe[0], buf, sizeof(buf)); -		if (status < 0) { -		    goto crash_n_burn; -		} -		dir = dirname(buf); -		xstrcat(&(crtbegin_path[0]), dir, "crtbegin.o", NULL); -		xstrcat(&(crtbegin_path[1]), dir, "crtbeginS.o", NULL); -		xstrcat(&(crtend_path[0]), dir, "crtend.o", NULL); -		xstrcat(&(crtend_path[1]), dir, "crtendS.o", NULL); -	    } else { +	if (ctor_dtor) { +		struct stat statbuf; +		if (stat(LIBGCC_DIR, &statbuf)!=0 ||  +				!S_ISDIR(statbuf.st_mode)) +		{ +			/* Bummer, gcc has moved things on us... */ +			int status, gcc_pipe[2]; +			pid_t pid, wpid; + +			pipe(gcc_pipe); +			if (!(pid = fork())) { +				char *argv[4]; +				close(gcc_pipe[0]); +				close(1); +				close(2); +				dup2(gcc_pipe[1], 1); +				dup2(gcc_pipe[1], 2); +				argv[0] = cc;  +				argv[2] = "-print-libgcc-file-name"; +				argv[3] = NULL; +				execvp(argv[0], argv); +				close(gcc_pipe[1]); +				_exit(-1); +			} +			wpid=0; +			while (wpid != pid) { +				wpid = wait(&status); +			} +			close(gcc_pipe[1]); +			if (WIFEXITED(status)) { +				char buf[1024], *dir; +				status = read(gcc_pipe[0], buf, sizeof(buf)); +				if (status < 0) { +					goto crash_n_burn; +				} +				dir = dirname(buf); +				xstrcat(&(crtbegin_path[0]), dir, "crtbegin.o", NULL); +				xstrcat(&(crtbegin_path[1]), dir, "crtbeginS.o", NULL); +				xstrcat(&(crtend_path[0]), dir, "crtend.o", NULL); +				xstrcat(&(crtend_path[1]), dir, "crtendS.o", NULL); +			} else {  crash_n_burn: -		fprintf(stderr, "Unable to locale crtbegin.o provided by gcc"); -		exit(EXIT_FAILURE); -	    } -	    close(gcc_pipe[0]); +				fprintf(stderr, "Unable to locale crtbegin.o provided by gcc"); +				exit(EXIT_FAILURE); +			} +			close(gcc_pipe[0]); -	} else { -	    xstrcat(&(crtbegin_path[0]), LIBGCC_DIR, "crtbegin.o", NULL); -	    xstrcat(&(crtbegin_path[1]), LIBGCC_DIR, "crtbeginS.o", NULL); -	    xstrcat(&(crtend_path[0]), LIBGCC_DIR, "crtend.o", NULL); -	    xstrcat(&(crtend_path[1]), LIBGCC_DIR, "crtendS.o", NULL); +		} else { +			xstrcat(&(crtbegin_path[0]), LIBGCC_DIR, "crtbegin.o", NULL); +			xstrcat(&(crtbegin_path[1]), LIBGCC_DIR, "crtbeginS.o", NULL); +			xstrcat(&(crtend_path[0]), LIBGCC_DIR, "crtend.o", NULL); +			xstrcat(&(crtend_path[1]), LIBGCC_DIR, "crtendS.o", NULL); +		}  	} -    } -    if (cplusplus && GPLUSPLUS_BIN) -	gcc_argv[i++] = GPLUSPLUS_BIN; -    else +	if (cplusplus && GPLUSPLUS_BIN) +		gcc_argv[i++] = GPLUSPLUS_BIN; +	else  #endif -	gcc_argv[i++] = cc; - -    for ( j = 1 ; j < argc ; j++ ) { -	if (argv[j]=='\0') { -	    continue; -	} else { -	    gcc_argument[k++] = argv[j]; -	    gcc_argument[k] = '\0'; +		gcc_argv[i++] = cc; + +	for ( j = 1 ; j < argc ; j++ ) { +		if (argv[j]=='\0') { +			continue; +		} else { +			gcc_argument[k++] = argv[j]; +			gcc_argument[k] = '\0'; +		}  	} -    } -    if (linking && source_count) { +	if (linking && source_count) {  #if defined __HAVE_ELF__ && ! defined __UCLIBC_HAS_MMU__ -	gcc_argv[i++] = "-Wl,-elf2flt"; +		gcc_argv[i++] = "-Wl,-elf2flt";  #endif -	gcc_argv[i++] = nostdlib; -	if (use_static_linking) { -	    gcc_argv[i++] = static_linking; -	} -	if (!use_static_linking) { -	    if (dlstr && use_build_dir) { -		gcc_argv[i++] = build_dlstr; -	    } else if (dlstr) { -		gcc_argv[i++] = dlstr; -	    } -	    if (use_rpath) { -		gcc_argv[i++] = rpath[use_build_dir]; -	    } -	} -	for ( l = 0 ; l < n ; l++ ) { -	    if (libpath[l]) gcc_argv[i++] = libpath[l]; -	} -	gcc_argv[i++] = rpath_link[use_build_dir]; /* just to be safe */ -	if( libstr ) -	    gcc_argv[i++] = libstr; -	gcc_argv[i++] = our_lib_path[use_build_dir]; -	if (!use_build_dir) { -	    gcc_argv[i++] = our_usr_lib_path; +		gcc_argv[i++] = nostdlib; +		if (use_static_linking) { +			gcc_argv[i++] = static_linking; +		} +		if (!use_static_linking) { +			if (dlstr && use_build_dir) { +				gcc_argv[i++] = build_dlstr; +			} else if (dlstr) { +				gcc_argv[i++] = dlstr; +			} +			if (use_rpath) { +				gcc_argv[i++] = rpath[use_build_dir]; +			} +		} +		for ( l = 0 ; l < n ; l++ ) { +			if (libpath[l]) gcc_argv[i++] = libpath[l]; +		} +		gcc_argv[i++] = rpath_link[use_build_dir]; /* just to be safe */ +		if( libstr ) +			gcc_argv[i++] = libstr; +		gcc_argv[i++] = our_lib_path[use_build_dir]; +		if (!use_build_dir) { +			gcc_argv[i++] = our_usr_lib_path; +		}  	} -    } -    if (use_stdinc && source_count) { -	gcc_argv[i++] = nostdinc; +	if (use_stdinc && source_count) { +		gcc_argv[i++] = nostdinc;  #ifdef __UCLIBC_CTOR_DTOR__ -	if (cplusplus) { -	    char *cppinc; -	    if (use_nostdinc_plus) { -		gcc_argv[i++] = nostdinc_plus; -	    } -	    xstrcat(&cppinc, uClibc_inc[use_build_dir], "g++/", NULL); -	    gcc_argv[i++] = "-isystem"; -	    gcc_argv[i++] = cppinc; -	    xstrcat(&cppinc, uClibc_inc[use_build_dir], "g++-v3/", NULL); -	    gcc_argv[i++] = "-isystem"; -	    gcc_argv[i++] = cppinc; -	} +		if (cplusplus) { +			char *cppinc; +			if (use_nostdinc_plus) { +				gcc_argv[i++] = nostdinc_plus; +			} +			xstrcat(&cppinc, uClibc_inc[use_build_dir], "g++/", NULL); +			gcc_argv[i++] = "-isystem"; +			gcc_argv[i++] = cppinc; +			xstrcat(&cppinc, uClibc_inc[use_build_dir], "g++-v3/", NULL); +			gcc_argv[i++] = "-isystem"; +			gcc_argv[i++] = cppinc; +		}  #endif -	gcc_argv[i++] = "-isystem"; -	gcc_argv[i++] = uClibc_inc[use_build_dir]; -	gcc_argv[i++] = "-iwithprefix"; -	gcc_argv[i++] = "include"; -	if( incstr ) -	    gcc_argv[i++] = incstr; -    } +		gcc_argv[i++] = "-isystem"; +		gcc_argv[i++] = uClibc_inc[use_build_dir]; +		gcc_argv[i++] = "-iwithprefix"; +		gcc_argv[i++] = "include"; +		if( incstr ) +			gcc_argv[i++] = incstr; +	} -    if (linking && source_count) { +	if (linking && source_count) {  #ifdef __UCLIBC_PROFILING__ -	if (profile) { -	    gcc_argv[i++] = gcrt1_path[use_build_dir]; -	} +		if (profile) { +			gcc_argv[i++] = gcrt1_path[use_build_dir]; +		}  #endif  #ifdef __UCLIBC_CTOR_DTOR__ -	if (ctor_dtor) { -	    gcc_argv[i++] = crti_path[use_build_dir]; -	    if (use_pic) { -		gcc_argv[i++] = crtbegin_path[1]; -	    } else { -		gcc_argv[i++] = crtbegin_path[0]; -	    } -	} +		if (ctor_dtor) { +			gcc_argv[i++] = crti_path[use_build_dir]; +			if (use_pic) { +				gcc_argv[i++] = crtbegin_path[1]; +			} else { +				gcc_argv[i++] = crtbegin_path[0]; +			} +		}  #endif -	if (use_start) { +		if (use_start) {  #ifdef __UCLIBC_PROFILING__ -	    if (!profile) +			if (!profile)  #endif -	    { -		gcc_argv[i++] = crt0_path[use_build_dir]; -	    } -	} -	for ( l = 0 ; l < k ; l++ ) { -	    if (gcc_argument[l]) gcc_argv[i++] = gcc_argument[l]; -	} -	if (use_stdlib) { -	    //gcc_argv[i++] = "-Wl,--start-group"; -	    gcc_argv[i++] = "-lgcc"; -	} -	for ( l = 0 ; l < m ; l++ ) { -	    if (libraries[l]) gcc_argv[i++] = libraries[l]; -	} -	if (use_stdlib) { +			{ +				gcc_argv[i++] = crt0_path[use_build_dir]; +			} +		} +		for ( l = 0 ; l < k ; l++ ) { +			if (gcc_argument[l]) gcc_argv[i++] = gcc_argument[l]; +		} +		if (use_stdlib) { +			//gcc_argv[i++] = "-Wl,--start-group"; +			gcc_argv[i++] = "-lgcc"; +		} +		for ( l = 0 ; l < m ; l++ ) { +			if (libraries[l]) gcc_argv[i++] = libraries[l]; +		} +		if (use_stdlib) {  #ifdef __UCLIBC_CTOR_DTOR__ -	    if (cplusplus) { -		gcc_argv[ i++ ] = "-lstdc++"; -		gcc_argv[ i++ ] = "-lm"; -	    } +			if (cplusplus) { +				gcc_argv[ i++ ] = "-lstdc++"; +				gcc_argv[ i++ ] = "-lm"; +			}  #endif -	    gcc_argv[i++] = "-lc"; -	    gcc_argv[i++] = "-lgcc"; -	    //gcc_argv[i++] = "-Wl,--end-group"; -	} +			gcc_argv[i++] = "-lc"; +			gcc_argv[i++] = "-lgcc"; +			//gcc_argv[i++] = "-Wl,--end-group"; +		}  #ifdef __UCLIBC_CTOR_DTOR__ -	if (ctor_dtor) { -	    if (use_pic) { -		gcc_argv[i++] = crtend_path[1]; -	    } else { -		gcc_argv[i++] = crtend_path[0]; -	    } +		if (ctor_dtor) { +			if (use_pic) { +				gcc_argv[i++] = crtend_path[1]; +			} else { +				gcc_argv[i++] = crtend_path[0]; +			} -	    gcc_argv[i++] = crtn_path[use_build_dir]; -	} +			gcc_argv[i++] = crtn_path[use_build_dir]; +		}  #endif -    } else { -	for ( l = 0 ; l < k ; l++ ) { -	    if (gcc_argument[l]) gcc_argv[i++] = gcc_argument[l]; +	} else { +		for ( l = 0 ; l < k ; l++ ) { +			if (gcc_argument[l]) gcc_argv[i++] = gcc_argument[l]; +		}  	} -    } -    gcc_argv[i++] = NULL; +	gcc_argv[i++] = NULL; -    if (verbose) { -	for ( j = 0 ; gcc_argv[j] ; j++ ) { -	    printf("arg[%2i] = %s\n", j, gcc_argv[j]); +	if (verbose) { +		for ( j = 0 ; gcc_argv[j] ; j++ ) { +			printf("arg[%2i] = %s\n", j, gcc_argv[j]); +		} +		fflush(stdout);  	} -	fflush(stdout); -    } -    //no need to free memory from xstrcat because we never return...  +	//no need to free memory from xstrcat because we never return...   #ifdef __UCLIBC_CTOR_DTOR__ -    if (cplusplus && GPLUSPLUS_BIN) -	return execvp(GPLUSPLUS_BIN, gcc_argv); -    else +	if (cplusplus && GPLUSPLUS_BIN) +		return execvp(GPLUSPLUS_BIN, gcc_argv); +	else  #endif -	return execvp(cc, gcc_argv); +		return execvp(cc, gcc_argv);  }  | 
