* layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
section as relro. (Layout::set_segment_offsets): Reset increase_relro before calling set_section_addresses a second time.
This commit is contained in:
parent
cb11d1f450
commit
3bb951e542
|
@ -1,3 +1,10 @@
|
|||
2011-01-10 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
|
||||
section as relro.
|
||||
(Layout::set_segment_offsets): Reset increase_relro before calling
|
||||
set_section_addresses a second time.
|
||||
|
||||
2011-01-04 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* script-sections.cc (Sort_output_sections::operator()): Sort TLS
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// layout.cc -- lay out output file sections for gold
|
||||
|
||||
// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -912,6 +912,10 @@ Layout::layout_eh_frame(Sized_relobj<size, big_endian>* object,
|
|||
{
|
||||
os->update_flags_for_input_section(shdr.get_sh_flags());
|
||||
|
||||
// A writable .eh_frame section is a RELRO section.
|
||||
if ((shdr.get_sh_flags() & elfcpp::SHF_WRITE) != 0)
|
||||
os->set_is_relro();
|
||||
|
||||
// We found a .eh_frame section we are going to optimize, so now
|
||||
// we can add the set of optimized sections to the output
|
||||
// section. We need to postpone adding this until we've found a
|
||||
|
@ -2722,6 +2726,12 @@ Layout::set_segment_offsets(const Target* target, Output_segment* load_seg,
|
|||
addr = align_address(addr, (*p)->maximum_alignment());
|
||||
off = orig_off + ((addr - orig_addr) & (abi_pagesize - 1));
|
||||
off = align_file_offset(off, addr, abi_pagesize);
|
||||
|
||||
increase_relro = this->increase_relro_;
|
||||
if (this->script_options_->saw_sections_clause())
|
||||
increase_relro = 0;
|
||||
has_relro = false;
|
||||
|
||||
new_addr = (*p)->set_section_addresses(this, true, addr,
|
||||
&increase_relro,
|
||||
&has_relro,
|
||||
|
|
Loading…
Reference in New Issue