Commit 20f36478 by Shenghou Ma Committed by Ian Lance Taylor

* gospec.c: pass -u pthread_create to linker when static linking.

From-SVN: r195244
parent d0b6bb1b
2013-01-16 Shenghou Ma <minux.ma@gmail.com>
* gospec.c: pass -u pthread_create to linker when static linking.
2012-12-21 Ian Lance Taylor <iant@google.com>
PR bootstrap/54659
......
......@@ -227,7 +227,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
#endif
/* Make sure to have room for the trailing NULL argument. */
num_args = argc + need_math + shared_libgcc + (library > 0) * 5 + 5;
num_args = argc + need_math + shared_libgcc + (library > 0) * 5 + 10;
new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args);
i = 0;
......@@ -381,6 +381,20 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options,
generate_option (OPT_shared_libgcc, NULL, 1, CL_DRIVER,
&new_decoded_options[j++]);
#ifdef TARGET_CAN_SPLIT_STACK
/* libgcc wraps pthread_create to support split stack, however, due to
relative ordering of -lpthread and -lgcc, we can't just mark
__real_pthread_create in libgcc as non-weak. But we need to link in
pthread_create from pthread if we are statically linking, so we work-
around by passing -u pthread_create to to the linker. */
if (static_link)
{
generate_option (OPT_Wl_, "-u,pthread_create", 1, CL_DRIVER,
&new_decoded_options[j]);
j++;
}
#endif
*in_decoded_options_count = j;
*in_decoded_options = new_decoded_options;
*in_added_libraries = added_libraries;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment