Mercurial > hg > aboriginal
changeset 948:ce8d2ff56908
Redo library sequencing, add -lgcc before -gcc_s (because that's what gcc expects).
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 06 Jan 2010 21:36:38 -0600 |
parents | b2a18805352c |
children | 1d6155f9be9f |
files | sources/toys/ccwrap.c |
diffstat | 1 files changed, 15 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/sources/toys/ccwrap.c Wed Jan 06 06:27:05 2010 -0600 +++ b/sources/toys/ccwrap.c Wed Jan 06 21:36:38 2010 -0600 @@ -427,30 +427,32 @@ for (i=1; i<argc; i++) if (argv[i]) cc_argv[argcnt++] = argv[i]; - if (use_stdlib) { - //cc_argv[argcnt++] = "-Wl,--start-group"; - if (!use_static_linking && use_shared_libgcc) - cc_argv[argcnt++] = "-Wl,--as-needed,-lgcc_s,--no-as-needed"; - else { - cc_argv[argcnt++] = "-lgcc"; - cc_argv[argcnt++] = "-lgcc_eh"; - } - } + // Add shared libraries. + for (i = 0 ; i < liblen ; i++) if (libraries[i]) cc_argv[argcnt++] = libraries[i]; + + // Add standard libraries + if (use_stdlib) { if (cpp) { cc_argv[argcnt++] = "-lstdc++"; cc_argv[argcnt++] = "-lm"; } - cc_argv[argcnt++] = "-lc"; + // libgcc can call libc which can call libgcc + + cc_argv[argcnt++] = "-lgcc"; if (!use_static_linking && use_shared_libgcc) cc_argv[argcnt++] = "-Wl,--as-needed,-lgcc_s,--no-as-needed"; - // Fall back to resolving stuff out of here. + else cc_argv[argcnt++] = "-lgcc_eh"; + + cc_argv[argcnt++] = "-lc"; + cc_argv[argcnt++] = "-lgcc"; - cc_argv[argcnt++] = "-lgcc_eh"; - //cc_argv[argcnt++] = "-Wl,--end-group"; + if (!use_static_linking && use_shared_libgcc) + cc_argv[argcnt++] = "-Wl,--as-needed,-lgcc_s,--no-as-needed"; + else cc_argv[argcnt++] = "-lgcc_eh"; } if (ctor_dtor) { asprintf(cc_argv+(argcnt++), "%s/cc/lib/crtend%s", devprefix,