changeset 1449:5b79ffca554a

Make ccwrap use --start-group and --end-group rather than specifying the same libraries multiple times.
author Rob Landley <rob@landley.net>
date Fri, 23 Sep 2011 14:38:11 -0500
parents bb26de4dfe47
children a96e0dd0dc33
files sources/toys/ccwrap.c
diffstat 1 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/sources/toys/ccwrap.c	Sun Sep 18 21:37:31 2011 -0500
+++ b/sources/toys/ccwrap.c	Fri Sep 23 14:38:11 2011 -0500
@@ -449,17 +449,13 @@
 
 			// libgcc can call libc which can call libgcc
 
+			cc_argv[argcnt++] = "-Wl,--start-group,--as-needed";
 			cc_argv[argcnt++] = "-lgcc";
 			if (!use_static_linking && use_shared_libgcc)
-				cc_argv[argcnt++] = "-Wl,--as-needed,-lgcc_s,--no-as-needed";
+				cc_argv[argcnt++] = "-lgcc_s";
 			else cc_argv[argcnt++] = "-lgcc_eh";
-
 			cc_argv[argcnt++] = "-lc";
-
-			cc_argv[argcnt++] = "-lgcc";
-			if (!use_static_linking && use_shared_libgcc)
-				cc_argv[argcnt++] = "-Wl,--as-needed,-lgcc_s,--no-as-needed";
-			else cc_argv[argcnt++] = "-lgcc_eh";
+			cc_argv[argcnt++] = "-Wl,--no-as-needed,--end-group";
 		}
 		if (ctor_dtor) {
 			cc_argv[argcnt++] = find_TSpath("%s/cc/lib/crtend%s", use_shared, 0);