lto-plugin.c (add_input_library): New.

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-08  Rafael Avila de Espindola  <espindola@google.com>

	* gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
	being statically linked.

From-SVN: r152558
This commit is contained in:
Rafael Avila de Espindola 2009-10-08 13:59:32 +00:00 committed by Rafael Espindola
parent d72ff618d3
commit d520c7fb9d
4 changed files with 26 additions and 3 deletions

View File

@ -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> 2009-10-08 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE. * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.

View File

@ -775,6 +775,7 @@ proper position among the other output files. */
-plugin-opt=%(lto_wrapper) \ -plugin-opt=%(lto_wrapper) \
-plugin-opt=%(lto_gcc) \ -plugin-opt=%(lto_gcc) \
%{static|static-libgcc:-plugin-opt=-pass-through=%(lto_libgcc)} \ %{static|static-libgcc:-plugin-opt=-pass-through=%(lto_libgcc)} \
%{static:-plugin-opt=-pass-through=-lc} \
%{O*:-plugin-opt=-O%*} \ %{O*:-plugin-opt=-O%*} \
%{w:-plugin-opt=-w} \ %{w:-plugin-opt=-w} \
%{f*:-plugin-opt=-f%*} \ %{f*:-plugin-opt=-f%*} \

View File

@ -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> 2009-10-02 Diego Novillo <dnovillo@google.com>
* Makefile.am (AM_CPPFLAGS): Remove -D_LARGEFILE_SOURCE * Makefile.am (AM_CPPFLAGS): Remove -D_LARGEFILE_SOURCE

View File

@ -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_get_symbols get_symbols;
static ld_plugin_register_cleanup register_cleanup; static ld_plugin_register_cleanup register_cleanup;
static ld_plugin_add_input_file add_input_file; 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 struct plugin_file_info *claimed_files = NULL;
static unsigned int num_claimed_files = 0; static unsigned int num_claimed_files = 0;
@ -467,7 +468,10 @@ all_symbols_read_handler (void)
unsigned int i; unsigned int i;
for (i = 0; i < num_pass_through_items; 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]); free (pass_through_items[i]);
pass_through_items[i] = NULL; pass_through_items[i] = NULL;
} }
@ -607,8 +611,10 @@ process_option (const char *option)
else if (!strncmp (option, "-pass-through=", strlen("-pass-through="))) else if (!strncmp (option, "-pass-through=", strlen("-pass-through=")))
{ {
num_pass_through_items++; num_pass_through_items++;
pass_through_items = realloc (pass_through_items, num_pass_through_items * sizeof (char *)); pass_through_items = realloc (pass_through_items,
pass_through_items[num_pass_through_items - 1] = strdup (option + strlen ("-pass-through=")); num_pass_through_items * sizeof (char *));
pass_through_items[num_pass_through_items - 1] =
strdup (option + strlen ("-pass-through="));
} }
else else
{ {
@ -655,6 +661,9 @@ onload (struct ld_plugin_tv *tv)
case LDPT_ADD_INPUT_FILE: case LDPT_ADD_INPUT_FILE:
add_input_file = p->tv_u.tv_add_input_file; add_input_file = p->tv_u.tv_add_input_file;
break; break;
case LDPT_ADD_INPUT_LIBRARY:
add_input_library = p->tv_u.tv_add_input_library;
break;
case LDPT_OPTION: case LDPT_OPTION:
process_option (p->tv_u.tv_string); process_option (p->tv_u.tv_string);
break; break;