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/layout.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gold/layout.cc') diff --git a/gold/layout.cc b/gold/layout.cc index d198ce2..2496530 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -2144,7 +2144,7 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg, uint64_t addr; if (parameters->options().user_set_Ttext()) addr = parameters->options().Ttext(); - else if (parameters->options().shared()) + else if (parameters->options().output_is_position_independent()) addr = 0; else addr = target->default_text_segment_address(); -- cgit v1.1