From 374ad2854b4a69a0efdb29f8f1122b4472e8055b Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 14 Oct 2009 05:25:02 +0000 Subject: Add support for -pie. * options.h (class General_options): Add -pie and --pic-executable. (General_options::output_is_position_independent): Test -pie. (General_options::output_is_executable): Return true if not shared and not relocatable. (General_options::output_is_pie): Remove. * options.cc (General_options::finalize): Reject incompatible uses of -pie. * gold.cc (queue_middle_tasks): A -pie link is not static. * symtab.h (Symbol::needs_plt_entry): Return false if -pie. * symtab.cc (Symbol::final_value_is_known): Return false if output_is_position_independent. * layout.cc (Layout::set_segment_offsets): Start at address 0 if output_is_position_independent. * output.cc (Output_file_header::do_sized_write): Use ET_DYN if output_is_position_independent. * i386.cc (Output_data_plt_i386::do_write): Use the PIC PLT if output_is_position_independent. * testsuite/Makefile.am (check_PROGRAMS): Add basic_pie_test and two_file_pie_test. (basic_pie_test.o, basic_pie_test): New targets. (two_file_test_1_pie.o, two_file_test_1b_pie.o): New targets. (two_file_test_2_pie.o, two_file_test_main_pie.o): New targets. (two_file_pie_test): New target. * testsuite/Makefile.in: Rebuild. * README: Remove note saying that -pie is not supported. --- gold/output.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gold/output.cc') diff --git a/gold/output.cc b/gold/output.cc index 7d869b3..ae7b7b8 100644 --- a/gold/output.cc +++ b/gold/output.cc @@ -442,7 +442,7 @@ Output_file_header::do_sized_write(Output_file* of) elfcpp::ET e_type; if (parameters->options().relocatable()) e_type = elfcpp::ET_REL; - else if (parameters->options().shared()) + else if (parameters->options().output_is_position_independent()) e_type = elfcpp::ET_DYN; else e_type = elfcpp::ET_EXEC; -- cgit v1.1