changeset 684:222886c9b3f5

Fix wrapper so it doesn't misinterpret -static-libgcc as -static.
author Rob Landley <rob@landley.net>
date Wed, 01 Apr 2009 00:06:08 -0500
parents 3c09987974c8
children 90ab1a1f4db5
files sources/toys/ccwrap.c
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/sources/toys/ccwrap.c	Tue Mar 31 14:43:11 2009 -0500
+++ b/sources/toys/ccwrap.c	Wed Apr 01 00:06:08 2009 -0500
@@ -20,7 +20,6 @@
 #include <sys/wait.h>
 
 static char *topdir;
-static char static_linking[] = "-static";
 static char nostdinc[] = "-nostdinc";
 static char nostartfiles[] = "-nostartfiles";
 static char nodefaultlibs[] = "-nodefaultlibs";
@@ -248,7 +247,7 @@
 					break;
 
 				case 's':
-					if (strstr(argv[i],static_linking)) use_static_linking = 1;
+					if (!strcmp(argv[i],"-static")) use_static_linking = 1;
 					if (!strcmp("-shared",argv[i])) {
 						use_start = 0;
 						use_shared = 1;
@@ -257,7 +256,8 @@
 
 				case 'W':		/* -static could be passed directly to ld */
 					if (!strncmp("-Wl,",argv[i],4)) {
-						if (strstr(argv[i],static_linking))
+						char *temp = strstr(argv[i], ",-static");
+						if (temp && (!temp[7] || temp[7]==','))
 							use_static_linking = 1;
 						if (strstr(argv[i],"--dynamic-linker")) dlstr = 0;
 					}
@@ -327,7 +327,7 @@
 					if (!strncmp(argv[i],"--print-",8)) {
 						argv[i]++;
 						goto wow_this_sucks;
-					} else if (strstr(argv[i]+1, static_linking)) {
+					} else if (!strcmp(argv[i], "--static")) {
 						use_static_linking = 1;
 						argv[i] = 0;
 					} else if (!strcmp("--version", argv[i])) {
@@ -362,7 +362,7 @@
 //		gcc_argv[argcnt++] = "-Wl,-elf2flt";
 //#endif
 		gcc_argv[argcnt++] = nostdlib;
-		if (use_static_linking) gcc_argv[argcnt++] = static_linking;
+		if (use_static_linking) gcc_argv[argcnt++] = "-static";
 		else if (dlstr) gcc_argv[argcnt++] = dlstr;
 		for (i=0; i<lplen; i++)
 			if (libpath[i]) gcc_argv[argcnt++] = libpath[i];