changeset 550:64779e0f6c28

Make spurious gcc 4.3 warnings shut up. (What a horrible compiler.)
author Rob Landley <rob@landley.net>
date Fri, 26 Dec 2008 16:29:58 -0600
parents 2edf40b17ee2
children 0b270ad76c8e
files sources/toys/ccwrap.c
diffstat 1 files changed, 22 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/sources/toys/ccwrap.c	Tue Dec 23 14:13:33 2008 -0600
+++ b/sources/toys/ccwrap.c	Fri Dec 26 16:29:58 2008 -0600
@@ -29,6 +29,10 @@
 // For C++
 static char nostdinc_plus[] = "-nostdinc++";
 
+// gcc 4.3 generates tons of spurious warnings which you can't shut off.
+
+#define xasprintf(...) do {int ignore=asprintf(__VA_ARGS__);} while(0)
+
 // #define GIMME_AN_S for wrapper to support --enable-shared toolchain.
 
 #ifdef GIMME_AN_S
@@ -173,7 +177,7 @@
 	// Figure out where the dynamic linker is.
 	dlstr = getenv("UCLIBC_DYNAMIC_LINKER");
 	if (!dlstr) dlstr = "/lib/ld-uClibc.so.0";
-	asprintf(&dlstr, "-Wl,--dynamic-linker,%s", dlstr);
+	xasprintf(&dlstr, "-Wl,--dynamic-linker,%s", dlstr);
 
 	liblen = 0;
 	libraries = alloca(sizeof(char*) * (argc));
@@ -281,18 +285,19 @@
 						// Find this entry in the library path.
 						for(itemp=0;;itemp++) {
 							if (itemp == lplen)
-								asprintf(&temp, "%s/gcc/lib/%s", devprefix,	temp2);
+								xasprintf(&temp, "%s/gcc/lib/%s", devprefix,
+									temp2);
 							else if (itemp == lplen+1)
-								asprintf(&temp, "%s/lib/%s", devprefix, temp2);
+								xasprintf(&temp, "%s/lib/%s", devprefix, temp2);
 
 							// This is so "include" finds the gcc internal
 							// include dir.  The uClibc build needs this.
 							else if (itemp == lplen+2)
-								asprintf(&temp, "%s/gcc/%s", devprefix, temp2);
+								xasprintf(&temp, "%s/gcc/%s", devprefix, temp2);
 							else if (itemp == lplen+3) {
 								temp = temp2;
 								break;
-							} else asprintf(&temp, "%s/%s", libpath[itemp],
+							} else xasprintf(&temp, "%s/%s", libpath[itemp],
 											temp2);
 
 							if (debug_wrapper)
@@ -363,12 +368,12 @@
 			if (libpath[i]) gcc_argv[argcnt++] = libpath[i];
 
 		// just to be safe:
-		asprintf(gcc_argv+(argcnt++), "-Wl,-rpath-link,%s/lib", devprefix);
+		xasprintf(gcc_argv+(argcnt++), "-Wl,-rpath-link,%s/lib", devprefix);
 
 		if (libstr) gcc_argv[argcnt++] = libstr;
 
-		asprintf(gcc_argv+(argcnt++), "-L%s/lib", devprefix);
-		asprintf(gcc_argv+(argcnt++), "-L%s/gcc/lib", devprefix);
+		xasprintf(gcc_argv+(argcnt++), "-L%s/lib", devprefix);
+		xasprintf(gcc_argv+(argcnt++), "-L%s/gcc/lib", devprefix);
 	}
 	if (use_stdinc && source_count) {
 		gcc_argv[argcnt++] = nostdinc;
@@ -376,13 +381,13 @@
 		if (cpp) {
 			if (use_nostdinc_plus) gcc_argv[argcnt++] = nostdinc_plus;
 			gcc_argv[argcnt++] = "-isystem";
-			asprintf(gcc_argv+(argcnt++), "%s/c++/include", devprefix);
+			xasprintf(gcc_argv+(argcnt++), "%s/c++/include", devprefix);
 		}
 
 		gcc_argv[argcnt++] = "-isystem";
-		asprintf(gcc_argv+(argcnt++), "%s/include", devprefix);
+		xasprintf(gcc_argv+(argcnt++), "%s/include", devprefix);
 		gcc_argv[argcnt++] = "-isystem";
-		asprintf(gcc_argv+(argcnt++), "%s/gcc/include", devprefix);
+		xasprintf(gcc_argv+(argcnt++), "%s/gcc/include", devprefix);
 		if (incstr) gcc_argv[argcnt++] = incstr;
 	}
 
@@ -391,15 +396,15 @@
 	if (linking && source_count) {
 
 		if (profile)
-			asprintf(gcc_argv+(argcnt++), "%s/lib/gcrt1.o", devprefix);
+			xasprintf(gcc_argv+(argcnt++), "%s/lib/gcrt1.o", devprefix);
 
 		if (ctor_dtor) {
-			asprintf(gcc_argv+(argcnt++), "%s/lib/crti.o", devprefix);
-			asprintf(gcc_argv+(argcnt++), "%s/gcc/lib/crtbegin%s", devprefix,
+			xasprintf(gcc_argv+(argcnt++), "%s/lib/crti.o", devprefix);
+			xasprintf(gcc_argv+(argcnt++), "%s/gcc/lib/crtbegin%s", devprefix,
 					use_shared ? "S.o" : use_static_linking ? "T.o" : ".o");
 		}
 		if (use_start && !profile)
-			asprintf(gcc_argv+(argcnt++), "%s/lib/crt1.o", devprefix);
+			xasprintf(gcc_argv+(argcnt++), "%s/lib/crt1.o", devprefix);
 
 		// Add remaining unclaimed arguments.
 
@@ -423,9 +428,9 @@
 			//gcc_argv[argcnt++] = "-Wl,--end-group";
 		}
 		if (ctor_dtor) {
-			asprintf(gcc_argv+(argcnt++), "%s/gcc/lib/crtend%s", devprefix,
+			xasprintf(gcc_argv+(argcnt++), "%s/gcc/lib/crtend%s", devprefix,
 					use_shared ? "S.o" : ".o");
-			asprintf(gcc_argv+(argcnt++), "%s/lib/crtn.o", devprefix);
+			xasprintf(gcc_argv+(argcnt++), "%s/lib/crtn.o", devprefix);
 		}
 	} else for (i=1; i<argc; i++) if (argv[i]) gcc_argv[argcnt++] = argv[i];