Commit Diff


commit - f8104b3d3df082856fe6f94af3c0665b81f86127
commit + 9b4de09d413c43059afcd75ceba4d2adcdc0a0a8
blob - d062a9db41d12a3104c7d98ae2c0141322da9ad1
blob + b7319ae5a7a9cc677d0a7646bc9442bce07fb1f2
--- include/u.h
+++ include/u.h
@@ -116,6 +116,16 @@ typedef short s16int;
  */
 #define AUTOLIB(x)	static int __p9l_autolib_ ## x = 1;
 
+/*
+ * Gcc 3 is too smart for its own good.
+ */
+#if defined(__GNUC__)
+#	if __GNUC__ >= 3
+#		undef AUTOLIB
+#		define AUTOLIB(x) int __p9l_autolib_ ## x __attribute__ ((weak));
+#	endif
+#endif
+
 #if defined(__cplusplus)
 }
 #endif