* options.h (General_options): Add -Trodata-segment option.
	* parameters.cc (Parameters::check_rodata_segment): New function.
	(Parameters::set_target_once): Call it.
	* parameters.h (Parameters): Declare it (private member function).
	* layout.cc (load_seg_unusable_for_headers): New function, broken
	out of Layout::relaxation_loop_body.  If TARGET->isolate_execinstr()
	then validate rodata segment rather than text segment.
	(relaxation_loop_body): Call that.
	(is_text_segment): New function.  Don't admit a non-executable
	segment if TARGET->isolate_execinstr().
	(set_segment_offsets): Call it.  Honor -Trodata-segment option.
This commit is contained in:
Roland McGrath
2013-07-19 23:07:08 +00:00
parent 69091a2cc4
commit a3ed37d8bc
5 changed files with 72 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
// parameters.h -- general parameters for a link using gold -*- C++ -*-
// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// Copyright 2006, 2007, 2008, 2009, 2010, 2013 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -183,6 +183,9 @@ class Parameters
void
check_target_endianness();
void
check_rodata_segment();
friend class Set_parameters_target_once;
Errors* errors_;