diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12bebb0b1e4c66f55ef2685d5b13d24b6a3b55fd..8f0ba61031f567d408b80a4167d93b58fd450009 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-10-08 Rafael Avila de Espindola <espindola@google.com> + + * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is + being statically linked. + 2009-10-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE. diff --git a/gcc/gcc.c b/gcc/gcc.c index d94462d9ac59eead720bf9749374bcf9ff982f5b..1891adb45bc63f062e7975745104f850423aa4c3 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -775,6 +775,7 @@ proper position among the other output files. */ -plugin-opt=%(lto_wrapper) \ -plugin-opt=%(lto_gcc) \ %{static|static-libgcc:-plugin-opt=-pass-through=%(lto_libgcc)} \ + %{static:-plugin-opt=-pass-through=-lc} \ %{O*:-plugin-opt=-O%*} \ %{w:-plugin-opt=-w} \ %{f*:-plugin-opt=-f%*} \ diff --git a/lto-plugin/ChangeLog b/lto-plugin/ChangeLog index 49f2efb40c5a1aca614bd68cabe9771ce3fb0912..cabfcca9f2ee8661ff8abde99c35d52d918920a7 100644 --- a/lto-plugin/ChangeLog +++ b/lto-plugin/ChangeLog @@ -1,3 +1,11 @@ +2009-10-08 Rafael Avila de Espindola <espindola@google.com> + + * lto-plugin.c (add_input_library): New. + (all_symbols_read_handler): Use add_input_library for items that + start with -l. + (process_option): Fit in 80 columns. + (onload): Handle LDPT_ADD_INPUT_LIBRARY. + 2009-10-02 Diego Novillo <dnovillo@google.com> * Makefile.am (AM_CPPFLAGS): Remove -D_LARGEFILE_SOURCE diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c index a0c1a54e0e2a7849370088bfe2e6fa8b8c4579c1..71b4961496cc20051f4a155c93480db0a79d3809 100644 --- a/lto-plugin/lto-plugin.c +++ b/lto-plugin/lto-plugin.c @@ -81,6 +81,7 @@ static ld_plugin_register_all_symbols_read register_all_symbols_read; static ld_plugin_get_symbols get_symbols; static ld_plugin_register_cleanup register_cleanup; static ld_plugin_add_input_file add_input_file; +static ld_plugin_add_input_library add_input_library; static struct plugin_file_info *claimed_files = NULL; static unsigned int num_claimed_files = 0; @@ -467,7 +468,10 @@ all_symbols_read_handler (void) unsigned int i; for (i = 0; i < num_pass_through_items; i++) { - add_input_file (pass_through_items[i]); + if (strncmp (pass_through_items[i], "-l", 2) == 0) + add_input_library (pass_through_items[i] + 2); + else + add_input_file (pass_through_items[i]); free (pass_through_items[i]); pass_through_items[i] = NULL; } @@ -607,8 +611,10 @@ process_option (const char *option) else if (!strncmp (option, "-pass-through=", strlen("-pass-through="))) { num_pass_through_items++; - pass_through_items = realloc (pass_through_items, num_pass_through_items * sizeof (char *)); - pass_through_items[num_pass_through_items - 1] = strdup (option + strlen ("-pass-through=")); + pass_through_items = realloc (pass_through_items, + num_pass_through_items * sizeof (char *)); + pass_through_items[num_pass_through_items - 1] = + strdup (option + strlen ("-pass-through=")); } else { @@ -655,6 +661,9 @@ onload (struct ld_plugin_tv *tv) case LDPT_ADD_INPUT_FILE: add_input_file = p->tv_u.tv_add_input_file; break; + case LDPT_ADD_INPUT_LIBRARY: + add_input_library = p->tv_u.tv_add_input_library; + break; case LDPT_OPTION: process_option (p->tv_u.tv_string); break;