Mercurial > hg > aboriginal
changeset 549:2edf40b17ee2
Select crtbegin.o and crtend.o variants more accurately for -static and -shared.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 23 Dec 2008 14:13:33 -0600 |
parents | b826a6168464 |
children | 64779e0f6c28 |
files | sources/toys/ccwrap.c |
diffstat | 1 files changed, 5 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/sources/toys/ccwrap.c Tue Dec 23 12:47:58 2008 -0600 +++ b/sources/toys/ccwrap.c Tue Dec 23 14:13:33 2008 -0600 @@ -97,7 +97,7 @@ int main(int argc, char **argv) { int linking = 1, use_static_linking = 0; - int use_stdinc = 1, use_start = 1, use_stdlib = 1, use_pic = 0; + int use_stdinc = 1, use_start = 1, use_stdlib = 1, use_shared = 0; int source_count = 0, verbose = 0; int i, argcnt, liblen, lplen; char **gcc_argv, **libraries, **libpath; @@ -247,7 +247,7 @@ if (strstr(argv[i],static_linking)) use_static_linking = 1; if (!strcmp("-shared",argv[i])) { use_start = 0; - use_pic = 1; + use_shared = 1; } break; @@ -312,12 +312,8 @@ break; 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; - // profiling - else if (strcmp("-fprofile-arcs",argv[i]) == 0) profile = 1; + if (strcmp("-fprofile-arcs",argv[i]) == 0) profile = 1; break; // --longopts @@ -400,7 +396,7 @@ if (ctor_dtor) { asprintf(gcc_argv+(argcnt++), "%s/lib/crti.o", devprefix); asprintf(gcc_argv+(argcnt++), "%s/gcc/lib/crtbegin%s", devprefix, - use_pic ? "S.o" : ".o"); + use_shared ? "S.o" : use_static_linking ? "T.o" : ".o"); } if (use_start && !profile) asprintf(gcc_argv+(argcnt++), "%s/lib/crt1.o", devprefix); @@ -428,7 +424,7 @@ } if (ctor_dtor) { asprintf(gcc_argv+(argcnt++), "%s/gcc/lib/crtend%s", devprefix, - use_pic ? "S.o" : ".o"); + use_shared ? "S.o" : ".o"); asprintf(gcc_argv+(argcnt++), "%s/lib/crtn.o", devprefix); } } else for (i=1; i<argc; i++) if (argv[i]) gcc_argv[argcnt++] = argv[i];