Mercurial > hg > aboriginal
changeset 19:b5ffd82d9ae5
Two problems: 1) Needed to parse -print-file-name= to make the uClibc build
happy, 2) linking shouldn't default to 1, because when there are no files
(ala --version) we don't want to add crti.o and friends to cmdline.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 05 Dec 2006 16:37:50 -0500 |
parents | eaf7a8d5e697 |
children | 44067ab61cd2 |
files | sources/toys/gcc-uClibc.c |
diffstat | 1 files changed, 23 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/sources/toys/gcc-uClibc.c Mon Dec 04 20:30:51 2006 -0500 +++ b/sources/toys/gcc-uClibc.c Tue Dec 05 16:37:50 2006 -0500 @@ -82,7 +82,7 @@ int main(int argc, char **argv) { - int use_build_dir = 0, linking = 1, use_static_linking = 0; + int use_build_dir = 0, linking = 0, 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, l, m, n, sawM = 0, sawdotoa = 0, sawcES = 0; @@ -100,6 +100,10 @@ int profile = 0; char *gcrt1_path[2]; +//dprintf(2,"incoming: "); +//for(gcc_argv=argv;*gcc_argv;gcc_argv++) dprintf(2,"%s ",*gcc_argv); +//dprintf(2,"\n\n"); + // What directory is the wrapper script in? if(!(topdir = find_in_path(getenv("PATH"), argv[0], 1))) { fprintf(stderr, "can't find %s in $PATH\n", argv[0]); @@ -277,7 +281,14 @@ // Profiling. case 'p': - if (!strcmp("-pg",argv[i]) == 0) profile = 1; + if (!strncmp("-print-file-name=", argv[i], 17)) { + char *temp; + asprintf(&temp, "%s/%s", devprefix, argv[i]+17); + printf("%s\n", access(temp, F_OK) + ? argv[i]+17 : temp); + // That's all we do for this one. + exit(0); + } else if (!strcmp("-pg",argv[i]) == 0) profile = 1; break; case 'f': @@ -293,11 +304,13 @@ } break; + // --longopts + case '-': if (strstr(argv[i]+1,static_linking) != NULL) { use_static_linking = 1; argv[i]='\0'; - } else if (strcmp("--version",argv[i]) == 0) { + } else if (!strcmp("--version",argv[i])) { printf("uClibc "); fflush(stdout); break; @@ -328,6 +341,9 @@ } } + if (sawdotoa && sawM && !sawcES) + linking = 1; + gcc_argv = __builtin_alloca(sizeof(char*) * (argc + 128)); i = 0; @@ -457,12 +473,10 @@ } //no need to free memory from xstrcat because we never return... -//for(l=0;gcc_argv[l];l++) dprintf(2,"gcc_argv[%d]=%s\n",l,gcc_argv[l]); - if (verbose) { - for(l=0; gcc_argv[l]; l++) - fprintf(stderr, "%s ",gcc_argv[l]); - fprintf(stderr, "\n"); - } +//fprintf(stderr, "outgoing: "); +//for(l=0; gcc_argv[l]; l++) fprintf(stderr, "%s ",gcc_argv[l]); +//fprintf(stderr, "\n\n"); + execvp(gcc_argv[0], gcc_argv); fprintf(stderr, "%s: %s\n", cpp ? cpp : cc, strerror(errno)); exit(EXIT_FAILURE);